
public class Class8_Sub4 extends Class8 {

   int[] anIntArray9604;
   Class545_Sub3 aClass545_Sub3_9605;
   int[] anIntArray9606;
   int[] anIntArray9607;
   int[] anIntArray9608;
   byte[][] aByteArrayArray9609;


   void method629(char var1, int var2, int var3, int var4, boolean var5, Class496 var6, int var7, int var8) {
      if(this.aClass545_Sub3_9605.anIntArray9788 != null) {
         if(null == var6) {
            this.UA(var1, var2, var3, var4, var5);
         } else {
            var2 += this.anIntArray9606[var1];
            var3 += this.anIntArray9604[var1];
            int var9 = this.anIntArray9608[var1];
            int var10 = this.anIntArray9607[var1];
            int var11 = 1251184143 * this.aClass545_Sub3_9605.anInt9789;
            int var12 = var3 * var11 + var2;
            int var13 = var11 - var9;
            int var14 = 0;
            int var15 = 0;
            int var16;
            if(var3 < 493658681 * this.aClass545_Sub3_9605.anInt9800) {
               var16 = this.aClass545_Sub3_9605.anInt9800 * 493658681 - var3;
               var10 -= var16;
               var3 = this.aClass545_Sub3_9605.anInt9800 * 493658681;
               var15 += var16 * var9;
               var12 += var11 * var16;
            }

            if(var10 + var3 > this.aClass545_Sub3_9605.anInt9795 * -1644767141) {
               var10 -= var10 + var3 - this.aClass545_Sub3_9605.anInt9795 * -1644767141;
            }

            if(var2 < -399365585 * this.aClass545_Sub3_9605.anInt9785) {
               var16 = -399365585 * this.aClass545_Sub3_9605.anInt9785 - var2;
               var9 -= var16;
               var2 = this.aClass545_Sub3_9605.anInt9785 * -399365585;
               var15 += var16;
               var12 += var16;
               var14 += var16;
               var13 += var16;
            }

            if(var9 + var2 > -2090820537 * this.aClass545_Sub3_9605.anInt9797) {
               var16 = var9 + var2 - -2090820537 * this.aClass545_Sub3_9605.anInt9797;
               var9 -= var16;
               var14 += var16;
               var13 += var16;
            }

            if(var9 > 0 && var10 > 0) {
               this.method14957(this.aByteArrayArray9609[var1], this.aClass545_Sub3_9605.anIntArray9788, var4, var15, var12, var9, var10, var13, var14, var2, var3, this.anIntArray9608[var1], var6, var7, var8);
            }
         }
      }
   }

   void UA(char var1, int var2, int var3, int var4, boolean var5) {
      if(null != this.aClass545_Sub3_9605.anIntArray9788) {
         var2 += this.anIntArray9606[var1];
         var3 += this.anIntArray9604[var1];
         int var6 = this.anIntArray9608[var1];
         int var7 = this.anIntArray9607[var1];
         int var8 = this.aClass545_Sub3_9605.anInt9789 * 1251184143;
         int var9 = var3 * var8 + var2;
         int var10 = var8 - var6;
         int var11 = 0;
         int var12 = 0;
         int var13;
         if(var3 < this.aClass545_Sub3_9605.anInt9800 * 493658681) {
            var13 = 493658681 * this.aClass545_Sub3_9605.anInt9800 - var3;
            var7 -= var13;
            var3 = 493658681 * this.aClass545_Sub3_9605.anInt9800;
            var12 += var13 * var6;
            var9 += var13 * var8;
         }

         if(var7 + var3 > this.aClass545_Sub3_9605.anInt9795 * -1644767141) {
            var7 -= var7 + var3 - -1644767141 * this.aClass545_Sub3_9605.anInt9795;
         }

         if(var2 < -399365585 * this.aClass545_Sub3_9605.anInt9785) {
            var13 = this.aClass545_Sub3_9605.anInt9785 * -399365585 - var2;
            var6 -= var13;
            var2 = this.aClass545_Sub3_9605.anInt9785 * -399365585;
            var12 += var13;
            var9 += var13;
            var11 += var13;
            var10 += var13;
         }

         if(var6 + var2 > this.aClass545_Sub3_9605.anInt9797 * -2090820537) {
            var13 = var2 + var6 - this.aClass545_Sub3_9605.anInt9797 * -2090820537;
            var6 -= var13;
            var11 += var13;
            var10 += var13;
         }

         if(var6 > 0 && var7 > 0) {
            this.method14956(this.aByteArrayArray9609[var1], this.aClass545_Sub3_9605.anIntArray9788, var4, var12, var9, var6, var7, var10, var11);
         }
      }
   }

