/* Class357_Sub2 - Decompiled by JODE
 * Visit http://jode.sourceforge.net/
 */

public abstract class Class357_Sub2 extends Class357
{
    float aFloat10217;
    float aFloat10218;
    int anInt10219 = 0;
    Class268[] aClass268Array10220;
    float[] aFloatArray10221;
    int[] anIntArray10222;
    
    abstract float method16651(float f, float f_0_, float f_1_, short i);
    
    public void method16652(Class268 class268, int i, float f, byte i_2_) {
	if (null == ((Class357_Sub2) this).aClass268Array10220) {
	    ((Class357_Sub2) this).aClass268Array10220
		= new Class268[] { class268 };
	    ((Class357_Sub2) this).aFloatArray10221 = new float[] { f };
	    ((Class357_Sub2) this).anIntArray10222 = new int[] { i };
	} else {
	    Class268[] class268s
		= (new Class268
		   [((Class357_Sub2) this).aClass268Array10220.length + 1]);
	    float[] fs
		= (new float
		   [1 + ((Class357_Sub2) this).aClass268Array10220.length]);
	    int[] is
		= (new int
		   [((Class357_Sub2) this).aClass268Array10220.length + 1]);
	    System.arraycopy(((Class357_Sub2) this).aClass268Array10220, 0,
			     class268s, 0,
			     (((Class357_Sub2) this)
			      .aClass268Array10220).length);
	    System.arraycopy(((Class357_Sub2) this).aFloatArray10221, 0, fs, 0,
			     (((Class357_Sub2) this)
			      .aClass268Array10220).length);
	    System.arraycopy(((Class357_Sub2) this).anIntArray10222, 0, is, 0,
			     (((Class357_Sub2) this)
			      .aClass268Array10220).length);
	    ((Class357_Sub2) this).aClass268Array10220 = class268s;
	    ((Class357_Sub2) this).aFloatArray10221 = fs;
	    ((Class357_Sub2) this).anIntArray10222 = is;
	    ((Class357_Sub2) this).aClass268Array10220
		[((Class357_Sub2) this).aClass268Array10220.length - 1]
		= class268;
	    ((Class357_Sub2) this).aFloatArray10221
		[((Class357_Sub2) this).aFloatArray10221.length - 1]
		= f;
	    ((Class357_Sub2) this).anIntArray10222
		[((Class357_Sub2) this).anIntArray10222.length - 1]
		= i;
	}
    }
    
    public void method6866(float f, int[][][] is, Class294 class294, int i,
			   int i_3_, byte i_4_) {
	Class268 class268 = (((Class357_Sub2) this).aClass268Array10220
			     [-941968157 * ((Class357_Sub2) this).anInt10219]);
	if ((((Class357_Sub2) this).aFloatArray10221
	     [-941968157 * ((Class357_Sub2) this).anInt10219])
	    > 0.0F) {
	    if ((((Class357_Sub2) this).aFloatArray10221
		 [-941968157 * ((Class357_Sub2) this).anInt10219])
		>= f) {
		((Class357_Sub2) this).aFloatArray10221
		    [((Class357_Sub2) this).anInt10219 * -941968157]
		    -= f;
		return;
	    }
	    f -= (((Class357_Sub2) this).aFloatArray10221
		  [((Class357_Sub2) this).anInt10219 * -941968157]);
	    ((Class357_Sub2) this).aFloatArray10221
		[((Class357_Sub2) this).anInt10219 * -941968157]
		= 0.0F;
	}
	float f_5_ = 1.0F / (float) Class14.method593((byte) 6);
	while (f > 0.0F) {
	    float f_6_ = class268.method5199();
	    if (((Class357_Sub2) this).aFloat10217 >= f_6_) {
		if (((Class357_Sub2) this).aClass268Array10220.length
		    == ((Class357_Sub2) this).anInt10219 * -941968157 + 1)
		    break;
		if ((((Class357_Sub2) this).aFloatArray10221
		     [1 + ((Class357_Sub2) this).anInt10219 * -941968157])
		    >= f) {
		    ((Class357_Sub2) this).aFloatArray10221
			[1 + ((Class357_Sub2) this).anInt10219 * -941968157]
			-= f;
		    break;
		}
		((Class357_Sub2) this).anInt10219 += -432525109;
		f -= (((Class357_Sub2) this).aFloatArray10221
		      [-941968157 * ((Class357_Sub2) this).anInt10219]);
		((Class357_Sub2) this).aFloatArray10221
		    [((Class357_Sub2) this).anInt10219 * -941968157]
		    = 0.0F;
		method16655(-378623337);
		((Class357_Sub2) this).aFloat10217 = 0.0F;
		((Class357_Sub2) this).aFloat10218 = 0.0F;
		class268 = (((Class357_Sub2) this).aClass268Array10220
			    [((Class357_Sub2) this).anInt10219 * -941968157]);
		f_6_ = class268.method5199();
	    }
	    while (f > 0.0F && ((Class357_Sub2) this).aFloat10217 < f_6_) {
		((Class357_Sub2) this).aFloat10218
		    = method16651(f_6_, ((Class357_Sub2) this).aFloat10218,
				  Math.min(f, f_5_), (short) -11156);
		f -= f_5_;
		method16657(((Class357_Sub2) this).aFloat10218, f_6_,
			    (byte) 99);
	    }
	}
    }
    
