import jaggl.OpenGL;

public class Class155 {

   int anInt1935;
   Class400_Sub3 aClass400_Sub3_1936;
   int anInt1937;
   int anInt1938;
   byte[] aByteArray1939;
   Class136[][] aClass136ArrayArray1940;
   int anInt1941;
   int anInt1942;
   Class545_Sub1 aClass545_Sub1_1943;


   void method2789(int var1, int var2, int var3, boolean[][] var4, boolean var5) {
      this.aClass545_Sub1_1943.method14634(false);
      this.aClass545_Sub1_1943.method14549(false);
      this.aClass545_Sub1_1943.method14540(-2);
      this.aClass545_Sub1_1943.method14591(1);
      this.aClass545_Sub1_1943.method14602(1);
      float var6 = 1.0F / (float)(this.aClass545_Sub1_1943.anInt9159 * 128);
      int var7;
      int var8;
      int var9;
      int var10;
      int var11;
      int var12;
      int var13;
      if(var5) {
         for(var7 = 0; var7 < this.anInt1941; ++var7) {
            var8 = var7 << this.anInt1942;
            var9 = var7 + 1 << this.anInt1942;
            var10 = 0;

            while(var10 < this.anInt1935) {
               var11 = var10 << this.anInt1942;
               var12 = var10 + 1 << this.anInt1942;
               var13 = var11;

               while(true) {
                  if(var13 < var12) {
                     label110: {
                        if(var13 - var1 >= -var3 && var13 - var1 <= var3) {
                           for(int var14 = var8; var14 < var9; ++var14) {
                              if(var14 - var2 >= -var3 && var14 - var2 <= var3 && var4[var13 - var1 + var3][var14 - var2 + var3]) {
                                 OpenGL.glMatrixMode(5890);
                                 OpenGL.glLoadIdentity();
                                 OpenGL.glScalef(var6, var6, 1.0F);
                                 OpenGL.glTranslatef((float)(-var10) / var6, (float)(-var7) / var6, 1.0F);
                                 OpenGL.glMatrixMode(5888);
                                 this.aClass136ArrayArray1940[var10][var7].method2612();
                                 break label110;
                              }
                           }
                        }

                        ++var13;
                        continue;
                     }
                  }

                  ++var10;
                  break;
               }
            }
         }
      } else {
         for(var7 = 0; var7 < this.anInt1941; ++var7) {
            var8 = var7 << this.anInt1942;
            var9 = var7 + 1 << this.anInt1942;

            for(var10 = 0; var10 < this.anInt1935; ++var10) {
               var11 = 0;
               var12 = var10 << this.anInt1942;
               var13 = var10 + 1 << this.anInt1942;
               Class225_Sub23_Sub2 var20 = this.aClass545_Sub1_1943.aClass225_Sub23_Sub2_9294;
               var20.position = 0;

               for(int var15 = var8; var15 < var9; ++var15) {
                  if(var15 - var2 >= -var3 && var15 - var2 <= var3) {
                     int var16 = var15 * this.aClass400_Sub3_1936.anInt4911 * 1724373523 + var12;

                     for(int var17 = var12; var17 < var13; ++var17) {
                        if(var17 - var1 >= -var3 && var17 - var1 <= var3 && var4[var17 - var1 + var3][var15 - var2 + var3]) {
                           short[] var18 = this.aClass400_Sub3_1936.aShortArrayArray9566[var16];
                           if(var18 != null) {
                              int var19;
                              if(this.aClass545_Sub1_1943.aBool9257) {
                                 for(var19 = 0; var19 < var18.length; ++var19) {
                                    var20.writeShort(var18[var19] & '\uffff', -1330412795);
                                    ++var11;
                                 }
                              } else {
                                 for(var19 = 0; var19 < var18.length; ++var19) {
                                    var20.method13704(var18[var19] & '\uffff', 1094649230);
                                    ++var11;
                                 }
                              }
                           }
                        }

                        ++var16;
                     }
                  }
               }

               if(var11 > 0) {
                  OpenGL.glMatrixMode(5890);
                  OpenGL.glLoadIdentity();
                  OpenGL.glScalef(var6, var6, 1.0F);
                  OpenGL.glTranslatef((float)(-var10) / var6, (float)(-var7) / var6, 1.0F);
                  OpenGL.glMatrixMode(5888);
                  this.aClass136ArrayArray1940[var10][var7].method2618(var20.buffer, var11);
               }
            }
         }
      }

      OpenGL.glMatrixMode(5890);
      OpenGL.glLoadIdentity();
      OpenGL.glMatrixMode(5888);
   }

