using System; namespace Atrasis.Magic.Servers.Core.Libs.ZLib { // Token: 0x020000D1 RID: 209 internal sealed class InfTree { // Token: 0x0600061B RID: 1563 RVA: 0x000128BC File Offset: 0x00010ABC 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 num = 0; int num2 = n; do { this.c[b[bindex + num]]++; num++; num2--; } while (num2 != 0); if (this.c[0] == n) { t[0] = -1; m[0] = 0; return 0; } int num3 = m[0]; int i = 1; while (i <= 15 && this.c[i] == 0) { i++; } int j = i; if (num3 < i) { num3 = i; } num2 = 15; while (num2 != 0 && this.c[num2] == 0) { num2--; } int num4 = num2; if (num3 > num2) { num3 = num2; } m[0] = num3; int num5 = 1 << i; while (i < num2) { if ((num5 -= this.c[i]) < 0) { return -3; } i++; num5 <<= 1; } if ((num5 -= this.c[num2]) < 0) { return -3; } this.c[num2] += num5; int[] array = this.x; int num6 = 1; int num7 = 0; i = 0; array[num6] = num7; num = 1; int num8 = 2; while (--num2 != 0) { i = (this.x[num8] = i + this.c[num]); num8++; num++; } num2 = 0; num = 0; do { if ((i = b[bindex + num]) != 0) { int[] array2 = this.x; int num9 = i; int num10 = array2[num9]; array2[num9] = num10 + 1; v[num10] = num2; } num++; } while (++num2 < n); n = this.x[num4]; int[] array3 = this.x; int num11 = 0; int num12 = 0; num2 = 0; array3[num11] = num12; num = 0; int num13 = -1; int num14 = -num3; this.u[0] = 0; int num15 = 0; int num16 = 0; while (j <= num4) { int num17 = this.c[j]; while (num17-- != 0) { int num18; while (j > num14 + num3) { num13++; num14 += num3; num16 = num4 - num14; num16 = ((num16 > num3) ? num3 : num16); if ((num18 = 1 << ((i = j - num14) & 31)) > num17 + 1) { num18 -= num17 + 1; num8 = j; if (i < num16) { while (++i < num16 && (num18 <<= 1) > this.c[++num8]) { num18 -= this.c[num8]; } } } num16 = 1 << i; if (hn[0] + num16 > 1440) { return -3; } num15 = (this.u[num13] = hn[0]); hn[0] += num16; if (num13 != 0) { this.x[num13] = num2; this.r[0] = (int)((sbyte)i); this.r[1] = (int)((sbyte)num3); i = SharedUtils.URShift(num2, num14 - num3); this.r[2] = num15 - this.u[num13 - 1] - i; Array.Copy(this.r, 0, hp, (this.u[num13 - 1] + i) * 3, 3); } else { t[0] = num15; } } this.r[1] = (int)((sbyte)(j - num14)); if (num >= n) { this.r[0] = 192; } else if (v[num] < s) { this.r[0] = (int)((v[num] < 256) ? 0 : 96); this.r[2] = v[num++]; } else { this.r[0] = (int)((sbyte)(e[v[num] - s] + 16 + 64)); this.r[2] = d[v[num++] - s]; } num18 = 1 << j - num14; for (i = SharedUtils.URShift(num2, num14); i < num16; i += num18) { Array.Copy(this.r, 0, hp, (num15 + i) * 3, 3); } i = 1 << j - 1; while ((num2 & i) != 0) { num2 ^= i; i = SharedUtils.URShift(i, 1); } num2 ^= i; int num19 = (1 << num14) - 1; while ((num2 & num19) != this.x[num13]) { num13--; num14 -= num3; num19 = (1 << num14) - 1; } } j++; } if (num5 != 0) { if (num4 != 1) { return -5; } } return 0; } // Token: 0x0600061C RID: 1564 RVA: 0x00012D00 File Offset: 0x00010F00 internal int inflate_trees_bits(int[] c, int[] bb, int[] tb, int[] hp, ZLibCodec z) { this.initWorkArea(19); this.hn[0] = 0; int num = this.huft_build(c, 0, 19, 19, null, null, tb, bb, hp, this.hn, this.v); if (num == -3) { z.Message = "oversubscribed dynamic bit lengths tree"; } else if (num == -5 || bb[0] == 0) { z.Message = "incomplete dynamic bit lengths tree"; num = -3; } return num; } // Token: 0x0600061D RID: 1565 RVA: 0x00012D6C File Offset: 0x00010F6C 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); this.hn[0] = 0; int num = this.huft_build(c, 0, nl, 257, InfTree.cplens, InfTree.cplext, tl, bl, hp, this.hn, this.v); if (num != 0 || bl[0] == 0) { if (num == -3) { z.Message = "oversubscribed literal/length tree"; } else if (num != -4) { z.Message = "incomplete literal/length tree"; num = -3; } return num; } this.initWorkArea(288); num = this.huft_build(c, nl, nd, 0, InfTree.cpdist, InfTree.cpdext, td, bd, hp, this.hn, this.v); if (num == 0 && (bd[0] != 0 || nl <= 257)) { return 0; } if (num == -3) { z.Message = "oversubscribed distance tree"; } else if (num == -5) { z.Message = "incomplete distance tree"; num = -3; } else if (num != -4) { z.Message = "empty distance tree with lengths"; num = -3; } return num; } // Token: 0x0600061E RID: 1566 RVA: 0x00008467 File Offset: 0x00006667 internal static int inflate_trees_fixed(int[] bl, int[] bd, int[][] tl, int[][] td, ZLibCodec z) { bl[0] = 9; bd[0] = 5; tl[0] = InfTree.fixed_tl; td[0] = InfTree.fixed_td; return 0; } // Token: 0x0600061F RID: 1567 RVA: 0x00012E74 File Offset: 0x00011074 private void initWorkArea(int vsize) { if (this.hn == null) { this.hn = new int[1]; this.v = new int[vsize]; this.c = new int[16]; this.r = new int[3]; this.u = new int[15]; this.x = new int[16]; return; } if (this.v.Length < vsize) { this.v = new int[vsize]; } Array.Clear(this.v, 0, vsize); Array.Clear(this.c, 0, 16); this.r[0] = 0; this.r[1] = 0; this.r[2] = 0; Array.Clear(this.u, 0, 15); Array.Clear(this.x, 0, 16); } // Token: 0x040002EE RID: 750 private const int MANY = 1440; // Token: 0x040002EF RID: 751 private const int Z_OK = 0; // Token: 0x040002F0 RID: 752 private const int Z_STREAM_END = 1; // Token: 0x040002F1 RID: 753 private const int Z_NEED_DICT = 2; // Token: 0x040002F2 RID: 754 private const int Z_ERRNO = -1; // Token: 0x040002F3 RID: 755 private const int Z_STREAM_ERROR = -2; // Token: 0x040002F4 RID: 756 private const int Z_DATA_ERROR = -3; // Token: 0x040002F5 RID: 757 private const int Z_MEM_ERROR = -4; // Token: 0x040002F6 RID: 758 private const int Z_BUF_ERROR = -5; // Token: 0x040002F7 RID: 759 private const int Z_VERSION_ERROR = -6; // Token: 0x040002F8 RID: 760 internal const int fixed_bl = 9; // Token: 0x040002F9 RID: 761 internal const int fixed_bd = 5; // Token: 0x040002FA RID: 762 internal static readonly int[] fixed_tl = new int[] { 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 160, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 218, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 217, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 163, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255 }; // Token: 0x040002FB RID: 763 internal static readonly int[] fixed_td = new int[] { 80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025, 85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193, 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5, 385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5, 24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90, 5, 3073, 86, 5, 193, 192, 5, 24577 }; // Token: 0x040002FC RID: 764 internal static readonly int[] cplens = new int[] { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 }; // Token: 0x040002FD RID: 765 internal static readonly int[] cplext = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112 }; // Token: 0x040002FE RID: 766 internal static readonly int[] cpdist = new int[] { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 }; // Token: 0x040002FF RID: 767 internal static readonly int[] cpdext = new int[] { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }; // Token: 0x04000300 RID: 768 internal const int BMAX = 15; // Token: 0x04000301 RID: 769 internal int[] hn; // Token: 0x04000302 RID: 770 internal int[] v; // Token: 0x04000303 RID: 771 internal int[] c; // Token: 0x04000304 RID: 772 internal int[] r; // Token: 0x04000305 RID: 773 internal int[] u; // Token: 0x04000306 RID: 774 internal int[] x; } }