private final void method3996(int i, int i_453_, int i_454_, int i_455_,
				  int i_456_, int i_457_, int i_458_,
				  boolean[][] bools, Class167 class167,
				  Class109 class109, int[] is, int[] is_459_) {
	int i_460_ = (i_458_ - i_456_) * i_454_ / 256;
	int i_461_ = i_454_ >> 8;
	boolean bool = ((Class167) class167).aBoolean2202;
	aHa_Sub1_8217.C(false);
	((Class109) class109).aBoolean1669 = false;
	((Class109) class109).aBoolean1667 = false;
	int i_462_ = i;
	int i_463_ = i_453_ + i_460_;
	for (int i_464_ = i_455_; i_464_ < i_457_; i_464_++) {
	    for (int i_465_ = i_456_; i_465_ < i_458_; i_465_++) {
		if (bools[i_464_ - i_455_][i_465_ - i_456_]) {
		    if (aClass102ArrayArray8215[i_464_][i_465_] != null) {
			Class102 class102
			    = aClass102ArrayArray8215[i_464_][i_465_];
			if (((Class102) class102).aShort1605 != -1
			    && (((Class102) class102).aByte1606 & 0x2) == 0
			    && ((Class102) class102).anInt1600 == -1) {
			    int i_466_ = aHa_Sub1_8217.method3722(((Class102)
								   class102)
								  .aShort1605);
			    class109.method1022
				((float) (i_463_ - i_461_),
				 (float) (i_463_ - i_461_), (float) i_463_,
				 (float) (i_462_ + i_461_), (float) i_462_,
				 (float) (i_462_ + i_461_), 100.0F, 100.0F,
				 100.0F,
				 (float) IndexTable.method2198(0,
							     ((((Class102)
								class102)
							       .aShort1602)
							      & 0xffff),
							     i_466_),
				 (float) IndexTable.method2198(0,
							     ((((Class102)
								class102)
							       .aShort1604)
							      & 0xffff),
							     i_466_),
				 (float) IndexTable.method2198(0,
							     ((((Class102)
								class102)
							       .aShort1603)
							      & 0xffff),
							     i_466_));
			    class109.method1022
				((float) i_463_, (float) i_463_,
				 (float) (i_463_ - i_461_), (float) i_462_,
				 (float) (i_462_ + i_461_), (float) i_462_,
				 100.0F, 100.0F, 100.0F,
				 (float) IndexTable.method2198(0,
							     ((((Class102)
								class102)
							       .aShort1601)
							      & 0xffff),
							     i_466_),
				 (float) IndexTable.method2198(0,
							     ((((Class102)
								class102)
							       .aShort1603)
							      & 0xffff),
							     i_466_),
				 (float) IndexTable.method2198(0,
							     ((((Class102)
								class102)
							       .aShort1604)
							      & 0xffff),
							     i_466_));
			} else if (((Class102) class102).anInt1600 == -1) {
			    class109.method1022
				((float) (i_463_ - i_461_),
				 (float) (i_463_ - i_461_), (float) i_463_,
				 (float) (i_462_ + i_461_), (float) i_462_,
				 (float) (i_462_ + i_461_), 100.0F, 100.0F,
				 100.0F,
				 (float) (((Class102) class102).aShort1602
					  & 0xffff),
				 (float) (((Class102) class102).aShort1604
					  & 0xffff),
				 (float) (((Class102) class102).aShort1603
					  & 0xffff));
			    class109.method1022
				((float) i_463_, (float) i_463_,
				 (float) (i_463_ - i_461_), (float) i_462_,
				 (float) (i_462_ + i_461_), (float) i_462_,
				 100.0F, 100.0F, 100.0F,
				 (float) (((Class102) class102).aShort1601
					  & 0xffff),
				 (float) (((Class102) class102).aShort1603
					  & 0xffff),
				 (float) (((Class102) class102).aShort1604
					  & 0xffff));
			} else {
			    int i_467_ = ((Class102) class102).anInt1600;
			    class109.method1022((float) (i_463_ - i_461_),
						(float) (i_463_ - i_461_),
						(float) i_463_,
						(float) (i_462_ + i_461_),
						(float) i_462_,
						(float) (i_462_ + i_461_),
						100.0F, 100.0F, 100.0F,
						(float) i_467_, (float) i_467_,
						(float) i_467_);
			    class109.method1022((float) i_463_, (float) i_463_,
						(float) (i_463_ - i_461_),
						(float) i_462_,
						(float) (i_462_ + i_461_),
						(float) i_462_, 100.0F, 100.0F,
						100.0F, (float) i_467_,
						(float) i_467_,
						(float) i_467_);
			}
		    } else if (aClass236ArrayArray8222[i_464_][i_465_]
			       != null) {
			Class236 class236
			    = aClass236ArrayArray8222[i_464_][i_465_];
			for (int i_468_ = 0;
			     i_468_ < ((Class236) class236).aShort3089;
			     i_468_++) {
			    is[i_468_]
				= i_462_ + ((((Class236) class236)
					     .aShortArray3096[i_468_])
					    * i_461_ / ((s) this).anInt4592);
			    is_459_[i_468_]
				= i_463_ - ((((Class236) class236)
					     .aShortArray3094[i_468_])
					    * i_461_ / ((s) this).anInt4592);
			}
			for (int i_469_ = 0;
			     i_469_ < ((Class236) class236).aShort3099;
			     i_469_++) {
			    short i_470_ = (((Class236) class236)
					    .aShortArray3091[i_469_]);
			    short i_471_ = (((Class236) class236)
					    .aShortArray3090[i_469_]);
			    short i_472_ = (((Class236) class236)
					    .aShortArray3101[i_469_]);
			    int i_473_ = is[i_470_];
			    int i_474_ = is[i_471_];
			    int i_475_ = is[i_472_];
			    int i_476_ = is_459_[i_470_];
			    int i_477_ = is_459_[i_471_];
			    int i_478_ = is_459_[i_472_];
			    if (((Class236) class236).anIntArray3092 != null
				&& (((Class236) class236).anIntArray3092
				    [i_469_]) != -1) {
				int i_479_ = (((Class236) class236)
					      .anIntArray3092[i_469_]);
				class109.method1022
				    ((float) i_476_, (float) i_477_,
				     (float) i_478_, (float) i_473_,
				     (float) i_474_, (float) i_475_, 100.0F,
				     100.0F, 100.0F,
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_470_]),
					       i_479_)),
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_471_]),
					       i_479_)),
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_472_]),
					       i_479_)));
			    } else if ((((Class236) class236).aShortArray3095
					!= null)
				       && (((Class236) class236)
					   .aShortArray3095[i_469_]) != -1) {
				int i_480_
				    = aHa_Sub1_8217.method3722(((Class236)
								class236)
							       .aShortArray3095
							       [i_469_]);
				class109.method1022
				    ((float) i_476_, (float) i_477_,
				     (float) i_478_, (float) i_473_,
				     (float) i_474_, (float) i_475_, 100.0F,
				     100.0F, 100.0F,
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_470_]),
					       i_480_)),
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_471_]),
					       i_480_)),
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_472_]),
					       i_480_)));
			    } else {
				int i_481_ = (((Class236) class236)
					      .anIntArray3093[i_469_]);
				class109.method1022
				    ((float) i_476_, (float) i_477_,
				     (float) i_478_, (float) i_473_,
				     (float) i_474_, (float) i_475_, 100.0F,
				     100.0F, 100.0F,
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_470_]),
					       i_481_)),
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_471_]),
					       i_481_)),
				     (float) (IndexTable.method2198
					      (0,
					       (((Class236) class236)
						.aShortArray3088[i_472_]),
					       i_481_)));
			    }
			}
		    }
		}
		i_463_ -= i_461_;
	    }
	    i_463_ = i_453_ + i_460_;
	    i_462_ += i_461_;
	}
	((Class109) class109).aBoolean1669 = true;
	aHa_Sub1_8217.C(bool);
    }