   void method2790(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = 0;
      int var7 = var4.anInt10671;
      int var8 = var4.anInt10670;
      int var9 = this.anInt1937 - var8;
      int var10 = 0;
      int var11;
      if(var3 <= 0) {
         var11 = 1 - var3;
         var7 -= var11;
         var6 += var11 * var8;
         var5 += var11 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var7 >= this.anInt1938) {
         var11 = var3 + var7 + 1 - this.anInt1938;
         var7 -= var11;
      }

      if(var2 <= 0) {
         var11 = 1 - var2;
         var8 -= var11;
         var6 += var11;
         var5 += var11;
         var10 += var11;
         var9 += var11;
         var2 = 1;
      }

      if(var2 + var8 >= this.anInt1937) {
         var11 = var2 + var8 + 1 - this.anInt1937;
         var8 -= var11;
         var10 += var11;
         var9 += var11;
      }

      if(var8 > 0 && var7 > 0) {
         method2792(this.aByteArray1939, var4.aByteArray10672, var6, var5, var8, var7, var9, var10);
         this.method2802(var2, var3, var8, var7);
      }
   }

   void method2791(int var1, int var2, int var3, boolean[][] var4, boolean var5) {
      this.aClass545_Sub1_1943.method14634(false);
      this.aClass545_Sub1_1943.method14549(false);
      this.aClass545_Sub1_1943.method14540(-2);
      this.aClass545_Sub1_1943.method14591(1);
      this.aClass545_Sub1_1943.method14602(1);
      float var6 = 1.0F / (float)(this.aClass545_Sub1_1943.anInt9159 * 128);
      int var7;
      int var8;
      int var9;
      int var10;
      int var11;
      int var12;
      int var13;
      if(var5) {
         for(var7 = 0; var7 < this.anInt1941; ++var7) {
            var8 = var7 << this.anInt1942;
            var9 = var7 + 1 << this.anInt1942;
            var10 = 0;

            while(var10 < this.anInt1935) {
               var11 = var10 << this.anInt1942;
               var12 = var10 + 1 << this.anInt1942;
               var13 = var11;

               while(true) {
                  if(var13 < var12) {
                     label110: {
                        if(var13 - var1 >= -var3 && var13 - var1 <= var3) {
                           for(int var14 = var8; var14 < var9; ++var14) {
                              if(var14 - var2 >= -var3 && var14 - var2 <= var3 && var4[var13 - var1 + var3][var14 - var2 + var3]) {
                                 OpenGL.glMatrixMode(5890);
                                 OpenGL.glLoadIdentity();
                                 OpenGL.glScalef(var6, var6, 1.0F);
                                 OpenGL.glTranslatef((float)(-var10) / var6, (float)(-var7) / var6, 1.0F);
                                 OpenGL.glMatrixMode(5888);
                                 this.aClass136ArrayArray1940[var10][var7].method2612();
                                 break label110;
                              }
                           }
                        }

                        ++var13;
                        continue;
                     }
                  }

                  ++var10;
                  break;
               }
            }
         }
      } else {
         for(var7 = 0; var7 < this.anInt1941; ++var7) {
            var8 = var7 << this.anInt1942;
            var9 = var7 + 1 << this.anInt1942;

            for(var10 = 0; var10 < this.anInt1935; ++var10) {
               var11 = 0;
               var12 = var10 << this.anInt1942;
               var13 = var10 + 1 << this.anInt1942;
               Class225_Sub23_Sub2 var20 = this.aClass545_Sub1_1943.aClass225_Sub23_Sub2_9294;
               var20.position = 0;

               for(int var15 = var8; var15 < var9; ++var15) {
                  if(var15 - var2 >= -var3 && var15 - var2 <= var3) {
                     int var16 = var15 * this.aClass400_Sub3_1936.anInt4911 * 1724373523 + var12;

                     for(int var17 = var12; var17 < var13; ++var17) {
                        if(var17 - var1 >= -var3 && var17 - var1 <= var3 && var4[var17 - var1 + var3][var15 - var2 + var3]) {
                           short[] var18 = this.aClass400_Sub3_1936.aShortArrayArray9566[var16];
                           if(var18 != null) {
                              int var19;
                              if(this.aClass545_Sub1_1943.aBool9257) {
                                 for(var19 = 0; var19 < var18.length; ++var19) {
                                    var20.writeShort(var18[var19] & '\uffff', -2050405404);
                                    ++var11;
                                 }
                              } else {
                                 for(var19 = 0; var19 < var18.length; ++var19) {
                                    var20.method13704(var18[var19] & '\uffff', 1094649230);
                                    ++var11;
                                 }
                              }
                           }
                        }

                        ++var16;
                     }
                  }
               }

               if(var11 > 0) {
                  OpenGL.glMatrixMode(5890);
                  OpenGL.glLoadIdentity();
                  OpenGL.glScalef(var6, var6, 1.0F);
                  OpenGL.glTranslatef((float)(-var10) / var6, (float)(-var7) / var6, 1.0F);
                  OpenGL.glMatrixMode(5888);
                  this.aClass136ArrayArray1940[var10][var7].method2618(var20.buffer, var11);
               }
            }
         }
      }

      OpenGL.glMatrixMode(5890);
      OpenGL.glLoadIdentity();
      OpenGL.glMatrixMode(5888);
   }

