예제 #1
0
 internal static int smethod_0(int A_0)
 {
     if (A_0 >= 0x100)
     {
         return(sbyte_1[0x100 + Class604.smethod_0(A_0, 7)]);
     }
     return(sbyte_1[A_0]);
 }
예제 #2
0
    internal static int smethod_2(int A_0, int A_1)
    {
        int num = 0;

        do
        {
            num |= A_0 & 1;
            A_0  = Class604.smethod_0(A_0, 1);
            num  = num << 1;
        }while (--A_1 > 0);
        return(Class604.smethod_0(num, 1));
    }
예제 #3
0
 internal void method_20()
 {
     if (this.int_30 == 0x10)
     {
         this.method_12(this.short_0);
         this.short_0 = 0;
         this.int_30  = 0;
     }
     else if (this.int_30 >= 8)
     {
         this.method_11((byte)this.short_0);
         this.short_0 = (short)Class604.smethod_0(this.short_0, 8);
         this.int_30 -= 8;
     }
 }
예제 #4
0
    internal void method_26(int A_0, int A_1, bool A_2)
    {
        int num2;
        int num3;
        int num = 0;

        if (this.compressionLevel_0 > CompressionLevel.NoCompression)
        {
            if (this.sbyte_0 == 2)
            {
                this.method_19();
            }
            this.class606_2.method_1(this);
            this.class606_1.method_1(this);
            num  = this.method_7();
            num2 = Class604.smethod_0((this.int_50 + 3) + 7, 3);
            num3 = Class604.smethod_0((this.int_54 + 3) + 7, 3);
            if (num3 <= num2)
            {
                num2 = num3;
            }
        }
        else
        {
            num2 = num3 = A_1 + 5;
        }
        if (((A_1 + 4) <= num2) && (A_0 != -1))
        {
            this.method_25(A_0, A_1, A_2);
        }
        else if (num3 == num2)
        {
            this.method_15(2 + (A_2 ? 1 : 0), 3);
            this.method_18(Class605.short_0, Class605.short_1);
        }
        else
        {
            this.method_15(4 + (A_2 ? 1 : 0), 3);
            this.method_8(this.class606_2.int_18 + 1, this.class606_1.int_18 + 1, num + 1);
            this.method_18(this.short_4, this.short_3);
        }
        this.method_4();
        if (A_2)
        {
            this.method_21();
        }
    }
예제 #5
0
    internal void method_15(int A_0, int A_1)
    {
        int num = A_1;

        if (this.int_30 > (0x10 - num))
        {
            this.short_0 = (short)((this.short_0 & 0xffff) | ((A_0 << this.int_30) & 0xffff));
            this.method_12(this.short_0);
            this.short_0 = (short)Class604.smethod_0(A_0, 0x10 - this.int_30);
            this.int_30 += num - 0x10;
        }
        else
        {
            this.short_0 = (short)((this.short_0 & 0xffff) | ((A_0 << this.int_30) & 0xffff));
            this.int_30 += num;
        }
    }
예제 #6
0
    internal void method_19()
    {
        int num  = 0;
        int num2 = 0;
        int num3 = 0;

        while (num < 7)
        {
            num3 += this.short_4[num * 2];
            num++;
        }
        while (num < 0x80)
        {
            num2 += this.short_4[num * 2];
            num++;
        }
        while (num < 0x100)
        {
            num3 += this.short_4[num * 2];
            num++;
        }
        this.sbyte_0 = (num3 > Class604.smethod_0(num2, 2)) ? ((sbyte)0) : ((sbyte)1);
    }
예제 #7
0
 internal bool method_17(int A_0, int A_1)
 {
     this.byte_0[this.int_28 + (this.int_42 * 2)]       = (byte)Class604.smethod_0(A_0, 8);
     this.byte_0[(this.int_28 + (this.int_42 * 2)) + 1] = (byte)A_0;
     this.byte_0[this.int_29 + this.int_42]             = (byte)A_1;
     this.int_42++;
     if (A_0 == 0)
     {
         this.short_4[A_1 * 2] = (short)(this.short_4[A_1 * 2] + 1);
     }
     else
     {
         this.int_48++;
         A_0--;
         this.short_4[((Class606.sbyte_2[A_1] + 0x100) + 1) * 2] = (short)(this.short_4[((Class606.sbyte_2[A_1] + 0x100) + 1) * 2] + 1);
         this.short_3[Class606.smethod_0(A_0) * 2] = (short)(this.short_3[Class606.smethod_0(A_0) * 2] + 1);
     }
     if (((this.int_42 & 0x1fff) == 0) && (this.compressionLevel_0 > ((CompressionLevel)2)))
     {
         int num2 = this.int_42 * 8;
         int num3 = this.int_56 - this.int_31;
         for (int i = 0; i < 30; i++)
         {
             num2 += (int)(this.short_3[i * 2] * (5L + Class606.int_14[i]));
         }
         num2 = Class604.smethod_0(num2, 3);
         if ((this.int_48 < (this.int_42 / 2)) && (num2 < (num3 / 2)))
         {
             return(true);
         }
     }
     if (this.int_42 != (this.int_43 - 1))
     {
         return(this.int_42 == this.int_43);
     }
     return(true);
 }
