Ejemplo n.º 1
0
        // 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]]);
        }
Ejemplo n.º 2
0
 // 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;
     }
 }
Ejemplo n.º 3
0
        // 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();
        }
Ejemplo n.º 4
0
        // 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;
        }
Ejemplo n.º 5
0
        // 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);
        }