   void method14956(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) {
      for(int var10 = -var7; var10 < 0; ++var10) {
         for(int var11 = -var6; var11 < 0; ++var11) {
            int var12 = var1[var4++] & 255;
            if(var12 != 0) {
               int var13 = (var12 * (var3 & '\uff00') & 16711680) + (var12 * (var3 & 16711935) & -16711936) >> 8;
               var12 = 256 - var12;
               int var14 = var2[var5];
               var2[var5++] = ((var12 * (var14 & 16711935) & -16711936) + ((var14 & '\uff00') * var12 & 16711680) >> 8) + var13;
            } else {
               ++var5;
            }
         }

         var5 += var8;
         var4 += var9;
      }

   }

   void method620(char var1, int var2, int var3, int var4, boolean var5, Class496 var6, int var7, int var8) {
      if(this.aClass545_Sub3_9605.anIntArray9788 != null) {
         if(null == var6) {
            this.UA(var1, var2, var3, var4, var5);
         } else {
            var2 += this.anIntArray9606[var1];
            var3 += this.anIntArray9604[var1];
            int var9 = this.anIntArray9608[var1];
            int var10 = this.anIntArray9607[var1];
            int var11 = 1251184143 * this.aClass545_Sub3_9605.anInt9789;
            int var12 = var3 * var11 + var2;
            int var13 = var11 - var9;
            int var14 = 0;
            int var15 = 0;
            int var16;
            if(var3 < 493658681 * this.aClass545_Sub3_9605.anInt9800) {
               var16 = this.aClass545_Sub3_9605.anInt9800 * 493658681 - var3;
               var10 -= var16;
               var3 = this.aClass545_Sub3_9605.anInt9800 * 493658681;
               var15 += var16 * var9;
               var12 += var11 * var16;
            }

            if(var10 + var3 > this.aClass545_Sub3_9605.anInt9795 * -1644767141) {
               var10 -= var10 + var3 - this.aClass545_Sub3_9605.anInt9795 * -1644767141;
            }

            if(var2 < -399365585 * this.aClass545_Sub3_9605.anInt9785) {
               var16 = -399365585 * this.aClass545_Sub3_9605.anInt9785 - var2;
               var9 -= var16;
               var2 = this.aClass545_Sub3_9605.anInt9785 * -399365585;
               var15 += var16;
               var12 += var16;
               var14 += var16;
               var13 += var16;
            }

            if(var9 + var2 > -2090820537 * this.aClass545_Sub3_9605.anInt9797) {
               var16 = var9 + var2 - -2090820537 * this.aClass545_Sub3_9605.anInt9797;
               var9 -= var16;
               var14 += var16;
               var13 += var16;
            }

            if(var9 > 0 && var10 > 0) {
               this.method14957(this.aByteArrayArray9609[var1], this.aClass545_Sub3_9605.anIntArray9788, var4, var15, var12, var9, var10, var13, var14, var2, var3, this.anIntArray9608[var1], var6, var7, var8);
            }
         }
      }
   }

   void method14957(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, Class496 var13, int var14, int var15) {
      Class496_Sub2 var16 = (Class496_Sub2)var13;
      int[] var17 = var16.anIntArray9835;
      int[] var18 = var16.anIntArray9836;
      int var19 = var10 - -399365585 * this.aClass545_Sub3_9605.anInt9785;
      int var20 = var11;
      if(var15 > var11) {
         var20 = var15;
         var5 += (var15 - var11) * 1251184143 * this.aClass545_Sub3_9605.anInt9789;
         var4 += var12 * (var15 - var11);
      }

      int var21 = var17.length + var15 < var7 + var11?var17.length + var15:var11 + var7;

      for(int var22 = var20; var22 < var21; ++var22) {
         int var23 = var17[var22 - var15] + var14;
         int var24 = var18[var22 - var15];
         int var25 = var6;
         int var26;
         if(var19 > var23) {
            var26 = var19 - var23;
            if(var26 >= var24) {
               var4 += var9 + var6;
               var5 += var8 + var6;
               continue;
            }

            var24 -= var26;
         } else {
            var26 = var23 - var19;
            if(var26 >= var6) {
               var4 += var6 + var9;
               var5 += var6 + var8;
               continue;
            }

            var4 += var26;
            var25 = var6 - var26;
            var5 += var26;
         }

         var26 = 0;
         if(var25 < var24) {
            var24 = var25;
         } else {
            var26 = var25 - var24;
         }

         for(int var27 = -var24; var27 < 0; ++var27) {
            int var28 = var1[var4++] & 255;
            if(0 != var28) {
               int var29 = ((var3 & '\uff00') * var28 & 16711680) + (var28 * (var3 & 16711935) & -16711936) >> 8;
               var28 = 256 - var28;
               int var30 = var2[var5];
               var2[var5++] = ((var28 * (var30 & 16711935) & -16711936) + (var28 * (var30 & '\uff00') & 16711680) >> 8) + var29;
            } else {
               ++var5;
            }
         }

         var4 += var9 + var26;
         var5 += var8 + var26;
      }

   }

