public int m0002c8(c0001d1 p0) { int num2; int num5; 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); } 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; } num5 = p0.m00000f(); index = p0.m00000e(num5); num2 = this.f00001c[index]; if ((num2 >= 0) && ((num2 & 15) <= num5)) { p0.m000004(num2 & 15); return (num2 >> 4); } return -1; }
public c0000cc(bool p0) { this.f000056 = p0; this.f00002c = new c0001fc(); this.f00002d = new c0001d1(); this.f00002b = new c0001fb(); this.f000131 = p0 ? 2 : 0; }
public int m0002cb(c0001d1 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; }
public bool m0002c6(c0001d1 p0) { int num3; bool flag2; Label_0000: flag2 = true; switch (this.f0001f9) { case 0: this.f0001fa = p0.m00000e(5); if (this.f0001fa >= 0) { this.f0001fa += 0x101; p0.m000004(5); this.f0001f9 = 1; break; } return false; case 1: break; case 2: goto Label_00E3; case 3: goto Label_018C; case 4: goto Label_01CA; case 5: goto Label_026E; default: goto Label_0000; } this.f0001fb = p0.m00000e(5); if (this.f0001fb < 0) { return false; } this.f0001fb++; p0.m000004(5); this.f000016 = this.f0001fa + this.f0001fb; this.f00001d = new byte[this.f000016]; this.f0001f9 = 2; Label_00E3: 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.f0001f9 = 3; Label_018C: while (this.f000022 < this.f000011) { int num = p0.m00000e(3); if (num < 0) { return false; } p0.m000004(3); this.f000008[f000010[this.f000022]] = (byte) num; this.f000022++; } this.f000017 = new c0001dd(this.f000008); this.f000008 = null; this.f000022 = 0; this.f0001f9 = 4; Label_01CA: do { int num2; if (((num2 = this.f000017.m0002c8(p0)) & -16) != 0) { if (num2 < 0) { return false; } if (num2 < 0x11) { if (this.f000022 == 0) { throw new SharpZipBaseException(); } } else { this.f0001fc = 0; } this.f000020 = num2 - 0x10; this.f0001f9 = 5; goto Label_026E; } this.f00001d[this.f000022++] = this.f0001fc = (byte) num2; } while (this.f000022 != this.f000016); return true; Label_026E: num3 = f00000f[this.f000020]; int num4 = p0.m00000e(num3); if (num4 >= 0) { p0.m000004(num3); num4 += f00000b[this.f000020]; if ((this.f000022 + num4) > this.f000016) { throw new SharpZipBaseException(); } while (num4-- > 0) { this.f00001d[this.f000022++] = this.f0001fc; } if (this.f000022 == this.f000016) { return true; } this.f0001f9 = 4; goto Label_0000; } return false; }