// Token: 0x06000684 RID: 1668 RVA: 0x0002A418 File Offset: 0x00028618 private int xmethod_1181(int sayıInt_0) { Class_182.NClass_1 nclass_ = this.field_27; int num = (int)(nclass_.field_37[sayıInt_0] & byte.MaxValue); int[] array = nclass_.field_40[num]; int num2 = nclass_.field_43[num]; int i = this.gmethod_1173(num2); int j = this.field_8; int num3 = this.field_7; while (i > array[num2]) { num2++; while (j < 1) { int num4 = this.field_11.ReadByte(); if (num4 < 0) { throw new IOException("unexpected end of stream"); } num3 = (num3 << 8 | num4); j += 8; } j--; i = (i << 1 | (num3 >> j & 1)); } this.field_8 = j; this.field_7 = num3; return(nclass_.field_42[num][i - nclass_.field_41[num][num2]]); }
// Token: 0x06000682 RID: 1666 RVA: 0x00029E74 File Offset: 0x00028074 private void pmethod_1179(int sayıInt_0, int sayıInt_1) { Class_182.NClass_1 nclass_ = this.field_27; char[][] field_ = nclass_.field_46; for (int i = 0; i < sayıInt_1; i++) { int num = 32; int num2 = 0; char[] array = field_[i]; int num3 = sayıInt_0; while (--num3 >= 0) { char c = array[num3]; if ((int)c > num2) { num2 = (int)c; } if ((int)c < num) { num = (int)c; } } Class_182.kmethod_1177(nclass_.field_40[i], nclass_.field_41[i], nclass_.field_42[i], field_[i], num, num2, sayıInt_0); nclass_.field_43[i] = num; } }
// Token: 0x06000685 RID: 1669 RVA: 0x0002A500 File Offset: 0x00028700 private void tmethod_1182() { if (this.field_27 == null) { return; } Class_182.NClass_1 nclass_ = this.field_27; int[] array = nclass_.nmethod_1(this.field_3 + 1); int i; for (i = 0; i <= 255; i++) { if (nclass_.field_39[i] < 0 || nclass_.field_39[i] > this.field_3) { throw new Exception("BZ_DATA_ERROR"); } } nclass_.field_44[0] = 0; for (i = 1; i <= 256; i++) { nclass_.field_44[i] = nclass_.field_39[i - 1]; } for (i = 1; i <= 256; i++) { nclass_.field_44[i] += nclass_.field_44[i - 1]; } for (i = 0; i <= 256; i++) { if (nclass_.field_44[i] < 0 || nclass_.field_44[i] > this.field_3 + 1) { string message = string.Format("BZ_DATA_ERROR: cftab[{0}]={1} last={2}", i, nclass_.field_44[i], this.field_3); throw new Exception(message); } } for (i = 1; i <= 256; i++) { if (nclass_.field_44[i - 1] > nclass_.field_44[i]) { throw new Exception("BZ_DATA_ERROR"); } } i = 0; int num = this.field_3; while (i <= num) { array[nclass_.field_44[(int)(nclass_.field_49[i] & byte.MaxValue)]++] = i; i++; } if (this.field_4 < 0 || this.field_4 >= array.Length) { throw new IOException("stream corrupted"); } this.field_25 = array[this.field_4]; this.field_18 = 0; this.field_21 = 0; this.field_19 = 256; if (this.field_6) { this.field_23 = 0; this.field_24 = 0; this.gmethod_1183(); return; } this.cmethod_1184(); }
// Token: 0x06000683 RID: 1667 RVA: 0x00029F20 File Offset: 0x00028120 private void smethod_1180() { Class_182.NClass_1 nclass_ = this.field_27; this.field_4 = this.gmethod_1173(24); if (this.field_4 < 0) { throw new IOException("BZ_DATA_ERROR"); } if (this.field_4 > 10 + Class_183.BlockSizeMultiple * this.field_5) { throw new IOException("BZ_DATA_ERROR"); } this.lmethod_1178(); byte[] field_ = nclass_.field_45; int num = this.field_5 * Class_183.BlockSizeMultiple; int num2 = 256; while (--num2 >= 0) { field_[num2] = (byte)num2; nclass_.field_39[num2] = 0; } int num3 = 0; int num4 = Class_183.G_SIZE - 1; int num5 = this.field_10 + 1; int num6 = this.xmethod_1181(0); int num7 = this.field_7; int i = this.field_8; int num8 = -1; int num9 = (int)(nclass_.field_37[num3] & byte.MaxValue); int[] array = nclass_.field_41[num9]; int[] array2 = nclass_.field_40[num9]; int[] array3 = nclass_.field_42[num9]; int num10 = nclass_.field_43[num9]; while (num6 != num5) { if (num6 == (int)Class_183.RUNA || num6 == (int)Class_183.RUNB) { int num11 = -1; int num12 = 1; for (;;) { if (num6 == (int)Class_183.RUNA) { num11 += num12; } else { if (num6 != (int)Class_183.RUNB) { break; } num11 += num12 << 1; } if (num4 == 0) { num4 = Class_183.G_SIZE - 1; num9 = (int)(nclass_.field_37[++num3] & byte.MaxValue); array = nclass_.field_41[num9]; array2 = nclass_.field_40[num9]; array3 = nclass_.field_42[num9]; num10 = nclass_.field_43[num9]; } else { num4--; } int num13 = num10; while (i < num13) { int num14 = this.field_11.ReadByte(); if (num14 < 0) { goto IL_1F2; } num7 = (num7 << 8 | num14); i += 8; } int j = num7 >> i - num13 & (1 << num13) - 1; i -= num13; while (j > array2[num13]) { num13++; while (i < 1) { int num15 = this.field_11.ReadByte(); if (num15 < 0) { goto IL_25A; } num7 = (num7 << 8 | num15); i += 8; } i--; j = (j << 1 | (num7 >> i & 1)); } num6 = array3[j - array[num13]]; num12 <<= 1; } byte b = nclass_.field_36[(int)field_[0]]; nclass_.field_39[(int)(b & byte.MaxValue)] += num11 + 1; while (num11-- >= 0) { nclass_.field_49[++num8] = b; } if (num8 >= num) { throw new IOException("block overrun"); } continue; IL_1F2: throw new IOException("unexpected end of stream"); IL_25A: throw new IOException("unexpected end of stream"); } if (++num8 >= num) { throw new IOException("block overrun"); } byte b2 = field_[num6 - 1]; nclass_.field_39[(int)(nclass_.field_36[(int)b2] & byte.MaxValue)]++; nclass_.field_49[num8] = nclass_.field_36[(int)b2]; if (num6 <= 16) { int k = num6 - 1; while (k > 0) { field_[k] = field_[--k]; } } else { Buffer.BlockCopy(field_, 0, field_, 1, num6 - 1); } field_[0] = b2; if (num4 == 0) { num4 = Class_183.G_SIZE - 1; num9 = (int)(nclass_.field_37[++num3] & byte.MaxValue); array = nclass_.field_41[num9]; array2 = nclass_.field_40[num9]; array3 = nclass_.field_42[num9]; num10 = nclass_.field_43[num9]; } else { num4--; } int num16 = num10; while (i < num16) { int num17 = this.field_11.ReadByte(); if (num17 < 0) { throw new IOException("unexpected end of stream"); } num7 = (num7 << 8 | num17); i += 8; } int l = num7 >> i - num16 & (1 << num16) - 1; i -= num16; while (l > array2[num16]) { num16++; while (i < 1) { int num18 = this.field_11.ReadByte(); if (num18 < 0) { throw new IOException("unexpected end of stream"); } num7 = (num7 << 8 | num18); i += 8; } i--; l = (l << 1 | (num7 >> i & 1)); } num6 = array3[l - array[num16]]; } this.field_3 = num8; this.field_8 = i; this.field_7 = num7; }
// Token: 0x06000681 RID: 1665 RVA: 0x00029C84 File Offset: 0x00027E84 private void lmethod_1178() { Class_182.NClass_1 nclass_ = this.field_27; bool[] field_ = nclass_.field_35; byte[] field_2 = nclass_.field_47; int num = 0; for (int i = 0; i < 16; i++) { if (this.cmethod_1174()) { num |= 1 << i; } } int num2 = 256; while (--num2 >= 0) { field_[num2] = false; } for (int j = 0; j < 16; j++) { if ((num & 1 << j) != 0) { int num3 = j << 4; for (int k = 0; k < 16; k++) { if (this.cmethod_1174()) { field_[num3 + k] = true; } } } } this.cmethod_1154(); int num4 = this.field_10 + 2; int num5 = this.gmethod_1173(3); int num6 = this.gmethod_1173(15); for (int l = 0; l < num6; l++) { int num7 = 0; while (this.cmethod_1174()) { num7++; } nclass_.field_38[l] = (byte)num7; } int num8 = num5; while (--num8 >= 0) { field_2[num8] = (byte)num8; } for (int m = 0; m < num6; m++) { int n = (int)nclass_.field_38[m]; byte b = field_2[n]; while (n > 0) { field_2[n] = field_2[n - 1]; n--; } field_2[0] = b; nclass_.field_37[m] = b; } char[][] field_3 = nclass_.field_46; for (int num9 = 0; num9 < num5; num9++) { int num10 = this.gmethod_1173(5); char[] array = field_3[num9]; for (int num11 = 0; num11 < num4; num11++) { while (this.cmethod_1174()) { num10 += (this.cmethod_1174() ? -1 : 1); } array[num11] = (char)num10; } } this.pmethod_1179(num4, num5); }