private final void method654
	(Class101 class101, Class318_Sub3 class318_sub3, int i, int i_632_) {
	if (anInt5387 >= 1) {
	    aClass101_Sub1_5320 = (Class101_Sub1) class101;
	    Class101_Sub1 class101_sub1
		= ((SoftwareToolkit) aHa_Sub1_5353).aClass101_Sub1_7492;
	    if (!aBoolean5323)
		method655();
	    boolean bool = false;
	    if (((Class101_Sub1) aClass101_Sub1_5320).aFloat5672 == 16384.0F
		&& ((Class101_Sub1) aClass101_Sub1_5320).aFloat5673 == 0.0F
		&& ((Class101_Sub1) aClass101_Sub1_5320).aFloat5669 == 0.0F
		&& ((Class101_Sub1) aClass101_Sub1_5320).aFloat5655 == 0.0F
		&& ((Class101_Sub1) aClass101_Sub1_5320).aFloat5678 == 16384.0F
		&& ((Class101_Sub1) aClass101_Sub1_5320).aFloat5666 == 0.0F
		&& ((Class101_Sub1) aClass101_Sub1_5320).aFloat5662 == 0.0F
		&& ((Class101_Sub1) aClass101_Sub1_5320).aFloat5680 == 0.0F
		&& (((Class101_Sub1) aClass101_Sub1_5320).aFloat5664
		    == 16384.0F))
		bool = true;
	    float f = (((Class101_Sub1) class101_sub1).aFloat5681
		       + (((Class101_Sub1) class101_sub1).aFloat5662
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5686)
		       + (((Class101_Sub1) class101_sub1).aFloat5680
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5685)
		       + (((Class101_Sub1) class101_sub1).aFloat5664
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5681));
	    float f_633_
		= (bool ? ((Class101_Sub1) class101_sub1).aFloat5680
		   : ((((Class101_Sub1) class101_sub1).aFloat5662
		       * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5673)
		      + (((Class101_Sub1) class101_sub1).aFloat5680
			 * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5678)
		      + (((Class101_Sub1) class101_sub1).aFloat5664
			 * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5680)));
	    int i_634_ = (int) (f + (float) aShort5329 * f_633_);
	    int i_635_ = (int) (f + (float) aShort5365 * f_633_);
	    int i_636_;
	    int i_637_;
	    if (i_634_ > i_635_) {
		i_636_ = i_635_ - aShort5324;
		i_637_ = i_634_ + aShort5324;
	    } else {
		i_636_ = i_634_ - aShort5324;
		i_637_ = i_635_ + aShort5324;
	    }
	    if (i_636_ < ((SoftwareToolkit) aHa_Sub1_5353).anInt7494
		&& i_637_ > ((SoftwareToolkit) aHa_Sub1_5353).anInt7482) {
		float f_638_
		    = (((Class101_Sub1) class101_sub1).aFloat5686
		       + (((Class101_Sub1) class101_sub1).aFloat5672
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5686)
		       + (((Class101_Sub1) class101_sub1).aFloat5673
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5685)
		       + (((Class101_Sub1) class101_sub1).aFloat5669
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5681));
		float f_639_
		    = (bool ? ((Class101_Sub1) class101_sub1).aFloat5673
		       : ((((Class101_Sub1) class101_sub1).aFloat5672
			   * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5673)
			  + (((Class101_Sub1) class101_sub1).aFloat5673
			     * (((Class101_Sub1) aClass101_Sub1_5320)
				.aFloat5678))
			  + (((Class101_Sub1) class101_sub1).aFloat5669
			     * (((Class101_Sub1) aClass101_Sub1_5320)
				.aFloat5680))));
		int i_640_ = (int) (f_638_ + (float) aShort5329 * f_639_);
		int i_641_ = (int) (f_638_ + (float) aShort5365 * f_639_);
		int i_642_;
		int i_643_;
		if (i_640_ > i_641_) {
		    i_642_ = ((i_641_ - aShort5324)
			      * ((SoftwareToolkit) aHa_Sub1_5353).anInt7491);
		    i_643_ = ((i_640_ + aShort5324)
			      * ((SoftwareToolkit) aHa_Sub1_5353).anInt7491);
		} else {
		    i_642_ = ((i_640_ - aShort5324)
			      * ((SoftwareToolkit) aHa_Sub1_5353).anInt7491);
		    i_643_ = ((i_641_ + aShort5324)
			      * ((SoftwareToolkit) aHa_Sub1_5353).anInt7491);
		}
		if (i == -1) {
		    if (i_642_ / i_637_ >= ((SoftwareToolkit) aHa_Sub1_5353).anInt7508
			|| (i_643_ / i_637_
			    <= ((SoftwareToolkit) aHa_Sub1_5353).anInt7509))
			return;
		} else if (i_642_ / i >= ((SoftwareToolkit) aHa_Sub1_5353).anInt7508
			   || (i_643_ / i
			       <= ((SoftwareToolkit) aHa_Sub1_5353).anInt7509))
		    return;
		float f_644_
		    = (((Class101_Sub1) class101_sub1).aFloat5685
		       + (((Class101_Sub1) class101_sub1).aFloat5655
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5686)
		       + (((Class101_Sub1) class101_sub1).aFloat5678
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5685)
		       + (((Class101_Sub1) class101_sub1).aFloat5666
			  * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5681));
		float f_645_
		    = (bool ? ((Class101_Sub1) class101_sub1).aFloat5678
		       : ((((Class101_Sub1) class101_sub1).aFloat5655
			   * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5673)
			  + (((Class101_Sub1) class101_sub1).aFloat5678
			     * (((Class101_Sub1) aClass101_Sub1_5320)
				.aFloat5678))
			  + (((Class101_Sub1) class101_sub1).aFloat5666
			     * (((Class101_Sub1) aClass101_Sub1_5320)
				.aFloat5680))));
		int i_646_ = (int) (f_644_ + (float) aShort5329 * f_645_);
		int i_647_ = (int) (f_644_ + (float) aShort5365 * f_645_);
		int i_648_;
		int i_649_;
		if (i_646_ > i_647_) {
		    i_648_ = ((i_647_ - aShort5324)
			      * ((SoftwareToolkit) aHa_Sub1_5353).anInt7497);
		    i_649_ = ((i_646_ + aShort5324)
			      * ((SoftwareToolkit) aHa_Sub1_5353).anInt7497);
		} else {
		    i_648_ = ((i_646_ - aShort5324)
			      * ((SoftwareToolkit) aHa_Sub1_5353).anInt7497);
		    i_649_ = ((i_647_ + aShort5324)
			      * ((SoftwareToolkit) aHa_Sub1_5353).anInt7497);
		}
		if (i == -1) {
		    if (i_648_ / i_637_ >= ((SoftwareToolkit) aHa_Sub1_5353).anInt7506
			|| (i_649_ / i_637_
			    <= ((SoftwareToolkit) aHa_Sub1_5353).anInt7490))
			return;
		} else if (i_648_ / i >= ((SoftwareToolkit) aHa_Sub1_5353).anInt7506
			   || (i_649_ / i
			       <= ((SoftwareToolkit) aHa_Sub1_5353).anInt7490))
		    return;
		float f_650_;
		float f_651_;
		float f_652_;
		float f_653_;
		float f_654_;
		float f_655_;
		if (bool) {
		    f_650_ = ((Class101_Sub1) class101_sub1).aFloat5672;
		    f_651_ = ((Class101_Sub1) class101_sub1).aFloat5655;
		    f_652_ = ((Class101_Sub1) class101_sub1).aFloat5662;
		    f_653_ = ((Class101_Sub1) class101_sub1).aFloat5669;
		    f_654_ = ((Class101_Sub1) class101_sub1).aFloat5666;
		    f_655_ = ((Class101_Sub1) class101_sub1).aFloat5664;
		} else {
		    f_650_
			= ((((Class101_Sub1) class101_sub1).aFloat5672
			    * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5672)
			   + (((Class101_Sub1) class101_sub1).aFloat5673
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5655))
			   + (((Class101_Sub1) class101_sub1).aFloat5669
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5662)));
		    f_651_
			= ((((Class101_Sub1) class101_sub1).aFloat5655
			    * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5672)
			   + (((Class101_Sub1) class101_sub1).aFloat5678
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5655))
			   + (((Class101_Sub1) class101_sub1).aFloat5666
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5662)));
		    f_652_
			= ((((Class101_Sub1) class101_sub1).aFloat5662
			    * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5672)
			   + (((Class101_Sub1) class101_sub1).aFloat5680
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5655))
			   + (((Class101_Sub1) class101_sub1).aFloat5664
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5662)));
		    f_653_
			= ((((Class101_Sub1) class101_sub1).aFloat5672
			    * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5669)
			   + (((Class101_Sub1) class101_sub1).aFloat5673
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5666))
			   + (((Class101_Sub1) class101_sub1).aFloat5669
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5664)));
		    f_654_
			= ((((Class101_Sub1) class101_sub1).aFloat5655
			    * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5669)
			   + (((Class101_Sub1) class101_sub1).aFloat5678
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5666))
			   + (((Class101_Sub1) class101_sub1).aFloat5666
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5664)));
		    f_655_
			= ((((Class101_Sub1) class101_sub1).aFloat5662
			    * ((Class101_Sub1) aClass101_Sub1_5320).aFloat5669)
			   + (((Class101_Sub1) class101_sub1).aFloat5680
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5666))
			   + (((Class101_Sub1) class101_sub1).aFloat5664
			      * (((Class101_Sub1) aClass101_Sub1_5320)
				 .aFloat5664)));
		}
		if (((SoftwareToolkit) aHa_Sub1_5353).anInt7485 > 1) {
		    synchronized (this) {
			while (aBoolean5357) {
			    try {
				this.wait();
			    } catch (InterruptedException interruptedexception) {
				/* empty */
			    }
			}
			aBoolean5357 = true;
		    }
		}
		method632(Thread.currentThread());
		if ((i_632_ & 0x2) != 0)
		    aClass109_5383.method1023(true);
		else
		    aClass109_5383.method1023(false);
		boolean bool_656_ = false;
		boolean bool_657_
		    = i_636_ <= ((SoftwareToolkit) aHa_Sub1_5353).anInt7482;
		boolean bool_658_ = (bool_657_ || aClass129Array5322 != null
				     || aClass342Array5335 != null);
		((Class167) aClass167_5367).anInt2221
		    = ((Class109) aClass109_5383).anInt1679;
		((Class167) aClass167_5367).anInt2229
		    = ((Class109) aClass109_5383).anInt1665;
		((Class167) aClass167_5367).anInt2215
		    = ((Class109) aClass109_5383).anInt1668;
		int i_659_ = ((SoftwareToolkit) aHa_Sub1_5353).anInt7491;
		int i_660_ = ((SoftwareToolkit) aHa_Sub1_5353).anInt7497;
		int i_661_ = ((SoftwareToolkit) aHa_Sub1_5353).anInt7482;
		if (i == -1) {
		    for (int i_662_ = 0; i_662_ < anInt5340; i_662_++) {
			int i_663_ = anIntArray5356[i_662_];
			int i_664_ = anIntArray5332[i_662_];
			int i_665_ = anIntArray5312[i_662_];
			float f_666_ = (f_638_ + f_650_ * (float) i_663_
					+ f_639_ * (float) i_664_
					+ f_653_ * (float) i_665_);
			float f_667_ = (f_644_ + f_651_ * (float) i_663_
					+ f_645_ * (float) i_664_
					+ f_654_ * (float) i_665_);
			float f_668_ = (f + f_652_ * (float) i_663_
					+ f_633_ * (float) i_664_
					+ f_655_ * (float) i_665_);
			anIntArray5355[i_662_] = (int) f_668_;
			if (f_668_ >= (float) i_661_) {
			    anIntArray5321[i_662_]
				= (((Class167) aClass167_5367).anInt2229
				   + (int) (f_666_ * (float) i_659_ / f_668_));
			    anIntArray5343[i_662_]
				= (((Class167) aClass167_5367).anInt2215
				   + (int) (f_667_ * (float) i_660_ / f_668_));
			} else {
			    anIntArray5321[i_662_] = -5000;
			    bool_656_ = true;
			}
			if (bool_658_) {
			    anIntArray5399[i_662_] = (int) f_666_;
			    anIntArray5384[i_662_] = (int) f_667_;
			    anIntArray5392[i_662_] = (int) f_668_;
			}
			if (((Class167) aClass167_5367).aBoolean2195)
			    anIntArray5362[i_662_]
				= (int) ((((Class101_Sub1) aClass101_Sub1_5320)
					  .aFloat5685)
					 + ((((Class101_Sub1)
					      aClass101_Sub1_5320).aFloat5655
					     * (float) i_663_)
					    + (((Class101_Sub1)
						aClass101_Sub1_5320).aFloat5678
					       * (float) i_664_)
					    + (((Class101_Sub1)
						aClass101_Sub1_5320).aFloat5666
					       * (float) i_665_)));
		    }
		    if (aClass6Array5361 != null) {
			for (int i_669_ = 0; i_669_ < amountPolygons; i_669_++) {
			    Class6 class6 = aClass6Array5361[i_669_];
			    Class350 class350 = aClass350Array5363[i_669_];
			    short i_670_
				= aShortArray5317[((Class6) class6).anInt144];
			    short i_671_
				= aShortArray5394[((Class6) class6).anInt144];
			    short i_672_
				= aShortArray5364[((Class6) class6).anInt144];
			    int i_673_ = ((anIntArray5356[i_670_]
					   + anIntArray5356[i_671_]
					   + anIntArray5356[i_672_])
					  / 3);
			    int i_674_ = ((anIntArray5332[i_670_]
					   + anIntArray5332[i_671_]
					   + anIntArray5332[i_672_])
					  / 3);
			    int i_675_ = ((anIntArray5312[i_670_]
					   + anIntArray5312[i_671_]
					   + anIntArray5312[i_672_])
					  / 3);
			    float f_676_
				= ((float) ((Class350) class350).anInt4316
				   + (f_638_ + f_650_ * (float) i_673_
				      + f_639_ * (float) i_674_
				      + f_653_ * (float) i_675_));
			    float f_677_
				= ((float) ((Class350) class350).anInt4317
				   + (f_644_ + f_651_ * (float) i_673_
				      + f_645_ * (float) i_674_
				      + f_654_ * (float) i_675_));
			    float f_678_ = (f + f_652_ * (float) i_673_
					    + f_633_ * (float) i_674_
					    + f_655_ * (float) i_675_);
			    if (f_678_ > (float) (((SoftwareToolkit) aHa_Sub1_5353)
						  .anInt7482)) {
				((Class350) class350).anInt4312
				    = (((SoftwareToolkit) aHa_Sub1_5353).anInt7510
				       + (int) (f_676_ * (float) i_659_
						/ f_678_));
				((Class350) class350).anInt4310
				    = (((SoftwareToolkit) aHa_Sub1_5353).anInt7504
				       + (int) (f_677_ * (float) i_660_
						/ f_678_));
				((Class350) class350).anInt4320
				    = ((int) f_678_
				       - ((Class6) class6).anInt154);
				((Class350) class350).anInt4309
				    = (int) ((float) ((((Class350) class350)
						       .anInt4314)
						      * (((Class6) class6)
							 .aShort150)
						      * i_659_)
					     / (f_678_ * 128.0F));
				((Class350) class350).anInt4307
				    = (int) ((float) ((((Class350) class350)
						       .anInt4311)
						      * (((Class6) class6)
							 .aShort143)
						      * i_660_)
					     / (f_678_ * 128.0F));
			    } else
				((Class350) class350).anInt4309
				    = ((Class350) class350).anInt4307 = 0;
			}
		    }
		} else {
		    for (int i_679_ = 0; i_679_ < anInt5340; i_679_++) {
			int i_680_ = anIntArray5356[i_679_];
			int i_681_ = anIntArray5332[i_679_];
			int i_682_ = anIntArray5312[i_679_];
			float f_683_ = (f_638_ + f_650_ * (float) i_680_
					+ f_639_ * (float) i_681_
					+ f_653_ * (float) i_682_);
			float f_684_ = (f_644_ + f_651_ * (float) i_680_
					+ f_645_ * (float) i_681_
					+ f_654_ * (float) i_682_);
			float f_685_ = (f + f_652_ * (float) i_680_
					+ f_633_ * (float) i_681_
					+ f_655_ * (float) i_682_);
			anIntArray5355[i_679_] = (int) f_685_;
			anIntArray5321[i_679_]
			    = (((Class167) aClass167_5367).anInt2229
			       + (int) (f_683_ * (float) i_659_ / (float) i));
			anIntArray5343[i_679_]
			    = (((Class167) aClass167_5367).anInt2215
			       + (int) (f_684_ * (float) i_660_ / (float) i));
			if (bool_658_) {
			    anIntArray5399[i_679_] = (int) f_683_;
			    anIntArray5384[i_679_] = (int) f_684_;
			    anIntArray5392[i_679_] = i;
			}
			if (((Class167) aClass167_5367).aBoolean2195)
			    anIntArray5362[i_679_]
				= (int) ((((Class101_Sub1) aClass101_Sub1_5320)
					  .aFloat5685)
					 + ((((Class101_Sub1)
					      aClass101_Sub1_5320).aFloat5655
					     * (float) i_680_)
					    + (((Class101_Sub1)
						aClass101_Sub1_5320).aFloat5678
					       * (float) i_681_)
					    + (((Class101_Sub1)
						aClass101_Sub1_5320).aFloat5666
					       * (float) i_682_)));
		    }
		    if (aClass6Array5361 != null) {
			for (int i_686_ = 0; i_686_ < amountPolygons; i_686_++) {
			    Class6 class6 = aClass6Array5361[i_686_];
			    Class350 class350 = aClass350Array5363[i_686_];
			    short i_687_
				= aShortArray5317[((Class6) class6).anInt144];
			    short i_688_
				= aShortArray5394[((Class6) class6).anInt144];
			    short i_689_
				= aShortArray5364[((Class6) class6).anInt144];
			    int i_690_ = ((anIntArray5356[i_687_]
					   + anIntArray5356[i_688_]
					   + anIntArray5356[i_689_])
					  / 3);
			    int i_691_ = ((anIntArray5332[i_687_]
					   + anIntArray5332[i_688_]
					   + anIntArray5332[i_689_])
					  / 3);
			    int i_692_ = ((anIntArray5312[i_687_]
					   + anIntArray5312[i_688_]
					   + anIntArray5312[i_689_])
					  / 3);
			    float f_693_ = (f_638_ + f_650_ * (float) i_690_
					    + f_639_ * (float) i_691_
					    + f_653_ * (float) i_692_);
			    float f_694_ = (f_644_ + f_651_ * (float) i_690_
					    + f_645_ * (float) i_691_
					    + f_654_ * (float) i_692_);
			    float f_695_ = (f + f_652_ * (float) i_690_
					    + f_633_ * (float) i_691_
					    + f_655_ * (float) i_692_);
			    ((Class350) class350).anInt4312
				= (((SoftwareToolkit) aHa_Sub1_5353).anInt7510
				   + (int) (f_693_ * (float) i_659_
					    / (float) i));
			    ((Class350) class350).anInt4310
				= (((SoftwareToolkit) aHa_Sub1_5353).anInt7504
				   + (int) (f_694_ * (float) i_660_
					    / (float) i));
			    ((Class350) class350).anInt4320
				= i - ((Class6) class6).anInt154;
			    ((Class350) class350).anInt4309
				= (((Class350) class350).anInt4314
				   * ((Class6) class6).aShort150 * i_659_
				   / (i << 7));
			    ((Class350) class350).anInt4307
				= (((Class350) class350).anInt4311
				   * ((Class6) class6).aShort143 * i_660_
				   / (i << 7));
			}
		    }
		}
		if (class318_sub3 != null) {
		    boolean bool_696_ = false;
		    boolean bool_697_ = true;
		    int i_698_ = aShort5395 + aShort5393 >> 1;
		    int i_699_ = aShort5352 + aShort5331 >> 1;
		    int i_700_ = i_698_;
		    short i_701_ = aShort5329;
		    int i_702_ = i_699_;
		    float f_703_ = (f_638_ + f_650_ * (float) i_700_
				    + f_639_ * (float) i_701_
				    + f_653_ * (float) i_702_);
		    float f_704_ = (f_644_ + f_651_ * (float) i_700_
				    + f_645_ * (float) i_701_
				    + f_654_ * (float) i_702_);
		    float f_705_ = (f + f_652_ * (float) i_700_
				    + f_633_ * (float) i_701_
				    + f_655_ * (float) i_702_);
		    if (f_705_ >= (float) i_661_) {
			int i_706_ = (int) f_705_;
			if (i != -1)
			    i_706_ = i;
			((Class318_Sub3) class318_sub3).anInt6405
			    = (((SoftwareToolkit) aHa_Sub1_5353).anInt7510
			       + (int) (f_703_ * (float) i_659_
					/ (float) i_706_));
			((Class318_Sub3) class318_sub3).anInt6402
			    = (((SoftwareToolkit) aHa_Sub1_5353).anInt7504
			       + (int) (f_704_ * (float) i_660_
					/ (float) i_706_));
		    } else
			bool_696_ = true;
		    i_700_ = i_698_;
		    i_701_ = aShort5365;
		    i_702_ = i_699_;
		    float f_707_ = (f_638_ + f_650_ * (float) i_700_
				    + f_639_ * (float) i_701_
				    + f_653_ * (float) i_702_);
		    float f_708_ = (f_644_ + f_651_ * (float) i_700_
				    + f_645_ * (float) i_701_
				    + f_654_ * (float) i_702_);
		    float f_709_ = (f + f_652_ * (float) i_700_
				    + f_633_ * (float) i_701_
				    + f_655_ * (float) i_702_);
		    if (f_709_ >= (float) i_661_) {
			int i_710_ = (int) f_709_;
			if (i != -1)
			    i_710_ = i;
			((Class318_Sub3) class318_sub3).anInt6406
			    = (((SoftwareToolkit) aHa_Sub1_5353).anInt7510
			       + (int) (f_707_ * (float) i_659_
					/ (float) i_710_));
			((Class318_Sub3) class318_sub3).anInt6404
			    = (((SoftwareToolkit) aHa_Sub1_5353).anInt7504
			       + (int) (f_708_ * (float) i_660_
					/ (float) i_710_));
		    } else
			bool_696_ = true;
		    if (bool_696_) {
			if (f_705_ < (float) i_661_ && f_709_ < (float) i_661_)
			    bool_697_ = false;
			else if (f_705_ < (float) i_661_) {
			    float f_711_
				= ((f_709_ - (float) (((SoftwareToolkit) aHa_Sub1_5353)
						      .anInt7482))
				   / (f_709_ - f_705_));
			    int i_712_
				= (int) (f_707_ + (f_707_ - f_703_) * f_711_);
			    int i_713_
				= (int) (f_708_ + (f_708_ - f_704_) * f_711_);
			    int i_714_ = i_661_;
			    if (i != -1)
				i_714_ = i;
			    ((Class318_Sub3) class318_sub3).anInt6405
				= (((SoftwareToolkit) aHa_Sub1_5353).anInt7510
				   + i_712_ * i_659_ / i_714_);
			    ((Class318_Sub3) class318_sub3).anInt6402
				= (((SoftwareToolkit) aHa_Sub1_5353).anInt7504
				   + i_713_ * i_660_ / i_714_);
			} else if (f_709_ < (float) i_661_) {
			    float f_715_ = ((f_705_ - (float) i_661_)
					    / (f_705_ - f_709_));
			    int i_716_
				= (int) (f_703_ + (f_703_ - f_707_) * f_715_);
			    int i_717_
				= (int) (f_704_ + (f_704_ - f_708_) * f_715_);
			    int i_718_ = i_661_;
			    if (i != -1)
				i_718_ = i;
			    ((Class318_Sub3) class318_sub3).anInt6405
				= (((SoftwareToolkit) aHa_Sub1_5353).anInt7510
				   + i_716_ * i_659_ / i_718_);
			    ((Class318_Sub3) class318_sub3).anInt6402
				= (((SoftwareToolkit) aHa_Sub1_5353).anInt7504
				   + i_717_ * i_660_ / i_718_);
			}
		    }
		    if (bool_697_) {
			if (f_705_ > f_709_) {
			    int i_719_ = (int) f_705_;
			    if (i != -1)
				i_719_ = i;
			    ((Class318_Sub3) class318_sub3).anInt6403
				= (((SoftwareToolkit) aHa_Sub1_5353).anInt7510
				   + (int) ((f_703_ + (float) aShort5324)
					    * (float) i_659_ / (float) i_719_)
				   - (((Class318_Sub3) class318_sub3)
				      .anInt6405));
			} else {
			    int i_720_ = (int) f_709_;
			    if (i != -1)
				i_720_ = i;
			    ((Class318_Sub3) class318_sub3).anInt6403
				= (((SoftwareToolkit) aHa_Sub1_5353).anInt7510
				   + (int) ((f_707_ + (float) aShort5324)
					    * (float) i_659_ / (float) i_720_)
				   - (((Class318_Sub3) class318_sub3)
				      .anInt6406));
			}
			((Class318_Sub3) class318_sub3).aBoolean6401 = true;
		    }
		}
		method634(true);
		((Class109) aClass109_5383).aBoolean1669 = (i_632_ & 0x1) == 0;
		((Class109) aClass109_5383).aBoolean1667 = false;
		try {
		    method650(bool_656_,
			      ((((Class167) aClass167_5367).aBoolean2201
				&& (i_637_
				    > ((Class167) aClass167_5367).anInt2210))
			       || ((Class167) aClass167_5367).aBoolean2195),
			      i_636_, i_637_ - i_636_);
		} catch (Exception exception) {
		    /* empty */
		}
		if (aClass6Array5361 != null) {
		    for (int i_721_ = 0; i_721_ < anInt5351; i_721_++)
			anIntArray5400[i_721_] = -1;
		}
		aClass109_5383 = null;
		if (((SoftwareToolkit) aHa_Sub1_5353).anInt7485 > 1) {
		    synchronized (this) {
			aBoolean5357 = false;
			this.notifyAll();
		    }
		}
	    }
	}
    }