import java.io.IOException;

public class Class225_Sub20 extends Class225 {

   static byte[] aByteArray8572;
   int anInt8573;
   int anInt8574;
   int anInt8575;
   int anInt8576;
   boolean aBool8577;
   static Class205[] aClass205Array8578;
   float[] aFloatArray8579;
   int anInt8580 = 0;
   static float[] aFloatArray8581;
   byte[][] aByteArrayArray8582;
   static boolean aBool8583 = false;
   static int anInt8584;
   static Class198[] aClass198Array8585;
   static Class291[] aClass291Array8586;
   static boolean[] aBoolArray8587;
   static int[] anIntArray8588;
   static int anInt8589;
   float[] aFloatArray8590;
   int anInt8591;
   int anInt8592;
   boolean aBool8593;
   static float[] aFloatArray8594;
   static float[] aFloatArray8595;
   static float[] aFloatArray8596;
   static int anInt8597;
   static float[] aFloatArray8598;
   static float[] aFloatArray8599;
   static float[] aFloatArray8600;
   static int anInt8601;
   static int[] anIntArray8602;
   int anInt8603 = 0;
   static Class199[] aClass199Array8604;
   int anInt8605;
   static int[] anIntArray8606;


   public Class225_Sub26_Sub1_Sub2 method13643() {
      Class118_Sub23.method14954(this, 2093904279);
      return this.method13657() && (this.anInt8580 <= this.anInt8573 || this.anInt8603 <= this.anInt8573 / Class305.method5451(-426092442))?null:new Class225_Sub26_Sub1_Sub2(this.anInt8573, this, this.aFloatArray8579, this.anInt8575, this.anInt8576, this.aBool8577);
   }

   static void method13644(byte[] var0, int var1) {
      aByteArray8572 = var0;
      anInt8589 = var1;
      anInt8601 = 0;
   }

   static int method13645() {
      int var0 = aByteArray8572[anInt8589] >> anInt8601 & 1;
      ++anInt8601;
      anInt8589 += anInt8601 >> 3;
      anInt8601 &= 7;
      return var0;
   }

   static int method13646(int var0) {
      int var1 = 0;

      int var2;
      int var3;
      for(var2 = 0; var0 >= 8 - anInt8601; var0 -= var3) {
         var3 = 8 - anInt8601;
         int var4 = (1 << var3) - 1;
         var1 += (aByteArray8572[anInt8589] >> anInt8601 & var4) << var2;
         anInt8601 = 0;
         ++anInt8589;
         var2 += var3;
      }

      if(var0 > 0) {
         var3 = (1 << var0) - 1;
         var1 += (aByteArray8572[anInt8589] >> anInt8601 & var3) << var2;
         anInt8601 += var0;
      }

      return var1;
   }

   void method13647(byte[] var1) throws IOException {
      RS2Buffer var2 = new RS2Buffer(var1);
      this.anInt8573 = var2.readInt_(143068465);
      this.anInt8574 = var2.readInt_(-1550245693);
      this.anInt8575 = var2.readInt_(1476407232);
      this.anInt8576 = var2.readInt_(1114303380);
      if(this.anInt8576 < 0) {
         this.anInt8576 = ~this.anInt8576;
         this.aBool8577 = true;
      }

      int var3 = var2.readInt_(186829423);
      if(var3 < 0) {
         throw new IOException();
      } else {
         this.aByteArrayArray8582 = new byte[var3][];

         for(int var4 = 0; var4 < var3; ++var4) {
            int var5 = 0;

            int var6;
            do {
               var6 = var2.readUnsignedByte(-700559597);
               var5 += var6;
            } while(var6 >= 255);

            byte[] var7 = new byte[var5];
            var2.method13737(var7, 0, var5, 1385214721);
            this.aByteArrayArray8582[var4] = var7;
         }

      }
   }

