
public abstract class Class568 {

   static final float aFloat7554 = 3.1415927F;
   protected boolean aBool7555 = false;


   public abstract int cp();

   public abstract void method12054(byte var1, byte[] var2);

   void method12055(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, float var8, int var9, float var10, float[] var11) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var12 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var13 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var14 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var15 = (float)Math.atan2((double)var12, (double)var14) / 6.2831855F + 0.5F;
      if(var8 != 1.0F) {
         var15 *= var8;
      }

      float var16 = var13 + 0.5F + var10;
      float var17;
      if(var9 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var9 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var9 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var11[0] = var15;
      var11[1] = var16;
   }

   int method12056(float var1, float var2, float var3) {
      float var4 = var1 < 0.0F?-var1:var1;
      float var5 = var2 < 0.0F?-var2:var2;
      float var6 = var3 < 0.0F?-var3:var3;
      return var5 > var4 && var5 > var6?(var2 > 0.0F?0:1):(var6 > var4 && var6 > var5?(var3 > 0.0F?2:3):(var1 > 0.0F?4:5));
   }

   void method12057(int var1, int var2, int var3, int var4, int var5, int var6, int var7, float[] var8, int var9, float var10, float var11, float var12, float[] var13) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var14 = (float)var1 * var8[0] + (float)var2 * var8[1] + (float)var3 * var8[2];
      float var15 = (float)var1 * var8[3] + (float)var2 * var8[4] + (float)var3 * var8[5];
      float var16 = (float)var1 * var8[6] + (float)var2 * var8[7] + (float)var3 * var8[8];
      float var17;
      float var18;
      if(var7 == 0) {
         var17 = var14 + var10 + 0.5F;
         var18 = -var16 + var12 + 0.5F;
      } else if(var7 == 1) {
         var17 = var14 + var10 + 0.5F;
         var18 = var16 + var12 + 0.5F;
      } else if(var7 == 2) {
         var17 = -var14 + var10 + 0.5F;
         var18 = -var15 + var11 + 0.5F;
      } else if(var7 == 3) {
         var17 = var14 + var10 + 0.5F;
         var18 = -var15 + var11 + 0.5F;
      } else if(var7 == 4) {
         var17 = var16 + var12 + 0.5F;
         var18 = -var15 + var11 + 0.5F;
      } else {
         var17 = -var16 + var12 + 0.5F;
         var18 = -var15 + var11 + 0.5F;
      }

      float var19;
      if(var9 == 1) {
         var19 = var17;
         var17 = -var18;
         var18 = var19;
      } else if(var9 == 2) {
         var17 = -var17;
         var18 = -var18;
      } else if(var9 == 3) {
         var19 = var17;
         var17 = var18;
         var18 = -var19;
      }