   void w(char var1, int var2, int var3, int var4, boolean var5) {
      if(null != this.aClass545_Sub3_9605.anIntArray9788) {
         var2 += this.anIntArray9606[var1];
         var3 += this.anIntArray9604[var1];
         int var6 = this.anIntArray9608[var1];
         int var7 = this.anIntArray9607[var1];
         int var8 = this.aClass545_Sub3_9605.anInt9789 * 1251184143;
         int var9 = var3 * var8 + var2;
         int var10 = var8 - var6;
         int var11 = 0;
         int var12 = 0;
         int var13;
         if(var3 < this.aClass545_Sub3_9605.anInt9800 * 493658681) {
            var13 = 493658681 * this.aClass545_Sub3_9605.anInt9800 - var3;
            var7 -= var13;
            var3 = 493658681 * this.aClass545_Sub3_9605.anInt9800;
            var12 += var13 * var6;
            var9 += var13 * var8;
         }

         if(var7 + var3 > this.aClass545_Sub3_9605.anInt9795 * -1644767141) {
            var7 -= var7 + var3 - -1644767141 * this.aClass545_Sub3_9605.anInt9795;
         }

         if(var2 < -399365585 * this.aClass545_Sub3_9605.anInt9785) {
            var13 = this.aClass545_Sub3_9605.anInt9785 * -399365585 - var2;
            var6 -= var13;
            var2 = this.aClass545_Sub3_9605.anInt9785 * -399365585;
            var12 += var13;
            var9 += var13;
            var11 += var13;
            var10 += var13;
         }

         if(var6 + var2 > this.aClass545_Sub3_9605.anInt9797 * -2090820537) {
            var13 = var2 + var6 - this.aClass545_Sub3_9605.anInt9797 * -2090820537;
            var6 -= var13;
            var11 += var13;
            var10 += var13;
         }

         if(var6 > 0 && var7 > 0) {
            this.method14956(this.aByteArrayArray9609[var1], this.aClass545_Sub3_9605.anIntArray9788, var4, var12, var9, var6, var7, var10, var11);
         }
      }
   }

   void k(char var1, int var2, int var3, int var4, boolean var5) {
      if(null != this.aClass545_Sub3_9605.anIntArray9788) {
         var2 += this.anIntArray9606[var1];
         var3 += this.anIntArray9604[var1];
         int var6 = this.anIntArray9608[var1];
         int var7 = this.anIntArray9607[var1];
         int var8 = this.aClass545_Sub3_9605.anInt9789 * 1251184143;
         int var9 = var3 * var8 + var2;
         int var10 = var8 - var6;
         int var11 = 0;
         int var12 = 0;
         int var13;
         if(var3 < this.aClass545_Sub3_9605.anInt9800 * 493658681) {
            var13 = 493658681 * this.aClass545_Sub3_9605.anInt9800 - var3;
            var7 -= var13;
            var3 = 493658681 * this.aClass545_Sub3_9605.anInt9800;
            var12 += var13 * var6;
            var9 += var13 * var8;
         }

         if(var7 + var3 > this.aClass545_Sub3_9605.anInt9795 * -1644767141) {
            var7 -= var7 + var3 - -1644767141 * this.aClass545_Sub3_9605.anInt9795;
         }

         if(var2 < -399365585 * this.aClass545_Sub3_9605.anInt9785) {
            var13 = this.aClass545_Sub3_9605.anInt9785 * -399365585 - var2;
            var6 -= var13;
            var2 = this.aClass545_Sub3_9605.anInt9785 * -399365585;
            var12 += var13;
            var9 += var13;
            var11 += var13;
            var10 += var13;
         }

         if(var6 + var2 > this.aClass545_Sub3_9605.anInt9797 * -2090820537) {
            var13 = var2 + var6 - this.aClass545_Sub3_9605.anInt9797 * -2090820537;
            var6 -= var13;
            var11 += var13;
            var10 += var13;
         }

         if(var6 > 0 && var7 > 0) {
            this.method14956(this.aByteArrayArray9609[var1], this.aClass545_Sub3_9605.anIntArray9788, var4, var12, var9, var6, var7, var10, var11);
         }
      }
   }