   static void method13648(byte[] var0) {
      method13644(var0, 0);
      anInt8597 = 1 << method13646(4);
      anInt8584 = 1 << method13646(4);
      aFloatArray8594 = new float[anInt8584];

      int var1;
      int var2;
      int var3;
      int var4;
      int var5;
      for(var1 = 0; var1 < 2; ++var1) {
         var2 = var1 != 0?anInt8584:anInt8597;
         var3 = var2 >> 1;
         var4 = var2 >> 2;
         var5 = var2 >> 3;
         float[] var6 = new float[var3];

         for(int var7 = 0; var7 < var4; ++var7) {
            var6[2 * var7] = (float)Math.cos((double)(4 * var7) * 3.141592653589793D / (double)var2);
            var6[2 * var7 + 1] = -((float)Math.sin((double)(4 * var7) * 3.141592653589793D / (double)var2));
         }

         float[] var13 = new float[var3];

         for(int var8 = 0; var8 < var4; ++var8) {
            var13[2 * var8] = (float)Math.cos((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2));
            var13[2 * var8 + 1] = (float)Math.sin((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2));
         }

         float[] var14 = new float[var4];

         for(int var9 = 0; var9 < var5; ++var9) {
            var14[2 * var9] = (float)Math.cos((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2);
            var14[2 * var9 + 1] = -((float)Math.sin((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2));
         }

         int[] var15 = new int[var5];
         int var10 = Class188.method3314(var5 - 1, -1844119320);

         for(int var11 = 0; var11 < var5; ++var11) {
            var15[var11] = Class498.method8337(var11, var10, (byte)20);
         }

         if(var1 != 0) {
            aFloatArray8598 = var6;
            aFloatArray8599 = var13;
            aFloatArray8600 = var14;
            anIntArray8602 = var15;
         } else {
            aFloatArray8595 = var6;
            aFloatArray8596 = var13;
            aFloatArray8581 = var14;
            anIntArray8606 = var15;
         }
      }

      var1 = method13646(8) + 1;
      aClass205Array8578 = new Class205[var1];

      for(var2 = 0; var2 < var1; ++var2) {
         aClass205Array8578[var2] = new Class205();
      }

      var2 = method13646(6) + 1;

      for(var3 = 0; var3 < var2; ++var3) {
         method13646(16);
      }

      var2 = method13646(6) + 1;
      aClass199Array8604 = new Class199[var2];

      for(var3 = 0; var3 < var2; ++var3) {
         aClass199Array8604[var3] = new Class199();
      }

      var3 = method13646(6) + 1;
      aClass198Array8585 = new Class198[var3];

      for(var4 = 0; var4 < var3; ++var4) {
         aClass198Array8585[var4] = new Class198();
      }

      var4 = method13646(6) + 1;
      aClass291Array8586 = new Class291[var4];

      for(var5 = 0; var5 < var4; ++var5) {
         aClass291Array8586[var5] = new Class291();
      }

      var5 = method13646(6) + 1;
      aBoolArray8587 = new boolean[var5];
      anIntArray8588 = new int[var5];

      for(int var12 = 0; var12 < var5; ++var12) {
         aBoolArray8587[var12] = method13645() != 0;
         method13646(16);
         method13646(16);
         anIntArray8588[var12] = method13646(8);
      }

      aBool8583 = true;
   }

   float[] method13649(int var1) {
      method13644(this.aByteArrayArray8582[var1], 0);
      method13645();
      int var2 = method13646(Class188.method3314(anIntArray8588.length - 1, 556233490));
      boolean var3 = aBoolArray8587[var2];
      int var4 = var3?anInt8584:anInt8597;
      boolean var5 = false;
      boolean var6 = false;
      if(var3) {
         var5 = method13645() != 0;
         var6 = method13645() != 0;
      }

      int var7 = var4 >> 1;
      int var8;
      int var9;
      int var10;
      if(var3 && !var5) {
         var8 = (var4 >> 2) - (anInt8597 >> 2);
         var9 = (var4 >> 2) + (anInt8597 >> 2);
         var10 = anInt8597 >> 1;
      } else {
         var8 = 0;
         var9 = var7;
         var10 = var4 >> 1;
      }

      int var11;
      int var12;
      int var13;
      if(var3 && !var6) {
         var11 = var4 - (var4 >> 2) - (anInt8597 >> 2);
         var12 = var4 - (var4 >> 2) + (anInt8597 >> 2);
         var13 = anInt8597 >> 1;
      } else {
         var11 = var7;
         var12 = var4;
         var13 = var4 >> 1;
      }

      Class291 var14 = aClass291Array8586[anIntArray8588[var2]];
      int var15 = var14.anInt3415;
      int var16 = var14.anIntArray3416[var15];
      boolean var17 = !aClass199Array8604[var16].method3413();
      boolean var40 = var17;

      for(var16 = 0; var16 < var14.anInt3414; ++var16) {
         Class198 var18 = aClass198Array8585[var14.anIntArray3417[var16]];
         float[] var19 = aFloatArray8594;
         var18.method3394(var19, var4 >> 1, var40);
      }

      int var43;
      if(!var17) {
         var16 = var14.anInt3415;
         var43 = var14.anIntArray3416[var16];
         aClass199Array8604[var43].method3407(aFloatArray8594, var4 >> 1);
      }

      int var41;
      if(var17) {
         for(var16 = var4 >> 1; var16 < var4; ++var16) {
            aFloatArray8594[var16] = 0.0F;
         }
      } else {
         var16 = var4 >> 1;
         var43 = var4 >> 2;
         var41 = var4 >> 3;
         float[] var20 = aFloatArray8594;

         int var21;
         for(var21 = 0; var21 < var16; ++var21) {
            var20[var21] *= 0.5F;
         }

         for(var21 = var16; var21 < var4; ++var21) {
            var20[var21] = -var20[var4 - var21 - 1];
         }

         float[] var46 = var3?aFloatArray8598:aFloatArray8595;
         float[] var22 = var3?aFloatArray8599:aFloatArray8596;
         float[] var23 = var3?aFloatArray8600:aFloatArray8581;
         int[] var24 = var3?anIntArray8602:anIntArray8606;

         int var25;
         float var27;
         float var26;
         float var29;
         float var28;
         for(var25 = 0; var25 < var43; ++var25) {
            var26 = var20[4 * var25] - var20[var4 - 4 * var25 - 1];
            var27 = var20[4 * var25 + 2] - var20[var4 - 4 * var25 - 3];
            var28 = var46[2 * var25];
            var29 = var46[2 * var25 + 1];
            var20[var4 - 4 * var25 - 1] = var26 * var28 - var27 * var29;
            var20[var4 - 4 * var25 - 3] = var26 * var29 + var27 * var28;
         }

         float var31;
         float var30;
         for(var25 = 0; var25 < var41; ++var25) {
            var26 = var20[var16 + 3 + 4 * var25];
            var27 = var20[var16 + 1 + 4 * var25];
            var28 = var20[4 * var25 + 3];
            var29 = var20[4 * var25 + 1];
            var20[var16 + 3 + 4 * var25] = var26 + var28;
            var20[var16 + 1 + 4 * var25] = var27 + var29;
            var30 = var46[var16 - 4 - 4 * var25];
            var31 = var46[var16 - 3 - 4 * var25];
            var20[4 * var25 + 3] = (var26 - var28) * var30 - (var27 - var29) * var31;
            var20[4 * var25 + 1] = (var27 - var29) * var30 + (var26 - var28) * var31;
         }

         var25 = Class188.method3314(var4 - 1, -311902858);

         int var47;
         int var49;
         int var48;
         int var52;
         for(var49 = 0; var49 < var25 - 3; ++var49) {
            var47 = var4 >> var49 + 2;
            var48 = 8 << var49;

            for(var52 = 0; var52 < 2 << var49; ++var52) {
               int var50 = var4 - var47 * 2 * var52;
               int var51 = var4 - var47 * (2 * var52 + 1);

               for(int var32 = 0; var32 < var4 >> var49 + 4; ++var32) {
                  int var33 = 4 * var32;
                  float var34 = var20[var50 - 1 - var33];
                  float var35 = var20[var50 - 3 - var33];
                  float var36 = var20[var51 - 1 - var33];
                  float var37 = var20[var51 - 3 - var33];
                  var20[var50 - 1 - var33] = var34 + var36;
                  var20[var50 - 3 - var33] = var35 + var37;
                  float var38 = var46[var32 * var48];
                  float var39 = var46[var32 * var48 + 1];
                  var20[var51 - 1 - var33] = (var34 - var36) * var38 - (var35 - var37) * var39;
                  var20[var51 - 3 - var33] = (var35 - var37) * var38 + (var34 - var36) * var39;
               }
            }
         }

         for(var49 = 1; var49 < var41 - 1; ++var49) {
            var47 = var24[var49];
            if(var49 < var47) {
               var48 = 8 * var49;
               var52 = 8 * var47;
               var30 = var20[var48 + 1];
               var20[var48 + 1] = var20[var52 + 1];
               var20[var52 + 1] = var30;
               var30 = var20[var48 + 3];
               var20[var48 + 3] = var20[var52 + 3];
               var20[var52 + 3] = var30;
               var30 = var20[var48 + 5];
               var20[var48 + 5] = var20[var52 + 5];
               var20[var52 + 5] = var30;
               var30 = var20[var48 + 7];
               var20[var48 + 7] = var20[var52 + 7];
               var20[var52 + 7] = var30;
            }
         }

         for(var49 = 0; var49 < var16; ++var49) {
            var20[var49] = var20[2 * var49 + 1];
         }

         for(var49 = 0; var49 < var41; ++var49) {
            var20[var4 - 1 - 2 * var49] = var20[4 * var49];
            var20[var4 - 2 - 2 * var49] = var20[4 * var49 + 1];
            var20[var4 - var43 - 1 - 2 * var49] = var20[4 * var49 + 2];
            var20[var4 - var43 - 2 - 2 * var49] = var20[4 * var49 + 3];
         }

         for(var49 = 0; var49 < var41; ++var49) {
            var27 = var23[2 * var49];
            var28 = var23[2 * var49 + 1];
            var29 = var20[var16 + 2 * var49];
            var30 = var20[var16 + 2 * var49 + 1];
            var31 = var20[var4 - 2 - 2 * var49];
            float var54 = var20[var4 - 1 - 2 * var49];
            float var53 = var28 * (var29 - var31) + var27 * (var30 + var54);
            var20[var16 + 2 * var49] = (var29 + var31 + var53) * 0.5F;
            var20[var4 - 2 - 2 * var49] = (var29 + var31 - var53) * 0.5F;
            var53 = var28 * (var30 + var54) - var27 * (var29 - var31);
            var20[var16 + 2 * var49 + 1] = (var30 - var54 + var53) * 0.5F;
            var20[var4 - 1 - 2 * var49] = (-var30 + var54 + var53) * 0.5F;
         }

         for(var49 = 0; var49 < var43; ++var49) {
            var20[var49] = var20[2 * var49 + var16] * var22[2 * var49] + var20[2 * var49 + 1 + var16] * var22[2 * var49 + 1];
            var20[var16 - 1 - var49] = var20[2 * var49 + var16] * var22[2 * var49 + 1] - var20[2 * var49 + 1 + var16] * var22[2 * var49];
         }

         for(var49 = 0; var49 < var43; ++var49) {
            var20[var4 - var43 + var49] = -var20[var49];
         }

         for(var49 = 0; var49 < var43; ++var49) {
            var20[var49] = var20[var43 + var49];
         }

         for(var49 = 0; var49 < var43; ++var49) {
            var20[var43 + var49] = -var20[var43 - var49 - 1];
         }

         for(var49 = 0; var49 < var43; ++var49) {
            var20[var16 + var49] = var20[var4 - var49 - 1];
         }

         for(var49 = var8; var49 < var9; ++var49) {
            var27 = (float)Math.sin(((double)(var49 - var8) + 0.5D) / (double)var10 * 0.5D * 3.141592653589793D);
            aFloatArray8594[var49] *= (float)Math.sin(1.5707963267948966D * (double)var27 * (double)var27);
         }

         for(var49 = var11; var49 < var12; ++var49) {
            var27 = (float)Math.sin(((double)(var49 - var11) + 0.5D) / (double)var13 * 0.5D * 3.141592653589793D + 1.5707963267948966D);
            aFloatArray8594[var49] *= (float)Math.sin(1.5707963267948966D * (double)var27 * (double)var27);
         }
      }

      float[] var44 = null;
      if(this.anInt8591 > 0) {
         var43 = this.anInt8591 + var4 >> 2;
         var44 = new float[var43];
         int var45;
         if(!this.aBool8593) {
            for(var41 = 0; var41 < this.anInt8592; ++var41) {
               var45 = (this.anInt8591 >> 1) + var41;
               var44[var41] += this.aFloatArray8590[var45];
            }
         }

         if(!var17) {
            for(var41 = var8; var41 < var4 >> 1; ++var41) {
               var45 = var44.length - (var4 >> 1) + var41;
               var44[var45] += aFloatArray8594[var41];
            }
         }
      }

      float[] var42 = this.aFloatArray8590;
      this.aFloatArray8590 = aFloatArray8594;
      aFloatArray8594 = var42;
      this.anInt8591 = var4;
      this.anInt8592 = var12 - (var4 >> 1);
      this.aBool8593 = var17;
      return var44;
   }

   static boolean method13650(Class253 var0) {
      if(!aBool8583) {
         byte[] var1 = var0.method4547(0, 0, (byte)53);
         if(var1 == null) {
            return false;
         }

         method13648(var1);
      }

      return true;
   }

   static Class225_Sub20 method13651(Class253 var0, int var1, int var2) {
      if(!method13650(var0)) {
         var0.method4506(var1, var2, (byte)-65);
         return null;
      } else {
         byte[] var3 = var0.method4547(var1, var2, (byte)56);
         if(var3 == null) {
            return null;
         } else {
            Class225_Sub20 var4 = null;

            try {
               var4 = new Class225_Sub20(var3);
            } catch (IOException var6) {
               var6.printStackTrace();
            }

            return var4;
         }
      }
   }

   Class225_Sub20(byte[] var1) throws IOException {
      this.method13647(var1);
   }

   static void method13652(byte[] var0, int var1) {
      aByteArray8572 = var0;
      anInt8589 = var1;
      anInt8601 = 0;
   }

   public static Class225_Sub20 method13653(Class253 var0, int var1) {
      if(!method13650(var0)) {
         var0.method4507(var1, -1434756993);
         return null;
      } else {
         byte[] var2 = var0.method4512(var1, 749605384);
         if(var2 == null) {
            return null;
         } else {
            Class225_Sub20 var3 = null;

            try {
               var3 = new Class225_Sub20(var2);
            } catch (IOException var5) {
               var5.printStackTrace();
            }

            return var3;
         }
      }
   }

   int method13654(int var1) {
      int var2 = 0;
      if(this.aFloatArray8579 == null) {
         this.anInt8591 = 0;
         this.aFloatArray8590 = new float[anInt8584];
         this.aFloatArray8579 = new float[this.anInt8574];
         this.anInt8580 = 0;
         this.anInt8605 = 0;
      }

      for(; var1 > this.anInt8580 && this.anInt8605 < this.aByteArrayArray8582.length; ++this.anInt8605) {
         float[] var3 = this.method13649(this.anInt8605);
         if(var3 != null) {
            int var4 = this.anInt8580;
            int var5 = var3.length;
            if(var5 > this.anInt8574 - var4) {
               var5 = this.anInt8574 - var4;
            }

            for(int var6 = 0; var6 < var5; ++var6) {
               this.aFloatArray8579[var4++] = var3[var6];
            }

            var2 += var4 - this.anInt8580;
            this.anInt8580 = var4;
         }
      }

      return var2;
   }

   void method13655(int var1) {
      if(var1 > this.anInt8574 - 1) {
         var1 = this.anInt8574 - 1;
      }

      if(var1 > this.anInt8580) {
         this.anInt8603 = this.method13654(var1);
      } else {
         this.anInt8603 = 0;
      }

      if(!this.method13657()) {
         this.aFloatArray8590 = null;
      }

   }

   int method13656() {
      return this.anInt8580;
   }

   boolean method13657() {
      return this.anInt8580 < this.anInt8574 - 1;
   }

   void method13658(int var1) {
      if(var1 > this.anInt8574 - 1) {
         var1 = this.anInt8574 - 1;
      }

      if(var1 > this.anInt8580) {
         this.anInt8603 = this.method13654(var1);
      } else {
         this.anInt8603 = 0;
      }

      if(!this.method13657()) {
         this.aFloatArray8590 = null;
      }

   }

   static int method13659(int var0) {
      int var1 = 0;

      int var2;
      int var3;
      for(var2 = 0; var0 >= 8 - anInt8601; var0 -= var3) {
         var3 = 8 - anInt8601;
         int var4 = (1 << var3) - 1;
         var1 += (aByteArray8572[anInt8589] >> anInt8601 & var4) << var2;
         anInt8601 = 0;
         ++anInt8589;
         var2 += var3;
      }

      if(var0 > 0) {
         var3 = (1 << var0) - 1;
         var1 += (aByteArray8572[anInt8589] >> anInt8601 & var3) << var2;
         anInt8601 += var0;
      }

      return var1;
   }

   int method13660(int var1) {
      int var2 = 0;
      if(this.aFloatArray8579 == null) {
         this.anInt8591 = 0;
         this.aFloatArray8590 = new float[anInt8584];
         this.aFloatArray8579 = new float[this.anInt8574];
         this.anInt8580 = 0;
         this.anInt8605 = 0;
      }

      for(; var1 > this.anInt8580 && this.anInt8605 < this.aByteArrayArray8582.length; ++this.anInt8605) {
         float[] var3 = this.method13649(this.anInt8605);
         if(var3 != null) {
            int var4 = this.anInt8580;
            int var5 = var3.length;
            if(var5 > this.anInt8574 - var4) {
               var5 = this.anInt8574 - var4;
            }

            for(int var6 = 0; var6 < var5; ++var6) {
               this.aFloatArray8579[var4++] = var3[var6];
            }

            var2 += var4 - this.anInt8580;
            this.anInt8580 = var4;
         }
      }

      return var2;
   }

   static void method13661(byte[] var0) {
      method13644(var0, 0);
      anInt8597 = 1 << method13646(4);
      anInt8584 = 1 << method13646(4);
      aFloatArray8594 = new float[anInt8584];

      int var1;
      int var2;
      int var3;
      int var4;
      int var5;
      for(var1 = 0; var1 < 2; ++var1) {
         var2 = var1 != 0?anInt8584:anInt8597;
         var3 = var2 >> 1;
         var4 = var2 >> 2;
         var5 = var2 >> 3;
         float[] var6 = new float[var3];

         for(int var7 = 0; var7 < var4; ++var7) {
            var6[2 * var7] = (float)Math.cos((double)(4 * var7) * 3.141592653589793D / (double)var2);
            var6[2 * var7 + 1] = -((float)Math.sin((double)(4 * var7) * 3.141592653589793D / (double)var2));
         }

         float[] var13 = new float[var3];

         for(int var8 = 0; var8 < var4; ++var8) {
            var13[2 * var8] = (float)Math.cos((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2));
            var13[2 * var8 + 1] = (float)Math.sin((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2));
         }

         float[] var14 = new float[var4];

         for(int var9 = 0; var9 < var5; ++var9) {
            var14[2 * var9] = (float)Math.cos((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2);
            var14[2 * var9 + 1] = -((float)Math.sin((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2));
         }

         int[] var15 = new int[var5];
         int var10 = Class188.method3314(var5 - 1, -2123460645);

         for(int var11 = 0; var11 < var5; ++var11) {
            var15[var11] = Class498.method8337(var11, var10, (byte)-47);
         }

         if(var1 != 0) {
            aFloatArray8598 = var6;
            aFloatArray8599 = var13;
            aFloatArray8600 = var14;
            anIntArray8602 = var15;
         } else {
            aFloatArray8595 = var6;
            aFloatArray8596 = var13;
            aFloatArray8581 = var14;
            anIntArray8606 = var15;
         }
      }

      var1 = method13646(8) + 1;
      aClass205Array8578 = new Class205[var1];

      for(var2 = 0; var2 < var1; ++var2) {
         aClass205Array8578[var2] = new Class205();
      }

      var2 = method13646(6) + 1;

      for(var3 = 0; var3 < var2; ++var3) {
         method13646(16);
      }

      var2 = method13646(6) + 1;
      aClass199Array8604 = new Class199[var2];

      for(var3 = 0; var3 < var2; ++var3) {
         aClass199Array8604[var3] = new Class199();
      }

      var3 = method13646(6) + 1;
      aClass198Array8585 = new Class198[var3];

      for(var4 = 0; var4 < var3; ++var4) {
         aClass198Array8585[var4] = new Class198();
      }

      var4 = method13646(6) + 1;
      aClass291Array8586 = new Class291[var4];

      for(var5 = 0; var5 < var4; ++var5) {
         aClass291Array8586[var5] = new Class291();
      }

      var5 = method13646(6) + 1;
      aBoolArray8587 = new boolean[var5];
      anIntArray8588 = new int[var5];

      for(int var12 = 0; var12 < var5; ++var12) {
         aBoolArray8587[var12] = method13645() != 0;
         method13646(16);
         method13646(16);
         anIntArray8588[var12] = method13646(8);
      }

      aBool8583 = true;
   }

   static int method13662() {
      int var0 = aByteArray8572[anInt8589] >> anInt8601 & 1;
      ++anInt8601;
      anInt8589 += anInt8601 >> 3;
      anInt8601 &= 7;
      return var0;
   }

   static int method13663() {
      int var0 = aByteArray8572[anInt8589] >> anInt8601 & 1;
      ++anInt8601;
      anInt8589 += anInt8601 >> 3;
      anInt8601 &= 7;
      return var0;
   }

   static int method13664() {
      int var0 = aByteArray8572[anInt8589] >> anInt8601 & 1;
      ++anInt8601;
      anInt8589 += anInt8601 >> 3;
      anInt8601 &= 7;
      return var0;
   }

   static void method13665(byte[] var0) {
      method13644(var0, 0);
      anInt8597 = 1 << method13646(4);
      anInt8584 = 1 << method13646(4);
      aFloatArray8594 = new float[anInt8584];

      int var1;
      int var2;
      int var3;
      int var4;
      int var5;
      for(var1 = 0; var1 < 2; ++var1) {
         var2 = var1 != 0?anInt8584:anInt8597;
         var3 = var2 >> 1;
         var4 = var2 >> 2;
         var5 = var2 >> 3;
         float[] var6 = new float[var3];

         for(int var7 = 0; var7 < var4; ++var7) {
            var6[2 * var7] = (float)Math.cos((double)(4 * var7) * 3.141592653589793D / (double)var2);
            var6[2 * var7 + 1] = -((float)Math.sin((double)(4 * var7) * 3.141592653589793D / (double)var2));
         }

         float[] var13 = new float[var3];

         for(int var8 = 0; var8 < var4; ++var8) {
            var13[2 * var8] = (float)Math.cos((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2));
            var13[2 * var8 + 1] = (float)Math.sin((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2));
         }

         float[] var14 = new float[var4];

         for(int var9 = 0; var9 < var5; ++var9) {
            var14[2 * var9] = (float)Math.cos((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2);
            var14[2 * var9 + 1] = -((float)Math.sin((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2));
         }

         int[] var15 = new int[var5];
         int var10 = Class188.method3314(var5 - 1, 1330939944);

         for(int var11 = 0; var11 < var5; ++var11) {
            var15[var11] = Class498.method8337(var11, var10, (byte)32);
         }

         if(var1 != 0) {
            aFloatArray8598 = var6;
            aFloatArray8599 = var13;
            aFloatArray8600 = var14;
            anIntArray8602 = var15;
         } else {
            aFloatArray8595 = var6;
            aFloatArray8596 = var13;
            aFloatArray8581 = var14;
            anIntArray8606 = var15;
         }
      }

      var1 = method13646(8) + 1;
      aClass205Array8578 = new Class205[var1];

      for(var2 = 0; var2 < var1; ++var2) {
         aClass205Array8578[var2] = new Class205();
      }

      var2 = method13646(6) + 1;

      for(var3 = 0; var3 < var2; ++var3) {
         method13646(16);
      }

      var2 = method13646(6) + 1;
      aClass199Array8604 = new Class199[var2];

      for(var3 = 0; var3 < var2; ++var3) {
         aClass199Array8604[var3] = new Class199();
      }

      var3 = method13646(6) + 1;
      aClass198Array8585 = new Class198[var3];

      for(var4 = 0; var4 < var3; ++var4) {
         aClass198Array8585[var4] = new Class198();
      }

      var4 = method13646(6) + 1;
      aClass291Array8586 = new Class291[var4];

      for(var5 = 0; var5 < var4; ++var5) {
         aClass291Array8586[var5] = new Class291();
      }

      var5 = method13646(6) + 1;
      aBoolArray8587 = new boolean[var5];
      anIntArray8588 = new int[var5];

      for(int var12 = 0; var12 < var5; ++var12) {
         aBoolArray8587[var12] = method13645() != 0;
         method13646(16);
         method13646(16);
         anIntArray8588[var12] = method13646(8);
      }

      aBool8583 = true;
   }

   public Class225_Sub26_Sub1_Sub2 method13666() {
      Class118_Sub23.method14954(this, 1847824178);
      return this.method13657() && (this.anInt8580 <= this.anInt8573 || this.anInt8603 <= this.anInt8573 / Class305.method5451(-426092442))?null:new Class225_Sub26_Sub1_Sub2(this.anInt8573, this, this.aFloatArray8579, this.anInt8575, this.anInt8576, this.aBool8577);
   }

   static void method13667(byte[] var0) {
      method13644(var0, 0);
      anInt8597 = 1 << method13646(4);
      anInt8584 = 1 << method13646(4);
      aFloatArray8594 = new float[anInt8584];

      int var1;
      int var2;
      int var3;
      int var4;
      int var5;
      for(var1 = 0; var1 < 2; ++var1) {
         var2 = var1 != 0?anInt8584:anInt8597;
         var3 = var2 >> 1;
         var4 = var2 >> 2;
         var5 = var2 >> 3;
         float[] var6 = new float[var3];

         for(int var7 = 0; var7 < var4; ++var7) {
            var6[2 * var7] = (float)Math.cos((double)(4 * var7) * 3.141592653589793D / (double)var2);
            var6[2 * var7 + 1] = -((float)Math.sin((double)(4 * var7) * 3.141592653589793D / (double)var2));
         }

         float[] var13 = new float[var3];

         for(int var8 = 0; var8 < var4; ++var8) {
            var13[2 * var8] = (float)Math.cos((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2));
            var13[2 * var8 + 1] = (float)Math.sin((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2));
         }

         float[] var14 = new float[var4];

         for(int var9 = 0; var9 < var5; ++var9) {
            var14[2 * var9] = (float)Math.cos((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2);
            var14[2 * var9 + 1] = -((float)Math.sin((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2));
         }

         int[] var15 = new int[var5];
         int var10 = Class188.method3314(var5 - 1, -1079244299);

         for(int var11 = 0; var11 < var5; ++var11) {
            var15[var11] = Class498.method8337(var11, var10, (byte)45);
         }

         if(var1 != 0) {
            aFloatArray8598 = var6;
            aFloatArray8599 = var13;
            aFloatArray8600 = var14;
            anIntArray8602 = var15;
         } else {
            aFloatArray8595 = var6;
            aFloatArray8596 = var13;
            aFloatArray8581 = var14;
            anIntArray8606 = var15;
         }
      }

      var1 = method13646(8) + 1;
      aClass205Array8578 = new Class205[var1];

      for(var2 = 0; var2 < var1; ++var2) {
         aClass205Array8578[var2] = new Class205();
      }

      var2 = method13646(6) + 1;

      for(var3 = 0; var3 < var2; ++var3) {
         method13646(16);
      }

      var2 = method13646(6) + 1;
      aClass199Array8604 = new Class199[var2];

      for(var3 = 0; var3 < var2; ++var3) {
         aClass199Array8604[var3] = new Class199();
      }

      var3 = method13646(6) + 1;
      aClass198Array8585 = new Class198[var3];

      for(var4 = 0; var4 < var3; ++var4) {
         aClass198Array8585[var4] = new Class198();
      }

      var4 = method13646(6) + 1;
      aClass291Array8586 = new Class291[var4];

      for(var5 = 0; var5 < var4; ++var5) {
         aClass291Array8586[var5] = new Class291();
      }

      var5 = method13646(6) + 1;
      aBoolArray8587 = new boolean[var5];
      anIntArray8588 = new int[var5];

      for(int var12 = 0; var12 < var5; ++var12) {
         aBoolArray8587[var12] = method13645() != 0;
         method13646(16);
         method13646(16);
         anIntArray8588[var12] = method13646(8);
      }

      aBool8583 = true;
   }

   static boolean method13668(Class253 var0) {
      if(!aBool8583) {
         byte[] var1 = var0.method4547(0, 0, (byte)28);
         if(var1 == null) {
            return false;
         }

         method13648(var1);
      }

      return true;
   }

   static boolean method13669(Class253 var0) {
      if(!aBool8583) {
         byte[] var1 = var0.method4547(0, 0, (byte)-25);
         if(var1 == null) {
            return false;
         }

         method13648(var1);
      }

      return true;
   }

   static Class225_Sub20 method13670(Class253 var0, int var1, int var2) {
      if(!method13650(var0)) {
         var0.method4506(var1, var2, (byte)-38);
         return null;
      } else {
         byte[] var3 = var0.method4547(var1, var2, (byte)-35);
         if(var3 == null) {
            return null;
         } else {
            Class225_Sub20 var4 = null;

            try {
               var4 = new Class225_Sub20(var3);
            } catch (IOException var6) {
               var6.printStackTrace();
            }

            return var4;
         }
      }
   }

   static Class225_Sub20 method13671(Class253 var0, int var1, int var2) {
      if(!method13650(var0)) {
         var0.method4506(var1, var2, (byte)-8);
         return null;
      } else {
         byte[] var3 = var0.method4547(var1, var2, (byte)14);
         if(var3 == null) {
            return null;
         } else {
            Class225_Sub20 var4 = null;

            try {
               var4 = new Class225_Sub20(var3);
            } catch (IOException var6) {
               var6.printStackTrace();
            }

            return var4;
         }
      }
   }

   static float method13672(int var0) {
      int var1 = var0 & 2097151;
      int var2 = var0 & Integer.MIN_VALUE;
      int var3 = (var0 & 2145386496) >> 21;
      if(var2 != 0) {
         var1 = -var1;
      }

      return (float)((double)var1 * Math.pow(2.0D, (double)(var3 - 788)));
   }

   int method13673(int var1) {
      int var2 = 0;
      if(this.aFloatArray8579 == null) {
         this.anInt8591 = 0;
         this.aFloatArray8590 = new float[anInt8584];
         this.aFloatArray8579 = new float[this.anInt8574];
         this.anInt8580 = 0;
         this.anInt8605 = 0;
      }

      for(; var1 > this.anInt8580 && this.anInt8605 < this.aByteArrayArray8582.length; ++this.anInt8605) {
         float[] var3 = this.method13649(this.anInt8605);
         if(var3 != null) {
            int var4 = this.anInt8580;
            int var5 = var3.length;
            if(var5 > this.anInt8574 - var4) {
               var5 = this.anInt8574 - var4;
            }

            for(int var6 = 0; var6 < var5; ++var6) {
               this.aFloatArray8579[var4++] = var3[var6];
            }

            var2 += var4 - this.anInt8580;
            this.anInt8580 = var4;
         }
      }

      return var2;
   }

   int method13674() {
      return this.anInt8580;
   }

   int method13675() {
      return this.anInt8580;
   }

   void method13676(int var1) {
      if(var1 > this.anInt8574 - 1) {
         var1 = this.anInt8574 - 1;
      }

      if(var1 > this.anInt8580) {
         this.anInt8603 = this.method13654(var1);
      } else {
         this.anInt8603 = 0;
      }

      if(!this.method13657()) {
         this.aFloatArray8590 = null;
      }

   }

   void method13677(int var1) {
      if(var1 > this.anInt8574 - 1) {
         var1 = this.anInt8574 - 1;
      }

      if(var1 > this.anInt8580) {
         this.anInt8603 = this.method13654(var1);
      } else {
         this.anInt8603 = 0;
      }

      if(!this.method13657()) {
         this.aFloatArray8590 = null;
      }

   }

   int method13678(int var1) {
      int var2 = 0;
      if(this.aFloatArray8579 == null) {
         this.anInt8591 = 0;
         this.aFloatArray8590 = new float[anInt8584];
         this.aFloatArray8579 = new float[this.anInt8574];
         this.anInt8580 = 0;
         this.anInt8605 = 0;
      }

      for(; var1 > this.anInt8580 && this.anInt8605 < this.aByteArrayArray8582.length; ++this.anInt8605) {
         float[] var3 = this.method13649(this.anInt8605);
         if(var3 != null) {
            int var4 = this.anInt8580;
            int var5 = var3.length;
            if(var5 > this.anInt8574 - var4) {
               var5 = this.anInt8574 - var4;
            }

            for(int var6 = 0; var6 < var5; ++var6) {
               this.aFloatArray8579[var4++] = var3[var6];
            }

            var2 += var4 - this.anInt8580;
            this.anInt8580 = var4;
         }
      }

      return var2;
   }

   static void method13679(byte[] var0, int var1) {
      aByteArray8572 = var0;
      anInt8589 = var1;
      anInt8601 = 0;
   }

   int method13680() {
      return this.anInt8580;
   }

   int method13681() {
      return this.anInt8573;
   }

   boolean method13682() {
      return this.anInt8580 < this.anInt8574 - 1;
   }

   boolean method13683() {
      return this.anInt8580 < this.anInt8574 - 1;
   }

   int method13684() {
      return this.anInt8573;
   }
}