    abstract void method16653(Class243_Sub10 class243_sub10, int i, int i_7_);
    
    abstract float method16654(float f, float f_8_, float f_9_);
    
    abstract void method16655(int i);
    
    public boolean method6887(int i) {
	return ((Class357_Sub2) this).aClass268Array10220 != null;
    }
    
    public Class275 method6868(int i) {
	Class275 class275 = Class275.method5439();
	double[] ds = ((Class357_Sub2) this).aClass268Array10220
			  [((Class357_Sub2) this).anInt10219 * -941968157]
			  .method5200(((Class357_Sub2) this).aFloat10217);
	class275.aFloat4140 = (float) ds[0];
	class275.aFloat4138 = (float) ds[1];
	class275.aFloat4135 = (float) ds[2];
	return class275;
    }
    
    public double[] method6869(int i) {
	return ((Class357_Sub2) this).aClass268Array10220
		   [((Class357_Sub2) this).anInt10219 * -941968157]
		   .method5200(((Class357_Sub2) this).aFloat10217);
    }
    
    public Class243_Sub6 method6870(byte i) {
	Class275 class275 = method6868(-915283315);
	return new Class243_Sub6(0, (int) class275.aFloat4140,
				 (int) class275.aFloat4138,
				 (int) class275.aFloat4135);
    }
    
    public float method16656(int i) {
	return ((Class357_Sub2) this).aClass268Array10220
		   [-941968157 * ((Class357_Sub2) this).anInt10219]
		   .method5201(((Class357_Sub2) this).aFloat10217);
    }
    
    void method16657(float f, float f_10_, byte i) {
	((Class357_Sub2) this).aFloat10217 += f;
	if (((Class357_Sub2) this).aFloat10217 > f_10_) {
	    if (i > 0)
		((Class357_Sub2) this).aFloat10217 = f_10_;
	}
    }
    
    public void method6872(Class72 class72, int i, int i_11_, int i_12_) {
	Class275 class275 = method6868(762113915);
	class72.anInt911 = ((int) class275.aFloat4140 - i) * 389401035;
	class72.anInt910 = (int) -class275.aFloat4138 * 1683131563;
	class72.anInt909 = -52719003 * ((int) class275.aFloat4135 - i_11_);
    }
    