   void method14958(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) {
      for(int var10 = -var7; var10 < 0; ++var10) {
         for(int var11 = -var6; var11 < 0; ++var11) {
            int var12 = var1[var4++] & 255;
            if(var12 != 0) {
               int var13 = (var12 * (var3 & '\uff00') & 16711680) + (var12 * (var3 & 16711935) & -16711936) >> 8;
               var12 = 256 - var12;
               int var14 = var2[var5];
               var2[var5++] = ((var12 * (var14 & 16711935) & -16711936) + ((var14 & '\uff00') * var12 & 16711680) >> 8) + var13;
            } else {
               ++var5;
            }
         }

         var5 += var8;
         var4 += var9;
      }

   }

   void method14959(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) {
      for(int var10 = -var7; var10 < 0; ++var10) {
         for(int var11 = -var6; var11 < 0; ++var11) {
            int var12 = var1[var4++] & 255;
            if(var12 != 0) {
               int var13 = (var12 * (var3 & '\uff00') & 16711680) + (var12 * (var3 & 16711935) & -16711936) >> 8;
               var12 = 256 - var12;
               int var14 = var2[var5];
               var2[var5++] = ((var12 * (var14 & 16711935) & -16711936) + ((var14 & '\uff00') * var12 & 16711680) >> 8) + var13;
            } else {
               ++var5;
            }
         }

         var5 += var8;
         var4 += var9;
      }

   }

   void method14960(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, Class496 var13, int var14, int var15) {
      Class496_Sub2 var16 = (Class496_Sub2)var13;
      int[] var17 = var16.anIntArray9835;
      int[] var18 = var16.anIntArray9836;
      int var19 = var10 - -399365585 * this.aClass545_Sub3_9605.anInt9785;
      int var20 = var11;
      if(var15 > var11) {
         var20 = var15;
         var5 += (var15 - var11) * 1251184143 * this.aClass545_Sub3_9605.anInt9789;
         var4 += var12 * (var15 - var11);
      }

      int var21 = var17.length + var15 < var7 + var11?var17.length + var15:var11 + var7;

      for(int var22 = var20; var22 < var21; ++var22) {
         int var23 = var17[var22 - var15] + var14;
         int var24 = var18[var22 - var15];
         int var25 = var6;
         int var26;
         if(var19 > var23) {
            var26 = var19 - var23;
            if(var26 >= var24) {
               var4 += var9 + var6;
               var5 += var8 + var6;
               continue;
            }

            var24 -= var26;
         } else {
            var26 = var23 - var19;
            if(var26 >= var6) {
               var4 += var6 + var9;
               var5 += var6 + var8;
               continue;
            }

            var4 += var26;
            var25 = var6 - var26;
            var5 += var26;
         }

         var26 = 0;
         if(var25 < var24) {
            var24 = var25;
         } else {
            var26 = var25 - var24;
         }

         for(int var27 = -var24; var27 < 0; ++var27) {
            int var28 = var1[var4++] & 255;
            if(0 != var28) {
               int var29 = ((var3 & '\uff00') * var28 & 16711680) + (var28 * (var3 & 16711935) & -16711936) >> 8;
               var28 = 256 - var28;
               int var30 = var2[var5];
               var2[var5++] = ((var28 * (var30 & 16711935) & -16711936) + (var28 * (var30 & '\uff00') & 16711680) >> 8) + var29;
            } else {
               ++var5;
            }
         }

         var4 += var9 + var26;
         var5 += var8 + var26;
      }

   }

   void method14961(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) {
      for(int var10 = -var7; var10 < 0; ++var10) {
         for(int var11 = -var6; var11 < 0; ++var11) {
            int var12 = var1[var4++] & 255;
            if(var12 != 0) {
               int var13 = (var12 * (var3 & '\uff00') & 16711680) + (var12 * (var3 & 16711935) & -16711936) >> 8;
               var12 = 256 - var12;
               int var14 = var2[var5];
               var2[var5++] = ((var12 * (var14 & 16711935) & -16711936) + ((var14 & '\uff00') * var12 & 16711680) >> 8) + var13;
            } else {
               ++var5;
            }
         }

         var5 += var8;
         var4 += var9;
      }

   }

