示例#1
0
 // Token: 0x060014CA RID: 5322
 // RVA: 0x0006BAB0 File Offset: 0x00069CB0
 static Class198()
 {
     try
     {
         byte[] array = new byte[288];
         int i = 0;
         while (i < 144)
         {
             array[i++] = 8;
         }
         while (i < 256)
         {
             array[i++] = 9;
         }
         while (i < 280)
         {
             array[i++] = 7;
         }
         while (i < 288)
         {
             array[i++] = 8;
         }
         Class198.class198_0 = new Class198(array);
         array = new byte[32];
         i = 0;
         while (i < 32)
         {
             array[i++] = 5;
         }
         Class198.class198_1 = new Class198(array);
     }
     catch (Exception)
     {
         throw new Exception6("InflaterHuffmanTree: static tree length illegal");
     }
 }
示例#2
0
 // Token: 0x060014C6 RID: 5318
 // RVA: 0x0006B730 File Offset: 0x00069930
 public bool method_0(Class201 class201_0)
 {
     while (true)
     {
         switch (this.int_3)
         {
         case 0:
             this.int_4 = class201_0.method_0(5);
             if (this.int_4 >= 0)
             {
                 this.int_4 += 257;
                 class201_0.method_1(5);
                 this.int_3 = 1;
                 goto IL_1FD;
             }
             return false;
         case 1:
             goto IL_1FD;
         case 2:
             goto IL_1AF;
         case 3:
             goto IL_176;
         case 4:
             break;
         case 5:
             goto IL_2C;
         default:
             continue;
         }
         IL_F4:
         int num;
         while (((num = this.class198_0.method_1(class201_0)) & -16) == 0)
         {
             this.byte_1[this.int_9++] = (this.byte_2 = (byte)num);
             if (this.int_9 == this.int_7)
             {
                 return true;
             }
         }
         if (num >= 0)
         {
             if (num >= 17)
             {
                 this.byte_2 = 0;
             }
             else if (this.int_9 == 0)
             {
                 goto IL_2A6;
             }
             this.int_8 = num - 16;
             this.int_3 = 5;
             goto IL_2C;
         }
         return false;
         IL_176:
         while (this.int_9 < this.int_6)
         {
             int num2 = class201_0.method_0(3);
             if (num2 < 0)
             {
                 return false;
             }
             class201_0.method_1(3);
             this.byte_0[Class197.int_2[this.int_9]] = (byte)num2;
             this.int_9++;
         }
         this.class198_0 = new Class198(this.byte_0);
         this.byte_0 = null;
         this.int_9 = 0;
         this.int_3 = 4;
         goto IL_F4;
         IL_2C:
         int num3 = Class197.int_1[this.int_8];
         int num4 = class201_0.method_0(num3);
         if (num4 < 0)
         {
             return false;
         }
         class201_0.method_1(num3);
         num4 += Class197.int_0[this.int_8];
         if (this.int_9 + num4 > this.int_7)
         {
             break;
         }
         while (num4-- > 0)
         {
             this.byte_1[this.int_9++] = this.byte_2;
         }
         if (this.int_9 == this.int_7)
         {
             return true;
         }
         this.int_3 = 4;
         continue;
         IL_1AF:
         this.int_6 = class201_0.method_0(4);
         if (this.int_6 >= 0)
         {
             this.int_6 += 4;
             class201_0.method_1(4);
             this.byte_0 = new byte[19];
             this.int_9 = 0;
             this.int_3 = 3;
             goto IL_176;
         }
         return false;
         IL_1FD:
         this.int_5 = class201_0.method_0(5);
         if (this.int_5 >= 0)
         {
             this.int_5++;
             class201_0.method_1(5);
             this.int_7 = this.int_4 + this.int_5;
             this.byte_1 = new byte[this.int_7];
             this.int_3 = 2;
             goto IL_1AF;
         }
         return false;
     }
     throw new Exception6();
     IL_2A6:
     throw new Exception6();
 }
