public int m000016(c00000d.c00000f p0) { int num2; int index = p0.m00000e(9); if (index >= 0) { num2 = this.f00001c[index]; if (num2 >= 0) { p0.m000004(num2 & 15); return (num2 >> 4); } int num3 = -(num2 >> 4); int num4 = num2 & 15; index = p0.m00000e(num4); if (index >= 0) { num2 = this.f00001c[num3 | (index >> 9)]; p0.m000004(num2 & 15); return (num2 >> 4); } int num5 = p0.m00000f(); index = p0.m00000e(num5); num2 = this.f00001c[num3 | (index >> 9)]; if ((num2 & 15) <= num5) { p0.m000004(num2 & 15); return (num2 >> 4); } return -1; } int num6 = p0.m00000f(); index = p0.m00000e(num6); num2 = this.f00001c[index]; if ((num2 >= 0) && ((num2 & 15) <= num6)) { p0.m000004(num2 & 15); return (num2 >> 4); } return -1; }
public bool m000017(c00000d.c00000f p0) { int num2; int num3; Label_0000: switch (this.f00001e) { case 0: this.f00001f = p0.m00000e(5); if (this.f00001f >= 0) { this.f00001f += 0x101; p0.m000004(5); this.f00001e = 1; break; } return false; case 1: break; case 2: goto Label_00C3; case 3: goto Label_014E; case 4: goto Label_01C6; case 5: goto Label_0207; default: goto Label_0000; } this.f000010 = p0.m00000e(5); if (this.f000010 < 0) { return false; } this.f000010++; p0.m000004(5); this.f000016 = this.f00001f + this.f000010; this.f00001d = new byte[this.f000016]; this.f00001e = 2; Label_00C3: this.f000011 = p0.m00000e(4); if (this.f000011 < 0) { return false; } this.f000011 += 4; p0.m000004(4); this.f000008 = new byte[0x13]; this.f000022 = 0; this.f00001e = 3; Label_014E: while (this.f000022 < this.f000011) { int num = p0.m00000e(3); if (num < 0) { return false; } p0.m000004(3); this.f000008[f000023[this.f000022]] = (byte) num; this.f000022++; } this.f000019 = new c00000d.c000011(this.f000008); this.f000008 = null; this.f000022 = 0; this.f00001e = 4; Label_01C6: while (((num2 = this.f000019.m000016(p0)) & -16) == 0) { this.f00001d[this.f000022++] = this.f000021 = (byte) num2; if (this.f000022 == this.f000016) { return true; } } if (num2 < 0) { return false; } if (num2 >= 0x11) { this.f000021 = 0; } this.f000020 = num2 - 0x10; this.f00001e = 5; Label_0207: num3 = f00000f[this.f000020]; int num4 = p0.m00000e(num3); if (num4 < 0) { return false; } p0.m000004(num3); num4 += f00000b[this.f000020]; while (num4-- > 0) { this.f00001d[this.f000022++] = this.f000021; } if (this.f000022 == this.f000016) { return true; } this.f00001e = 4; goto Label_0000; }
public int m000014(c00000d.c00000f p0, int p1) { int num; p1 = Math.Min(Math.Min(p1, 0x8000 - this.f00000f), p0.m000010()); int num2 = 0x8000 - this.f00000b; if (p1 > num2) { num = p0.m00000d(this.f000008, this.f00000b, num2); if (num == num2) { num += p0.m00000d(this.f000008, 0, p1 - num2); } } else { num = p0.m00000d(this.f000008, this.f00000b, p1); } this.f00000b = (this.f00000b + num) & 0x7fff; this.f00000f += num; return num; }