   Class155(Class545_Sub1 var1, Class400_Sub3 var2) {
      this.aClass545_Sub1_1943 = var1;
      this.aClass400_Sub3_1936 = var2;
      this.anInt1937 = 2 + (this.aClass400_Sub3_1936.anInt4911 * 1724373523 * this.aClass400_Sub3_1936.anInt4910 * 2111724147 >> this.aClass545_Sub1_1943.anInt9160);
      this.anInt1938 = 2 + (this.aClass400_Sub3_1936.anInt4908 * 1696648095 * this.aClass400_Sub3_1936.anInt4910 * 2111724147 >> this.aClass545_Sub1_1943.anInt9160);
      this.aByteArray1939 = new byte[this.anInt1937 * this.anInt1938];
      this.anInt1942 = 7 + this.aClass545_Sub1_1943.anInt9160 - this.aClass400_Sub3_1936.anInt4909 * -1451148795;
      this.anInt1935 = this.aClass400_Sub3_1936.anInt4911 * 1724373523 >> this.anInt1942;
      this.anInt1941 = this.aClass400_Sub3_1936.anInt4908 * 1696648095 >> this.anInt1942;
   }

   static final void method2792(byte[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7) {
      int var8 = -(var4 >> 2);
      var4 = -(var4 & 3);

      for(int var9 = -var5; var9 < 0; ++var9) {
         int var10;
         int var10001;
         for(var10 = var8; var10 < 0; ++var10) {
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
         }

         for(var10 = var4; var10 < 0; ++var10) {
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
         }

         var3 += var6;
         var2 += var7;
      }

   }

   boolean method2793(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = var4.anInt10671;
      int var7 = var4.anInt10670;
      int var8 = this.anInt1937 - var7;
      int var9;
      if(var3 <= 0) {
         var9 = 1 - var3;
         var6 -= var9;
         var5 += var9 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var6 >= this.anInt1938) {
         var9 = var3 + var6 + 1 - this.anInt1938;
         var6 -= var9;
      }

      if(var2 <= 0) {
         var9 = 1 - var2;
         var7 -= var9;
         var5 += var9;
         var8 += var9;
         var2 = 1;
      }

      if(var2 + var7 >= this.anInt1937) {
         var9 = var2 + var7 + 1 - this.anInt1937;
         var7 -= var9;
         var8 += var9;
      }

      if(var7 > 0 && var6 > 0) {
         byte var10 = 8;
         var8 += (var10 - 1) * this.anInt1937;
         return method2797(this.aByteArray1939, var5, var7, var6, var8, var10);
      } else {
         return false;
      }
   }

   static final boolean method2794(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
      int var6 = var2 % var5;
      int var7;
      if(var6 != 0) {
         var7 = var5 - var6;
      } else {
         var7 = 0;
      }

      int var8 = -((var3 + var5 - 1) / var5);
      int var9 = -((var2 + var5 - 1) / var5);

      for(int var10 = var8; var10 < 0; ++var10) {
         for(int var11 = var9; var11 < 0; ++var11) {
            if(var0[var1] == 0) {
               return true;
            }

            var1 += var5;
         }

         var1 -= var7;
         if(var0[var1 - 1] == 0) {
            return true;
         }

         var1 += var4;
      }

      return false;
   }

   static final void method2795(byte[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7) {
      int var8 = -(var4 >> 2);
      var4 = -(var4 & 3);

      for(int var9 = -var5; var9 < 0; ++var9) {
         int var10;
         int var10001;
         for(var10 = var8; var10 < 0; ++var10) {
            var10001 = var3++;
            var0[var10001] += var1[var2++];
            var10001 = var3++;
            var0[var10001] += var1[var2++];
            var10001 = var3++;
            var0[var10001] += var1[var2++];
            var10001 = var3++;
            var0[var10001] += var1[var2++];
         }

         for(var10 = var4; var10 < 0; ++var10) {
            var10001 = var3++;
            var0[var10001] += var1[var2++];
         }

         var3 += var6;
         var2 += var7;
      }

   }

   void method2796() {
      this.aClass136ArrayArray1940 = new Class136[this.anInt1935][this.anInt1941];

      for(int var1 = 0; var1 < this.anInt1941; ++var1) {
         for(int var2 = 0; var2 < this.anInt1935; ++var2) {
            this.aClass136ArrayArray1940[var2][var1] = new Class136(this.aClass545_Sub1_1943, this, this.aClass400_Sub3_1936, var2, var1, this.anInt1942, var2 * 128 + 1, var1 * 128 + 1);
         }
      }

   }

   static final boolean method2797(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
      int var6 = var2 % var5;
      int var7;
      if(var6 != 0) {
         var7 = var5 - var6;
      } else {
         var7 = 0;
      }

      int var8 = -((var3 + var5 - 1) / var5);
      int var9 = -((var2 + var5 - 1) / var5);

      for(int var10 = var8; var10 < 0; ++var10) {
         for(int var11 = var9; var11 < 0; ++var11) {
            if(var0[var1] == 0) {
               return true;
            }

            var1 += var5;
         }

         var1 -= var7;
         if(var0[var1 - 1] == 0) {
            return true;
         }

         var1 += var4;
      }

      return false;
   }

   void method2798() {
      this.aClass136ArrayArray1940 = new Class136[this.anInt1935][this.anInt1941];

      for(int var1 = 0; var1 < this.anInt1941; ++var1) {
         for(int var2 = 0; var2 < this.anInt1935; ++var2) {
            this.aClass136ArrayArray1940[var2][var1] = new Class136(this.aClass545_Sub1_1943, this, this.aClass400_Sub3_1936, var2, var1, this.anInt1942, var2 * 128 + 1, var1 * 128 + 1);
         }
      }

   }

   void method2799(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = 0;
      int var7 = var4.anInt10671;
      int var8 = var4.anInt10670;
      int var9 = this.anInt1937 - var8;
      int var10 = 0;
      int var11;
      if(var3 <= 0) {
         var11 = 1 - var3;
         var7 -= var11;
         var6 += var11 * var8;
         var5 += var11 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var7 >= this.anInt1938) {
         var11 = var3 + var7 + 1 - this.anInt1938;
         var7 -= var11;
      }

      if(var2 <= 0) {
         var11 = 1 - var2;
         var8 -= var11;
         var6 += var11;
         var5 += var11;
         var10 += var11;
         var9 += var11;
         var2 = 1;
      }

      if(var2 + var8 >= this.anInt1937) {
         var11 = var2 + var8 + 1 - this.anInt1937;
         var8 -= var11;
         var10 += var11;
         var9 += var11;
      }

      if(var8 > 0 && var7 > 0) {
         method2792(this.aByteArray1939, var4.aByteArray10672, var6, var5, var8, var7, var9, var10);
         this.method2802(var2, var3, var8, var7);
      }
   }

   void method2800(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = 0;
      int var7 = var4.anInt10671;
      int var8 = var4.anInt10670;
      int var9 = this.anInt1937 - var8;
      int var10 = 0;
      int var11;
      if(var3 <= 0) {
         var11 = 1 - var3;
         var7 -= var11;
         var6 += var11 * var8;
         var5 += var11 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var7 >= this.anInt1938) {
         var11 = var3 + var7 + 1 - this.anInt1938;
         var7 -= var11;
      }

      if(var2 <= 0) {
         var11 = 1 - var2;
         var8 -= var11;
         var6 += var11;
         var5 += var11;
         var10 += var11;
         var9 += var11;
         var2 = 1;
      }

      if(var2 + var8 >= this.anInt1937) {
         var11 = var2 + var8 + 1 - this.anInt1937;
         var8 -= var11;
         var10 += var11;
         var9 += var11;
      }

      if(var8 > 0 && var7 > 0) {
         method2795(this.aByteArray1939, var4.aByteArray10672, var6, var5, var8, var7, var9, var10);
         this.method2802(var2, var3, var8, var7);
      }
   }

   void method2801(int var1, int var2, int var3, boolean[][] var4, boolean var5) {
      this.aClass545_Sub1_1943.method14634(false);
      this.aClass545_Sub1_1943.method14549(false);
      this.aClass545_Sub1_1943.method14540(-2);
      this.aClass545_Sub1_1943.method14591(1);
      this.aClass545_Sub1_1943.method14602(1);
      float var6 = 1.0F / (float)(this.aClass545_Sub1_1943.anInt9159 * 128);
      int var7;
      int var8;
      int var9;
      int var10;
      int var11;
      int var12;
      int var13;
      if(var5) {
         for(var7 = 0; var7 < this.anInt1941; ++var7) {
            var8 = var7 << this.anInt1942;
            var9 = var7 + 1 << this.anInt1942;
            var10 = 0;

            while(var10 < this.anInt1935) {
               var11 = var10 << this.anInt1942;
               var12 = var10 + 1 << this.anInt1942;
               var13 = var11;

               while(true) {
                  if(var13 < var12) {
                     label110: {
                        if(var13 - var1 >= -var3 && var13 - var1 <= var3) {
                           for(int var14 = var8; var14 < var9; ++var14) {
                              if(var14 - var2 >= -var3 && var14 - var2 <= var3 && var4[var13 - var1 + var3][var14 - var2 + var3]) {
                                 OpenGL.glMatrixMode(5890);
                                 OpenGL.glLoadIdentity();
                                 OpenGL.glScalef(var6, var6, 1.0F);
                                 OpenGL.glTranslatef((float)(-var10) / var6, (float)(-var7) / var6, 1.0F);
                                 OpenGL.glMatrixMode(5888);
                                 this.aClass136ArrayArray1940[var10][var7].method2612();
                                 break label110;
                              }
                           }
                        }

                        ++var13;
                        continue;
                     }
                  }

                  ++var10;
                  break;
               }
            }
         }
      } else {
         for(var7 = 0; var7 < this.anInt1941; ++var7) {
            var8 = var7 << this.anInt1942;
            var9 = var7 + 1 << this.anInt1942;

            for(var10 = 0; var10 < this.anInt1935; ++var10) {
               var11 = 0;
               var12 = var10 << this.anInt1942;
               var13 = var10 + 1 << this.anInt1942;
               Class225_Sub23_Sub2 var20 = this.aClass545_Sub1_1943.aClass225_Sub23_Sub2_9294;
               var20.position = 0;

               for(int var15 = var8; var15 < var9; ++var15) {
                  if(var15 - var2 >= -var3 && var15 - var2 <= var3) {
                     int var16 = var15 * this.aClass400_Sub3_1936.anInt4911 * 1724373523 + var12;

                     for(int var17 = var12; var17 < var13; ++var17) {
                        if(var17 - var1 >= -var3 && var17 - var1 <= var3 && var4[var17 - var1 + var3][var15 - var2 + var3]) {
                           short[] var18 = this.aClass400_Sub3_1936.aShortArrayArray9566[var16];
                           if(var18 != null) {
                              int var19;
                              if(this.aClass545_Sub1_1943.aBool9257) {
                                 for(var19 = 0; var19 < var18.length; ++var19) {
                                    var20.writeShort(var18[var19] & '\uffff', 1358918733);
                                    ++var11;
                                 }
                              } else {
                                 for(var19 = 0; var19 < var18.length; ++var19) {
                                    var20.method13704(var18[var19] & '\uffff', 1094649230);
                                    ++var11;
                                 }
                              }
                           }
                        }

                        ++var16;
                     }
                  }
               }

               if(var11 > 0) {
                  OpenGL.glMatrixMode(5890);
                  OpenGL.glLoadIdentity();
                  OpenGL.glScalef(var6, var6, 1.0F);
                  OpenGL.glTranslatef((float)(-var10) / var6, (float)(-var7) / var6, 1.0F);
                  OpenGL.glMatrixMode(5888);
                  this.aClass136ArrayArray1940[var10][var7].method2618(var20.buffer, var11);
               }
            }
         }
      }

      OpenGL.glMatrixMode(5890);
      OpenGL.glLoadIdentity();
      OpenGL.glMatrixMode(5888);
   }

   void method2802(int var1, int var2, int var3, int var4) {
      if(this.aClass136ArrayArray1940 != null) {
         int var5 = var1 - 1 >> 7;
         int var6 = var1 - 1 + var3 - 1 >> 7;
         int var7 = var2 - 1 >> 7;
         int var8 = var2 - 1 + var4 - 1 >> 7;

         for(int var9 = var5; var9 <= var6; ++var9) {
            Class136[] var10 = this.aClass136ArrayArray1940[var9];

            for(int var11 = var7; var11 <= var8; ++var11) {
               var10[var11].aBool1593 = true;
            }
         }

      }
   }

   void method2803(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = 0;
      int var7 = var4.anInt10671;
      int var8 = var4.anInt10670;
      int var9 = this.anInt1937 - var8;
      int var10 = 0;
      int var11;
      if(var3 <= 0) {
         var11 = 1 - var3;
         var7 -= var11;
         var6 += var11 * var8;
         var5 += var11 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var7 >= this.anInt1938) {
         var11 = var3 + var7 + 1 - this.anInt1938;
         var7 -= var11;
      }

      if(var2 <= 0) {
         var11 = 1 - var2;
         var8 -= var11;
         var6 += var11;
         var5 += var11;
         var10 += var11;
         var9 += var11;
         var2 = 1;
      }

      if(var2 + var8 >= this.anInt1937) {
         var11 = var2 + var8 + 1 - this.anInt1937;
         var8 -= var11;
         var10 += var11;
         var9 += var11;
      }

      if(var8 > 0 && var7 > 0) {
         method2795(this.aByteArray1939, var4.aByteArray10672, var6, var5, var8, var7, var9, var10);
         this.method2802(var2, var3, var8, var7);
      }
   }

   void method2804(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = 0;
      int var7 = var4.anInt10671;
      int var8 = var4.anInt10670;
      int var9 = this.anInt1937 - var8;
      int var10 = 0;
      int var11;
      if(var3 <= 0) {
         var11 = 1 - var3;
         var7 -= var11;
         var6 += var11 * var8;
         var5 += var11 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var7 >= this.anInt1938) {
         var11 = var3 + var7 + 1 - this.anInt1938;
         var7 -= var11;
      }

      if(var2 <= 0) {
         var11 = 1 - var2;
         var8 -= var11;
         var6 += var11;
         var5 += var11;
         var10 += var11;
         var9 += var11;
         var2 = 1;
      }

      if(var2 + var8 >= this.anInt1937) {
         var11 = var2 + var8 + 1 - this.anInt1937;
         var8 -= var11;
         var10 += var11;
         var9 += var11;
      }

      if(var8 > 0 && var7 > 0) {
         method2795(this.aByteArray1939, var4.aByteArray10672, var6, var5, var8, var7, var9, var10);
         this.method2802(var2, var3, var8, var7);
      }
   }

   void method2805(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = 0;
      int var7 = var4.anInt10671;
      int var8 = var4.anInt10670;
      int var9 = this.anInt1937 - var8;
      int var10 = 0;
      int var11;
      if(var3 <= 0) {
         var11 = 1 - var3;
         var7 -= var11;
         var6 += var11 * var8;
         var5 += var11 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var7 >= this.anInt1938) {
         var11 = var3 + var7 + 1 - this.anInt1938;
         var7 -= var11;
      }

      if(var2 <= 0) {
         var11 = 1 - var2;
         var8 -= var11;
         var6 += var11;
         var5 += var11;
         var10 += var11;
         var9 += var11;
         var2 = 1;
      }

      if(var2 + var8 >= this.anInt1937) {
         var11 = var2 + var8 + 1 - this.anInt1937;
         var8 -= var11;
         var10 += var11;
         var9 += var11;
      }

      if(var8 > 0 && var7 > 0) {
         method2792(this.aByteArray1939, var4.aByteArray10672, var6, var5, var8, var7, var9, var10);
         this.method2802(var2, var3, var8, var7);
      }
   }

   void method2806(int var1, int var2, int var3, int var4) {
      if(this.aClass136ArrayArray1940 != null) {
         int var5 = var1 - 1 >> 7;
         int var6 = var1 - 1 + var3 - 1 >> 7;
         int var7 = var2 - 1 >> 7;
         int var8 = var2 - 1 + var4 - 1 >> 7;

         for(int var9 = var5; var9 <= var6; ++var9) {
            Class136[] var10 = this.aClass136ArrayArray1940[var9];

            for(int var11 = var7; var11 <= var8; ++var11) {
               var10[var11].aBool1593 = true;
            }
         }

      }
   }

   boolean method2807(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = var4.anInt10671;
      int var7 = var4.anInt10670;
      int var8 = this.anInt1937 - var7;
      int var9;
      if(var3 <= 0) {
         var9 = 1 - var3;
         var6 -= var9;
         var5 += var9 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var6 >= this.anInt1938) {
         var9 = var3 + var6 + 1 - this.anInt1938;
         var6 -= var9;
      }

      if(var2 <= 0) {
         var9 = 1 - var2;
         var7 -= var9;
         var5 += var9;
         var8 += var9;
         var2 = 1;
      }

      if(var2 + var7 >= this.anInt1937) {
         var9 = var2 + var7 + 1 - this.anInt1937;
         var7 -= var9;
         var8 += var9;
      }

      if(var7 > 0 && var6 > 0) {
         byte var10 = 8;
         var8 += (var10 - 1) * this.anInt1937;
         return method2797(this.aByteArray1939, var5, var7, var6, var8, var10);
      } else {
         return false;
      }
   }

   boolean method2808(Class225_Sub14_Sub16 var1, int var2, int var3) {
      Class225_Sub14_Sub16_Sub2 var4 = (Class225_Sub14_Sub16_Sub2)var1;
      var2 += var4.anInt10669 + 1;
      var3 += var4.anInt10673 + 1;
      int var5 = var2 + var3 * this.anInt1937;
      int var6 = var4.anInt10671;
      int var7 = var4.anInt10670;
      int var8 = this.anInt1937 - var7;
      int var9;
      if(var3 <= 0) {
         var9 = 1 - var3;
         var6 -= var9;
         var5 += var9 * this.anInt1937;
         var3 = 1;
      }

      if(var3 + var6 >= this.anInt1938) {
         var9 = var3 + var6 + 1 - this.anInt1938;
         var6 -= var9;
      }

      if(var2 <= 0) {
         var9 = 1 - var2;
         var7 -= var9;
         var5 += var9;
         var8 += var9;
         var2 = 1;
      }

      if(var2 + var7 >= this.anInt1937) {
         var9 = var2 + var7 + 1 - this.anInt1937;
         var7 -= var9;
         var8 += var9;
      }

      if(var7 > 0 && var6 > 0) {
         byte var10 = 8;
         var8 += (var10 - 1) * this.anInt1937;
         return method2797(this.aByteArray1939, var5, var7, var6, var8, var10);
      } else {
         return false;
      }
   }

   void method2809(int var1, int var2, int var3, int var4) {
      if(this.aClass136ArrayArray1940 != null) {
         int var5 = var1 - 1 >> 7;
         int var6 = var1 - 1 + var3 - 1 >> 7;
         int var7 = var2 - 1 >> 7;
         int var8 = var2 - 1 + var4 - 1 >> 7;

         for(int var9 = var5; var9 <= var6; ++var9) {
            Class136[] var10 = this.aClass136ArrayArray1940[var9];

            for(int var11 = var7; var11 <= var8; ++var11) {
               var10[var11].aBool1593 = true;
            }
         }

      }
   }

   void method2810() {
      this.aClass136ArrayArray1940 = new Class136[this.anInt1935][this.anInt1941];

      for(int var1 = 0; var1 < this.anInt1941; ++var1) {
         for(int var2 = 0; var2 < this.anInt1935; ++var2) {
            this.aClass136ArrayArray1940[var2][var1] = new Class136(this.aClass545_Sub1_1943, this, this.aClass400_Sub3_1936, var2, var1, this.anInt1942, var2 * 128 + 1, var1 * 128 + 1);
         }
      }

   }

   void method2811(int var1, int var2, int var3, int var4) {
      if(this.aClass136ArrayArray1940 != null) {
         int var5 = var1 - 1 >> 7;
         int var6 = var1 - 1 + var3 - 1 >> 7;
         int var7 = var2 - 1 >> 7;
         int var8 = var2 - 1 + var4 - 1 >> 7;

         for(int var9 = var5; var9 <= var6; ++var9) {
            Class136[] var10 = this.aClass136ArrayArray1940[var9];

            for(int var11 = var7; var11 <= var8; ++var11) {
               var10[var11].aBool1593 = true;
            }
         }

      }
   }

   void method2812(int var1, int var2, int var3, int var4) {
      if(this.aClass136ArrayArray1940 != null) {
         int var5 = var1 - 1 >> 7;
         int var6 = var1 - 1 + var3 - 1 >> 7;
         int var7 = var2 - 1 >> 7;
         int var8 = var2 - 1 + var4 - 1 >> 7;

         for(int var9 = var5; var9 <= var6; ++var9) {
            Class136[] var10 = this.aClass136ArrayArray1940[var9];

            for(int var11 = var7; var11 <= var8; ++var11) {
               var10[var11].aBool1593 = true;
            }
         }

      }
   }

   static final void method2813(byte[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7) {
      int var8 = -(var4 >> 2);
      var4 = -(var4 & 3);

      for(int var9 = -var5; var9 < 0; ++var9) {
         int var10;
         int var10001;
         for(var10 = var8; var10 < 0; ++var10) {
            var10001 = var3++;
            var0[var10001] += var1[var2++];
            var10001 = var3++;
            var0[var10001] += var1[var2++];
            var10001 = var3++;
            var0[var10001] += var1[var2++];
            var10001 = var3++;
            var0[var10001] += var1[var2++];
         }

         for(var10 = var4; var10 < 0; ++var10) {
            var10001 = var3++;
            var0[var10001] += var1[var2++];
         }

         var3 += var6;
         var2 += var7;
      }

   }

   static final void method2814(byte[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7) {
      int var8 = -(var4 >> 2);
      var4 = -(var4 & 3);

      for(int var9 = -var5; var9 < 0; ++var9) {
         int var10;
         int var10001;
         for(var10 = var8; var10 < 0; ++var10) {
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
         }

         for(var10 = var4; var10 < 0; ++var10) {
            var10001 = var3++;
            var0[var10001] -= var1[var2++];
         }

         var3 += var6;
         var2 += var7;
      }

   }

   static final boolean method2815(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
      int var6 = var2 % var5;
      int var7;
      if(var6 != 0) {
         var7 = var5 - var6;
      } else {
         var7 = 0;
      }

      int var8 = -((var3 + var5 - 1) / var5);
      int var9 = -((var2 + var5 - 1) / var5);

      for(int var10 = var8; var10 < 0; ++var10) {
         for(int var11 = var9; var11 < 0; ++var11) {
            if(var0[var1] == 0) {
               return true;
            }

            var1 += var5;
         }

         var1 -= var7;
         if(var0[var1 - 1] == 0) {
            return true;
         }

         var1 += var4;
      }

      return false;
   }

   static final boolean method2816(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
      int var6 = var2 % var5;
      int var7;
      if(var6 != 0) {
         var7 = var5 - var6;
      } else {
         var7 = 0;
      }

      int var8 = -((var3 + var5 - 1) / var5);
      int var9 = -((var2 + var5 - 1) / var5);

      for(int var10 = var8; var10 < 0; ++var10) {
         for(int var11 = var9; var11 < 0; ++var11) {
            if(var0[var1] == 0) {
               return true;
            }

            var1 += var5;
         }

         var1 -= var7;
         if(var0[var1 - 1] == 0) {
            return true;
         }

         var1 += var4;
      }

      return false;
   }

   void method2817() {
      this.aClass136ArrayArray1940 = new Class136[this.anInt1935][this.anInt1941];

      for(int var1 = 0; var1 < this.anInt1941; ++var1) {
         for(int var2 = 0; var2 < this.anInt1935; ++var2) {
            this.aClass136ArrayArray1940[var2][var1] = new Class136(this.aClass545_Sub1_1943, this, this.aClass400_Sub3_1936, var2, var1, this.anInt1942, var2 * 128 + 1, var1 * 128 + 1);
         }
      }

   }

   static final boolean method2818(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
      int var6 = var2 % var5;
      int var7;
      if(var6 != 0) {
         var7 = var5 - var6;
      } else {
         var7 = 0;
      }

      int var8 = -((var3 + var5 - 1) / var5);
      int var9 = -((var2 + var5 - 1) / var5);

      for(int var10 = var8; var10 < 0; ++var10) {
         for(int var11 = var9; var11 < 0; ++var11) {
            if(var0[var1] == 0) {
               return true;
            }

            var1 += var5;
         }

         var1 -= var7;
         if(var0[var1 - 1] == 0) {
            return true;
         }

         var1 += var4;
      }

      return false;
   }
}
