using System; using Cpp2IlInjected; namespace BestHTTP.Decompression.Zlib { // Token: 0x02001FAB RID: 8107 [Token(Token = "0x2001FAB")] internal sealed class InflateCodes { // Token: 0x0600CD9B RID: 52635 RVA: 0x002F35B0 File Offset: 0x002F17B0 [Token(Token = "0x600CD9B")] [Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")] internal InflateCodes() { } // Token: 0x0600CD9C RID: 52636 RVA: 0x002F35C4 File Offset: 0x002F17C4 [Token(Token = "0x600CD9C")] [Address(RVA = "0x18E2030", Offset = "0x18E0E30", VA = "0x1818E2030")] internal void Init(int bl, int bd, int[] tl, int tl_index, int[] td, int td_index) { int num = 0; this.ltree_index = 0; this.dtree = 0; this.dtree_index = 0; this.mode = num; this.lbits = (byte)bl; this.dbits = (byte)bd; this.ltree = tl; this.tree = num; } // Token: 0x0600CD9D RID: 52637 RVA: 0x002F360C File Offset: 0x002F180C [Token(Token = "0x600CD9D")] [Address(RVA = "0x1972090", Offset = "0x1970E90", VA = "0x181972090")] internal int Process(InflateBlocks blocks, int r) { ZlibCodec codec = blocks._codec; int writeAt = blocks.writeAt; int num = blocks.readAt; int bitb = blocks.bitb; int nextIn = codec.NextIn; int availableBytesIn = codec.AvailableBytesIn; int bitk = blocks.bitk; if (writeAt < num) { num -= writeAt; } int num2 = blocks.end; num2 -= writeAt; blocks.bitb = bitb; blocks.bitk = bitk; codec.AvailableBytesIn = availableBytesIn; codec.NextIn = nextIn; blocks.writeAt = writeAt; int writeAt2 = blocks.writeAt; int num3 = blocks.readAt; int bitb2 = blocks.bitb; int num4 = codec.NextIn; int availableBytesIn2 = codec.AvailableBytesIn; int num5 = blocks.bitk; if (writeAt2 < num3) { num3 -= writeAt2; } int num6 = blocks.end; num6 -= writeAt2; int num7; if (num7 != 0) { } uint num8; if (num5 < (int)num8) { if (availableBytesIn2 == 0) { goto IL_31B; } byte[] inputBuffer = codec.InputBuffer; num4++; num5 += 8; } uint num9; int num10; if (num5 < (int)num9) { if (availableBytesIn2 == 0) { goto IL_31B; } num10 = 0; byte[] inputBuffer2 = codec.InputBuffer; num4++; num5 += 8; } num5 -= (int)num9; if (num5 < (int)num9) { if (availableBytesIn2 == 0) { goto IL_349; } byte[] inputBuffer3 = codec.InputBuffer; num4++; num5 += 8; } num5 -= num10; uint num11; int num12; if (num5 < (int)num11) { if (availableBytesIn2 == 0) { goto IL_31B; } num12 = 0; byte[] inputBuffer4 = codec.InputBuffer; num4++; num5 += 8; } num5 -= (int)num11; int num14; int num15; int num16; if (num6 == 0) { int num13 = blocks.end; if (writeAt2 == num13) { int readAt = blocks.readAt; if (readAt != 0) { if (readAt > 0) { } if (num13 != 0) { goto IL_203; } } } blocks.writeAt = writeAt2; num14 = blocks.Flush(num12); int writeAt3 = blocks.writeAt; int end = blocks.end; int readAt2 = blocks.readAt; if (writeAt3 < readAt2) { num13 = readAt2; num13 -= writeAt3; } num13 -= writeAt3; if (writeAt3 == end && readAt2 != 0) { num15 = 0; num16 = readAt2 - 1; if (readAt2 <= 0) { } } if (num16 == 0) { goto IL_358; } } IL_203: byte[] window = blocks.window; int num17 = writeAt2 + 1; num15++; int length = window.Length; int end2 = blocks.end; int i; if (num16 == 0) { int end3 = blocks.end; int num18; if (num15 == end3) { int readAt3 = blocks.readAt; if (readAt3 != 0) { num18 = 0; int num19; if (readAt3 > 0) { num19 = readAt3 - 1; } if (num19 != 0) { goto IL_2D0; } } } blocks.writeAt = num18; int num20 = blocks.Flush(num14); int readAt4 = blocks.readAt; num14 = num20; int writeAt4 = blocks.writeAt; if (writeAt4 < readAt4) { int num19 = readAt4; num19 -= writeAt4; } int num21 = blocks.end; num21 -= writeAt4; int end4 = blocks.end; int num22; if (writeAt4 == end4 && readAt4 != 0) { i = 0; num22 = readAt4 - 1; num22 = end4; } if (num22 == 0) { goto IL_36E; } } IL_2D0: byte[] window2 = blocks.window; int num23 = 0; i++; while (i <= 9) { } blocks.bitb = bitb2; blocks.bitk = num5; codec.AvailableBytesIn = availableBytesIn2; int num24 = 0; codec.NextIn = num4; blocks.writeAt = i; return blocks.Flush(-2); IL_31B: blocks.bitb = num24; blocks.bitk = 0; blocks.writeAt = 0; blocks.bitb = 0; blocks.bitk = 0; int num25 = 0; blocks.writeAt = 0; IL_349: blocks.bitb = num25; blocks.bitk = 0; IL_358: blocks.bitb = bitb2; blocks.bitk = 0; blocks.writeAt = 0; IL_36E: blocks.bitb = bitb2; blocks.bitk = 0; blocks.writeAt = 0; blocks.writeAt = 0; int num26 = blocks.Flush(num23); int writeAt5 = blocks.writeAt; while (blocks.readAt != writeAt5) { } blocks.bitb = bitb2; blocks.bitk = 0; int num27 = 0; blocks.writeAt = writeAt5; blocks.bitb = num27; throw new NullReferenceException(); } // Token: 0x0600CD9E RID: 52638 RVA: 0x002F39E8 File Offset: 0x002F1BE8 [Token(Token = "0x600CD9E")] [Address(RVA = "0x19714C0", Offset = "0x19702C0", VA = "0x1819714C0")] internal int InflateFast(int bl, int bd, int[] tl, int tl_index, int[] td, int td_index, InflateBlocks s, ZlibCodec z) { int num6; if (bl != 0) { int num = bd + 1; if (bl == 16) { if (bl != 64) { goto IL_67; } while (bl != 0) { } int num2 = bd + 1; } int num3 = bd + 1; if (bl == 16 && bl != 64) { goto IL_73; } int num4 = bd - 1; while (num4 != 0) { } int num5 = 0; num6 = 0; if (num5 != 1) { num6 += 2; num4 -= num6; if (num4 > 0) { num6++; while (num4 != 0) { } } } Array.Copy(num6, num6, num6, 1, num4); } IL_67: if (num6 == 32) { } uint num7; num7 -= tl; IL_73: throw new NullReferenceException(); } // Token: 0x0400832E RID: 33582 [Token(Token = "0x400832E")] private const int START = 0; // Token: 0x0400832F RID: 33583 [Token(Token = "0x400832F")] private const int LEN = 1; // Token: 0x04008330 RID: 33584 [Token(Token = "0x4008330")] private const int LENEXT = 2; // Token: 0x04008331 RID: 33585 [Token(Token = "0x4008331")] private const int DIST = 3; // Token: 0x04008332 RID: 33586 [Token(Token = "0x4008332")] private const int DISTEXT = 4; // Token: 0x04008333 RID: 33587 [Token(Token = "0x4008333")] private const int COPY = 5; // Token: 0x04008334 RID: 33588 [Token(Token = "0x4008334")] private const int LIT = 6; // Token: 0x04008335 RID: 33589 [Token(Token = "0x4008335")] private const int WASH = 7; // Token: 0x04008336 RID: 33590 [Token(Token = "0x4008336")] private const int END = 8; // Token: 0x04008337 RID: 33591 [Token(Token = "0x4008337")] private const int BADCODE = 9; // Token: 0x04008338 RID: 33592 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4008338")] internal int mode; // Token: 0x04008339 RID: 33593 [FieldOffset(Offset = "0x14")] [Token(Token = "0x4008339")] internal int len; // Token: 0x0400833A RID: 33594 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400833A")] internal int[] tree; // Token: 0x0400833B RID: 33595 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400833B")] internal int tree_index; // Token: 0x0400833C RID: 33596 [FieldOffset(Offset = "0x24")] [Token(Token = "0x400833C")] internal int need; // Token: 0x0400833D RID: 33597 [FieldOffset(Offset = "0x28")] [Token(Token = "0x400833D")] internal int lit; // Token: 0x0400833E RID: 33598 [FieldOffset(Offset = "0x2C")] [Token(Token = "0x400833E")] internal int bitsToGet; // Token: 0x0400833F RID: 33599 [FieldOffset(Offset = "0x30")] [Token(Token = "0x400833F")] internal int dist; // Token: 0x04008340 RID: 33600 [FieldOffset(Offset = "0x34")] [Token(Token = "0x4008340")] internal byte lbits; // Token: 0x04008341 RID: 33601 [FieldOffset(Offset = "0x35")] [Token(Token = "0x4008341")] internal byte dbits; // Token: 0x04008342 RID: 33602 [FieldOffset(Offset = "0x38")] [Token(Token = "0x4008342")] internal int[] ltree; // Token: 0x04008343 RID: 33603 [FieldOffset(Offset = "0x40")] [Token(Token = "0x4008343")] internal int ltree_index; // Token: 0x04008344 RID: 33604 [FieldOffset(Offset = "0x48")] [Token(Token = "0x4008344")] internal int[] dtree; // Token: 0x04008345 RID: 33605 [FieldOffset(Offset = "0x50")] [Token(Token = "0x4008345")] internal int dtree_index; } }