예제 #8
0
    internal int method_1(int A_0)
    {
        int num9;
        int num              = 5;
        int sourceIndex      = this.class1068_0.int_0;
        int num3             = this.class1068_0.int_1;
        int num4             = this.int_14;
        int num5             = this.int_15;
        int destinationIndex = this.int_26;
        int num7             = (destinationIndex < this.int_23) ? ((this.int_23 - destinationIndex) - 1) : (this.int_17 - destinationIndex);

        goto Label_0879;
Label_005C:
        this.int_14              = num4;
        this.int_15              = num5;
        this.class1068_0.int_1   = num3;
        this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
        this.class1068_0.int_0   = sourceIndex;
        this.int_26              = destinationIndex;
        if ((A_0 = this.class608_0.method_1(this, A_0)) != 1)
        {
            return(this.method_5(A_0));
        }
        A_0              = 0;
        sourceIndex      = this.class1068_0.int_0;
        num3             = this.class1068_0.int_1;
        num4             = this.int_14;
        num5             = this.int_15;
        destinationIndex = this.int_26;
        num7             = (destinationIndex < this.int_23) ? ((this.int_23 - destinationIndex) - 1) : (this.int_17 - destinationIndex);
        if (this.int_20 != 0)
        {
            this.int_22 = 7;
            goto Label_0EAF;
        }
        this.int_22 = 0;
        goto Label_0879;
Label_02E6:
        num9 = this.int_24;
        if (this.int_19 < ((0x102 + (num9 & 0x1f)) + ((num9 >> 5) & 0x1f)))
        {
            num9 = this.int_13[0];
            while (num5 < num9)
            {
                if (num3 == 0)
                {
                    this.int_14              = num4;
                    this.int_15              = num5;
                    this.class1068_0.int_1   = num3;
                    this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                    this.class1068_0.int_0   = sourceIndex;
                    this.int_26              = destinationIndex;
                    return(this.method_5(A_0));
                }
                A_0 = 0;
                num3--;
                num4 |= (this.class1068_0.byte_0[sourceIndex++] & 0xff) << num5;
                num5 += 8;
            }
            num9 = this.int_18[((this.int_25[0] + (num4 & int_11[num9])) * 3) + 1];
            int num15 = this.int_18[((this.int_25[0] + (num4 & int_11[num9])) * 3) + 2];
            if (num15 < 0x10)
            {
                num4  = Class604.smethod_0(num4, num9);
                num5 -= num9;
                this.int_16[this.int_19++] = num15;
            }
            else
            {
                int index = (num15 == 0x12) ? 7 : (num15 - 14);
                int num18 = (num15 == 0x12) ? 11 : 3;
                while (num5 < (num9 + index))
                {
                    if (num3 == 0)
                    {
                        this.int_14              = num4;
                        this.int_15              = num5;
                        this.class1068_0.int_1   = num3;
                        this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                        this.class1068_0.int_0   = sourceIndex;
                        this.int_26              = destinationIndex;
                        return(this.method_5(A_0));
                    }
                    A_0 = 0;
                    num3--;
                    num4 |= (this.class1068_0.byte_0[sourceIndex++] & 0xff) << num5;
                    num5 += 8;
                }
                num4   = Class604.smethod_0(num4, num9);
                num5  -= num9;
                num18 += num4 & int_11[index];
                num4   = Class604.smethod_0(num4, index);
                num5  -= index;
                index  = this.int_19;
                num9   = this.int_24;
                if (((index + num18) > ((0x102 + (num9 & 0x1f)) + ((num9 >> 5) & 0x1f))) || ((num15 == 0x10) && (index < 1)))
                {
                    this.int_16 = null;
                    this.int_22 = 9;
                    this.class1068_0.string_0 = BookmarkStart.b("䈪䌬央倰弲尴匶ᤸ夺吼䬾慀⽂⁄⥆⹈㽊╌潎⍐㙒╔㉖㡘⽚", num);
                    A_0                      = -3;
                    this.int_14              = num4;
                    this.int_15              = num5;
                    this.class1068_0.int_1   = num3;
                    this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                    this.class1068_0.int_0   = sourceIndex;
                    this.int_26              = destinationIndex;
                    return(this.method_5(-3));
                }
                num15 = (num15 == 0x10) ? this.int_16[index - 1] : 0;
                do
                {
                    this.int_16[index++] = num15;
                }while (--num18 != 0);
                this.int_19 = index;
            }
            goto Label_02E6;
        }
        this.int_25[0] = -1;
        int[] numArray6  = new int[] { 9 };
        int[] numArray8  = new int[] { 6 };
        int[] numArray9  = new int[1];
        int[] numArray10 = new int[1];
        num9 = this.int_24;
        num9 = this.class1001_0.method_2(0x101 + (num9 & 0x1f), 1 + ((num9 >> 5) & 0x1f), this.int_16, numArray6, numArray8, numArray9, numArray10, this.int_18, this.class1068_0);
        if (num9 != 0)
        {
            if (num9 == -3)
            {
                this.int_16 = null;
                this.int_22 = 9;
            }
            A_0                      = num9;
            this.int_14              = num4;
            this.int_15              = num5;
            this.class1068_0.int_1   = num3;
            this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
            this.class1068_0.int_0   = sourceIndex;
            this.int_26              = destinationIndex;
            return(this.method_5(A_0));
        }
        this.class608_0.method_0(numArray6[0], numArray8[0], this.int_18, numArray9[0], this.int_18, numArray10[0]);
        this.int_22 = 6;
        goto Label_005C;
Label_042E:
        while (this.int_19 < (4 + Class604.smethod_0(this.int_24, 10)))
        {
            while (num5 < 3)
            {
                if (num3 == 0)
                {
                    this.int_14              = num4;
                    this.int_15              = num5;
                    this.class1068_0.int_1   = num3;
                    this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                    this.class1068_0.int_0   = sourceIndex;
                    this.int_26              = destinationIndex;
                    return(this.method_5(A_0));
                }
                A_0 = 0;
                num3--;
                num4 |= (this.class1068_0.byte_0[sourceIndex++] & 0xff) << num5;
                num5 += 8;
            }
            this.int_16[int_12[this.int_19++]] = num4 & 7;
            num4  = Class604.smethod_0(num4, 3);
            num5 -= 3;
        }
        while (this.int_19 < 0x13)
        {
            this.int_16[int_12[this.int_19++]] = 0;
        }
        this.int_13[0] = 7;
        num9           = this.class1001_0.method_1(this.int_16, this.int_13, this.int_25, this.int_18, this.class1068_0);
        if (num9 != 0)
        {
            A_0 = num9;
            if (A_0 == -3)
            {
                this.int_16 = null;
                this.int_22 = 9;
            }
            this.int_14              = num4;
            this.int_15              = num5;
            this.class1068_0.int_1   = num3;
            this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
            this.class1068_0.int_0   = sourceIndex;
            this.int_26              = destinationIndex;
            return(this.method_5(A_0));
        }
        this.int_19 = 0;
        this.int_22 = 5;
        goto Label_02E6;
Label_0879:
        switch (this.int_22)
        {
        case 0:
            while (num5 < 3)
            {
                if (num3 == 0)
                {
                    this.int_14              = num4;
                    this.int_15              = num5;
                    this.class1068_0.int_1   = num3;
                    this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                    this.class1068_0.int_0   = sourceIndex;
                    this.int_26              = destinationIndex;
                    return(this.method_5(A_0));
                }
                A_0 = 0;
                num3--;
                num4 |= (this.class1068_0.byte_0[sourceIndex++] & 0xff) << num5;
                num5 += 8;
            }
            num9        = num4 & 7;
            this.int_20 = num9 & 1;
            switch (Class604.smethod_0(num9, 1))
            {
            case 0:
                num4        = Class604.smethod_0(num4, 3);
                num5       -= 3;
                num9        = num5 & 7;
                num4        = Class604.smethod_0(num4, num9);
                num5       -= num9;
                this.int_22 = 1;
                break;

            case 1:
            {
                int[]   numArray  = new int[1];
                int[]   numArray2 = new int[1];
                int[][] numArray3 = new int[1][];
                int[][] numArray4 = new int[1][];
                Class1001.smethod_0(numArray, numArray2, numArray3, numArray4, this.class1068_0);
                this.class608_0.method_0(numArray[0], numArray2[0], numArray3[0], 0, numArray4[0], 0);
                num4        = Class604.smethod_0(num4, 3);
                num5       -= 3;
                this.int_22 = 6;
                break;
            }

            case 2:
                num4        = Class604.smethod_0(num4, 3);
                num5       -= 3;
                this.int_22 = 3;
                break;

            case 3:
                num4        = Class604.smethod_0(num4, 3);
                num5       -= 3;
                this.int_22 = 9;
                this.class1068_0.string_0 = BookmarkStart.b("䈪䌬央倰弲尴匶ᤸ夺儼倾≀⡂敄㍆え㭊⡌", num);
                A_0                      = -3;
                this.int_14              = num4;
                this.int_15              = num5;
                this.class1068_0.int_1   = num3;
                this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                this.class1068_0.int_0   = sourceIndex;
                this.int_26              = destinationIndex;
                return(this.method_5(-3));
            }
            goto Label_0879;

        case 1:
            while (num5 < 0x20)
            {
                if (num3 == 0)
                {
                    this.int_14              = num4;
                    this.int_15              = num5;
                    this.class1068_0.int_1   = num3;
                    this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                    this.class1068_0.int_0   = sourceIndex;
                    this.int_26              = destinationIndex;
                    return(this.method_5(A_0));
                }
                A_0 = 0;
                num3--;
                num4 |= (this.class1068_0.byte_0[sourceIndex++] & 0xff) << num5;
                num5 += 8;
            }
            if ((Class604.smethod_0(~num4, 0x10) & 0xffff) != (num4 & 0xffff))
            {
                this.int_22 = 9;
                this.class1068_0.string_0 = BookmarkStart.b("䈪䌬央倰弲尴匶ᤸ䠺䤼倾㍀♂⅄杆⭈❊≌ⱎ㩐獒㥔㉖㝘㱚⥜㝞በ", num);
                A_0                      = -3;
                this.int_14              = num4;
                this.int_15              = num5;
                this.class1068_0.int_1   = num3;
                this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                this.class1068_0.int_0   = sourceIndex;
                this.int_26              = destinationIndex;
                return(this.method_5(-3));
            }
            this.int_21 = num4 & 0xffff;
            num5        = 0;
            num4        = 0;
            this.int_22 = (this.int_21 != 0) ? 2 : ((this.int_20 != 0) ? 7 : 0);
            goto Label_0879;

        case 2:
            if (num3 == 0)
            {
                this.int_14              = num4;
                this.int_15              = num5;
                this.class1068_0.int_1   = num3;
                this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                this.class1068_0.int_0   = sourceIndex;
                this.int_26              = destinationIndex;
                return(this.method_5(A_0));
            }
            if (num7 == 0)
            {
                if ((destinationIndex == this.int_17) && (this.int_23 != 0))
                {
                    destinationIndex = 0;
                    num7             = (0 < this.int_23) ? ((this.int_23 - destinationIndex) - 1) : (this.int_17 - destinationIndex);
                }
                if (num7 == 0)
                {
                    this.int_26      = destinationIndex;
                    A_0              = this.method_5(A_0);
                    destinationIndex = this.int_26;
                    num7             = (destinationIndex < this.int_23) ? ((this.int_23 - destinationIndex) - 1) : (this.int_17 - destinationIndex);
                    if ((destinationIndex == this.int_17) && (this.int_23 != 0))
                    {
                        destinationIndex = 0;
                        num7             = (0 < this.int_23) ? ((this.int_23 - destinationIndex) - 1) : (this.int_17 - destinationIndex);
                    }
                    if (num7 == 0)
                    {
                        this.int_14              = num4;
                        this.int_15              = num5;
                        this.class1068_0.int_1   = num3;
                        this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                        this.class1068_0.int_0   = sourceIndex;
                        this.int_26              = destinationIndex;
                        return(this.method_5(A_0));
                    }
                }
            }
            A_0  = 0;
            num9 = this.int_21;
            if (num9 > num3)
            {
                num9 = num3;
            }
            if (num9 > num7)
            {
                num9 = num7;
            }
            Array.Copy(this.class1068_0.byte_0, sourceIndex, this.byte_0, destinationIndex, num9);
            sourceIndex      += num9;
            num3             -= num9;
            destinationIndex += num9;
            num7             -= num9;
            this.int_21      -= num9;
            if (this.int_21 == 0)
            {
                this.int_22 = (this.int_20 != 0) ? 7 : 0;
            }
            goto Label_0879;

        case 3:
            while (num5 < 14)
            {
                if (num3 == 0)
                {
                    this.int_14              = num4;
                    this.int_15              = num5;
                    this.class1068_0.int_1   = num3;
                    this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                    this.class1068_0.int_0   = sourceIndex;
                    this.int_26              = destinationIndex;
                    return(this.method_5(A_0));
                }
                A_0 = 0;
                num3--;
                num4 |= (this.class1068_0.byte_0[sourceIndex++] & 0xff) << num5;
                num5 += 8;
            }
            this.int_24 = num9 = num4 & 0x3fff;
            if (((num9 & 0x1f) > 0x1d) || (((num9 >> 5) & 0x1f) > 0x1d))
            {
                this.int_22 = 9;
                this.class1068_0.string_0 = BookmarkStart.b("弪䈬䀮ᄰ帲吴夶䀸ᬺ儼娾⽀⑂ㅄ⽆楈⑊㽌潎㕐㩒♔⍖㡘㕚㹜㩞䅠ၢᱤ੦୨ѪŬᱮ", num);
                A_0                      = -3;
                this.int_14              = num4;
                this.int_15              = num5;
                this.class1068_0.int_1   = num3;
                this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
                this.class1068_0.int_0   = sourceIndex;
                this.int_26              = destinationIndex;
                return(this.method_5(-3));
            }
            num9 = (0x102 + (num9 & 0x1f)) + ((num9 >> 5) & 0x1f);
            if ((this.int_16 != null) && (this.int_16.Length >= num9))
            {
                for (int i = 0; i < num9; i++)
                {
                    this.int_16[i] = 0;
                }
            }
            else
            {
                this.int_16 = new int[num9];
            }
            num4        = Class604.smethod_0(num4, 14);
            num5       -= 14;
            this.int_19 = 0;
            this.int_22 = 4;
            goto Label_042E;

        case 4:
            goto Label_042E;

        case 5:
            goto Label_02E6;

        case 6:
            goto Label_005C;

        case 7:
            break;

        case 8:
            goto Label_0F56;

        case 9:
            A_0                      = -3;
            this.int_14              = num4;
            this.int_15              = num5;
            this.class1068_0.int_1   = num3;
            this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
            this.class1068_0.int_0   = sourceIndex;
            this.int_26              = destinationIndex;
            return(this.method_5(-3));

        default:
            A_0                      = -2;
            this.int_14              = num4;
            this.int_15              = num5;
            this.class1068_0.int_1   = num3;
            this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
            this.class1068_0.int_0   = sourceIndex;
            this.int_26              = destinationIndex;
            return(this.method_5(-2));
        }
Label_0EAF:
        this.int_26      = destinationIndex;
        A_0              = this.method_5(A_0);
        destinationIndex = this.int_26;
        num7             = (destinationIndex < this.int_23) ? ((this.int_23 - destinationIndex) - 1) : (this.int_17 - destinationIndex);
        if (this.int_23 != this.int_26)
        {
            this.int_14              = num4;
            this.int_15              = num5;
            this.class1068_0.int_1   = num3;
            this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
            this.class1068_0.int_0   = sourceIndex;
            this.int_26              = destinationIndex;
            return(this.method_5(A_0));
        }
        this.int_22 = 8;
Label_0F56:
        A_0                      = 1;
        this.int_14              = num4;
        this.int_15              = num5;
        this.class1068_0.int_1   = num3;
        this.class1068_0.long_0 += sourceIndex - this.class1068_0.int_0;
        this.class1068_0.int_0   = sourceIndex;
        this.int_26              = destinationIndex;
        return(this.method_5(1));
    }