    public void method6885(Class243_Sub10 class243_sub10, int i) {
	((Class357_Sub2) this).aFloat10217 = 0.0F;
	((Class357_Sub2) this).aFloat10218 = 0.0F;
	((Class357_Sub2) this).anInt10219 = 0;
	int i_13_ = class243_sub10.method14878((byte) -54);
	((Class357_Sub2) this).aClass268Array10220 = new Class268[i_13_];
	((Class357_Sub2) this).aFloatArray10221 = new float[i_13_];
	for (int i_14_ = 0; i_14_ < i_13_; i_14_++) {
	    ((Class357_Sub2) this).aClass268Array10220[i_14_]
		= new Class268(class243_sub10);
	    ((Class357_Sub2) this).aFloatArray10221[i_14_]
		= class243_sub10.method14718(-1861415519);
	}
	method16653(class243_sub10, i_13_, 644486247);
    }
    
    public float method6871(int i) {
	return ((Class357_Sub2) this).aClass268Array10220
		   [-941968157 * ((Class357_Sub2) this).anInt10219]
		   .method5220(((Class357_Sub2) this).aFloat10217);
    }
    
    abstract float method16658(float f, float f_15_, float f_16_);
    
    public Class275 method6875() {
	Class275 class275 = Class275.method5439();
	double[] ds = ((Class357_Sub2) this).aClass268Array10220
			  [((Class357_Sub2) this).anInt10219 * -941968157]
			  .method5200(((Class357_Sub2) this).aFloat10217);
	class275.aFloat4140 = (float) ds[0];
	class275.aFloat4138 = (float) ds[1];
	class275.aFloat4135 = (float) ds[2];
	return class275;
    }
    
    abstract float method16659(float f, float f_17_, float f_18_);
    
    public float method6883() {
	return ((Class357_Sub2) this).aClass268Array10220
		   [-941968157 * ((Class357_Sub2) this).anInt10219]
		   .method5220(((Class357_Sub2) this).aFloat10217);
    }
    
    abstract void method16660();
    
    public float method16661() {
	return ((Class357_Sub2) this).aClass268Array10220
		   [-941968157 * ((Class357_Sub2) this).anInt10219]
		   .method5201(((Class357_Sub2) this).aFloat10217);
    }
    
    abstract void method16662(Class243_Sub10 class243_sub10, int i);
    
    Class357_Sub2(Class67 class67) {
	super(class67);
	((Class357_Sub2) this).aFloat10217 = 0.0F;
	((Class357_Sub2) this).aFloat10218 = 0.0F;
    }
    
    public void method6873(float f, int[][][] is, Class294 class294, int i,
			   int i_19_) {
	Class268 class268 = (((Class357_Sub2) this).aClass268Array10220
			     [-941968157 * ((Class357_Sub2) this).anInt10219]);
	if ((((Class357_Sub2) this).aFloatArray10221
	     [-941968157 * ((Class357_Sub2) this).anInt10219])
	    > 0.0F) {
	    if ((((Class357_Sub2) this).aFloatArray10221
		 [-941968157 * ((Class357_Sub2) this).anInt10219])
		>= f) {
		((Class357_Sub2) this).aFloatArray10221
		    [((Class357_Sub2) this).anInt10219 * -941968157]
		    -= f;
		return;
	    }
	    f -= (((Class357_Sub2) this).aFloatArray10221
		  [((Class357_Sub2) this).anInt10219 * -941968157]);
	    ((Class357_Sub2) this).aFloatArray10221
		[((Class357_Sub2) this).anInt10219 * -941968157]
		= 0.0F;
	}
	float f_20_ = 1.0F / (float) Class14.method593((byte) -57);
	while (f > 0.0F) {
	    float f_21_ = class268.method5199();
	    if (((Class357_Sub2) this).aFloat10217 >= f_21_) {
		if (((Class357_Sub2) this).aClass268Array10220.length
		    == ((Class357_Sub2) this).anInt10219 * -941968157 + 1)
		    break;
		if ((((Class357_Sub2) this).aFloatArray10221
		     [1 + ((Class357_Sub2) this).anInt10219 * -941968157])
		    >= f) {
		    ((Class357_Sub2) this).aFloatArray10221
			[1 + ((Class357_Sub2) this).anInt10219 * -941968157]
			-= f;
		    break;
		}
		((Class357_Sub2) this).anInt10219 += -432525109;
		f -= (((Class357_Sub2) this).aFloatArray10221
		      [-941968157 * ((Class357_Sub2) this).anInt10219]);
		((Class357_Sub2) this).aFloatArray10221
		    [((Class357_Sub2) this).anInt10219 * -941968157]
		    = 0.0F;
		method16655(-378623337);
		((Class357_Sub2) this).aFloat10217 = 0.0F;
		((Class357_Sub2) this).aFloat10218 = 0.0F;
		class268 = (((Class357_Sub2) this).aClass268Array10220
			    [((Class357_Sub2) this).anInt10219 * -941968157]);
		f_21_ = class268.method5199();
	    }
	    while (f > 0.0F && ((Class357_Sub2) this).aFloat10217 < f_21_) {
		((Class357_Sub2) this).aFloat10218
		    = method16651(f_21_, ((Class357_Sub2) this).aFloat10218,
				  Math.min(f, f_20_), (short) -4132);
		f -= f_20_;
		method16657(((Class357_Sub2) this).aFloat10218, f_21_,
			    (byte) 124);
	    }
	}
    }
    