   void method14962(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, Class496 var13, int var14, int var15) {
      Class496_Sub2 var16 = (Class496_Sub2)var13;
      int[] var17 = var16.anIntArray9835;
      int[] var18 = var16.anIntArray9836;
      int var19 = var10 - -399365585 * this.aClass545_Sub3_9605.anInt9785;
      int var20 = var11;
      if(var15 > var11) {
         var20 = var15;
         var5 += (var15 - var11) * 1251184143 * this.aClass545_Sub3_9605.anInt9789;
         var4 += var12 * (var15 - var11);
      }

      int var21 = var17.length + var15 < var7 + var11?var17.length + var15:var11 + var7;

      for(int var22 = var20; var22 < var21; ++var22) {
         int var23 = var17[var22 - var15] + var14;
         int var24 = var18[var22 - var15];
         int var25 = var6;
         int var26;
         if(var19 > var23) {
            var26 = var19 - var23;
            if(var26 >= var24) {
               var4 += var9 + var6;
               var5 += var8 + var6;
               continue;
            }

            var24 -= var26;
         } else {
            var26 = var23 - var19;
            if(var26 >= var6) {
               var4 += var6 + var9;
               var5 += var6 + var8;
               continue;
            }

            var4 += var26;
            var25 = var6 - var26;
            var5 += var26;
         }

         var26 = 0;
         if(var25 < var24) {
            var24 = var25;
         } else {
            var26 = var25 - var24;
         }

         for(int var27 = -var24; var27 < 0; ++var27) {
            int var28 = var1[var4++] & 255;
            if(0 != var28) {
               int var29 = ((var3 & '\uff00') * var28 & 16711680) + (var28 * (var3 & 16711935) & -16711936) >> 8;
               var28 = 256 - var28;
               int var30 = var2[var5];
               var2[var5++] = ((var28 * (var30 & 16711935) & -16711936) + (var28 * (var30 & '\uff00') & 16711680) >> 8) + var29;
            } else {
               ++var5;
            }
         }

         var4 += var9 + var26;
         var5 += var8 + var26;
      }

   }

   Class8_Sub4(Class545_Sub3 var1, Class405 var2, Class86_Sub1[] var3, int[] var4, int[] var5) {
      super(var1, var2);
      this.aClass545_Sub3_9605 = var1;
      this.aClass545_Sub3_9605 = var1;
      this.anIntArray9608 = var4;
      this.anIntArray9607 = var5;
      this.aByteArrayArray9609 = new byte[var3.length][];
      this.anIntArray9604 = new int[var3.length];
      this.anIntArray9606 = new int[var3.length];

      for(int var6 = 0; var6 < var3.length; ++var6) {
         Class86_Sub1 var7 = var3[var6];
         if(null != var7.aByteArray9473) {
            this.aByteArrayArray9609[var6] = var7.aByteArray9473;
         } else {
            byte[] var8 = var7.aByteArray9472;
            byte[] var9 = this.aByteArrayArray9609[var6] = new byte[var8.length];

            for(int var10 = 0; var10 < var8.length; ++var10) {
               var9[var10] = (byte)(var8[var10] == 0?0:-1);
            }
         }

         this.anIntArray9604[var6] = var7.anInt9469;
         this.anIntArray9606[var6] = var7.anInt9467;
      }

   }

   void method14963(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) {
      for(int var10 = -var7; var10 < 0; ++var10) {
         for(int var11 = -var6; var11 < 0; ++var11) {
            int var12 = var1[var4++] & 255;
            if(var12 != 0) {
               int var13 = (var12 * (var3 & '\uff00') & 16711680) + (var12 * (var3 & 16711935) & -16711936) >> 8;
               var12 = 256 - var12;
               int var14 = var2[var5];
               var2[var5++] = ((var12 * (var14 & 16711935) & -16711936) + ((var14 & '\uff00') * var12 & 16711680) >> 8) + var13;
            } else {
               ++var5;
            }
         }

         var5 += var8;
         var4 += var9;
      }

   }

   public static boolean method14964(int var0) {
      return null != Class398.anInterface57_4902;
   }
}