예제 #9
0
    private int method_0(int[] A_0, int A_1, int A_2, int A_3, int[] A_4, int[] A_5, int[] A_6, int[] A_7, int[] A_8, int[] A_9, int[] A_10)
    {
        int index = 0;
        int num2  = A_2;

        do
        {
            this.int_19[A_0[A_1 + index]]++;
            index++;
            num2--;
        }while (num2 != 0);
        if (this.int_19[0] == A_2)
        {
            A_6[0] = -1;
            A_7[0] = 0;
            return(0);
        }
        int num14 = A_7[0];
        int num6  = 1;

        while (num6 <= 15)
        {
            if (this.int_19[num6] != 0)
            {
                break;
            }
            num6++;
        }
        int num7 = num6;

        if (num14 < num6)
        {
            num14 = num6;
        }
        num2 = 15;
        while (num2 != 0)
        {
            if (this.int_19[num2] != 0)
            {
                break;
            }
            num2--;
        }
        int num8 = num2;

        if (num14 > num2)
        {
            num14 = num2;
        }
        A_7[0] = num14;
        int num5 = ((int)1) << num6;

        while (num6 < num2)
        {
            num5 -= this.int_19[num6];
            if (num5 < 0)
            {
                return(-3);
            }
            num6++;
            num5 = num5 << 1;
        }
        num5 -= this.int_19[num2];
        if (num5 < 0)
        {
            return(-3);
        }
        this.int_19[num2] += num5;
        num6           = 0;
        this.int_24[1] = 0;
        index          = 1;
        int num4 = 2;

        while (--num2 != 0)
        {
            this.int_24[num4] = num6 += this.int_19[index];
            num4++;
            index++;
        }
        num2  = 0;
        index = 0;
        while (true)
        {
            num6 = A_0[A_1 + index];
            if (num6 != 0)
            {
                A_10[this.int_24[num6]++] = num2;
            }
            index++;
            if (++num2 >= A_2)
            {
                A_2            = this.int_24[num8];
                num2           = 0;
                this.int_24[0] = 0;
                index          = 0;
                int num11 = -1;
                int num13 = -num14;
                this.int_22[0] = 0;
                int num9  = 0;
                int num12 = 0;
                while (num7 <= num8)
                {
                    int num3;
                    int num15 = this.int_19[num7];
                    goto Label_03FF;
Label_01B9:
                    num11++;
                    num13 += num14;
                    num12  = num8 - num13;
                    num12  = (num12 > num14) ? num14 : num12;
                    if ((num3 = ((int)1) << (num6 = num7 - num13)) > (num15 + 1))
                    {
                        num3 -= num15 + 1;
                        num4  = num7;
                        if (num6 < num12)
                        {
                            while (++num6 < num12)
                            {
                                if ((num3 = num3 << 1) <= this.int_19[++num4])
                                {
                                    break;
                                }
                                num3 -= this.int_19[num4];
                            }
                        }
                    }
                    num12 = ((int)1) << num6;
                    if ((A_9[0] + num12) > 0x5a0)
                    {
                        return(-3);
                    }
                    this.int_22[num11] = num9 = A_9[0];
                    A_9[0]            += num12;
                    if (num11 != 0)
                    {
                        this.int_24[num11] = num2;
                        this.int_21[0]     = (sbyte)num6;
                        this.int_21[1]     = (sbyte)num14;
                        num6           = Class604.smethod_0(num2, num13 - num14);
                        this.int_21[2] = (num9 - this.int_22[num11 - 1]) - num6;
                        Array.Copy(this.int_21, 0, A_8, (this.int_22[num11 - 1] + num6) * 3, 3);
                    }
                    else
                    {
                        A_6[0] = num9;
                    }
Label_02DC:
                    if (num7 > (num13 + num14))
                    {
                        goto Label_01B9;
                    }
                    this.int_21[1] = (sbyte)(num7 - num13);
                    if (index >= A_2)
                    {
                        this.int_21[0] = 0xc0;
                    }
                    else if (A_10[index] < A_3)
                    {
                        this.int_21[0] = (A_10[index] < 0x100) ? ((sbyte)0) : ((sbyte)0x60);
                        this.int_21[2] = A_10[index++];
                    }
                    else
                    {
                        this.int_21[0] = (sbyte)((A_5[A_10[index] - A_3] + 0x10) + 0x40);
                        this.int_21[2] = A_4[A_10[index++] - A_3];
                    }
                    num3 = ((int)1) << (num7 - num13);
                    num6 = Class604.smethod_0(num2, num13);
                    while (num6 < num12)
                    {
                        Array.Copy(this.int_21, 0, A_8, (num9 + num6) * 3, 3);
                        num6 += num3;
                    }
                    num6 = ((int)1) << (num7 - 1);
                    while ((num2 & num6) != 0)
                    {
                        num2 ^= num6;
                        num6  = Class604.smethod_0(num6, 1);
                    }
                    num2 ^= num6;
                    for (int i = (((int)1) << num13) - 1; (num2 & i) != this.int_24[num11]; i = (((int)1) << num13) - 1)
                    {
                        num11--;
                        num13 -= num14;
                    }
Label_03FF:
                    if (num15-- != 0)
                    {
                        goto Label_02DC;
                    }
                    num7++;
                }
                if ((num5 != 0) && (num8 != 1))
                {
                    return(-5);
                }
                return(0);
            }
        }
    }