      var13[0] = var17;
      var13[1] = var18;
   }

   Class77 method12058(Class96 var1, int[] var2, int var3) {
      int[] var4 = null;
      int[] var5 = null;
      int[] var6 = null;
      float[][] var7 = (float[][])null;
      if(var1.aByteArray951 != null) {
         int var8 = var1.anInt965;
         int[] var9 = new int[var8];
         int[] var10 = new int[var8];
         int[] var11 = new int[var8];
         int[] var12 = new int[var8];
         int[] var13 = new int[var8];
         int[] var14 = new int[var8];

         int var15;
         for(var15 = 0; var15 < var8; ++var15) {
            var9[var15] = Integer.MAX_VALUE;
            var10[var15] = -2147483647;
            var11[var15] = Integer.MAX_VALUE;
            var12[var15] = -2147483647;
            var13[var15] = Integer.MAX_VALUE;
            var14[var15] = -2147483647;
         }

         int var20;
         for(var15 = 0; var15 < var3; ++var15) {
            int var16 = var2[var15];
            if(var1.aByteArray951[var16] != -1) {
               int var17 = var1.aByteArray951[var16] & 255;

               for(int var18 = 0; var18 < 3; ++var18) {
                  short var19;
                  if(var18 == 0) {
                     var19 = var1.aShortArray955[var16];
                  } else if(var18 == 1) {
                     var19 = var1.aShortArray954[var16];
                  } else {
                     var19 = var1.aShortArray945[var16];
                  }

                  var20 = var1.anIntArray970[var19];
                  int var21 = var1.anIntArray948[var19];
                  int var22 = var1.anIntArray968[var19];
                  if(var20 < var9[var17]) {
                     var9[var17] = var20;
                  }

                  if(var20 > var10[var17]) {
                     var10[var17] = var20;
                  }

                  if(var21 < var11[var17]) {
                     var11[var17] = var21;
                  }

                  if(var21 > var12[var17]) {
                     var12[var17] = var21;
                  }

                  if(var22 < var13[var17]) {
                     var13[var17] = var22;
                  }

                  if(var22 > var14[var17]) {
                     var14[var17] = var22;
                  }
               }
            }
         }

         var4 = new int[var8];
         var5 = new int[var8];
         var6 = new int[var8];
         var7 = new float[var8][];

         for(var15 = 0; var15 < var8; ++var15) {
            byte var23 = var1.aByteArray957[var15];
            if(var23 > 0) {
               var4[var15] = (var9[var15] + var10[var15]) / 2;
               var5[var15] = (var11[var15] + var12[var15]) / 2;
               var6[var15] = (var13[var15] + var14[var15]) / 2;
               float var25;
               float var24;
               float var26;
               if(var23 == 1) {
                  var20 = var1.anIntArray966[var15];
                  if(var20 == 0) {
                     var24 = 1.0F;
                     var26 = 1.0F;
                  } else if(var20 > 0) {
                     var24 = 1.0F;
                     var26 = (float)var20 / 1024.0F;
                  } else {
                     var26 = 1.0F;
                     var24 = (float)(-var20) / 1024.0F;
                  }

                  var25 = 64.0F / (float)var1.anIntArray949[var15];
               } else if(var23 == 2) {
                  var24 = 64.0F / (float)var1.anIntArray966[var15];
                  var25 = 64.0F / (float)var1.anIntArray949[var15];
                  var26 = 64.0F / (float)var1.anIntArray972[var15];
               } else {
                  var24 = (float)var1.anIntArray966[var15] / 1024.0F;
                  var25 = (float)var1.anIntArray949[var15] / 1024.0F;
                  var26 = (float)var1.anIntArray972[var15] / 1024.0F;
               }

               var7[var15] = this.method12059(var1.aShortArray967[var15], var1.aShortArray977[var15], var1.aShortArray969[var15], var1.aByteArray976[var15] & 255, var24, var25, var26);
            }
         }
      }

      return new Class77(this, var4, var5, var6, var7);
   }

   float[] method12059(int var1, int var2, int var3, int var4, float var5, float var6, float var7) {
      float[] var8 = new float[9];
      float[] var9 = new float[9];
      float var10 = (float)Math.cos((double)((float)var4 * 0.024543693F));
      float var11 = (float)Math.sin((double)((float)var4 * 0.024543693F));
      float var12 = 1.0F - var10;
      var8[0] = var10;
      var8[1] = 0.0F;
      var8[2] = var11;
      var8[3] = 0.0F;
      var8[4] = 1.0F;
      var8[5] = 0.0F;
      var8[6] = -var11;
      var8[7] = 0.0F;
      var8[8] = var10;
      float[] var13 = new float[9];
      float var14 = 1.0F;
      float var15 = 0.0F;
      var10 = (float)var2 / 32767.0F;
      var11 = -((float)Math.sqrt((double)(1.0F - var10 * var10)));
      var12 = 1.0F - var10;
      float var16 = (float)Math.sqrt((double)(var1 * var1 + var3 * var3));
      if(var16 == 0.0F && var10 == 0.0F) {
         var9 = var8;
      } else {
         if(var16 != 0.0F) {
            var14 = (float)(-var3) / var16;
            var15 = (float)var1 / var16;
         }

         var13[0] = var10 + var14 * var14 * var12;
         var13[1] = var15 * var11;
         var13[2] = var15 * var14 * var12;
         var13[3] = -var15 * var11;
         var13[4] = var10;
         var13[5] = var14 * var11;
         var13[6] = var14 * var15 * var12;
         var13[7] = -var14 * var11;
         var13[8] = var10 + var15 * var15 * var12;
         var9[0] = var8[0] * var13[0] + var8[1] * var13[3] + var8[2] * var13[6];
         var9[1] = var8[0] * var13[1] + var8[1] * var13[4] + var8[2] * var13[7];
         var9[2] = var8[0] * var13[2] + var8[1] * var13[5] + var8[2] * var13[8];
         var9[3] = var8[3] * var13[0] + var8[4] * var13[3] + var8[5] * var13[6];
         var9[4] = var8[3] * var13[1] + var8[4] * var13[4] + var8[5] * var13[7];
         var9[5] = var8[3] * var13[2] + var8[4] * var13[5] + var8[5] * var13[8];
         var9[6] = var8[6] * var13[0] + var8[7] * var13[3] + var8[8] * var13[6];
         var9[7] = var8[6] * var13[1] + var8[7] * var13[4] + var8[8] * var13[7];
         var9[8] = var8[6] * var13[2] + var8[7] * var13[5] + var8[8] * var13[8];
      }

      var9[0] *= var5;
      var9[1] *= var5;
      var9[2] *= var5;
      var9[3] *= var6;
      var9[4] *= var6;
      var9[5] *= var6;
      var9[6] *= var7;
      var9[7] *= var7;
      var9[8] *= var7;
      return var9;
   }

   public abstract Class568 method12060(byte var1, int var2, boolean var3);

   public abstract void KA(int var1);

   public abstract int m();

   public abstract boolean method12061(int var1, int var2, Class328 var3, boolean var4, int var5);

   public abstract void f(int var1);

   public abstract void S(int var1);

   public abstract Class80[] method12062();

   public abstract void EA(int var1);

   public abstract void ia(int var1, int var2, int var3);

   public abstract void wa();

   public abstract void oa(int var1, int var2, int var3);

   abstract void co(int var1, int[] var2, int var3, int var4, int var5, boolean var6, int var7, int[] var8);

   public abstract void Q(int var1);

   abstract void method12063();

   public abstract int cz();

   public abstract void br(int var1);

   public final void method12064(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, int var8, boolean var9, int[] var10) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var11 = var1.aClass95Array9978[var2];
            Class225_Sub48 var12 = var11.aClass225_Sub48_930;
            Class95 var13 = null;
            if(var3 != null) {
               var13 = var3.aClass95Array9978[var4];
               if(var13.aClass225_Sub48_930 != var12) {
                  var13 = null;
               }
            }

            this.method12097(var12, var11, var13, var5, var6, var7, (boolean[])null, false, var9, var8, var10);
            this.ka();
            this.method12127();
         }
      }
   }

   public abstract int ci();

   public final void method12065(Class225_Sub14_Sub1 var1, int var2) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var3 = var1.aClass95Array9978[var2];
            Class225_Sub48 var4 = var3.aClass225_Sub48_930;

            for(int var5 = 0; var5 < var3.anInt939; ++var5) {
               short var6 = var3.aShortArray932[var5];
               if(var4.aBoolArray8865[var6]) {
                  if(var3.aShortArray933[var5] != -1) {
                     this.w(0, 0, 0, 0);
                  }

                  this.w(var4.anIntArray8861[var6], var3.aShortArray938[var5], var3.aShortArray934[var5], var3.aShortArray935[var5]);
               }
            }

            this.ka();
            this.method12127();
         }
      }
   }

   public abstract void bp();

   public abstract int ce();

   abstract boolean ea();

   public final void method12066(Class225_Sub14_Sub1 var1, int var2) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var3 = var1.aClass95Array9978[var2];
            Class225_Sub48 var4 = var3.aClass225_Sub48_930;

            for(int var5 = 0; var5 < var3.anInt939; ++var5) {
               short var6 = var3.aShortArray932[var5];
               if(var4.aBoolArray8865[var6]) {
                  if(var3.aShortArray933[var5] != -1) {
                     this.w(0, 0, 0, 0);
                  }

                  this.w(var4.anIntArray8861[var6], var3.aShortArray938[var5], var3.aShortArray934[var5], var3.aShortArray935[var5]);
               }
            }

            this.ka();
            this.method12127();
         }
      }
   }

   void method12067(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, int var8, float var9, float[] var10) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var11 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var12 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var13 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var14 = (float)Math.sqrt((double)(var11 * var11 + var12 * var12 + var13 * var13));
      float var15 = (float)Math.atan2((double)var11, (double)var13) / 6.2831855F + 0.5F;
      float var16 = (float)Math.asin((double)(var12 / var14)) / 3.1415927F + 0.5F + var9;
      float var17;
      if(var8 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var8 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var8 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var10[0] = var15;
      var10[1] = var16;
   }

   abstract void w(int var1, int var2, int var3, int var4);

   abstract void ka();

   public final void method12068(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, int var8, boolean var9, int[] var10) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var11 = var1.aClass95Array9978[var2];
            Class225_Sub48 var12 = var11.aClass225_Sub48_930;
            Class95 var13 = null;
            if(var3 != null) {
               var13 = var3.aClass95Array9978[var4];
               if(var13.aClass225_Sub48_930 != var12) {
                  var13 = null;
               }
            }

            this.method12097(var12, var11, var13, var5, var6, var7, (boolean[])null, false, var9, var8, var10);
            this.ka();
            this.method12127();
         }
      }
   }

   public abstract void method12069(Class328 var1, Class89 var2, int var3);

   public abstract boolean method12070(int var1, int var2, Class328 var3, boolean var4, int var5);

   public abstract Class225_Sub14_Sub16 ga(Class225_Sub14_Sub16 var1);

   public abstract int N();

   abstract void be();

   public abstract int RA();

   void method12071(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, int var8, float var9, float[] var10) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var11 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var12 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var13 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var14 = (float)Math.sqrt((double)(var11 * var11 + var12 * var12 + var13 * var13));
      float var15 = (float)Math.atan2((double)var11, (double)var13) / 6.2831855F + 0.5F;
      float var16 = (float)Math.asin((double)(var12 / var14)) / 3.1415927F + 0.5F + var9;
      float var17;
      if(var8 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var8 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var8 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var10[0] = var15;
      var10[1] = var16;
   }

   public abstract int YA();

   public abstract int o();

   public abstract int AA();

   public abstract int ha();

   abstract void e(int var1, int[] var2, int var3, int var4, int var5, boolean var6, int var7, int[] var8);

   public abstract void am(int var1);

   public abstract int c();

   public abstract int Z();

   public abstract byte[] ao();

   public abstract void X(short var1, short var2);

   public abstract void method12072(byte var1, byte[] var2);

   public final void method12073(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, boolean var8) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var9 = var1.aClass95Array9978[var2];
            Class225_Sub48 var10 = var9.aClass225_Sub48_930;
            Class95 var11 = null;
            if(var3 != null) {
               var11 = var3.aClass95Array9978[var4];
               if(var11.aClass225_Sub48_930 != var10) {
                  var11 = null;
               }
            }

            this.method12097(var10, var9, var11, var5, var6, var7, (boolean[])null, false, var8, '\uffff', (int[])null);
            this.ka();
            this.method12127();
         }
      }
   }

   public abstract void PA(int var1, int var2, int var3, int var4);

   public final void method12074(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, Class225_Sub14_Sub1 var7, int var8, Class225_Sub14_Sub1 var9, int var10, int var11, int var12, boolean[] var13, boolean var14) {
      if(var2 != -1) {
         if(var13 != null && var8 != -1) {
            this.method12063();
            if(!this.ea()) {
               this.method12127();
            } else {
               Class95 var15 = var1.aClass95Array9978[var2];
               Class225_Sub48 var16 = var15.aClass225_Sub48_930;
               Class95 var17 = null;
               if(var3 != null) {
                  var17 = var3.aClass95Array9978[var4];
                  if(var17.aClass225_Sub48_930 != var16) {
                     var17 = null;
                  }
               }

               this.method12097(var16, var15, var17, var5, var6, 0, var13, false, var14, '\uffff', (int[])null);
               Class95 var18 = var7.aClass95Array9978[var8];
               Class95 var19 = null;
               if(var9 != null) {
                  var19 = var9.aClass95Array9978[var10];
                  if(var19.aClass225_Sub48_930 != var16) {
                     var19 = null;
                  }
               }

               this.method12093(0, new int[0], 0, 0, 0, 0, var14);
               this.method12097(var18.aClass225_Sub48_930, var18, var19, var11, var12, 0, var13, true, var14, '\uffff', (int[])null);
               this.ka();
               this.method12127();
            }
         } else {
            this.method12073(var1, var2, var3, var4, var5, var6, 0, var14);
         }
      }
   }

   public abstract boolean i();

   public abstract boolean u();

   public abstract void method12075(Class328 var1);

   public abstract Class80[] method12076();

   public abstract Class166[] method12077();

   public abstract void method12078(Class568 var1, int var2, int var3, int var4, boolean var5);

   public abstract void method12079(Class568 var1, int var2, int var3, int var4, boolean var5);

   public abstract void method12080(Class568 var1, int var2, int var3, int var4, boolean var5);

   public abstract Class568 method12081(byte var1, int var2, boolean var3);

   public abstract Class568 method12082(byte var1, int var2, boolean var3);

   public abstract int ab();

   public abstract void by(int var1, int var2, Class400 var3, Class400 var4, int var5, int var6, int var7);

   public abstract int cg();

   public abstract void ac(int var1);

   public abstract void av(int var1);

   public abstract void ak(int var1);

   public abstract void t(int var1);

   public abstract boolean er();

   public abstract void bq(int var1);

   public abstract void bg(int var1);

   public abstract void bk(int var1);

   public abstract void bw(int var1);

   public abstract void bf(int var1);

   abstract void bx();

   abstract boolean bn();

   public abstract int cc();

   public abstract void bb(int var1, int var2, int var3);

   void method12083(int var1, int var2, int var3, int var4, int var5, int var6, int var7, float[] var8, int var9, float var10, float var11, float var12, float[] var13) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var14 = (float)var1 * var8[0] + (float)var2 * var8[1] + (float)var3 * var8[2];
      float var15 = (float)var1 * var8[3] + (float)var2 * var8[4] + (float)var3 * var8[5];
      float var16 = (float)var1 * var8[6] + (float)var2 * var8[7] + (float)var3 * var8[8];
      float var17;
      float var18;
      if(var7 == 0) {
         var17 = var14 + var10 + 0.5F;
         var18 = -var16 + var12 + 0.5F;
      } else if(var7 == 1) {
         var17 = var14 + var10 + 0.5F;
         var18 = var16 + var12 + 0.5F;
      } else if(var7 == 2) {
         var17 = -var14 + var10 + 0.5F;
         var18 = -var15 + var11 + 0.5F;
      } else if(var7 == 3) {
         var17 = var14 + var10 + 0.5F;
         var18 = -var15 + var11 + 0.5F;
      } else if(var7 == 4) {
         var17 = var16 + var12 + 0.5F;
         var18 = -var15 + var11 + 0.5F;
      } else {
         var17 = -var16 + var12 + 0.5F;
         var18 = -var15 + var11 + 0.5F;
      }

      float var19;
      if(var9 == 1) {
         var19 = var17;
         var17 = -var18;
         var18 = var19;
      } else if(var9 == 2) {
         var17 = -var17;
         var18 = -var18;
      } else if(var9 == 3) {
         var19 = var17;
         var17 = var18;
         var18 = -var19;
      }

      var13[0] = var17;
      var13[1] = var18;
   }

   public abstract int ct();

   abstract void method12084();

   abstract void method12085();

   abstract void method12086();

   abstract void method12087();

   abstract void method12088();

   abstract boolean bt();

   public abstract int dk();

   abstract boolean bc();

   public abstract Class225_Sub14_Sub16 ch(Class225_Sub14_Sub16 var1);

   public abstract int dx();

   public abstract int dd();

   abstract void bh();

   abstract void method12089(int var1, int[] var2, int var3, int var4, int var5, int var6, boolean var7);

   public abstract int n();

   public abstract void ds(int var1);

   abstract void cf(int var1, int var2, int var3, int var4);

   abstract void cy(int var1, int var2, int var3, int var4);

   abstract void cv(int var1, int var2, int var3, int var4);

   public abstract void method12090(Class328 var1, Class89 var2, int var3);

   public abstract void method12091(Class328 var1, Class89 var2, int var3);

   public abstract void method12092(Class328 var1, Class89 var2, int var3);

   abstract void method12093(int var1, int[] var2, int var3, int var4, int var5, int var6, boolean var7);

   void method12094(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, float var8, int var9, float var10, float[] var11) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var12 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var13 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var14 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var15 = (float)Math.atan2((double)var12, (double)var14) / 6.2831855F + 0.5F;
      if(var8 != 1.0F) {
         var15 *= var8;
      }

      float var16 = var13 + 0.5F + var10;
      float var17;
      if(var9 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var9 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var9 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var11[0] = var15;
      var11[1] = var16;
   }

   public abstract void method12095(Class328 var1);

   public final void method12096(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, int var8, boolean var9, int[] var10) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var11 = var1.aClass95Array9978[var2];
            Class225_Sub48 var12 = var11.aClass225_Sub48_930;
            Class95 var13 = null;
            if(var3 != null) {
               var13 = var3.aClass95Array9978[var4];
               if(var13.aClass225_Sub48_930 != var12) {
                  var13 = null;
               }
            }

            this.method12097(var12, var11, var13, var5, var6, var7, (boolean[])null, false, var9, var8, var10);
            this.ka();
            this.method12127();
         }
      }
   }

   public abstract int ca();

   void method12097(Class225_Sub48 var1, Class95 var2, Class95 var3, int var4, int var5, int var6, boolean[] var7, boolean var8, boolean var9, int var10, int[] var11) {
      int var12;
      if(var3 != null && var4 != 0) {
         var12 = 0;
         int var35 = 0;

         for(int var36 = 0; var36 < var1.anInt8851 * -255375945; ++var36) {
            boolean var15 = false;
            if(var12 < var2.anInt939 && var2.aShortArray932[var12] == var36) {
               var15 = true;
            }

            boolean var16 = false;
            if(var35 < var3.anInt939 && var3.aShortArray932[var35] == var36) {
               var16 = true;
            }

            if(var15 || var16) {
               if(var7 != null && var7[var36] != var8 && var1.anIntArray8861[var36] != 0) {
                  if(var15) {
                     ++var12;
                  }

                  if(var16) {
                     ++var35;
                  }
               } else {
                  short var17 = 0;
                  int var18 = var1.anIntArray8861[var36];
                  if(var18 == 3 || var18 == 10) {
                     var17 = 128;
                  }

                  short var19;
                  short var21;
                  short var20;
                  byte var23;
                  short var22;
                  if(var15) {
                     var19 = var2.aShortArray938[var12];
                     var20 = var2.aShortArray934[var12];
                     var21 = var2.aShortArray935[var12];
                     var22 = var2.aShortArray933[var12];
                     var23 = var2.aByteArray931[var12];
                     ++var12;
                  } else {
                     var19 = var17;
                     var20 = var17;
                     var21 = var17;
                     var22 = -1;
                     var23 = 0;
                  }

                  short var25;
                  short var24;
                  short var27;
                  short var26;
                  byte var28;
                  if(var16) {
                     var24 = var3.aShortArray938[var35];
                     var25 = var3.aShortArray934[var35];
                     var26 = var3.aShortArray935[var35];
                     var27 = var3.aShortArray933[var35];
                     var28 = var3.aByteArray931[var35];
                     ++var35;
                  } else {
                     var24 = var17;
                     var25 = var17;
                     var26 = var17;
                     var27 = -1;
                     var28 = 0;
                  }

                  int var29;
                  int var31;
                  int var30;
                  if((var23 & 2) == 0 && (var28 & 1) == 0) {
                     int var32;
                     if(var18 == 2) {
                        var32 = var24 - var19 & 16383;
                        int var33 = var25 - var20 & 16383;
                        int var34 = var26 - var21 & 16383;
                        if(var32 >= 8192) {
                           var32 -= 16384;
                        }

                        if(var33 >= 8192) {
                           var33 -= 16384;
                        }

                        if(var34 >= 8192) {
                           var34 -= 16384;
                        }

                        var29 = var19 + var32 * var4 / var5 & 16383;
                        var30 = var20 + var33 * var4 / var5 & 16383;
                        var31 = var21 + var34 * var4 / var5 & 16383;
                     } else if(var18 == 9) {
                        var32 = var24 - var19 & 16383;
                        if(var32 >= 8192) {
                           var32 -= 16384;
                        }

                        var29 = var19 + var32 * var4 / var5 & 16383;
                        var31 = 0;
                        var30 = 0;
                     } else if(var18 == 7) {
                        var32 = var24 - var19 & 63;
                        if(var32 >= 32) {
                           var32 -= 64;
                        }

                        var29 = var19 + var32 * var4 / var5 & 63;
                        var30 = var20 + (var25 - var20) * var4 / var5;
                        var31 = var21 + (var26 - var21) * var4 / var5;
                     } else {
                        var29 = var19 + (var24 - var19) * var4 / var5;
                        var30 = var20 + (var25 - var20) * var4 / var5;
                        var31 = var21 + (var26 - var21) * var4 / var5;
                     }
                  } else {
                     var29 = var19;
                     var30 = var20;
                     var31 = var21;
                  }

                  if(var22 != -1) {
                     this.method12137(0, var1.anIntArrayArray8863[var22], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var22], var11);
                  } else if(var27 != -1) {
                     this.method12137(0, var1.anIntArrayArray8863[var27], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var27], var11);
                  }

                  this.method12137(var18, var1.anIntArrayArray8863[var36], var29, var30, var31, var6, var9, var10 & var1.anIntArray8850[var36], var11);
               }
            }
         }

      } else {
         for(var12 = 0; var12 < var2.anInt939; ++var12) {
            short var13 = var2.aShortArray932[var12];
            if(var7 == null || var7[var13] == var8 || var1.anIntArray8861[var13] == 0) {
               short var14 = var2.aShortArray933[var12];
               if(var14 != -1) {
                  this.method12137(0, var1.anIntArrayArray8863[var14], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var14], var11);
               }

               this.method12137(var1.anIntArray8861[var13], var1.anIntArrayArray8863[var13], var2.aShortArray938[var12], var2.aShortArray934[var12], var2.aShortArray935[var12], var6, var9, var10 & var1.anIntArray8850[var13], var11);
            }
         }

      }
   }

   public final void method12098(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, boolean var8) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var9 = var1.aClass95Array9978[var2];
            Class225_Sub48 var10 = var9.aClass225_Sub48_930;
            Class95 var11 = null;
            if(var3 != null) {
               var11 = var3.aClass95Array9978[var4];
               if(var11.aClass225_Sub48_930 != var10) {
                  var11 = null;
               }
            }

            this.method12097(var10, var9, var11, var5, var6, var7, (boolean[])null, false, var8, '\uffff', (int[])null);
            this.ka();
            this.method12127();
         }
      }
   }

   public abstract int ck();

   public abstract byte[] da();

   public abstract void method12099(Class328 var1, int var2, boolean var3);

   public abstract void W(short var1, short var2);

   public abstract int cl();

   public abstract void method12100();

   public abstract void dw(int var1);

   public abstract int cn();

   public abstract boolean method12101();

   public abstract int cb();

   public abstract int de();

   public abstract void pa(int var1, int var2, Class400 var3, Class400 var4, int var5, int var6, int var7);

   public abstract void dr(int var1);

   public abstract void db(int var1);

   public abstract void dc(int var1);

   public abstract void p(int var1);

   public final void method12102(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, int var8, boolean var9, int[] var10) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var11 = var1.aClass95Array9978[var2];
            Class225_Sub48 var12 = var11.aClass225_Sub48_930;
            Class95 var13 = null;
            if(var3 != null) {
               var13 = var3.aClass95Array9978[var4];
               if(var13.aClass225_Sub48_930 != var12) {
                  var13 = null;
               }
            }

            this.method12097(var12, var11, var13, var5, var6, var7, (boolean[])null, false, var9, var8, var10);
            this.ka();
            this.method12127();
         }
      }
   }

   public abstract int dp();

   public abstract Class166[] method12103();

   public abstract void bu(int var1, int var2, Class400 var3, Class400 var4, int var5, int var6, int var7);

   public abstract void ay(int var1);

   public abstract int native_do();

   public abstract void bo(int var1, int var2, int var3);

   public abstract int dv();

   public abstract byte[] dy();

   public abstract boolean method12104(int var1, int var2, Class328 var3, boolean var4, int var5);

   public abstract void dq(short var1, short var2);

   public abstract void dj(short var1, short var2);

   public abstract void dg(int var1, int var2, int var3, int var4);

   public abstract Class80[] method12105();

   public abstract void method12106(Class328 var1, int var2, boolean var3);

   public abstract void bi(int var1);

   public abstract boolean method12107();

   public abstract boolean method12108();

   public abstract boolean di();

   public abstract boolean df();

   public abstract boolean ee();

   void method12109(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, float var8, int var9, float var10, float[] var11) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var12 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var13 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var14 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var15 = (float)Math.atan2((double)var12, (double)var14) / 6.2831855F + 0.5F;
      if(var8 != 1.0F) {
         var15 *= var8;
      }

      float var16 = var13 + 0.5F + var10;
      float var17;
      if(var9 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var9 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var9 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var11[0] = var15;
      var11[1] = var16;
   }

   public abstract boolean eo();

   public abstract void method12110();

   public abstract void method12111();

   public abstract int en();

   abstract void cu(int var1, int[] var2, int var3, int var4, int var5, boolean var6, int var7, int[] var8);

   public abstract void method12112(Class328 var1, int var2, boolean var3);

   public abstract int cs();

   public abstract int dm();

   public abstract void method12113(Class328 var1, int var2, boolean var3);

   public abstract void method12114(Class328 var1, int var2, boolean var3);

   public abstract void method12115(byte var1, byte[] var2);

   public abstract void method12116(byte var1, byte[] var2);

   public final void method12117(Class225_Sub14_Sub1 var1, int var2) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var3 = var1.aClass95Array9978[var2];
            Class225_Sub48 var4 = var3.aClass225_Sub48_930;

            for(int var5 = 0; var5 < var3.anInt939; ++var5) {
               short var6 = var3.aShortArray932[var5];
               if(var4.aBoolArray8865[var6]) {
                  if(var3.aShortArray933[var5] != -1) {
                     this.w(0, 0, 0, 0);
                  }

                  this.w(var4.anIntArray8861[var6], var3.aShortArray938[var5], var3.aShortArray934[var5], var3.aShortArray935[var5]);
               }
            }

            this.ka();
            this.method12127();
         }
      }
   }

   void method12118(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, int var8, float var9, float[] var10) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var11 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var12 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var13 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var14 = (float)Math.sqrt((double)(var11 * var11 + var12 * var12 + var13 * var13));
      float var15 = (float)Math.atan2((double)var11, (double)var13) / 6.2831855F + 0.5F;
      float var16 = (float)Math.asin((double)(var12 / var14)) / 3.1415927F + 0.5F + var9;
      float var17;
      if(var8 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var8 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var8 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var10[0] = var15;
      var10[1] = var16;
   }

   void method12119(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, int var8, float var9, float[] var10) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var11 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var12 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var13 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var14 = (float)Math.sqrt((double)(var11 * var11 + var12 * var12 + var13 * var13));
      float var15 = (float)Math.atan2((double)var11, (double)var13) / 6.2831855F + 0.5F;
      float var16 = (float)Math.asin((double)(var12 / var14)) / 3.1415927F + 0.5F + var9;
      float var17;
      if(var8 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var8 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var8 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var10[0] = var15;
      var10[1] = var16;
   }

   void method12120(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, int var8, float var9, float[] var10) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var11 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var12 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var13 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var14 = (float)Math.sqrt((double)(var11 * var11 + var12 * var12 + var13 * var13));
      float var15 = (float)Math.atan2((double)var11, (double)var13) / 6.2831855F + 0.5F;
      float var16 = (float)Math.asin((double)(var12 / var14)) / 3.1415927F + 0.5F + var9;
      float var17;
      if(var8 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var8 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var8 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var10[0] = var15;
      var10[1] = var16;
   }

   void method12121(Class400 var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
      boolean var9 = false;
      boolean var10 = false;
      boolean var11 = false;
      int var12 = -var5 / 2;
      int var13 = -var6 / 2;
      int var14 = var1.method6791(var2 + var12, var4 + var13, 701663251);
      int var15 = var5 / 2;
      int var16 = -var6 / 2;
      int var17 = var1.method6791(var2 + var15, var4 + var16, 701663251);
      int var18 = -var5 / 2;
      int var19 = var6 / 2;
      int var20 = var1.method6791(var2 + var18, var4 + var19, 701663251);
      int var21 = var5 / 2;
      int var22 = var6 / 2;
      int var23 = var1.method6791(var2 + var21, var4 + var22, 701663251);
      int var24 = var14 < var17?var14:var17;
      int var25 = var20 < var23?var20:var23;
      int var26 = var17 < var23?var17:var23;
      int var27 = var14 < var20?var14:var20;
      int var28;
      if(var6 != 0) {
         int var29 = (int)(Math.atan2((double)(var24 - var25), (double)var6) * 2607.5945876176133D) & 16383;
         if(var29 != 0) {
            if(var7 != 0) {
               if(var29 > 8192) {
                  var28 = 16384 - var7;
                  if(var29 < var28) {
                     var29 = var28;
                  }
               } else if(var29 > var7) {
                  var29 = var7;
               }
            }

            this.t(var29);
         }
      }

      if(var5 != 0) {
         int var31 = (int)(Math.atan2((double)(var27 - var26), (double)var5) * 2607.5945876176133D) & 16383;
         if(var31 != 0) {
            if(var8 != 0) {
               if(var31 > 8192) {
                  var28 = 16384 - var8;
                  if(var31 < var28) {
                     var31 = var28;
                  }
               } else if(var31 > var8) {
                  var31 = var8;
               }
            }

            this.EA(var31);
         }
      }

      int var30 = var14 + var23;
      if(var17 + var20 < var30) {
         var30 = var17 + var20;
      }

      var30 = (var30 >> 1) - var3;
      if(var30 != 0) {
         this.ia(0, var30, 0);
      }

   }

   void method12122(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, int var8, float var9, float[] var10) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var11 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var12 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var13 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var14 = (float)Math.sqrt((double)(var11 * var11 + var12 * var12 + var13 * var13));
      float var15 = (float)Math.atan2((double)var11, (double)var13) / 6.2831855F + 0.5F;
      float var16 = (float)Math.asin((double)(var12 / var14)) / 3.1415927F + 0.5F + var9;
      float var17;
      if(var8 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var8 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var8 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var10[0] = var15;
      var10[1] = var16;
   }

   void method12123(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, float var8, int var9, float var10, float[] var11) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var12 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var13 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var14 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var15 = (float)Math.atan2((double)var12, (double)var14) / 6.2831855F + 0.5F;
      if(var8 != 1.0F) {
         var15 *= var8;
      }

      float var16 = var13 + 0.5F + var10;
      float var17;
      if(var9 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var9 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var9 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var11[0] = var15;
      var11[1] = var16;
   }

   void method12124(int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, int var8, float var9, float[] var10) {
      var1 -= var4;
      var2 -= var5;
      var3 -= var6;
      float var11 = (float)var1 * var7[0] + (float)var2 * var7[1] + (float)var3 * var7[2];
      float var12 = (float)var1 * var7[3] + (float)var2 * var7[4] + (float)var3 * var7[5];
      float var13 = (float)var1 * var7[6] + (float)var2 * var7[7] + (float)var3 * var7[8];
      float var14 = (float)Math.sqrt((double)(var11 * var11 + var12 * var12 + var13 * var13));
      float var15 = (float)Math.atan2((double)var11, (double)var13) / 6.2831855F + 0.5F;
      float var16 = (float)Math.asin((double)(var12 / var14)) / 3.1415927F + 0.5F + var9;
      float var17;
      if(var8 == 1) {
         var17 = var15;
         var15 = -var16;
         var16 = var17;
      } else if(var8 == 2) {
         var15 = -var15;
         var16 = -var16;
      } else if(var8 == 3) {
         var17 = var15;
         var15 = var16;
         var16 = -var17;
      }

      var10[0] = var15;
      var10[1] = var16;
   }

   public abstract void af(int var1);

   int method12125(float var1, float var2, float var3) {
      float var4 = var1 < 0.0F?-var1:var1;
      float var5 = var2 < 0.0F?-var2:var2;
      float var6 = var3 < 0.0F?-var3:var3;
      return var5 > var4 && var5 > var6?(var2 > 0.0F?0:1):(var6 > var4 && var6 > var5?(var3 > 0.0F?2:3):(var1 > 0.0F?4:5));
   }

   int method12126(float var1, float var2, float var3) {
      float var4 = var1 < 0.0F?-var1:var1;
      float var5 = var2 < 0.0F?-var2:var2;
      float var6 = var3 < 0.0F?-var3:var3;
      return var5 > var4 && var5 > var6?(var2 > 0.0F?0:1):(var6 > var4 && var6 > var5?(var3 > 0.0F?2:3):(var1 > 0.0F?4:5));
   }

   abstract void method12127();

   Class77 method12128(Class96 var1, int[] var2, int var3) {
      int[] var4 = null;
      int[] var5 = null;
      int[] var6 = null;
      float[][] var7 = (float[][])null;
      if(var1.aByteArray951 != null) {
         int var8 = var1.anInt965;
         int[] var9 = new int[var8];
         int[] var10 = new int[var8];
         int[] var11 = new int[var8];
         int[] var12 = new int[var8];
         int[] var13 = new int[var8];
         int[] var14 = new int[var8];

         int var15;
         for(var15 = 0; var15 < var8; ++var15) {
            var9[var15] = Integer.MAX_VALUE;
            var10[var15] = -2147483647;
            var11[var15] = Integer.MAX_VALUE;
            var12[var15] = -2147483647;
            var13[var15] = Integer.MAX_VALUE;
            var14[var15] = -2147483647;
         }

         int var20;
         for(var15 = 0; var15 < var3; ++var15) {
            int var16 = var2[var15];
            if(var1.aByteArray951[var16] != -1) {
               int var17 = var1.aByteArray951[var16] & 255;

               for(int var18 = 0; var18 < 3; ++var18) {
                  short var19;
                  if(var18 == 0) {
                     var19 = var1.aShortArray955[var16];
                  } else if(var18 == 1) {
                     var19 = var1.aShortArray954[var16];
                  } else {
                     var19 = var1.aShortArray945[var16];
                  }

                  var20 = var1.anIntArray970[var19];
                  int var21 = var1.anIntArray948[var19];
                  int var22 = var1.anIntArray968[var19];
                  if(var20 < var9[var17]) {
                     var9[var17] = var20;
                  }

                  if(var20 > var10[var17]) {
                     var10[var17] = var20;
                  }

                  if(var21 < var11[var17]) {
                     var11[var17] = var21;
                  }

                  if(var21 > var12[var17]) {
                     var12[var17] = var21;
                  }

                  if(var22 < var13[var17]) {
                     var13[var17] = var22;
                  }

                  if(var22 > var14[var17]) {
                     var14[var17] = var22;
                  }
               }
            }
         }

         var4 = new int[var8];
         var5 = new int[var8];
         var6 = new int[var8];
         var7 = new float[var8][];

         for(var15 = 0; var15 < var8; ++var15) {
            byte var23 = var1.aByteArray957[var15];
            if(var23 > 0) {
               var4[var15] = (var9[var15] + var10[var15]) / 2;
               var5[var15] = (var11[var15] + var12[var15]) / 2;
               var6[var15] = (var13[var15] + var14[var15]) / 2;
               float var25;
               float var24;
               float var26;
               if(var23 == 1) {
                  var20 = var1.anIntArray966[var15];
                  if(var20 == 0) {
                     var24 = 1.0F;
                     var26 = 1.0F;
                  } else if(var20 > 0) {
                     var24 = 1.0F;
                     var26 = (float)var20 / 1024.0F;
                  } else {
                     var26 = 1.0F;
                     var24 = (float)(-var20) / 1024.0F;
                  }

                  var25 = 64.0F / (float)var1.anIntArray949[var15];
               } else if(var23 == 2) {
                  var24 = 64.0F / (float)var1.anIntArray966[var15];
                  var25 = 64.0F / (float)var1.anIntArray949[var15];
                  var26 = 64.0F / (float)var1.anIntArray972[var15];
               } else {
                  var24 = (float)var1.anIntArray966[var15] / 1024.0F;
                  var25 = (float)var1.anIntArray949[var15] / 1024.0F;
                  var26 = (float)var1.anIntArray972[var15] / 1024.0F;
               }

               var7[var15] = this.method12059(var1.aShortArray967[var15], var1.aShortArray977[var15], var1.aShortArray969[var15], var1.aByteArray976[var15] & 255, var24, var25, var26);
            }
         }
      }

      return new Class77(this, var4, var5, var6, var7);
   }

   float[] method12129(int var1, int var2, int var3, int var4, float var5, float var6, float var7) {
      float[] var8 = new float[9];
      float[] var9 = new float[9];
      float var10 = (float)Math.cos((double)((float)var4 * 0.024543693F));
      float var11 = (float)Math.sin((double)((float)var4 * 0.024543693F));
      float var12 = 1.0F - var10;
      var8[0] = var10;
      var8[1] = 0.0F;
      var8[2] = var11;
      var8[3] = 0.0F;
      var8[4] = 1.0F;
      var8[5] = 0.0F;
      var8[6] = -var11;
      var8[7] = 0.0F;
      var8[8] = var10;
      float[] var13 = new float[9];
      float var14 = 1.0F;
      float var15 = 0.0F;
      var10 = (float)var2 / 32767.0F;
      var11 = -((float)Math.sqrt((double)(1.0F - var10 * var10)));
      var12 = 1.0F - var10;
      float var16 = (float)Math.sqrt((double)(var1 * var1 + var3 * var3));
      if(var16 == 0.0F && var10 == 0.0F) {
         var9 = var8;
      } else {
         if(var16 != 0.0F) {
            var14 = (float)(-var3) / var16;
            var15 = (float)var1 / var16;
         }

         var13[0] = var10 + var14 * var14 * var12;
         var13[1] = var15 * var11;
         var13[2] = var15 * var14 * var12;
         var13[3] = -var15 * var11;
         var13[4] = var10;
         var13[5] = var14 * var11;
         var13[6] = var14 * var15 * var12;
         var13[7] = -var14 * var11;
         var13[8] = var10 + var15 * var15 * var12;
         var9[0] = var8[0] * var13[0] + var8[1] * var13[3] + var8[2] * var13[6];
         var9[1] = var8[0] * var13[1] + var8[1] * var13[4] + var8[2] * var13[7];
         var9[2] = var8[0] * var13[2] + var8[1] * var13[5] + var8[2] * var13[8];
         var9[3] = var8[3] * var13[0] + var8[4] * var13[3] + var8[5] * var13[6];
         var9[4] = var8[3] * var13[1] + var8[4] * var13[4] + var8[5] * var13[7];
         var9[5] = var8[3] * var13[2] + var8[4] * var13[5] + var8[5] * var13[8];
         var9[6] = var8[6] * var13[0] + var8[7] * var13[3] + var8[8] * var13[6];
         var9[7] = var8[6] * var13[1] + var8[7] * var13[4] + var8[8] * var13[7];
         var9[8] = var8[6] * var13[2] + var8[7] * var13[5] + var8[8] * var13[8];
      }

      var9[0] *= var5;
      var9[1] *= var5;
      var9[2] *= var5;
      var9[3] *= var6;
      var9[4] *= var6;
      var9[5] *= var6;
      var9[6] *= var7;
      var9[7] *= var7;
      var9[8] *= var7;
      return var9;
   }

   float[] method12130(int var1, int var2, int var3, int var4, float var5, float var6, float var7) {
      float[] var8 = new float[9];
      float[] var9 = new float[9];
      float var10 = (float)Math.cos((double)((float)var4 * 0.024543693F));
      float var11 = (float)Math.sin((double)((float)var4 * 0.024543693F));
      float var12 = 1.0F - var10;
      var8[0] = var10;
      var8[1] = 0.0F;
      var8[2] = var11;
      var8[3] = 0.0F;
      var8[4] = 1.0F;
      var8[5] = 0.0F;
      var8[6] = -var11;
      var8[7] = 0.0F;
      var8[8] = var10;
      float[] var13 = new float[9];
      float var14 = 1.0F;
      float var15 = 0.0F;
      var10 = (float)var2 / 32767.0F;
      var11 = -((float)Math.sqrt((double)(1.0F - var10 * var10)));
      var12 = 1.0F - var10;
      float var16 = (float)Math.sqrt((double)(var1 * var1 + var3 * var3));
      if(var16 == 0.0F && var10 == 0.0F) {
         var9 = var8;
      } else {
         if(var16 != 0.0F) {
            var14 = (float)(-var3) / var16;
            var15 = (float)var1 / var16;
         }

         var13[0] = var10 + var14 * var14 * var12;
         var13[1] = var15 * var11;
         var13[2] = var15 * var14 * var12;
         var13[3] = -var15 * var11;
         var13[4] = var10;
         var13[5] = var14 * var11;
         var13[6] = var14 * var15 * var12;
         var13[7] = -var14 * var11;
         var13[8] = var10 + var15 * var15 * var12;
         var9[0] = var8[0] * var13[0] + var8[1] * var13[3] + var8[2] * var13[6];
         var9[1] = var8[0] * var13[1] + var8[1] * var13[4] + var8[2] * var13[7];
         var9[2] = var8[0] * var13[2] + var8[1] * var13[5] + var8[2] * var13[8];
         var9[3] = var8[3] * var13[0] + var8[4] * var13[3] + var8[5] * var13[6];
         var9[4] = var8[3] * var13[1] + var8[4] * var13[4] + var8[5] * var13[7];
         var9[5] = var8[3] * var13[2] + var8[4] * var13[5] + var8[5] * var13[8];
         var9[6] = var8[6] * var13[0] + var8[7] * var13[3] + var8[8] * var13[6];
         var9[7] = var8[6] * var13[1] + var8[7] * var13[4] + var8[8] * var13[7];
         var9[8] = var8[6] * var13[2] + var8[7] * var13[5] + var8[8] * var13[8];
      }

      var9[0] *= var5;
      var9[1] *= var5;
      var9[2] *= var5;
      var9[3] *= var6;
      var9[4] *= var6;
      var9[5] *= var6;
      var9[6] *= var7;
      var9[7] *= var7;
      var9[8] *= var7;
      return var9;
   }

   float[] method12131(int var1, int var2, int var3, int var4, float var5, float var6, float var7) {
      float[] var8 = new float[9];
      float[] var9 = new float[9];
      float var10 = (float)Math.cos((double)((float)var4 * 0.024543693F));
      float var11 = (float)Math.sin((double)((float)var4 * 0.024543693F));
      float var12 = 1.0F - var10;
      var8[0] = var10;
      var8[1] = 0.0F;
      var8[2] = var11;
      var8[3] = 0.0F;
      var8[4] = 1.0F;
      var8[5] = 0.0F;
      var8[6] = -var11;
      var8[7] = 0.0F;
      var8[8] = var10;
      float[] var13 = new float[9];
      float var14 = 1.0F;
      float var15 = 0.0F;
      var10 = (float)var2 / 32767.0F;
      var11 = -((float)Math.sqrt((double)(1.0F - var10 * var10)));
      var12 = 1.0F - var10;
      float var16 = (float)Math.sqrt((double)(var1 * var1 + var3 * var3));
      if(var16 == 0.0F && var10 == 0.0F) {
         var9 = var8;
      } else {
         if(var16 != 0.0F) {
            var14 = (float)(-var3) / var16;
            var15 = (float)var1 / var16;
         }

         var13[0] = var10 + var14 * var14 * var12;
         var13[1] = var15 * var11;
         var13[2] = var15 * var14 * var12;
         var13[3] = -var15 * var11;
         var13[4] = var10;
         var13[5] = var14 * var11;
         var13[6] = var14 * var15 * var12;
         var13[7] = -var14 * var11;
         var13[8] = var10 + var15 * var15 * var12;
         var9[0] = var8[0] * var13[0] + var8[1] * var13[3] + var8[2] * var13[6];
         var9[1] = var8[0] * var13[1] + var8[1] * var13[4] + var8[2] * var13[7];
         var9[2] = var8[0] * var13[2] + var8[1] * var13[5] + var8[2] * var13[8];
         var9[3] = var8[3] * var13[0] + var8[4] * var13[3] + var8[5] * var13[6];
         var9[4] = var8[3] * var13[1] + var8[4] * var13[4] + var8[5] * var13[7];
         var9[5] = var8[3] * var13[2] + var8[4] * var13[5] + var8[5] * var13[8];
         var9[6] = var8[6] * var13[0] + var8[7] * var13[3] + var8[8] * var13[6];
         var9[7] = var8[6] * var13[1] + var8[7] * var13[4] + var8[8] * var13[7];
         var9[8] = var8[6] * var13[2] + var8[7] * var13[5] + var8[8] * var13[8];
      }

      var9[0] *= var5;
      var9[1] *= var5;
      var9[2] *= var5;
      var9[3] *= var6;
      var9[4] *= var6;
      var9[5] *= var6;
      var9[6] *= var7;
      var9[7] *= var7;
      var9[8] *= var7;
      return var9;
   }

   float[] method12132(int var1, int var2, int var3, int var4, float var5, float var6, float var7) {
      float[] var8 = new float[9];
      float[] var9 = new float[9];
      float var10 = (float)Math.cos((double)((float)var4 * 0.024543693F));
      float var11 = (float)Math.sin((double)((float)var4 * 0.024543693F));
      float var12 = 1.0F - var10;
      var8[0] = var10;
      var8[1] = 0.0F;
      var8[2] = var11;
      var8[3] = 0.0F;
      var8[4] = 1.0F;
      var8[5] = 0.0F;
      var8[6] = -var11;
      var8[7] = 0.0F;
      var8[8] = var10;
      float[] var13 = new float[9];
      float var14 = 1.0F;
      float var15 = 0.0F;
      var10 = (float)var2 / 32767.0F;
      var11 = -((float)Math.sqrt((double)(1.0F - var10 * var10)));
      var12 = 1.0F - var10;
      float var16 = (float)Math.sqrt((double)(var1 * var1 + var3 * var3));
      if(var16 == 0.0F && var10 == 0.0F) {
         var9 = var8;
      } else {
         if(var16 != 0.0F) {
            var14 = (float)(-var3) / var16;
            var15 = (float)var1 / var16;
         }

         var13[0] = var10 + var14 * var14 * var12;
         var13[1] = var15 * var11;
         var13[2] = var15 * var14 * var12;
         var13[3] = -var15 * var11;
         var13[4] = var10;
         var13[5] = var14 * var11;
         var13[6] = var14 * var15 * var12;
         var13[7] = -var14 * var11;
         var13[8] = var10 + var15 * var15 * var12;
         var9[0] = var8[0] * var13[0] + var8[1] * var13[3] + var8[2] * var13[6];
         var9[1] = var8[0] * var13[1] + var8[1] * var13[4] + var8[2] * var13[7];
         var9[2] = var8[0] * var13[2] + var8[1] * var13[5] + var8[2] * var13[8];
         var9[3] = var8[3] * var13[0] + var8[4] * var13[3] + var8[5] * var13[6];
         var9[4] = var8[3] * var13[1] + var8[4] * var13[4] + var8[5] * var13[7];
         var9[5] = var8[3] * var13[2] + var8[4] * var13[5] + var8[5] * var13[8];
         var9[6] = var8[6] * var13[0] + var8[7] * var13[3] + var8[8] * var13[6];
         var9[7] = var8[6] * var13[1] + var8[7] * var13[4] + var8[8] * var13[7];
         var9[8] = var8[6] * var13[2] + var8[7] * var13[5] + var8[8] * var13[8];
      }

      var9[0] *= var5;
      var9[1] *= var5;
      var9[2] *= var5;
      var9[3] *= var6;
      var9[4] *= var6;
      var9[5] *= var6;
      var9[6] *= var7;
      var9[7] *= var7;
      var9[8] *= var7;
      return var9;
   }

   void method12133(Class400 var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
      boolean var9 = false;
      boolean var10 = false;
      boolean var11 = false;
      int var12 = -var5 / 2;
      int var13 = -var6 / 2;
      int var14 = var1.method6791(var2 + var12, var4 + var13, 701663251);
      int var15 = var5 / 2;
      int var16 = -var6 / 2;
      int var17 = var1.method6791(var2 + var15, var4 + var16, 701663251);
      int var18 = -var5 / 2;
      int var19 = var6 / 2;
      int var20 = var1.method6791(var2 + var18, var4 + var19, 701663251);
      int var21 = var5 / 2;
      int var22 = var6 / 2;
      int var23 = var1.method6791(var2 + var21, var4 + var22, 701663251);
      int var24 = var14 < var17?var14:var17;
      int var25 = var20 < var23?var20:var23;
      int var26 = var17 < var23?var17:var23;
      int var27 = var14 < var20?var14:var20;
      int var28;
      if(var6 != 0) {
         int var29 = (int)(Math.atan2((double)(var24 - var25), (double)var6) * 2607.5945876176133D) & 16383;
         if(var29 != 0) {
            if(var7 != 0) {
               if(var29 > 8192) {
                  var28 = 16384 - var7;
                  if(var29 < var28) {
                     var29 = var28;
                  }
               } else if(var29 > var7) {
                  var29 = var7;
               }
            }

            this.t(var29);
         }
      }

      if(var5 != 0) {
         int var31 = (int)(Math.atan2((double)(var27 - var26), (double)var5) * 2607.5945876176133D) & 16383;
         if(var31 != 0) {
            if(var8 != 0) {
               if(var31 > 8192) {
                  var28 = 16384 - var8;
                  if(var31 < var28) {
                     var31 = var28;
                  }
               } else if(var31 > var8) {
                  var31 = var8;
               }
            }

            this.EA(var31);
         }
      }

      int var30 = var14 + var23;
      if(var17 + var20 < var30) {
         var30 = var17 + var20;
      }

      var30 = (var30 >> 1) - var3;
      if(var30 != 0) {
         this.ia(0, var30, 0);
      }

   }

   public final void method12134(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, boolean var8) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var9 = var1.aClass95Array9978[var2];
            Class225_Sub48 var10 = var9.aClass225_Sub48_930;
            Class95 var11 = null;
            if(var3 != null) {
               var11 = var3.aClass95Array9978[var4];
               if(var11.aClass225_Sub48_930 != var10) {
                  var11 = null;
               }
            }

            this.method12097(var10, var9, var11, var5, var6, var7, (boolean[])null, false, var8, '\uffff', (int[])null);
            this.ka();
            this.method12127();
         }
      }
   }

   public final void method12135(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, Class225_Sub14_Sub1 var7, int var8, Class225_Sub14_Sub1 var9, int var10, int var11, int var12, boolean[] var13, boolean var14) {
      if(var2 != -1) {
         if(var13 != null && var8 != -1) {
            this.method12063();
            if(!this.ea()) {
               this.method12127();
            } else {
               Class95 var15 = var1.aClass95Array9978[var2];
               Class225_Sub48 var16 = var15.aClass225_Sub48_930;
               Class95 var17 = null;
               if(var3 != null) {
                  var17 = var3.aClass95Array9978[var4];
                  if(var17.aClass225_Sub48_930 != var16) {
                     var17 = null;
                  }
               }

               this.method12097(var16, var15, var17, var5, var6, 0, var13, false, var14, '\uffff', (int[])null);
               Class95 var18 = var7.aClass95Array9978[var8];
               Class95 var19 = null;
               if(var9 != null) {
                  var19 = var9.aClass95Array9978[var10];
                  if(var19.aClass225_Sub48_930 != var16) {
                     var19 = null;
                  }
               }

               this.method12093(0, new int[0], 0, 0, 0, 0, var14);
               this.method12097(var18.aClass225_Sub48_930, var18, var19, var11, var12, 0, var13, true, var14, '\uffff', (int[])null);
               this.ka();
               this.method12127();
            }
         } else {
            this.method12073(var1, var2, var3, var4, var5, var6, 0, var14);
         }
      }
   }

   public final void method12136(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, int var8, boolean var9, int[] var10) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var11 = var1.aClass95Array9978[var2];
            Class225_Sub48 var12 = var11.aClass225_Sub48_930;
            Class95 var13 = null;
            if(var3 != null) {
               var13 = var3.aClass95Array9978[var4];
               if(var13.aClass225_Sub48_930 != var12) {
                  var13 = null;
               }
            }

            this.method12097(var12, var11, var13, var5, var6, var7, (boolean[])null, false, var9, var8, var10);
            this.ka();
            this.method12127();
         }
      }
   }

   void method12137(int var1, int[] var2, int var3, int var4, int var5, int var6, boolean var7, int var8, int[] var9) {
      int var10;
      if(var6 == 1) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = -var5 & 16383;
               var5 = var10 & 16383;
            }
         } else {
            var10 = -var3;
            var3 = var5;
            var5 = var10;
         }
      } else if(var6 == 2) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 2) {
               var3 = -var3 & 16383;
               var5 = -var5 & 16383;
            }
         } else {
            var3 = -var3;
            var5 = -var5;
         }
      } else if(var6 == 3) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = var5 & 16383;
               var5 = -var10 & 16383;
            }
         } else {
            var10 = var3;
            var3 = -var5;
            var5 = var10;
         }
      }

      if(var8 != '\uffff') {
         this.e(var1, var2, var3, var4, var5, var7, var8, var9);
      } else {
         this.method12093(var1, var2, var3, var4, var5, var6, var7);
      }

   }

   public abstract int ya();

   public abstract void bz(int var1, int var2, int var3);

   public final void method12138(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, int var7, int var8, boolean var9, int[] var10) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var11 = var1.aClass95Array9978[var2];
            Class225_Sub48 var12 = var11.aClass225_Sub48_930;
            Class95 var13 = null;
            if(var3 != null) {
               var13 = var3.aClass95Array9978[var4];
               if(var13.aClass225_Sub48_930 != var12) {
                  var13 = null;
               }
            }

            this.method12097(var12, var11, var13, var5, var6, var7, (boolean[])null, false, var9, var8, var10);
            this.ka();
            this.method12127();
         }
      }
   }

   public abstract void method12139(Class328 var1, int var2, boolean var3);

   public final void method12140(Class225_Sub14_Sub1 var1, int var2, Class225_Sub14_Sub1 var3, int var4, int var5, int var6, Class225_Sub14_Sub1 var7, int var8, Class225_Sub14_Sub1 var9, int var10, int var11, int var12, boolean[] var13, boolean var14) {
      if(var2 != -1) {
         if(var13 != null && var8 != -1) {
            this.method12063();
            if(!this.ea()) {
               this.method12127();
            } else {
               Class95 var15 = var1.aClass95Array9978[var2];
               Class225_Sub48 var16 = var15.aClass225_Sub48_930;
               Class95 var17 = null;
               if(var3 != null) {
                  var17 = var3.aClass95Array9978[var4];
                  if(var17.aClass225_Sub48_930 != var16) {
                     var17 = null;
                  }
               }

               this.method12097(var16, var15, var17, var5, var6, 0, var13, false, var14, '\uffff', (int[])null);
               Class95 var18 = var7.aClass95Array9978[var8];
               Class95 var19 = null;
               if(var9 != null) {
                  var19 = var9.aClass95Array9978[var10];
                  if(var19.aClass225_Sub48_930 != var16) {
                     var19 = null;
                  }
               }

               this.method12093(0, new int[0], 0, 0, 0, 0, var14);
               this.method12097(var18.aClass225_Sub48_930, var18, var19, var11, var12, 0, var13, true, var14, '\uffff', (int[])null);
               this.ka();
               this.method12127();
            }
         } else {
            this.method12073(var1, var2, var3, var4, var5, var6, 0, var14);
         }
      }
   }

   public final void method12141(Class225_Sub14_Sub1 var1, int var2) {
      if(var2 != -1) {
         this.method12063();
         if(!this.ea()) {
            this.method12127();
         } else {
            Class95 var3 = var1.aClass95Array9978[var2];
            Class225_Sub48 var4 = var3.aClass225_Sub48_930;

            for(int var5 = 0; var5 < var3.anInt939; ++var5) {
               short var6 = var3.aShortArray932[var5];
               if(var4.aBoolArray8865[var6]) {
                  if(var3.aShortArray933[var5] != -1) {
                     this.w(0, 0, 0, 0);
                  }

                  this.w(var4.anIntArray8861[var6], var3.aShortArray938[var5], var3.aShortArray934[var5], var3.aShortArray935[var5]);
               }
            }

            this.ka();
            this.method12127();
         }
      }
   }

   abstract void bm();

   public abstract int dt();

   void method12142(Class225_Sub48 var1, Class95 var2, Class95 var3, int var4, int var5, int var6, boolean[] var7, boolean var8, boolean var9, int var10, int[] var11) {
      int var12;
      if(var3 != null && var4 != 0) {
         var12 = 0;
         int var35 = 0;

         for(int var36 = 0; var36 < var1.anInt8851 * -255375945; ++var36) {
            boolean var15 = false;
            if(var12 < var2.anInt939 && var2.aShortArray932[var12] == var36) {
               var15 = true;
            }

            boolean var16 = false;
            if(var35 < var3.anInt939 && var3.aShortArray932[var35] == var36) {
               var16 = true;
            }

            if(var15 || var16) {
               if(var7 != null && var7[var36] != var8 && var1.anIntArray8861[var36] != 0) {
                  if(var15) {
                     ++var12;
                  }

                  if(var16) {
                     ++var35;
                  }
               } else {
                  short var17 = 0;
                  int var18 = var1.anIntArray8861[var36];
                  if(var18 == 3 || var18 == 10) {
                     var17 = 128;
                  }

                  short var19;
                  short var21;
                  short var20;
                  byte var23;
                  short var22;
                  if(var15) {
                     var19 = var2.aShortArray938[var12];
                     var20 = var2.aShortArray934[var12];
                     var21 = var2.aShortArray935[var12];
                     var22 = var2.aShortArray933[var12];
                     var23 = var2.aByteArray931[var12];
                     ++var12;
                  } else {
                     var19 = var17;
                     var20 = var17;
                     var21 = var17;
                     var22 = -1;
                     var23 = 0;
                  }

                  short var25;
                  short var24;
                  short var27;
                  short var26;
                  byte var28;
                  if(var16) {
                     var24 = var3.aShortArray938[var35];
                     var25 = var3.aShortArray934[var35];
                     var26 = var3.aShortArray935[var35];
                     var27 = var3.aShortArray933[var35];
                     var28 = var3.aByteArray931[var35];
                     ++var35;
                  } else {
                     var24 = var17;
                     var25 = var17;
                     var26 = var17;
                     var27 = -1;
                     var28 = 0;
                  }

                  int var29;
                  int var31;
                  int var30;
                  if((var23 & 2) == 0 && (var28 & 1) == 0) {
                     int var32;
                     if(var18 == 2) {
                        var32 = var24 - var19 & 16383;
                        int var33 = var25 - var20 & 16383;
                        int var34 = var26 - var21 & 16383;
                        if(var32 >= 8192) {
                           var32 -= 16384;
                        }

                        if(var33 >= 8192) {
                           var33 -= 16384;
                        }

                        if(var34 >= 8192) {
                           var34 -= 16384;
                        }

                        var29 = var19 + var32 * var4 / var5 & 16383;
                        var30 = var20 + var33 * var4 / var5 & 16383;
                        var31 = var21 + var34 * var4 / var5 & 16383;
                     } else if(var18 == 9) {
                        var32 = var24 - var19 & 16383;
                        if(var32 >= 8192) {
                           var32 -= 16384;
                        }

                        var29 = var19 + var32 * var4 / var5 & 16383;
                        var31 = 0;
                        var30 = 0;
                     } else if(var18 == 7) {
                        var32 = var24 - var19 & 63;
                        if(var32 >= 32) {
                           var32 -= 64;
                        }

                        var29 = var19 + var32 * var4 / var5 & 63;
                        var30 = var20 + (var25 - var20) * var4 / var5;
                        var31 = var21 + (var26 - var21) * var4 / var5;
                     } else {
                        var29 = var19 + (var24 - var19) * var4 / var5;
                        var30 = var20 + (var25 - var20) * var4 / var5;
                        var31 = var21 + (var26 - var21) * var4 / var5;
                     }
                  } else {
                     var29 = var19;
                     var30 = var20;
                     var31 = var21;
                  }

                  if(var22 != -1) {
                     this.method12137(0, var1.anIntArrayArray8863[var22], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var22], var11);
                  } else if(var27 != -1) {
                     this.method12137(0, var1.anIntArrayArray8863[var27], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var27], var11);
                  }

                  this.method12137(var18, var1.anIntArrayArray8863[var36], var29, var30, var31, var6, var9, var10 & var1.anIntArray8850[var36], var11);
               }
            }
         }

      } else {
         for(var12 = 0; var12 < var2.anInt939; ++var12) {
            short var13 = var2.aShortArray932[var12];
            if(var7 == null || var7[var13] == var8 || var1.anIntArray8861[var13] == 0) {
               short var14 = var2.aShortArray933[var12];
               if(var14 != -1) {
                  this.method12137(0, var1.anIntArrayArray8863[var14], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var14], var11);
               }

               this.method12137(var1.anIntArray8861[var13], var1.anIntArrayArray8863[var13], var2.aShortArray938[var12], var2.aShortArray934[var12], var2.aShortArray935[var12], var6, var9, var10 & var1.anIntArray8850[var13], var11);
            }
         }

      }
   }

   void method12143(Class225_Sub48 var1, Class95 var2, Class95 var3, int var4, int var5, int var6, boolean[] var7, boolean var8, boolean var9, int var10, int[] var11) {
      int var12;
      if(var3 != null && var4 != 0) {
         var12 = 0;
         int var35 = 0;

         for(int var36 = 0; var36 < var1.anInt8851 * -255375945; ++var36) {
            boolean var15 = false;
            if(var12 < var2.anInt939 && var2.aShortArray932[var12] == var36) {
               var15 = true;
            }

            boolean var16 = false;
            if(var35 < var3.anInt939 && var3.aShortArray932[var35] == var36) {
               var16 = true;
            }

            if(var15 || var16) {
               if(var7 != null && var7[var36] != var8 && var1.anIntArray8861[var36] != 0) {
                  if(var15) {
                     ++var12;
                  }

                  if(var16) {
                     ++var35;
                  }
               } else {
                  short var17 = 0;
                  int var18 = var1.anIntArray8861[var36];
                  if(var18 == 3 || var18 == 10) {
                     var17 = 128;
                  }

                  short var19;
                  short var21;
                  short var20;
                  byte var23;
                  short var22;
                  if(var15) {
                     var19 = var2.aShortArray938[var12];
                     var20 = var2.aShortArray934[var12];
                     var21 = var2.aShortArray935[var12];
                     var22 = var2.aShortArray933[var12];
                     var23 = var2.aByteArray931[var12];
                     ++var12;
                  } else {
                     var19 = var17;
                     var20 = var17;
                     var21 = var17;
                     var22 = -1;
                     var23 = 0;
                  }

                  short var25;
                  short var24;
                  short var27;
                  short var26;
                  byte var28;
                  if(var16) {
                     var24 = var3.aShortArray938[var35];
                     var25 = var3.aShortArray934[var35];
                     var26 = var3.aShortArray935[var35];
                     var27 = var3.aShortArray933[var35];
                     var28 = var3.aByteArray931[var35];
                     ++var35;
                  } else {
                     var24 = var17;
                     var25 = var17;
                     var26 = var17;
                     var27 = -1;
                     var28 = 0;
                  }

                  int var29;
                  int var31;
                  int var30;
                  if((var23 & 2) == 0 && (var28 & 1) == 0) {
                     int var32;
                     if(var18 == 2) {
                        var32 = var24 - var19 & 16383;
                        int var33 = var25 - var20 & 16383;
                        int var34 = var26 - var21 & 16383;
                        if(var32 >= 8192) {
                           var32 -= 16384;
                        }

                        if(var33 >= 8192) {
                           var33 -= 16384;
                        }

                        if(var34 >= 8192) {
                           var34 -= 16384;
                        }

                        var29 = var19 + var32 * var4 / var5 & 16383;
                        var30 = var20 + var33 * var4 / var5 & 16383;
                        var31 = var21 + var34 * var4 / var5 & 16383;
                     } else if(var18 == 9) {
                        var32 = var24 - var19 & 16383;
                        if(var32 >= 8192) {
                           var32 -= 16384;
                        }

                        var29 = var19 + var32 * var4 / var5 & 16383;
                        var31 = 0;
                        var30 = 0;
                     } else if(var18 == 7) {
                        var32 = var24 - var19 & 63;
                        if(var32 >= 32) {
                           var32 -= 64;
                        }

                        var29 = var19 + var32 * var4 / var5 & 63;
                        var30 = var20 + (var25 - var20) * var4 / var5;
                        var31 = var21 + (var26 - var21) * var4 / var5;
                     } else {
                        var29 = var19 + (var24 - var19) * var4 / var5;
                        var30 = var20 + (var25 - var20) * var4 / var5;
                        var31 = var21 + (var26 - var21) * var4 / var5;
                     }
                  } else {
                     var29 = var19;
                     var30 = var20;
                     var31 = var21;
                  }

                  if(var22 != -1) {
                     this.method12137(0, var1.anIntArrayArray8863[var22], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var22], var11);
                  } else if(var27 != -1) {
                     this.method12137(0, var1.anIntArrayArray8863[var27], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var27], var11);
                  }

                  this.method12137(var18, var1.anIntArrayArray8863[var36], var29, var30, var31, var6, var9, var10 & var1.anIntArray8850[var36], var11);
               }
            }
         }

      } else {
         for(var12 = 0; var12 < var2.anInt939; ++var12) {
            short var13 = var2.aShortArray932[var12];
            if(var7 == null || var7[var13] == var8 || var1.anIntArray8861[var13] == 0) {
               short var14 = var2.aShortArray933[var12];
               if(var14 != -1) {
                  this.method12137(0, var1.anIntArrayArray8863[var14], 0, 0, 0, var6, var9, var10 & var1.anIntArray8850[var14], var11);
               }

               this.method12137(var1.anIntArray8861[var13], var1.anIntArrayArray8863[var13], var2.aShortArray938[var12], var2.aShortArray934[var12], var2.aShortArray935[var12], var6, var9, var10 & var1.anIntArray8850[var13], var11);
            }
         }

      }
   }

   void method12144(int var1, int[] var2, int var3, int var4, int var5, int var6, boolean var7, int var8, int[] var9) {
      int var10;
      if(var6 == 1) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = -var5 & 16383;
               var5 = var10 & 16383;
            }
         } else {
            var10 = -var3;
            var3 = var5;
            var5 = var10;
         }
      } else if(var6 == 2) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 2) {
               var3 = -var3 & 16383;
               var5 = -var5 & 16383;
            }
         } else {
            var3 = -var3;
            var5 = -var5;
         }
      } else if(var6 == 3) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = var5 & 16383;
               var5 = -var10 & 16383;
            }
         } else {
            var10 = var3;
            var3 = -var5;
            var5 = var10;
         }
      }

      if(var8 != '\uffff') {
         this.e(var1, var2, var3, var4, var5, var7, var8, var9);
      } else {
         this.method12093(var1, var2, var3, var4, var5, var6, var7);
      }

   }

   void method12145(int var1, int[] var2, int var3, int var4, int var5, int var6, boolean var7, int var8, int[] var9) {
      int var10;
      if(var6 == 1) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = -var5 & 16383;
               var5 = var10 & 16383;
            }
         } else {
            var10 = -var3;
            var3 = var5;
            var5 = var10;
         }
      } else if(var6 == 2) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 2) {
               var3 = -var3 & 16383;
               var5 = -var5 & 16383;
            }
         } else {
            var3 = -var3;
            var5 = -var5;
         }
      } else if(var6 == 3) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = var5 & 16383;
               var5 = -var10 & 16383;
            }
         } else {
            var10 = var3;
            var3 = -var5;
            var5 = var10;
         }
      }

      if(var8 != '\uffff') {
         this.e(var1, var2, var3, var4, var5, var7, var8, var9);
      } else {
         this.method12093(var1, var2, var3, var4, var5, var6, var7);
      }

   }

   void method12146(int var1, int[] var2, int var3, int var4, int var5, int var6, boolean var7, int var8, int[] var9) {
      int var10;
      if(var6 == 1) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = -var5 & 16383;
               var5 = var10 & 16383;
            }
         } else {
            var10 = -var3;
            var3 = var5;
            var5 = var10;
         }
      } else if(var6 == 2) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 2) {
               var3 = -var3 & 16383;
               var5 = -var5 & 16383;
            }
         } else {
            var3 = -var3;
            var5 = -var5;
         }
      } else if(var6 == 3) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = var5 & 16383;
               var5 = -var10 & 16383;
            }
         } else {
            var10 = var3;
            var3 = -var5;
            var5 = var10;
         }
      }

      if(var8 != '\uffff') {
         this.e(var1, var2, var3, var4, var5, var7, var8, var9);
      } else {
         this.method12093(var1, var2, var3, var4, var5, var6, var7);
      }

   }

   void method12147(int var1, int[] var2, int var3, int var4, int var5, int var6, boolean var7, int var8, int[] var9) {
      int var10;
      if(var6 == 1) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = -var5 & 16383;
               var5 = var10 & 16383;
            }
         } else {
            var10 = -var3;
            var3 = var5;
            var5 = var10;
         }
      } else if(var6 == 2) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 2) {
               var3 = -var3 & 16383;
               var5 = -var5 & 16383;
            }
         } else {
            var3 = -var3;
            var5 = -var5;
         }
      } else if(var6 == 3) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = var5 & 16383;
               var5 = -var10 & 16383;
            }
         } else {
            var10 = var3;
            var3 = -var5;
            var5 = var10;
         }
      }

      if(var8 != '\uffff') {
         this.e(var1, var2, var3, var4, var5, var7, var8, var9);
      } else {
         this.method12093(var1, var2, var3, var4, var5, var6, var7);
      }

   }

   void method12148(int var1, int[] var2, int var3, int var4, int var5, int var6, boolean var7, int var8, int[] var9) {
      int var10;
      if(var6 == 1) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = -var5 & 16383;
               var5 = var10 & 16383;
            }
         } else {
            var10 = -var3;
            var3 = var5;
            var5 = var10;
         }
      } else if(var6 == 2) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 2) {
               var3 = -var3 & 16383;
               var5 = -var5 & 16383;
            }
         } else {
            var3 = -var3;
            var5 = -var5;
         }
      } else if(var6 == 3) {
         if(var1 != 0 && var1 != 1) {
            if(var1 == 3) {
               var10 = var3;
               var3 = var5;
               var5 = var10;
            } else if(var1 == 2) {
               var10 = var3;
               var3 = var5 & 16383;
               var5 = -var10 & 16383;
            }
         } else {
            var10 = var3;
            var3 = -var5;
            var5 = var10;
         }
      }

      if(var8 != '\uffff') {
         this.e(var1, var2, var3, var4, var5, var7, var8, var9);
      } else {
         this.method12093(var1, var2, var3, var4, var5, var6, var7);
      }

   }
}
