using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Cpp2IlInjected; namespace BestHTTP.Decompression.Zlib { // Token: 0x020019CA RID: 6602 [Token(Token = "0x20019CA")] [StructLayout(3)] internal sealed class InfTree { // Token: 0x0600B1B1 RID: 45489 RVA: 0x00299AA0 File Offset: 0x00297CA0 [Token(Token = "0x600B1B1")] [Address(RVA = "0x1F12820", Offset = "0x1F11220", VA = "0x181F12820")] private int huft_build(int[] b, int bindex, int n, int s, int[] d, int[] e, int[] t, int[] m, int[] hp, int[] hn, int[] v) { int[] array; do { array = this.c; } while (b[bindex] != array.Length); int length = this.c.Length; if ("{il2cpp array field local14->}" != n) { uint num; if ("{il2cpp array field local14->}" == (ulong)0L) { num += (uint)1; while (num <= (uint)15) { } } if ("{il2cpp array field local14->}" == (ulong)0L) { while ("{il2cpp array field local14->}" != (ulong)0L) { } } uint num2; uint num3; if (num < num2) { int[] array2 = this.c; num += (uint)1; num3 += num3; } this.c[0] = (int)num3; int num4 = 0; int[] array3 = this.x; uint num5 = num2 - 1U; array3[0] = num4; if (num5 != (uint)0) { int[] array4 = this.c; int[] array5 = this.x; int num6; num6 += num4; array5[0] = num6; while (1 != array5.Length) { } } int num7 = b[bindex]; if (num7 != 0) { int[] array6 = this.x; int num8 = array6[num7] + 1; array6[0] = num8; } int[] array7 = this.x; int length2 = array7.Length; int num9 = array7[(int)num2]; int num10 = 0; int num11 = 0; array7[0] = num10; int[] array8 = this.u; int num12 = 0; array8[0] = num11; int num13 = this.c[(int)num]; int num14 = num13 - 1; if (num13 != 0) { int num15 = num14 + 1; if (num > (uint)num13) { num13 = num9; uint num16; num16 -= (uint)num14; if (num9 < num15) { int num17 = num9 + 1; num9 = num17; if (num17 < num15) { int[] array9 = this.c; num16 += num16; num += (uint)1; int num18 = array9[(int)num]; if (num16 > (uint)num18) { num17++; num16 -= (uint)num18; num9 = num17; } } } this.u[0] = num12; if (-1 == 0) { } int[] array10 = this.x; array10[0] = num10; this.r[0] = array10; this.r[0] = array10; num13 -= (int)num; int[] array11 = this.u; int[] array12 = this.r; num12 -= array10; array12[1] = num12; int[] array13 = this.u; int num19; num19 += array10; int[] array14 = this.r; } int[] array15 = this.r; num -= (uint)num13; array15[0] = (int)num; if (num11 < num9) { int[] array16 = this.r; num11++; int num20; num20 += 80; array16[0] = array15; int num21; this.r[1] = num21; int[] array17 = this.r; num11++; uint num22; array17[0] = (int)num22; this.r[1] = (int)num22; } int[] array18 = this.r; num -= (uint)num13; uint num23; if (array18 < num23) { int[] array19 = this.r; uint num24; array18 += num24; } uint num25; if (num10 != (int)num25) { while (num10 != array18) { } } int[] array20 = this.x; uint num26; if (num26 != "{il2cpp array field local81->}") { num13 -= (int)num; } while (num14 != 0) { } } num += (uint)1; while (num <= num2) { } if (num2 != (uint)1) { } } throw new NullReferenceException(); } // Token: 0x0600B1B2 RID: 45490 RVA: 0x00299DAC File Offset: 0x00297FAC [Token(Token = "0x600B1B2")] [Address(RVA = "0x1F13400", Offset = "0x1F11E00", VA = "0x181F13400")] internal int inflate_trees_bits(int[] c, int[] bb, int[] tb, int[] hp, ZlibCodec z) { this.initWorkArea(19); int[] array = this.hn; int num = 0; array[0] = num; int[] array2 = this.v; int[] array3 = this.hn; int num2; if (num2 == -3 || num2 == -5 || "{il2cpp array field bb->}" == (ulong)0L) { } return num2; } // Token: 0x0600B1B3 RID: 45491 RVA: 0x00299E00 File Offset: 0x00298000 [Token(Token = "0x600B1B3")] [Address(RVA = "0x1F13550", Offset = "0x1F11F50", VA = "0x181F13550")] internal int inflate_trees_dynamic(int nl, int nd, int[] c, int[] bl, int[] bd, int[] tl, int[] td, int[] hp, ZlibCodec z) { this.initWorkArea(288); int[] array = this.hn; int num = 0; array[0] = num; int[] array2 = this.hn; int[] array3 = InfTree.cplens; int[] array4 = InfTree.cplext; int[] array5 = this.v; int num2; if (num2 == 0) { this.initWorkArea(288); int[] array6 = this.hn; int[] array7 = InfTree.cpdist; int[] array8 = InfTree.cpdext; int[] array9 = this.v; int num3; if (num3 == 0) { } if (num3 == -3 || num3 == -5 || num3 != -4) { } return num3; } if (num2 != -3) { while (num2 == -4) { } } throw new NullReferenceException(); } // Token: 0x0600B1B4 RID: 45492 RVA: 0x00299EA0 File Offset: 0x002980A0 [Token(Token = "0x600B1B4")] [Address(RVA = "0x1F13860", Offset = "0x1F12260", VA = "0x181F13860")] internal static int inflate_trees_fixed(int[] bl, int[] bd, int[][] tl, int[][] td, ZlibCodec z) { int[] array = InfTree.fixed_tl; if (array != 0) { } tl[0] = array; int[] array2 = InfTree.fixed_td; if (array2 != 0) { } int num = 0; td[0] = array2; return num; } // Token: 0x0600B1B5 RID: 45493 RVA: 0x00299EDC File Offset: 0x002980DC [Token(Token = "0x600B1B5")] [Address(RVA = "0x1F139F0", Offset = "0x1F123F0", VA = "0x181F139F0")] private void initWorkArea(int vsize) { if (this.cplens != (ulong)0L) { int[] array = this.v; if (array.Length < vsize) { int[] array2 = new int[vsize]; this.v = array2; } int num = 0; Array.Clear(array, num, vsize); int[] array3 = this.c; int num2 = 0; Array.Clear(array3, num2, 16); int[] array4 = this.r; int num3 = 0; array4[0] = num3; this.r[0] = num3; this.r[1] = num3; int[] array5 = this.u; int num4 = 0; Array.Clear(array5, num4, 15); int[] array6 = this.x; int num5 = 0; Array.Clear(array6, num5, 16); return; } int[] array7 = new int[1]; this.hn = array7; int[] array8 = new int[vsize]; this.v = array8; int[] array9 = new int[16]; this.c = array9; int[] array10 = new int[3]; this.r = array10; int[] array11 = new int[15]; this.u = array11; int[] array12 = new int[16]; this.x = array12; } // Token: 0x0600B1B6 RID: 45494 RVA: 0x00299FFC File Offset: 0x002981FC [Token(Token = "0x600B1B6")] [Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")] public InfTree() { } // Token: 0x0600B1B7 RID: 45495 RVA: 0x0029A010 File Offset: 0x00298210 // Note: this type is marked as 'beforefieldinit'. [Token(Token = "0x600B1B7")] [Address(RVA = "0x1F126A0", Offset = "0x1F110A0", VA = "0x181F126A0")] static InfTree() { int[] array = new int[1536]; RuntimeHelpers.InitializeArray(array, fieldof(.A474A0BEC4E2CE8491839502AE85F6EA8504C6BD).FieldHandle); InfTree.fixed_tl = array; int[] array2 = new int[96]; RuntimeHelpers.InitializeArray(array2, fieldof(.1B180C6E41F096D53222F5E8EF558B78182CA401).FieldHandle); InfTree.fixed_td = array2; int[] array3 = new int[31]; RuntimeHelpers.InitializeArray(array3, fieldof(.8ED8F61DAA454B49CD5059AE4486C59174324E9E).FieldHandle); InfTree.cplens = array3; int[] array4 = new int[31]; RuntimeHelpers.InitializeArray(array4, fieldof(.DACFCC5E985D9E113ABB74724C5D3CC4FDC4FB8A).FieldHandle); InfTree.cplext = array4; int[] array5 = new int[30]; RuntimeHelpers.InitializeArray(array5, fieldof(.D068832E6B13A623916709C1E0E25ADCBE7B455F).FieldHandle); InfTree.cpdist = array5; int[] array6 = new int[30]; RuntimeHelpers.InitializeArray(array6, fieldof(.79D521E6E3E55103005E9CC3FA43B3174FAF090F).FieldHandle); InfTree.cpdext = array6; } // Token: 0x040074B0 RID: 29872 [Token(Token = "0x40074B0")] private const int MANY = 1440; // Token: 0x040074B1 RID: 29873 [Token(Token = "0x40074B1")] private const int Z_OK = 0; // Token: 0x040074B2 RID: 29874 [Token(Token = "0x40074B2")] private const int Z_STREAM_END = 1; // Token: 0x040074B3 RID: 29875 [Token(Token = "0x40074B3")] private const int Z_NEED_DICT = 2; // Token: 0x040074B4 RID: 29876 [Token(Token = "0x40074B4")] private const int Z_ERRNO = -1; // Token: 0x040074B5 RID: 29877 [Token(Token = "0x40074B5")] private const int Z_STREAM_ERROR = -2; // Token: 0x040074B6 RID: 29878 [Token(Token = "0x40074B6")] private const int Z_DATA_ERROR = -3; // Token: 0x040074B7 RID: 29879 [Token(Token = "0x40074B7")] private const int Z_MEM_ERROR = -4; // Token: 0x040074B8 RID: 29880 [Token(Token = "0x40074B8")] private const int Z_BUF_ERROR = -5; // Token: 0x040074B9 RID: 29881 [Token(Token = "0x40074B9")] private const int Z_VERSION_ERROR = -6; // Token: 0x040074BA RID: 29882 [Token(Token = "0x40074BA")] internal const int fixed_bl = 9; // Token: 0x040074BB RID: 29883 [Token(Token = "0x40074BB")] internal const int fixed_bd = 5; // Token: 0x040074BC RID: 29884 [Token(Token = "0x40074BC")] internal static readonly int[] fixed_tl; // Token: 0x040074BD RID: 29885 [Token(Token = "0x40074BD")] internal static readonly int[] fixed_td; // Token: 0x040074BE RID: 29886 [Token(Token = "0x40074BE")] internal static readonly int[] cplens; // Token: 0x040074BF RID: 29887 [Token(Token = "0x40074BF")] internal static readonly int[] cplext; // Token: 0x040074C0 RID: 29888 [Token(Token = "0x40074C0")] internal static readonly int[] cpdist; // Token: 0x040074C1 RID: 29889 [Token(Token = "0x40074C1")] internal static readonly int[] cpdext; // Token: 0x040074C2 RID: 29890 [Token(Token = "0x40074C2")] internal const int BMAX = 15; // Token: 0x040074C3 RID: 29891 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x40074C3")] internal int[] hn; // Token: 0x040074C4 RID: 29892 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x40074C4")] internal int[] v; // Token: 0x040074C5 RID: 29893 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x40074C5")] internal int[] c; // Token: 0x040074C6 RID: 29894 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x40074C6")] internal int[] r; // Token: 0x040074C7 RID: 29895 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x40074C7")] internal int[] u; // Token: 0x040074C8 RID: 29896 [global::Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x40074C8")] internal int[] x; } }