예제 #10
0
    internal int method_1(Class607 A_0, int A_1)
    {
        int       num9;
        int       num12;
        int       num    = 7;
        int       num2   = 0;
        int       num3   = 0;
        int       num4   = 0;
        Class1068 class2 = A_0.class1068_0;

        num4 = class2.int_0;
        int num5 = class2.int_1;

        num2 = A_0.int_14;
        num3 = A_0.int_15;
        int num6 = A_0.int_26;
        int num7 = (num6 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);

        goto Label_066B;
Label_0145:
        num12 = num6 - this.int_11;
        while (num12 < 0)
        {
            num12 += A_0.int_17;
        }
        while (this.int_15 != 0)
        {
            if (num7 == 0)
            {
                if ((num6 == A_0.int_17) && (A_0.int_23 != 0))
                {
                    num6 = 0;
                    num7 = (0 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);
                }
                if (num7 == 0)
                {
                    A_0.int_26 = num6;
                    A_1        = A_0.method_5(A_1);
                    num6       = A_0.int_26;
                    num7       = (num6 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);
                    if ((num6 == A_0.int_17) && (A_0.int_23 != 0))
                    {
                        num6 = 0;
                        num7 = (0 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);
                    }
                    if (num7 == 0)
                    {
                        A_0.int_14     = num2;
                        A_0.int_15     = num3;
                        class2.int_1   = num5;
                        class2.long_0 += num4 - class2.int_0;
                        class2.int_0   = num4;
                        A_0.int_26     = num6;
                        return(A_0.method_5(A_1));
                    }
                }
            }
            A_0.byte_0[num6++] = A_0.byte_0[num12++];
            num7--;
            if (num12 == A_0.int_17)
            {
                num12 = 0;
            }
            this.int_15--;
        }
        this.int_19 = 0;
        goto Label_066B;
Label_02E2:
        num9 = this.int_20;
        while (num3 < num9)
        {
            if (num5 == 0)
            {
                A_0.int_14     = num2;
                A_0.int_15     = num3;
                class2.int_1   = num5;
                class2.long_0 += num4 - class2.int_0;
                class2.int_0   = num4;
                A_0.int_26     = num6;
                return(A_0.method_5(A_1));
            }
            A_1 = 0;
            num5--;
            num2 |= (class2.byte_0[num4++] & 0xff) << num3;
            num3 += 8;
        }
        int index = (this.int_22 + (num2 & int_10[num9])) * 3;

        num2  = num2 >> this.int_21[index + 1];
        num3 -= this.int_21[index + 1];
        int num11 = this.int_21[index];

        if ((num11 & 0x10) != 0)
        {
            this.int_14 = num11 & 15;
            this.int_11 = this.int_21[index + 2];
            this.int_19 = 4;
        }
        else
        {
            if ((num11 & 0x40) != 0)
            {
                this.int_19     = 9;
                class2.string_0 = BookmarkStart.b("䐬䄮䜰刲头帶崸ᬺ夼嘾㉀㝂⑄⥆⩈⹊浌ⱎ㹐㝒ご", num);
                A_1             = -3;
                A_0.int_14      = num2;
                A_0.int_15      = num3;
                class2.int_1    = num5;
                class2.long_0  += num4 - class2.int_0;
                class2.int_0    = num4;
                A_0.int_26      = num6;
                return(A_0.method_5(-3));
            }
            this.int_20 = num11;
            this.int_22 = (index / 3) + this.int_21[index + 2];
        }
        goto Label_066B;
Label_044D:
        num9 = this.int_20;
        while (num3 < num9)
        {
            if (num5 == 0)
            {
                A_0.int_14     = num2;
                A_0.int_15     = num3;
                class2.int_1   = num5;
                class2.long_0 += num4 - class2.int_0;
                class2.int_0   = num4;
                A_0.int_26     = num6;
                return(A_0.method_5(A_1));
            }
            A_1 = 0;
            num5--;
            num2 |= (class2.byte_0[num4++] & 0xff) << num3;
            num3 += 8;
        }
        index = (this.int_22 + (num2 & int_10[num9])) * 3;
        num2  = Class604.smethod_0(num2, this.int_21[index + 1]);
        num3 -= this.int_21[index + 1];
        num11 = this.int_21[index];
        if (num11 == 0)
        {
            this.int_16 = this.int_21[index + 2];
            this.int_19 = 6;
        }
        else if ((num11 & 0x10) != 0)
        {
            this.int_14 = num11 & 15;
            this.int_15 = this.int_21[index + 2];
            this.int_19 = 2;
        }
        else if ((num11 & 0x40) == 0)
        {
            this.int_20 = num11;
            this.int_22 = (index / 3) + this.int_21[index + 2];
        }
        else
        {
            if ((num11 & 0x20) == 0)
            {
                this.int_19     = 9;
                class2.string_0 = BookmarkStart.b("䐬䄮䜰刲头帶崸ᬺ儼嘾㕀♂㝄♆╈摊⅌⩎㽐㑒⅔㽖祘㡚㉜㭞Ѡ", num);
                A_1             = -3;
                A_0.int_14      = num2;
                A_0.int_15      = num3;
                class2.int_1    = num5;
                class2.long_0  += num4 - class2.int_0;
                class2.int_0    = num4;
                A_0.int_26      = num6;
                return(A_0.method_5(-3));
            }
            this.int_19 = 7;
        }
Label_066B:
        switch (this.int_19)
        {
        case 0:
            if ((num7 >= 0x102) && (num5 >= 10))
            {
                A_0.int_14     = num2;
                A_0.int_15     = num3;
                class2.int_1   = num5;
                class2.long_0 += num4 - class2.int_0;
                class2.int_0   = num4;
                A_0.int_26     = num6;
                A_1            = this.method_2(this.byte_1, this.byte_0, this.int_17, this.int_18, this.int_12, this.int_13, A_0, class2);
                num4           = class2.int_0;
                num5           = class2.int_1;
                num2           = A_0.int_14;
                num3           = A_0.int_15;
                num6           = A_0.int_26;
                num7           = (num6 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);
                if (A_1 != 0)
                {
                    this.int_19 = (A_1 == 1) ? 7 : 9;
                    goto Label_066B;
                }
            }
            this.int_20 = this.byte_1;
            this.int_21 = this.int_17;
            this.int_22 = this.int_18;
            this.int_19 = 1;
            goto Label_044D;

        case 1:
            goto Label_044D;

        case 2:
            num9 = this.int_14;
            while (num3 < num9)
            {
                if (num5 == 0)
                {
                    A_0.int_14     = num2;
                    A_0.int_15     = num3;
                    class2.int_1   = num5;
                    class2.long_0 += num4 - class2.int_0;
                    class2.int_0   = num4;
                    A_0.int_26     = num6;
                    return(A_0.method_5(A_1));
                }
                A_1 = 0;
                num5--;
                num2 |= (class2.byte_0[num4++] & 0xff) << num3;
                num3 += 8;
            }
            this.int_15 += num2 & int_10[num9];
            num2         = num2 >> num9;
            num3        -= num9;
            this.int_20  = this.byte_0;
            this.int_21  = this.int_12;
            this.int_22  = this.int_13;
            this.int_19  = 3;
            goto Label_02E2;

        case 3:
            goto Label_02E2;

        case 4:
            num9 = this.int_14;
            while (num3 < num9)
            {
                if (num5 == 0)
                {
                    A_0.int_14     = num2;
                    A_0.int_15     = num3;
                    class2.int_1   = num5;
                    class2.long_0 += num4 - class2.int_0;
                    class2.int_0   = num4;
                    A_0.int_26     = num6;
                    return(A_0.method_5(A_1));
                }
                A_1 = 0;
                num5--;
                num2 |= (class2.byte_0[num4++] & 0xff) << num3;
                num3 += 8;
            }
            this.int_11 += num2 & int_10[num9];
            num2         = num2 >> num9;
            num3        -= num9;
            this.int_19  = 5;
            goto Label_0145;

        case 5:
            goto Label_0145;

        case 6:
            if (num7 == 0)
            {
                if ((num6 == A_0.int_17) && (A_0.int_23 != 0))
                {
                    num6 = 0;
                    num7 = (0 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);
                }
                if (num7 == 0)
                {
                    A_0.int_26 = num6;
                    A_1        = A_0.method_5(A_1);
                    num6       = A_0.int_26;
                    num7       = (num6 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);
                    if ((num6 == A_0.int_17) && (A_0.int_23 != 0))
                    {
                        num6 = 0;
                        num7 = (0 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);
                    }
                    if (num7 == 0)
                    {
                        A_0.int_14     = num2;
                        A_0.int_15     = num3;
                        class2.int_1   = num5;
                        class2.long_0 += num4 - class2.int_0;
                        class2.int_0   = num4;
                        A_0.int_26     = num6;
                        return(A_0.method_5(A_1));
                    }
                }
            }
            A_1 = 0;
            A_0.byte_0[num6++] = (byte)this.int_16;
            num7--;
            this.int_19 = 0;
            goto Label_066B;

        case 7:
            if (num3 > 7)
            {
                num3 -= 8;
                num5++;
                num4--;
            }
            A_0.int_26 = num6;
            A_1        = A_0.method_5(A_1);
            num6       = A_0.int_26;
            num7       = (num6 < A_0.int_23) ? ((A_0.int_23 - num6) - 1) : (A_0.int_17 - num6);
            if (A_0.int_23 != A_0.int_26)
            {
                A_0.int_14     = num2;
                A_0.int_15     = num3;
                class2.int_1   = num5;
                class2.long_0 += num4 - class2.int_0;
                class2.int_0   = num4;
                A_0.int_26     = num6;
                return(A_0.method_5(A_1));
            }
            this.int_19 = 8;
            break;

        case 8:
            break;

        case 9:
            A_1            = -3;
            A_0.int_14     = num2;
            A_0.int_15     = num3;
            class2.int_1   = num5;
            class2.long_0 += num4 - class2.int_0;
            class2.int_0   = num4;
            A_0.int_26     = num6;
            return(A_0.method_5(-3));

        default:
            A_1            = -2;
            A_0.int_14     = num2;
            A_0.int_15     = num3;
            class2.int_1   = num5;
            class2.long_0 += num4 - class2.int_0;
            class2.int_0   = num4;
            A_0.int_26     = num6;
            return(A_0.method_5(-2));
        }
        A_1            = 1;
        A_0.int_14     = num2;
        A_0.int_15     = num3;
        class2.int_1   = num5;
        class2.long_0 += num4 - class2.int_0;
        class2.int_0   = num4;
        A_0.int_26     = num6;
        return(A_0.method_5(1));
    }