示例#3
0
 // Token: 0x060014BE RID: 5310
 // RVA: 0x0006B39C File Offset: 0x0006959C
 private bool method_4()
 {
     switch (this.int_4)
     {
     case 0:
         return this.method_0();
     case 1:
         return this.method_1();
     case 2:
         if (this.bool_0)
         {
             if (this.bool_1)
             {
                 this.int_4 = 12;
                 return false;
             }
             this.class201_0.method_4();
             this.int_6 = 32;
             this.int_4 = 11;
             return true;
         }
         else
         {
             int num = this.class201_0.method_0(3);
             if (num < 0)
             {
                 return false;
             }
             this.class201_0.method_1(3);
             if ((num & 1) != 0)
             {
                 this.bool_0 = true;
             }
             switch (num >> 1)
             {
             case 0:
                 this.class201_0.method_4();
                 this.int_4 = 3;
                 break;
             case 1:
                 this.class198_0 = Class198.class198_0;
                 this.class198_1 = Class198.class198_1;
                 this.int_4 = 7;
                 break;
             case 2:
                 this.class197_0 = new Class197();
                 this.int_4 = 6;
                 break;
             default:
                 throw new Exception6("Unknown block type " + num);
             }
             return true;
         }
         break;
     case 3:
         if ((this.int_9 = this.class201_0.method_0(16)) < 0)
         {
             return false;
         }
         this.class201_0.method_1(16);
         this.int_4 = 4;
         break;
     case 4:
         break;
     case 5:
         goto IL_1A4;
     case 6:
         if (!this.class197_0.method_0(this.class201_0))
         {
             return false;
         }
         this.class198_0 = this.class197_0.method_1();
         this.class198_1 = this.class197_0.method_2();
         this.int_4 = 7;
         goto IL_228;
     case 7:
     case 8:
     case 9:
     case 10:
         goto IL_228;
     case 11:
         return this.method_3();
     case 12:
         return false;
     default:
         throw new Exception6("Inflater.Decode unknown mode");
     }
     int num2 = this.class201_0.method_0(16);
     if (num2 < 0)
     {
         return false;
     }
     this.class201_0.method_1(16);
     if (num2 != (this.int_9 ^ 65535))
     {
         throw new Exception6("broken uncompressed block");
     }
     this.int_4 = 5;
     IL_1A4:
     int num3 = this.class200_0.method_1(this.class201_0, this.int_9);
     this.int_9 -= num3;
     if (this.int_9 == 0)
     {
         this.int_4 = 2;
         return true;
     }
     return !this.class201_0.method_5();
     IL_228:
     return this.method_2();
 }
示例#4
0
 // Token: 0x060014BC RID: 5308
 // RVA: 0x0006B0CC File Offset: 0x000692CC
 private bool method_2()
 {
     int i = this.class200_0.method_2();
     while (i >= 258)
     {
         int num;
         switch (this.int_4)
         {
         case 7:
             while (((num = this.class198_0.method_1(this.class201_0)) & -256) == 0)
             {
                 this.class200_0.Write(num);
                 if (--i < 258)
                 {
                     return true;
                 }
             }
             if (num >= 257)
             {
                 try
                 {
                     this.int_7 = Class196.int_0[num - 257];
                     this.int_6 = Class196.int_1[num - 257];
                 }
                 catch (Exception)
                 {
                     throw new Exception6("Illegal rep length code");
                 }
                 goto IL_AC;
             }
             if (num < 0)
             {
                 return false;
             }
             this.class198_1 = null;
             this.class198_0 = null;
             this.int_4 = 2;
             return true;
         case 8:
             goto IL_AC;
         case 9:
             goto IL_FC;
         case 10:
             break;
         default:
             throw new Exception6("Inflater unknown mode");
         }
         IL_13D:
         if (this.int_6 > 0)
         {
             this.int_4 = 10;
             int num2 = this.class201_0.method_0(this.int_6);
             if (num2 < 0)
             {
                 return false;
             }
             this.class201_0.method_1(this.int_6);
             this.int_8 += num2;
         }
         this.class200_0.Repeat(this.int_7, this.int_8);
         i -= this.int_7;
         this.int_4 = 7;
         continue;
         IL_FC:
         num = this.class198_1.method_1(this.class201_0);
         if (num >= 0)
         {
             try
             {
                 this.int_8 = Class196.int_2[num];
                 this.int_6 = Class196.int_3[num];
             }
             catch (Exception)
             {
                 throw new Exception6("Illegal rep dist code");
             }
             goto IL_13D;
         }
         return false;
         IL_AC:
         if (this.int_6 > 0)
         {
             this.int_4 = 8;
             int num3 = this.class201_0.method_0(this.int_6);
             if (num3 < 0)
             {
                 return false;
             }
             this.class201_0.method_1(this.int_6);
             this.int_7 += num3;
         }
         this.int_4 = 9;
         goto IL_FC;
     }
     return true;
 }