using System; using System.Runtime.InteropServices; using Cpp2IlInjected; namespace BestHTTP.Decompression.Zlib { // Token: 0x020019CE RID: 6606 [Token(Token = "0x20019CE")] [StructLayout(3)] internal sealed class InflateCodes { // Token: 0x0600B1C1 RID: 45505 RVA: 0x0029AF5C File Offset: 0x0029915C [Token(Token = "0x600B1C1")] [Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")] internal InflateCodes() { } // Token: 0x0600B1C2 RID: 45506 RVA: 0x0029AF70 File Offset: 0x00299170 [Token(Token = "0x600B1C2")] [Address(RVA = "0xE302D0", Offset = "0xE2ECD0", VA = "0x180E302D0")] 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: 0x0600B1C3 RID: 45507 RVA: 0x0029AFB8 File Offset: 0x002991B8 [Token(Token = "0x600B1C3")] [Address(RVA = "0x1F162E0", Offset = "0x1F14CE0", VA = "0x181F162E0")] 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: 0x0600B1C4 RID: 45508 RVA: 0x0029B394 File Offset: 0x00299594 [Token(Token = "0x600B1C4")] [Address(RVA = "0x1F15710", Offset = "0x1F14110", VA = "0x181F15710")] 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: 0x040074EB RID: 29931 [Token(Token = "0x40074EB")] private const int START = 0; // Token: 0x040074EC RID: 29932 [Token(Token = "0x40074EC")] private const int LEN = 1; // Token: 0x040074ED RID: 29933 [Token(Token = "0x40074ED")] private const int LENEXT = 2; // Token: 0x040074EE RID: 29934 [Token(Token = "0x40074EE")] private const int DIST = 3; // Token: 0x040074EF RID: 29935 [Token(Token = "0x40074EF")] private const int DISTEXT = 4; // Token: 0x040074F0 RID: 29936 [Token(Token = "0x40074F0")] private const int COPY = 5; // Token: 0x040074F1 RID: 29937 [Token(Token = "0x40074F1")] private const int LIT = 6; // Token: 0x040074F2 RID: 29938 [Token(Token = "0x40074F2")] private const int WASH = 7; // Token: 0x040074F3 RID: 29939 [Token(Token = "0x40074F3")] private const int END = 8; // Token: 0x040074F4 RID: 29940 [Token(Token = "0x40074F4")] private const int BADCODE = 9; // Token: 0x040074F5 RID: 29941 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x40074F5")] internal int mode; // Token: 0x040074F6 RID: 29942 [global::Cpp2IlInjected.FieldOffset(Offset = "0x14")] [Token(Token = "0x40074F6")] internal int len; // Token: 0x040074F7 RID: 29943 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x40074F7")] internal int[] tree; // Token: 0x040074F8 RID: 29944 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x40074F8")] internal int tree_index; // Token: 0x040074F9 RID: 29945 [global::Cpp2IlInjected.FieldOffset(Offset = "0x24")] [Token(Token = "0x40074F9")] internal int need; // Token: 0x040074FA RID: 29946 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x40074FA")] internal int lit; // Token: 0x040074FB RID: 29947 [global::Cpp2IlInjected.FieldOffset(Offset = "0x2C")] [Token(Token = "0x40074FB")] internal int bitsToGet; // Token: 0x040074FC RID: 29948 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x40074FC")] internal int dist; // Token: 0x040074FD RID: 29949 [global::Cpp2IlInjected.FieldOffset(Offset = "0x34")] [Token(Token = "0x40074FD")] internal byte lbits; // Token: 0x040074FE RID: 29950 [global::Cpp2IlInjected.FieldOffset(Offset = "0x35")] [Token(Token = "0x40074FE")] internal byte dbits; // Token: 0x040074FF RID: 29951 [global::Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x40074FF")] internal int[] ltree; // Token: 0x04007500 RID: 29952 [global::Cpp2IlInjected.FieldOffset(Offset = "0x40")] [Token(Token = "0x4007500")] internal int ltree_index; // Token: 0x04007501 RID: 29953 [global::Cpp2IlInjected.FieldOffset(Offset = "0x48")] [Token(Token = "0x4007501")] internal int[] dtree; // Token: 0x04007502 RID: 29954 [global::Cpp2IlInjected.FieldOffset(Offset = "0x50")] [Token(Token = "0x4007502")] internal int dtree_index; } }