
public abstract class Class515_Sub1_Sub4 extends Class515_Sub1 {

   Class225_Sub40[] aClass225_Sub40Array10423 = new Class225_Sub40[4];
   public short aShort10424;
   int anInt10425 = 0;
   public short aShort10426;
   public boolean aBool10427;
   byte aByte10428;
   public short aShort10429;
   public short aShort10430;


   boolean method13428(Class545 var1, int var2) {
      return this.aClass241_8441.aClass236_2906.method4097(this.aByte8444, this.aShort10430, this.aShort10429, this.aShort10424, this.aShort10426, this.method13400(var1, 320103153));
   }

   void method16058(int var1) {}

   int method13401(Class225_Sub40[] var1, int var2) {
      int var3;
      if(this.aBool6076) {
         this.anInt10425 = 0;

         int var4;
         int var9;
         label116:
         for(var3 = this.aShort10430; var3 <= this.aShort10429; ++var3) {
            var4 = this.aShort10424;

            while(var4 <= this.aShort10426) {
               long var5 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var3][var4];
               long var7 = 0L;

               label112:
               while(true) {
                  if(var7 <= 48L) {
                     var9 = (int)(var5 >>> (int)var7 & 65535L);
                     if(var9 > 0) {
                        Class230 var10 = this.aClass241_8441.aClass230Array2921[var9 - 1];

                        for(int var11 = 0; var11 < this.anInt10425 * 1179249193; ++var11) {
                           if(var10.aClass225_Sub40_2649 == this.aClass225_Sub40Array10423[var11]) {
                              var7 += 16L;
                              continue label112;
                           }
                        }

                        this.aClass225_Sub40Array10423[(this.anInt10425 += 1047482905) * 1179249193 - 1] = var10.aClass225_Sub40_2649;
                        if(1179249193 * this.anInt10425 == 4) {
                           break label116;
                        }

                        var7 += 16L;
                        continue;
                     }
                  }

                  ++var4;
                  break;
               }
            }
         }

         for(var3 = this.anInt10425 * 1179249193; var3 < 4; ++var3) {
            this.aClass225_Sub40Array10423[var3] = null;
         }

         if(0 != this.aByte10428) {
            int var12 = this.aShort10430 - 463854619 * this.aClass241_8441.anInt2896;
            int var13 = this.aShort10424 - 1686765659 * this.aClass241_8441.anInt2908;
            int var14;
            short var15;
            short var19;
            if(1 == this.aByte10428) {
               if(var13 > var12) {
                  var19 = this.aShort10430;
                  var4 = this.aShort10424 - 1;
                  var14 = this.aShort10430 + 1;
                  var15 = this.aShort10424;
               } else {
                  var19 = this.aShort10430;
                  var4 = 1 + this.aShort10424;
                  var14 = this.aShort10430 - 1;
                  var15 = this.aShort10424;
               }
            } else if(var13 > -var12) {
               var19 = this.aShort10430;
               var4 = this.aShort10424 - 1;
               var14 = this.aShort10430 - 1;
               var15 = this.aShort10424;
            } else {
               var19 = this.aShort10430;
               var4 = 1 + this.aShort10424;
               var14 = this.aShort10430 + 1;
               var15 = this.aShort10424;
            }

            label84:
            for(var9 = 0; var9 < this.anInt10425 * 1179249193; ++var9) {
               long var16 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var19][var4];

               while(true) {
                  Class230 var20;
                  if(0L != var16) {
                     var20 = this.aClass241_8441.aClass230Array2921[(int)((var16 & 65535L) - 1L)];
                     var16 >>>= 16;
                     if(this.aClass225_Sub40Array10423[var9] != var20.aClass225_Sub40_2649) {
                        continue;
                     }
                     break;
                  }

                  var16 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var14][var15];

                  while(true) {
                     if(var16 != 0L) {
                        var20 = this.aClass241_8441.aClass230Array2921[(int)((var16 & 65535L) - 1L)];
                        var16 >>>= 16;
                        if(var20.aClass225_Sub40_2649 != this.aClass225_Sub40Array10423[var9]) {
                           continue;
                        }
                        continue label84;
                     }

                     for(int var18 = var9; var18 < this.anInt10425 * 1179249193 - 1; ++var18) {
                        this.aClass225_Sub40Array10423[var18] = this.aClass225_Sub40Array10423[var18 + 1];
                     }

                     this.anInt10425 -= 1047482905;
                     continue label84;
                  }
               }
            }
         }

         this.aBool6076 = false;
      }

      for(var3 = 0; var3 < this.anInt10425 * 1179249193; ++var3) {
         var1[var3] = this.aClass225_Sub40Array10423[var3];
      }

      return this.anInt10425 * 1179249193;
   }

   int method13425(Class225_Sub40[] var1) {
      int var2;
      if(this.aBool6076) {
         this.anInt10425 = 0;

         int var3;
         int var8;
         label116:
         for(var2 = this.aShort10430; var2 <= this.aShort10429; ++var2) {
            var3 = this.aShort10424;

            while(var3 <= this.aShort10426) {
               long var4 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var2][var3];
               long var6 = 0L;

               label112:
               while(true) {
                  if(var6 <= 48L) {
                     var8 = (int)(var4 >>> (int)var6 & 65535L);
                     if(var8 > 0) {
                        Class230 var9 = this.aClass241_8441.aClass230Array2921[var8 - 1];

                        for(int var10 = 0; var10 < this.anInt10425 * 1179249193; ++var10) {
                           if(var9.aClass225_Sub40_2649 == this.aClass225_Sub40Array10423[var10]) {
                              var6 += 16L;
                              continue label112;
                           }
                        }

                        this.aClass225_Sub40Array10423[(this.anInt10425 += 1047482905) * 1179249193 - 1] = var9.aClass225_Sub40_2649;
                        if(1179249193 * this.anInt10425 == 4) {
                           break label116;
                        }

                        var6 += 16L;
                        continue;
                     }
                  }

                  ++var3;
                  break;
               }
            }
         }

         for(var2 = this.anInt10425 * 1179249193; var2 < 4; ++var2) {
            this.aClass225_Sub40Array10423[var2] = null;
         }

         if(0 != this.aByte10428) {
            int var11 = this.aShort10430 - 463854619 * this.aClass241_8441.anInt2896;
            int var12 = this.aShort10424 - 1686765659 * this.aClass241_8441.anInt2908;
            int var13;
            short var14;
            short var18;
            if(1 == this.aByte10428) {
               if(var12 > var11) {
                  var18 = this.aShort10430;
                  var3 = this.aShort10424 - 1;
                  var13 = this.aShort10430 + 1;
                  var14 = this.aShort10424;
               } else {
                  var18 = this.aShort10430;
                  var3 = 1 + this.aShort10424;
                  var13 = this.aShort10430 - 1;
                  var14 = this.aShort10424;
               }
            } else if(var12 > -var11) {
               var18 = this.aShort10430;
               var3 = this.aShort10424 - 1;
               var13 = this.aShort10430 - 1;
               var14 = this.aShort10424;
            } else {
               var18 = this.aShort10430;
               var3 = 1 + this.aShort10424;
               var13 = this.aShort10430 + 1;
               var14 = this.aShort10424;
            }

            label84:
            for(var8 = 0; var8 < this.anInt10425 * 1179249193; ++var8) {
               long var15 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var18][var3];

               while(true) {
                  Class230 var19;
                  if(0L != var15) {
                     var19 = this.aClass241_8441.aClass230Array2921[(int)((var15 & 65535L) - 1L)];
                     var15 >>>= 16;
                     if(this.aClass225_Sub40Array10423[var8] != var19.aClass225_Sub40_2649) {
                        continue;
                     }
                     break;
                  }

                  var15 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var13][var14];

                  while(true) {
                     if(var15 != 0L) {
                        var19 = this.aClass241_8441.aClass230Array2921[(int)((var15 & 65535L) - 1L)];
                        var15 >>>= 16;
                        if(var19.aClass225_Sub40_2649 != this.aClass225_Sub40Array10423[var8]) {
                           continue;
                        }
                        continue label84;
                     }

                     for(int var17 = var8; var17 < this.anInt10425 * 1179249193 - 1; ++var17) {
                        this.aClass225_Sub40Array10423[var17] = this.aClass225_Sub40Array10423[var17 + 1];
                     }

                     this.anInt10425 -= 1047482905;
                     continue label84;
                  }
               }
            }
         }

         this.aBool6076 = false;
      }

      for(var2 = 0; var2 < this.anInt10425 * 1179249193; ++var2) {
         var1[var2] = this.aClass225_Sub40Array10423[var2];
      }

      return this.anInt10425 * 1179249193;
   }

   boolean method13413() {
      for(int var1 = this.aShort10430; var1 <= this.aShort10429; ++var1) {
         for(int var2 = this.aShort10424; var2 <= this.aShort10426; ++var2) {
            int var3 = this.aClass241_8441.anInt2886 * -336014903 + (var1 - 463854619 * this.aClass241_8441.anInt2896);
            if(var3 >= 0 && var3 < this.aClass241_8441.aBoolArrayArray2920.length) {
               int var4 = var2 - 1686765659 * this.aClass241_8441.anInt2908 + -336014903 * this.aClass241_8441.anInt2886;
               if(var4 >= 0 && var4 < this.aClass241_8441.aBoolArrayArray2920.length && this.aClass241_8441.aBoolArrayArray2920[var3][var4]) {
                  return true;
               }
            }
         }
      }

      return false;
   }

   Class515_Sub1_Sub4(Class241 var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, boolean var11, byte var12) {
      super(var1);
      this.aByte8443 = (byte)var2;
      this.aByte8444 = (byte)var3;
      this.method10918(new Class326((float)var4, (float)var5, (float)var6));
      this.aShort10430 = (short)var7;
      this.aShort10429 = (short)var8;
      this.aShort10424 = (short)var9;
      this.aShort10426 = (short)var10;
      this.aBool10427 = var11;
      this.aByte10428 = var12;

      for(int var13 = 0; var13 < 4; ++var13) {
         this.aClass225_Sub40Array10423[var13] = null;
      }

   }

   int method13399(Class225_Sub40[] var1) {
      int var2;
      if(this.aBool6076) {
         this.anInt10425 = 0;

         int var3;
         int var8;
         label116:
         for(var2 = this.aShort10430; var2 <= this.aShort10429; ++var2) {
            var3 = this.aShort10424;

            while(var3 <= this.aShort10426) {
               long var4 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var2][var3];
               long var6 = 0L;

               label112:
               while(true) {
                  if(var6 <= 48L) {
                     var8 = (int)(var4 >>> (int)var6 & 65535L);
                     if(var8 > 0) {
                        Class230 var9 = this.aClass241_8441.aClass230Array2921[var8 - 1];

                        for(int var10 = 0; var10 < this.anInt10425 * 1179249193; ++var10) {
                           if(var9.aClass225_Sub40_2649 == this.aClass225_Sub40Array10423[var10]) {
                              var6 += 16L;
                              continue label112;
                           }
                        }

                        this.aClass225_Sub40Array10423[(this.anInt10425 += 1047482905) * 1179249193 - 1] = var9.aClass225_Sub40_2649;
                        if(1179249193 * this.anInt10425 == 4) {
                           break label116;
                        }

                        var6 += 16L;
                        continue;
                     }
                  }

                  ++var3;
                  break;
               }
            }
         }

         for(var2 = this.anInt10425 * 1179249193; var2 < 4; ++var2) {
            this.aClass225_Sub40Array10423[var2] = null;
         }

         if(0 != this.aByte10428) {
            int var11 = this.aShort10430 - 463854619 * this.aClass241_8441.anInt2896;
            int var12 = this.aShort10424 - 1686765659 * this.aClass241_8441.anInt2908;
            int var13;
            short var14;
            short var18;
            if(1 == this.aByte10428) {
               if(var12 > var11) {
                  var18 = this.aShort10430;
                  var3 = this.aShort10424 - 1;
                  var13 = this.aShort10430 + 1;
                  var14 = this.aShort10424;
               } else {
                  var18 = this.aShort10430;
                  var3 = 1 + this.aShort10424;
                  var13 = this.aShort10430 - 1;
                  var14 = this.aShort10424;
               }
            } else if(var12 > -var11) {
               var18 = this.aShort10430;
               var3 = this.aShort10424 - 1;
               var13 = this.aShort10430 - 1;
               var14 = this.aShort10424;
            } else {
               var18 = this.aShort10430;
               var3 = 1 + this.aShort10424;
               var13 = this.aShort10430 + 1;
               var14 = this.aShort10424;
            }

            label84:
            for(var8 = 0; var8 < this.anInt10425 * 1179249193; ++var8) {
               long var15 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var18][var3];

               while(true) {
                  Class230 var19;
                  if(0L != var15) {
                     var19 = this.aClass241_8441.aClass230Array2921[(int)((var15 & 65535L) - 1L)];
                     var15 >>>= 16;
                     if(this.aClass225_Sub40Array10423[var8] != var19.aClass225_Sub40_2649) {
                        continue;
                     }
                     break;
                  }

                  var15 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var13][var14];

                  while(true) {
                     if(var15 != 0L) {
                        var19 = this.aClass241_8441.aClass230Array2921[(int)((var15 & 65535L) - 1L)];
                        var15 >>>= 16;
                        if(var19.aClass225_Sub40_2649 != this.aClass225_Sub40Array10423[var8]) {
                           continue;
                        }
                        continue label84;
                     }

                     for(int var17 = var8; var17 < this.anInt10425 * 1179249193 - 1; ++var17) {
                        this.aClass225_Sub40Array10423[var17] = this.aClass225_Sub40Array10423[var17 + 1];
                     }

                     this.anInt10425 -= 1047482905;
                     continue label84;
                  }
               }
            }
         }

         this.aBool6076 = false;
      }

      for(var2 = 0; var2 < this.anInt10425 * 1179249193; ++var2) {
         var1[var2] = this.aClass225_Sub40Array10423[var2];
      }

      return this.anInt10425 * 1179249193;
   }

   boolean method13437(Class545 var1) {
      return this.aClass241_8441.aClass236_2906.method4097(this.aByte8444, this.aShort10430, this.aShort10429, this.aShort10424, this.aShort10426, this.method13400(var1, 529158826));
   }

   int method13436(Class225_Sub40[] var1) {
      int var2;
      if(this.aBool6076) {
         this.anInt10425 = 0;

         int var3;
         int var8;
         label116:
         for(var2 = this.aShort10430; var2 <= this.aShort10429; ++var2) {
            var3 = this.aShort10424;

            while(var3 <= this.aShort10426) {
               long var4 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var2][var3];
               long var6 = 0L;

               label112:
               while(true) {
                  if(var6 <= 48L) {
                     var8 = (int)(var4 >>> (int)var6 & 65535L);
                     if(var8 > 0) {
                        Class230 var9 = this.aClass241_8441.aClass230Array2921[var8 - 1];

                        for(int var10 = 0; var10 < this.anInt10425 * 1179249193; ++var10) {
                           if(var9.aClass225_Sub40_2649 == this.aClass225_Sub40Array10423[var10]) {
                              var6 += 16L;
                              continue label112;
                           }
                        }

                        this.aClass225_Sub40Array10423[(this.anInt10425 += 1047482905) * 1179249193 - 1] = var9.aClass225_Sub40_2649;
                        if(1179249193 * this.anInt10425 == 4) {
                           break label116;
                        }

                        var6 += 16L;
                        continue;
                     }
                  }

                  ++var3;
                  break;
               }
            }
         }

         for(var2 = this.anInt10425 * 1179249193; var2 < 4; ++var2) {
            this.aClass225_Sub40Array10423[var2] = null;
         }

         if(0 != this.aByte10428) {
            int var11 = this.aShort10430 - 463854619 * this.aClass241_8441.anInt2896;
            int var12 = this.aShort10424 - 1686765659 * this.aClass241_8441.anInt2908;
            int var13;
            short var14;
            short var18;
            if(1 == this.aByte10428) {
               if(var12 > var11) {
                  var18 = this.aShort10430;
                  var3 = this.aShort10424 - 1;
                  var13 = this.aShort10430 + 1;
                  var14 = this.aShort10424;
               } else {
                  var18 = this.aShort10430;
                  var3 = 1 + this.aShort10424;
                  var13 = this.aShort10430 - 1;
                  var14 = this.aShort10424;
               }
            } else if(var12 > -var11) {
               var18 = this.aShort10430;
               var3 = this.aShort10424 - 1;
               var13 = this.aShort10430 - 1;
               var14 = this.aShort10424;
            } else {
               var18 = this.aShort10430;
               var3 = 1 + this.aShort10424;
               var13 = this.aShort10430 + 1;
               var14 = this.aShort10424;
            }

            label84:
            for(var8 = 0; var8 < this.anInt10425 * 1179249193; ++var8) {
               long var15 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var18][var3];

               while(true) {
                  Class230 var19;
                  if(0L != var15) {
                     var19 = this.aClass241_8441.aClass230Array2921[(int)((var15 & 65535L) - 1L)];
                     var15 >>>= 16;
                     if(this.aClass225_Sub40Array10423[var8] != var19.aClass225_Sub40_2649) {
                        continue;
                     }
                     break;
                  }

                  var15 = this.aClass241_8441.aLongArrayArrayArray2914[this.aByte8443][var13][var14];

                  while(true) {
                     if(var15 != 0L) {
                        var19 = this.aClass241_8441.aClass230Array2921[(int)((var15 & 65535L) - 1L)];
                        var15 >>>= 16;
                        if(var19.aClass225_Sub40_2649 != this.aClass225_Sub40Array10423[var8]) {
                           continue;
                        }
                        continue label84;
                     }

                     for(int var17 = var8; var17 < this.anInt10425 * 1179249193 - 1; ++var17) {
                        this.aClass225_Sub40Array10423[var17] = this.aClass225_Sub40Array10423[var17 + 1];
                     }

                     this.anInt10425 -= 1047482905;
                     continue label84;
                  }
               }
            }
         }

         this.aBool6076 = false;
      }

      for(var2 = 0; var2 < this.anInt10425 * 1179249193; ++var2) {
         var1[var2] = this.aClass225_Sub40Array10423[var2];
      }

      return this.anInt10425 * 1179249193;
   }

   boolean method13403(short var1) {
      for(int var2 = this.aShort10430; var2 <= this.aShort10429; ++var2) {
         for(int var3 = this.aShort10424; var3 <= this.aShort10426; ++var3) {
            int var4 = this.aClass241_8441.anInt2886 * -336014903 + (var2 - 463854619 * this.aClass241_8441.anInt2896);
            if(var4 >= 0 && var4 < this.aClass241_8441.aBoolArrayArray2920.length) {
               int var5 = var3 - 1686765659 * this.aClass241_8441.anInt2908 + -336014903 * this.aClass241_8441.anInt2886;
               if(var5 >= 0 && var5 < this.aClass241_8441.aBoolArrayArray2920.length && this.aClass241_8441.aBoolArrayArray2920[var4][var5]) {
                  return true;
               }
            }
         }
      }

      return false;
   }

   boolean method13438(Class545 var1) {
      return this.aClass241_8441.aClass236_2906.method4097(this.aByte8444, this.aShort10430, this.aShort10429, this.aShort10424, this.aShort10426, this.method13400(var1, 2128914731));
   }

   void method16059() {}
}