    public boolean method6876() {
	return ((Class357_Sub2) this).aClass268Array10220 != null;
    }
    
    public boolean method6867() {
	return ((Class357_Sub2) this).aClass268Array10220 != null;
    }
    
    public Class275 method6886() {
	Class275 class275 = Class275.method5439();
	double[] ds = ((Class357_Sub2) this).aClass268Array10220
			  [((Class357_Sub2) this).anInt10219 * -941968157]
			  .method5200(((Class357_Sub2) this).aFloat10217);
	class275.aFloat4140 = (float) ds[0];
	class275.aFloat4138 = (float) ds[1];
	class275.aFloat4135 = (float) ds[2];
	return class275;
    }
    
    public Class275 method6865() {
	Class275 class275 = Class275.method5439();
	double[] ds = ((Class357_Sub2) this).aClass268Array10220
			  [((Class357_Sub2) this).anInt10219 * -941968157]
			  .method5200(((Class357_Sub2) this).aFloat10217);
	class275.aFloat4140 = (float) ds[0];
	class275.aFloat4138 = (float) ds[1];
	class275.aFloat4135 = (float) ds[2];
	return class275;
    }
    
    public void method6882(Class243_Sub10 class243_sub10) {
	((Class357_Sub2) this).aFloat10217 = 0.0F;
	((Class357_Sub2) this).aFloat10218 = 0.0F;
	((Class357_Sub2) this).anInt10219 = 0;
	int i = class243_sub10.method14878((byte) -12);
	((Class357_Sub2) this).aClass268Array10220 = new Class268[i];
	((Class357_Sub2) this).aFloatArray10221 = new float[i];
	for (int i_22_ = 0; i_22_ < i; i_22_++) {
	    ((Class357_Sub2) this).aClass268Array10220[i_22_]
		= new Class268(class243_sub10);
	    ((Class357_Sub2) this).aFloatArray10221[i_22_]
		= class243_sub10.method14718(-2140344541);
	}
	method16653(class243_sub10, i, 644486247);
    }
    
    public double[] method6880() {
	return ((Class357_Sub2) this).aClass268Array10220
		   [((Class357_Sub2) this).anInt10219 * -941968157]
		   .method5200(((Class357_Sub2) this).aFloat10217);
    }
    
    public double[] method6881() {
	return ((Class357_Sub2) this).aClass268Array10220
		   [((Class357_Sub2) this).anInt10219 * -941968157]
		   .method5200(((Class357_Sub2) this).aFloat10217);
    }
    
    public Class243_Sub6 method6878() {
	Class275 class275 = method6868(-496058940);
	return new Class243_Sub6(0, (int) class275.aFloat4140,
				 (int) class275.aFloat4138,
				 (int) class275.aFloat4135);
    }
    