예제 #11
0
    internal int method_39(FlushType A_0)
    {
        int num = 11;

        if (((this.class1068_0.byte_1 == null) || ((this.class1068_0.byte_0 == null) && (this.class1068_0.int_1 != 0))) || ((this.int_55 == 0x29a) && (A_0 != FlushType.Finish)))
        {
            this.class1068_0.string_0 = string_0[4];
            throw new Exception0(string.Format(BookmarkStart.b("戰尲場制䴸区吼儾♀捂ⱄ㑆楈ⵊ⑌㱎㥐⩒答睖ɘ⁚浜≞㱠", num), this.class1068_0.string_0));
        }
        if (this.class1068_0.int_3 == 0)
        {
            this.class1068_0.string_0 = string_0[7];
            throw new Exception0(BookmarkStart.b("縰䘲䄴䜶䰸伺缼䨾❀╂⁄㕆楈≊㹌潎㝐♒㥔㭖祘獚ᱜ⥞`੢।٦୨ݪ࡬⵮ࡰݲၴѶ㙸๺ॼ彾벀뺂ꖄ랆ꂈ", num));
        }
        int num4 = this.int_41;

        this.int_41 = (int)A_0;
        if (this.int_55 == 0x2a)
        {
            int num2 = (8 + ((this.int_57 - 8) << 4)) << 8;
            int num5 = ((int)((this.compressionLevel_0 - 1) & 0xff)) >> 1;
            if (num5 > 3)
            {
                num5 = 3;
            }
            num2 |= num5 << 6;
            if (this.int_56 != 0)
            {
                num2 |= 0x20;
            }
            num2       += 0x1f - (num2 % 0x1f);
            this.int_55 = 0x71;
            this.method_13(num2);
            if (this.int_56 != 0)
            {
                this.method_13((int)Class604.smethod_1(this.class1068_0.long_2, 0x10));
                this.method_13((int)(this.class1068_0.long_2 & 0xffffL));
            }
            this.class1068_0.long_2 = Class603.smethod_0(0L, null, 0, 0);
        }
        if (this.int_51 != 0)
        {
            this.class1068_0.method_19();
            if (this.class1068_0.int_3 == 0)
            {
                this.int_41 = -1;
                return(0);
            }
        }
        else if (((this.class1068_0.int_1 == 0) && (A_0 <= num4)) && (A_0 != FlushType.Finish))
        {
            return(0);
        }
        if ((this.int_55 == 0x29a) && (this.class1068_0.int_1 != 0))
        {
            this.class1068_0.string_0 = string_0[7];
            throw new Exception0(BookmarkStart.b("䈰䜲吴䌶䰸䠺ᴼȾ籀捂̈́ๆ݈ɊṌݎ๐RŔᙖ൘Ṛ絜神䝠䍢㩤Ѧ٨ཪ࡬౮彰㉲ʹᙶၸ᝺ᱼᵾ임ﺆﶈﺌ욎ミ뎒뒔ꪖ릘ꮚ", num));
        }
        if (((this.class1068_0.int_1 != 0) || (this.int_44 != 0)) || ((A_0 != FlushType.None) && (this.int_55 != 0x29a)))
        {
            BlockState state;
            switch (this.deflateFlavor_0)
            {
            case DeflateFlavor.Store:
                state = this.method_24(A_0);
                break;

            case DeflateFlavor.Fast:
                state = this.method_28(A_0);
                break;

            default:
                state = this.method_29(A_0);
                break;
            }
            switch (state)
            {
            case BlockState.FinishStarted:
            case BlockState.FinishDone:
                this.int_55 = 0x29a;
                break;
            }
            switch (state)
            {
            case BlockState.NeedMore:
            case BlockState.FinishStarted:
                if (this.class1068_0.int_3 == 0)
                {
                    this.int_41 = -1;
                }
                return(0);

            default:
                if (state == BlockState.BlockDone)
                {
                    if (A_0 == FlushType.Partial)
                    {
                        this.method_16();
                    }
                    else
                    {
                        this.method_25(0, 0, false);
                        if (A_0 == FlushType.Full)
                        {
                            for (int i = 0; i < this.int_35; i++)
                            {
                                this.short_5[i] = 0;
                            }
                        }
                    }
                    this.class1068_0.method_19();
                    if (this.class1068_0.int_3 == 0)
                    {
                        this.int_41 = -1;
                        return(0);
                    }
                }
                break;
            }
        }
        if (A_0 == FlushType.Finish)
        {
            if (!this.method_0() || this.bool_0)
            {
                return(1);
            }
            this.method_13((int)Class604.smethod_1(this.class1068_0.long_2, 0x10));
            this.method_13((int)(this.class1068_0.long_2 & 0xffffL));
            this.class1068_0.method_19();
            this.bool_0 = true;
            if (this.int_51 == 0)
            {
                return(1);
            }
        }
        return(0);
    }
예제 #12
0
 internal void method_12(int A_0)
 {
     this.method_11((byte)A_0);
     this.method_11((byte)Class604.smethod_0(A_0, 8));
 }