    public void method6874(float f, int[][][] is, Class294 class294, int i,
			   int i_23_) {
	Class268 class268 = (((Class357_Sub2) this).aClass268Array10220
			     [-941968157 * ((Class357_Sub2) this).anInt10219]);
	if ((((Class357_Sub2) this).aFloatArray10221
	     [-941968157 * ((Class357_Sub2) this).anInt10219])
	    > 0.0F) {
	    if ((((Class357_Sub2) this).aFloatArray10221
		 [-941968157 * ((Class357_Sub2) this).anInt10219])
		>= f) {
		((Class357_Sub2) this).aFloatArray10221
		    [((Class357_Sub2) this).anInt10219 * -941968157]
		    -= f;
		return;
	    }
	    f -= (((Class357_Sub2) this).aFloatArray10221
		  [((Class357_Sub2) this).anInt10219 * -941968157]);
	    ((Class357_Sub2) this).aFloatArray10221
		[((Class357_Sub2) this).anInt10219 * -941968157]
		= 0.0F;
	}
	float f_24_ = 1.0F / (float) Class14.method593((byte) 55);
	while (f > 0.0F) {
	    float f_25_ = class268.method5199();
	    if (((Class357_Sub2) this).aFloat10217 >= f_25_) {
		if (((Class357_Sub2) this).aClass268Array10220.length
		    == ((Class357_Sub2) this).anInt10219 * -941968157 + 1)
		    break;
		if ((((Class357_Sub2) this).aFloatArray10221
		     [1 + ((Class357_Sub2) this).anInt10219 * -941968157])
		    >= f) {
		    ((Class357_Sub2) this).aFloatArray10221
			[1 + ((Class357_Sub2) this).anInt10219 * -941968157]
			-= f;
		    break;
		}
		((Class357_Sub2) this).anInt10219 += -432525109;
		f -= (((Class357_Sub2) this).aFloatArray10221
		      [-941968157 * ((Class357_Sub2) this).anInt10219]);
		((Class357_Sub2) this).aFloatArray10221
		    [((Class357_Sub2) this).anInt10219 * -941968157]
		    = 0.0F;
		method16655(-378623337);
		((Class357_Sub2) this).aFloat10217 = 0.0F;
		((Class357_Sub2) this).aFloat10218 = 0.0F;
		class268 = (((Class357_Sub2) this).aClass268Array10220
			    [((Class357_Sub2) this).anInt10219 * -941968157]);
		f_25_ = class268.method5199();
	    }
	    while (f > 0.0F && ((Class357_Sub2) this).aFloat10217 < f_25_) {
		((Class357_Sub2) this).aFloat10218
		    = method16651(f_25_, ((Class357_Sub2) this).aFloat10218,
				  Math.min(f, f_24_), (short) -4427);
		f -= f_24_;
		method16657(((Class357_Sub2) this).aFloat10218, f_25_,
			    (byte) 57);
	    }
	}
    }
    
    public float method6884() {
	return ((Class357_Sub2) this).aClass268Array10220
		   [-941968157 * ((Class357_Sub2) this).anInt10219]
		   .method5220(((Class357_Sub2) this).aFloat10217);
    }
    
    public void method6879(Class72 class72, int i, int i_26_) {
	Class275 class275 = method6868(1617520158);
	class72.anInt911 = ((int) class275.aFloat4140 - i) * 389401035;
	class72.anInt910 = (int) -class275.aFloat4138 * 1683131563;
	class72.anInt909 = -52719003 * ((int) class275.aFloat4135 - i_26_);
    }
    
    abstract void method16663(Class243_Sub10 class243_sub10, int i);
    
    abstract void method16664();
    
    void method16665(float f, float f_27_) {
	((Class357_Sub2) this).aFloat10217 += f;
	if (((Class357_Sub2) this).aFloat10217 > f_27_)
	    ((Class357_Sub2) this).aFloat10217 = f_27_;
    }
    
    public void method6877(Class243_Sub10 class243_sub10) {
	((Class357_Sub2) this).aFloat10217 = 0.0F;
	((Class357_Sub2) this).aFloat10218 = 0.0F;
	((Class357_Sub2) this).anInt10219 = 0;
	int i = class243_sub10.method14878((byte) -72);
	((Class357_Sub2) this).aClass268Array10220 = new Class268[i];
	((Class357_Sub2) this).aFloatArray10221 = new float[i];
	for (int i_28_ = 0; i_28_ < i; i_28_++) {
	    ((Class357_Sub2) this).aClass268Array10220[i_28_]
		= new Class268(class243_sub10);
	    ((Class357_Sub2) this).aFloatArray10221[i_28_]
		= class243_sub10.method14718(-2111325796);
	}
	method16653(class243_sub10, i, 644486247);
    }
    
    public void method16666(Class268 class268, int i, float f) {
	if (null == ((Class357_Sub2) this).aClass268Array10220) {
	    ((Class357_Sub2) this).aClass268Array10220
		= new Class268[] { class268 };
	    ((Class357_Sub2) this).aFloatArray10221 = new float[] { f };
	    ((Class357_Sub2) this).anIntArray10222 = new int[] { i };
	} else {
	    Class268[] class268s
		= (new Class268
		   [((Class357_Sub2) this).aClass268Array10220.length + 1]);
	    float[] fs
		= (new float
		   [1 + ((Class357_Sub2) this).aClass268Array10220.length]);
	    int[] is
		= (new int
		   [((Class357_Sub2) this).aClass268Array10220.length + 1]);
	    System.arraycopy(((Class357_Sub2) this).aClass268Array10220, 0,
			     class268s, 0,
			     (((Class357_Sub2) this)
			      .aClass268Array10220).length);
	    System.arraycopy(((Class357_Sub2) this).aFloatArray10221, 0, fs, 0,
			     (((Class357_Sub2) this)
			      .aClass268Array10220).length);
	    System.arraycopy(((Class357_Sub2) this).anIntArray10222, 0, is, 0,
			     (((Class357_Sub2) this)
			      .aClass268Array10220).length);
	    ((Class357_Sub2) this).aClass268Array10220 = class268s;
	    ((Class357_Sub2) this).aFloatArray10221 = fs;
	    ((Class357_Sub2) this).anIntArray10222 = is;
	    ((Class357_Sub2) this).aClass268Array10220
		[((Class357_Sub2) this).aClass268Array10220.length - 1]
		= class268;
	    ((Class357_Sub2) this).aFloatArray10221
		[((Class357_Sub2) this).aFloatArray10221.length - 1]
		= f;
	    ((Class357_Sub2) this).anIntArray10222
		[((Class357_Sub2) this).anIntArray10222.length - 1]
		= i;
	}
    }
    
    static void method16667(int i, int i_29_, int i_30_) {
	Class340 class340
	    = Class496.aClass195_Sub1_6602.method16786(i, (byte) 89);
	Class243_Sub11_Sub11 class243_sub11_sub11
	    = Class482.method11048(1, (long) (class340.aClass168_5335.anInt2119
					      * -2070231395));
	try {
	    if (Class243_Sub11_Sub11.aBool10806)
		((Class243_Sub11_Sub11) class243_sub11_sub11).anInt10783
		    = (Class333.aClass134_Sub1_5239
			   .method65(class340.aClass168_5335, 1318556765)
		       * -1872934943);
	    ((Class243_Sub11_Sub11) class243_sub11_sub11).anInt10783
		= class340.method6409(658586657 * (((Class243_Sub11_Sub11)
						    class243_sub11_sub11)
						   .anInt10783),
				      i_29_, (byte) -21) * -1872934943;
	    class243_sub11_sub11.method17274((byte) -26);
	} catch (Exception_Sub1 exception_sub1) {
	    Class14.method600(new StringBuilder().append("").append(i)
				  .toString(),
			      exception_sub1, 1310306040);
	}
    }
}
