/* Class87_Sub2 - Decompiled by JODE
 * Visit http://jode.sourceforge.net/
 */
import java.lang.reflect.Field;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.Iterator;

import jaclib.memory.DirectBufferHelper;
import jaclib.memory.Stream;
import jaclib.memory.heap.NativeHeap;
import jaclib.memory.heap.NativeHeapBuffer;

import sun.misc.Unsafe;

public abstract class Class87_Sub2 extends Class87
{
    Class276 aClass276_9126;
    Class625 aClass625_9127 = new Class625();
    static final int anInt9128 = 128;
    static final int anInt9129 = 1;
    protected float aFloat9130;
    int anInt9131;
    static final int anInt9132 = 8;
    int anInt9133;
    static final int anInt9134 = 7;
    protected static final int anInt9135 = 100663296;
    Class272 aClass272_9136;
    Class420 aClass420_9137;
    int[] anIntArray9138;
    public ByteBuffer aByteBuffer9139;
    public long aLong9140;
    Class350 aClass350_9141;
    Class65[] aClass65Array9142;
    Class353 aClass353_9143;
    NativeHeap aNativeHeap9144;
    protected float aFloat9145;
    public int anInt9146;
    protected int anInt9147;
    protected int anInt9148;
    protected int anInt9149;
    Class276 aClass276_9150;
    Class350 aClass350_9151;
    Class350 aClass350_9152;
    protected boolean aBool9153;
    public float aFloat9154;
    Class276 aClass276_9155;
    Class350 aClass350_9156;
    Class276 aClass276_9157;
    static Class276 aClass276_9158;
    Class373 aClass373_9159;
    static final int anInt9160 = 55;
    Class276 aClass276_9161;
    Class275 aClass275_9162;
    public boolean aBool9163;
    boolean aBool9164;
    Class393 aClass393_9165;
    boolean aBool9166;
    Class276 aClass276_9167;
    protected int anInt9168;
    protected int anInt9169;
    float aFloat9170;
    Class276 aClass276_9171;
    Class276 aClass276_9172;
    public Class276 aClass276_9173;
    Class276 aClass276_9174;
    protected boolean aBool9175;
    protected int anInt9176;
    Class367 aClass367_9177;
    protected boolean aBool9178;
    float aFloat9179;
    protected boolean aBool9180;
    float aFloat9181;
    protected float aFloat9182;
    float aFloat9183;
    protected boolean aBool9184;
    protected float aFloat9185;
    protected float aFloat9186;
    protected Class276 aClass276_9187;
    Class276 aClass276_9188;
    static final int anInt9189 = 4;
    protected int anInt9190;
    float aFloat9191;
    int anInt9192;
    public float aFloat9193;
    int anInt9194;
    protected int anInt9195;
    int anInt9196;
    protected int anInt9197;
    protected int anInt9198;
    public Unsafe anUnsafe9199;
    static final int anInt9200 = 2;
    protected boolean aBool9201;
    protected int anInt9202;
    protected boolean aBool9203;
    Class276 aClass276_9204;
    protected boolean aBool9205;
    protected Class391[] aClass391Array9206;
    public float[] aFloatArray9207;
    protected float[] aFloatArray9208;
    float[] aFloatArray9209;
    int anInt9210 = 4194304;
    int anInt9211;
    static Object anObject9212 = new Object();
    public float aFloat9213;
    public float aFloat9214;
    boolean aBool9215;
    boolean aBool9216;
    protected float aFloat9217;
    protected Class243_Sub42[] aClass243_Sub42Array9218;
    protected int anInt9219;
    protected int anInt9220;
    int anInt9221;
    protected boolean aBool9222;
    Interface40 anInterface40_9223;
    float aFloat9224;
    protected int anInt9225;
    Interface44[] anInterface44Array9226;
    public int anInt9227;
    protected Class366[] aClass366Array9228;
    protected Class391[] aClass391Array9229;
    public Class276 aClass276_9230;
    protected int anInt9231;
    Class380 aClass380_9232;
    public Interface40 anInterface40_9233;
    Class276 aClass276_9234;
    Class65 aClass65_9235;
    Class135_Sub1 aClass135_Sub1_9236;
    boolean aBool9237;
    Class313 aClass313_9238;
    Class383[] aClass383Array9239;
    float[] aFloatArray9240;
    Class69 aClass69_9241;
    Class371 aClass371_9242;
    int anInt9243;
    protected float aFloat9244;
    Class65_Sub1_Sub1 aClass65_Sub1_Sub1_9245;
    Class65_Sub1_Sub1 aClass65_Sub1_Sub1_9246;
    Class65_Sub1_Sub2 aClass65_Sub1_Sub2_9247;
    Class392 aClass392_9248;
    static final int anInt9249 = 1;
    static final int anInt9250 = 2;
    static final int anInt9251 = 3;
    static final int anInt9252 = 4;
    protected int anInt9253;
    Class103_Sub1 aClass103_Sub1_9254;
    protected int anInt9255;
    Class135_Sub1 aClass135_Sub1_9256;
    int anInt9257;
    Class105 aClass105_9258;
    Class367 aClass367_9259;
    protected boolean aBool9260;
    int anInt9261;
    Class64 aClass64_9262;
    protected int anInt9263;
    protected float aFloat9264;
    protected Class276[] aClass276Array9265;
    int anInt9266;
    protected Class375 aClass375_9267;
    Class350 aClass350_9268;
    protected boolean aBool9269;
    public int anInt9270;
    public int anInt9271;
    protected int anInt9272;
    boolean aBool9273;
    Class387 aClass387_9274;
    int anInt9275;
    public int anInt9276;
    protected int anInt9277;
    public boolean aBool9278;
    protected boolean aBool9279;
    int anInt9280;
    protected boolean aBool9281;
    protected boolean aBool9282;
    Interface36 anInterface36_9283;
    Interface36 anInterface36_9284;
    Interface36 anInterface36_9285;
    Class367 aClass367_9286;
    Class367 aClass367_9287;
    Class367 aClass367_9288;
    public Class276 aClass276_9289;
    Class367 aClass367_9290;
    float[][] aFloatArrayArray9291;
    Interface31 anInterface31_9292;
    Class86_Sub1[] aClass86_Sub1Array9293;
    Class86_Sub1[] aClass86_Sub1Array9294;
    float[] aFloatArray9295;
    Class350 aClass350_9296;
    boolean aBool9297;
    protected boolean aBool9298;
    
    public final void method2434(boolean bool) {
	aBool9201 = bool;
	method15360();
    }
    
    public final void method2104(Class350 class350) {
	((Class87_Sub2) this).aClass350_9151 = class350;
	aClass276_9230.method5513(((Class87_Sub2) this).aClass350_9151);
	((Class87_Sub2) this).aClass276_9204.method5455(aClass276_9230);
	((Class87_Sub2) this).aClass276_9204.method5545();
	((Class87_Sub2) this).aClass350_9152.method6638(class350);
	((Class87_Sub2) this).aClass350_9152.method6624();
	((Class87_Sub2) this).aClass276_9155
	    .method5513(((Class87_Sub2) this).aClass350_9152);
	method15343();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15565();
    }
    
    void method15299() {
	ArrayList arraylist
	    = ((Class87_Sub2) this).aClass625_9127.method13470(-511581821);
	Iterator iterator = arraylist.iterator();
	while (iterator.hasNext()) {
	    Interface37 interface37 = (Interface37) iterator.next();
	    interface37.method23();
	}
    }
    
    void method15300() {
	((Class87_Sub2) this).aClass392_9248.method7186();
	for (int i = 0; i < ((Class87_Sub2) this).aClass383Array9239.length;
	     i++) {
	    if (((Class87_Sub2) this).aClass383Array9239[i] != null
		&& ((Class87_Sub2) this).aClass383Array9239[i].method7055())
		((Class87_Sub2) this).aClass383Array9239[i].method7047();
	}
	((Class87_Sub2) this).aClass387_9274 = new Class387(this);
	method15314();
	method15585();
	method15315();
	((Class87_Sub2) this).aClass387_9274.method7115(this);
	((Class87_Sub2) this).aClass313_9238 = new Class313(this, 1024);
    }
    
    public abstract boolean method15301();
    
    final boolean method15302() {
	return aBool9153;
    }
    
    public abstract Class37 method15303(String string);
    
    byte[] method15304(String string, String string_0_) {
	return ((Class87_Sub2) this).aClass272_9136
		   .method5316(string, string_0_, 401294753);
    }
    
    Class45 method15305(byte[] is) {
	if (is == null)
	    return null;
	Class45 class45;
	try {
	    class45 = new Class45(is);
	} catch (Exception exception) {
	    return null;
	}
	return class45;
    }
    
    public abstract void method15306(Class276 class276, Class276 class276_1_,
				     Class276 class276_2_);
    
    public static void method15307() throws Exception_Sub4 {
	Class437.method7817(2111567472).method105("jaclib", 2089812931);
    }
    
    final void method15308() {
	method15392();
    }
    
    public final void method15309() {
	((Class87_Sub2) this).anInterface44Array9226
	    = new Interface44[anInt9276];
	aClass276Array9265 = new Class276[anInt9276];
	aClass366Array9228 = new Class366[anInt9276];
	aClass391Array9229 = new Class391[anInt9276];
	aClass391Array9206 = new Class391[anInt9276];
	for (int i = 0; i < anInt9276; i++) {
	    aClass391Array9206[i] = Class391.aClass391_5686;
	    aClass391Array9229[i] = Class391.aClass391_5686;
	    aClass366Array9228[i] = Class366.aClass366_5527;
	    aClass276Array9265[i] = new Class276();
	}
	aClass243_Sub42Array9218 = new Class243_Sub42[anInt9277 - 2];
	int[] is = { -1 };
	anInterface40_9233 = method15376(1, 1, false, is, 0, 0);
	is[0] = -16777216;
	((Class87_Sub2) this).anInterface40_9223
	    = method15376(1, 1, false, is, 0, 0);
	method2316(new Class243_Sub30_Sub2(262144));
	((Class87_Sub2) this).aClass367_9290
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5598 }) });
	((Class87_Sub2) this).aClass367_9177
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5604 }) });
	((Class87_Sub2) this).aClass367_9259
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607),
			    new Class378(Class379.aClass379_5604),
			    new Class378(Class379.aClass379_5598),
			    new Class378(Class379.aClass379_5595) });
	((Class87_Sub2) this).aClass367_9288
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607),
			    new Class378(Class379.aClass379_5604),
			    new Class378(Class379.aClass379_5598) });
	for (int i = 0; i < 7; i++) {
	    ((Class87_Sub2) this).aClass86_Sub1Array9293[i]
		= new Class86_Sub1(this, 0, 0, false, false);
	    ((Class87_Sub2) this).aClass86_Sub1Array9294[i]
		= new Class86_Sub1(this, 0, 0, true, true);
	}
	method15310();
	((Class87_Sub2) this).anInterface31_9292 = method15408(true);
	method15598();
	method2163();
	method2112();
	method2108();
	((Class87_Sub2) this).aClass135_Sub1_9256
	    = new Class135_Sub1(this, anInterface40_9233);
	((Class87_Sub2) this).aClass135_Sub1_9236
	    = new Class135_Sub1(this,
				((Class87_Sub2) this).anInterface40_9223);
	method2117(3, 0);
    }
    
    final void method15310() {
	((Class87_Sub2) this).aClass353_9143 = new Class353(this);
	aBool9153 = false;
	try {
	    ((Class87_Sub2) this).aClass69_9241 = new Class69_Sub2(this);
	    ((Class87_Sub2) this).aClass371_9242 = new Class371_Sub2(this);
	    ((Class87_Sub2) this).aClass64_9262 = new Class64_Sub2(this);
	    ((Class87_Sub2) this).aClass373_9159 = new Class373_Sub1(this);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9245
		= new Class65_Sub1_Sub1(this,
					((Class87_Sub2) this).aClass353_9143,
					false);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9246
		= new Class65_Sub1_Sub1(this,
					((Class87_Sub2) this).aClass353_9143,
					true);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub2_9247
		= new Class65_Sub1_Sub2(this,
					((Class87_Sub2) this).aClass353_9143);
	} catch (Exception exception) {
	    exception.printStackTrace();
	    ((Class87_Sub2) this).aClass69_9241 = new Class69_Sub1(this);
	    ((Class87_Sub2) this).aClass371_9242 = new Class371_Sub1(this);
	    ((Class87_Sub2) this).aClass64_9262 = new Class64_Sub1(this);
	    ((Class87_Sub2) this).aClass373_9159 = new Class373_Sub2(this);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9245 = null;
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9246 = null;
	    ((Class87_Sub2) this).aClass65_Sub1_Sub2_9247 = null;
	    aBool9153 = true;
	}
	int i;
	int i_3_;
	if (aClass169_993 != null) {
	    i_3_ = aClass169_993.method3826();
	    i = aClass169_993.method3836();
	} else {
	    i = 0;
	    i_3_ = 0;
	}
	((Class87_Sub2) this).aClass392_9248 = new Class392(this, i_3_, i);
	if (!aBool9153) {
	    ((Class87_Sub2) this).aClass383Array9239[3]
		= new Class383_Sub1(this);
	    ((Class87_Sub2) this).aClass383Array9239[1]
		= new Class383_Sub2(this);
	    ((Class87_Sub2) this).aClass383Array9239[2]
		= new Class383_Sub3(this);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[3]);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[1]);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[2]);
	    method15326();
	    method15328();
	}
	if (((Class87_Sub2) this).aClass65_9235 != null) {
	    ((Class87_Sub2) this).aClass65_9235.method1511();
	    ((Class87_Sub2) this).aClass65_9235 = null;
	}
	method15313();
    }
    
    public final Class135 method2289(Class102 class102, boolean bool) {
	Class135 class135;
	if (class102.method2740() != 0 && class102.method2715() != 0) {
	    int[] is = class102.method2729(false);
	    class135 = method2145(is, 0, class102.method2740(),
				  class102.method2740(), class102.method2715(),
				  -1484541005);
	} else
	    class135 = method2145(new int[] { 0 }, 0, 1, 1, 1, 1926843879);
	class135.method3344(class102.method2716(), class102.method2773(),
			    class102.method2732(), class102.method2719());
	return class135;
    }
    
    final void method15311() {
	method15364();
	method15365();
	method15615();
	method15369();
	method15366();
	method15367();
	method15450();
	method15568();
	method15360();
	method15406();
	method15405();
	method15318();
	method15401();
	method15433();
	for (int i = anInt9276 - 1; i >= 0; i--) {
	    method15623(i);
	    method15394();
	    method15397();
	    method15390();
	}
	method15391();
	method15338();
    }
    
    public abstract void method15312(Class367 class367);
    
    void method15313() {
	((Class87_Sub2) this).aClass392_9248.method7186();
	for (int i = 0; i < ((Class87_Sub2) this).aClass383Array9239.length;
	     i++) {
	    if (((Class87_Sub2) this).aClass383Array9239[i] != null
		&& ((Class87_Sub2) this).aClass383Array9239[i].method7055())
		((Class87_Sub2) this).aClass383Array9239[i].method7047();
	}
	((Class87_Sub2) this).aClass387_9274 = new Class387(this);
	method15314();
	method15585();
	method15315();
	((Class87_Sub2) this).aClass387_9274.method7115(this);
	((Class87_Sub2) this).aClass313_9238 = new Class313(this, 1024);
    }
    
    final void method15314() {
	((Class87_Sub2) this).anInterface36_9284 = method15436(false);
	int i = 160;
	((Class87_Sub2) this).anInterface36_9284.method226(i, 32);
	aByteBuffer9139.clear();
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	((Class87_Sub2) this).anInterface36_9284
	    .method228(0, aByteBuffer9139.position(), aLong9140);
	((Class87_Sub2) this).aClass367_9287
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5604,
					   Class379.aClass379_5598,
					   Class379.aClass379_5598 }) });
    }
    
    public void method2270(int i, int i_4_, int i_5_, int i_6_, int i_7_,
			   int i_8_, Class171 class171, int i_9_, int i_10_,
			   int i_11_, int i_12_, int i_13_) {
	/* empty */
    }
    
    final void method15315() {
	((Class87_Sub2) this).anInterface36_9285 = method15436(false);
	((Class87_Sub2) this).anInterface36_9285.method226(3096, 12);
	aByteBuffer9139.clear();
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	for (int i = 0; i <= 256; i++) {
	    double d = (double) (i * 2) * 3.141592653589793 / 256.0;
	    float f = (float) Math.cos(d);
	    float f_14_ = (float) Math.sin(d);
	    aByteBuffer9139.putFloat(f_14_);
	    aByteBuffer9139.putFloat(f);
	    aByteBuffer9139.putFloat(0.0F);
	}
	((Class87_Sub2) this).anInterface36_9285
	    .method228(0, aByteBuffer9139.position(), aLong9140);
    }
    
    boolean method15316(float f, float f_15_, float f_16_, float f_17_,
			float f_18_, float f_19_) {
	aByteBuffer9139.clear();
	aByteBuffer9139.putFloat(f);
	aByteBuffer9139.putFloat(f_15_);
	aByteBuffer9139.putFloat(f_16_);
	aByteBuffer9139.putFloat(f_17_);
	aByteBuffer9139.putFloat(f_18_);
	aByteBuffer9139.putFloat(f_19_);
	return ((Class87_Sub2) this).anInterface36_9283
		   .method228(0, aByteBuffer9139.position(), aLong9140);
    }
    
    abstract Interface45 method15317(Class173 class173, Class90 class90, int i,
				     int i_20_);
    
    public final void method2353(Class103 class103) {
	((Class87_Sub2) this).aClass103_Sub1_9254 = (Class103_Sub1) class103;
    }
    
    public final boolean method2178() {
	return true;
    }
    
    abstract void method15318();
    
    public final void method2265(int i, int i_21_, int i_22_, int i_23_,
				 int i_24_, int i_25_) {
	method2135(i, i_21_, i_22_, i_23_, i_24_, 1, i_25_);
    }
    
    public final boolean method2088() {
	return true;
    }
    
    public final boolean method2086() {
	return true;
    }
    
    public final boolean method2090() {
	return true;
    }
    
    public final boolean method2091() {
	return true;
    }
    
    public final boolean method2092() {
	return false;
    }
    
    public final boolean method2089() {
	return aBool9281;
    }
    
    final void method15319() {
	((Class87_Sub2) this).anInterface36_9284 = method15436(false);
	int i = 160;
	((Class87_Sub2) this).anInterface36_9284.method226(i, 32);
	aByteBuffer9139.clear();
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	((Class87_Sub2) this).anInterface36_9284
	    .method228(0, aByteBuffer9139.position(), aLong9140);
	((Class87_Sub2) this).aClass367_9287
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5604,
					   Class379.aClass379_5598,
					   Class379.aClass379_5598 }) });
    }
    
    public void method2252() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6136();
    }
    
    Class363 method15320() {
	if (((Class87_Sub2) this).aClass313_9238 == null)
	    return Class363.aClass363_5517;
	return ((Class87_Sub2) this).aClass313_9238.method6134();
    }
    
    abstract Interface40 method15321(int i, int i_26_, boolean bool, int[] is,
				     int i_27_, int i_28_);
    
    public final void method2208(int i, int i_29_, int i_30_, int i_31_,
				 int i_32_, int i_33_) {
	i_30_--;
	i_31_--;
	int i_34_ = 0;
	if (this instanceof Class87_Sub2_Sub2)
	    i_34_ = -1;
	method2131(i, i_29_ + i_34_, i + i_30_, i_29_ + i_34_, i_32_, i_33_);
	method2131(i, i_29_ + i_31_ + i_34_, i + i_30_, i_29_ + i_31_ + i_34_,
		   i_32_, i_33_);
	method2131(i, i_29_, i, i_29_ + i_31_, i_32_, i_33_);
	method2131(i + i_30_, i_29_, i + i_30_, i_29_ + i_31_, i_32_, i_33_);
    }
    
    public void method2150() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6144();
    }
    
    void method15322() {
	method15323();
    }
    
    void method15323() {
	method15353();
	method15355();
	method15351();
	method2331();
	method2112();
    }
    
    public abstract void method15324(Class311 class311, int i, int i_35_);
    
    public final void method2179() {
	((Class87_Sub2) this).aClass392_9248.method7171();
    }
    
    final void method15325() {
	if (!((Class87_Sub2) this).aBool9297)
	    ((Class87_Sub2) this).aBool9297 = true;
    }
    
    boolean method15326() {
	if (((Class87_Sub2) this).aClass383Array9239[1] != null
	    && !((Class87_Sub2) this).aClass383Array9239[1].method7055()) {
	    boolean bool
		= ((Class87_Sub2) this).aClass392_9248
		      .method7165(((Class87_Sub2) this).aClass383Array9239[1]);
	    if (bool)
		((Class87_Sub2) this).aClass380_9232.method7028();
	    return bool;
	}
	return false;
    }
    
    public void method2168(float f, float f_36_, float f_37_, float f_38_,
			   float f_39_) {
	Class383_Sub2.aFloat10118 = f;
	Class383_Sub2.aFloat10119 = f_36_;
	Class383_Sub2.aFloat10120 = f_37_;
	Class383_Sub2.aFloat10121 = f_38_;
	Class383_Sub2.aFloat10111 = f_39_;
    }
    
    abstract boolean method15327(Class173 class173, Class90 class90);
    
    public void method2134(int i, int i_40_, int i_41_, int i_42_, int i_43_,
			   int i_44_, Class171 class171, int i_45_, int i_46_,
			   int i_47_, int i_48_, int i_49_) {
	/* empty */
    }
    
    boolean method15328() {
	if (((Class87_Sub2) this).aClass383Array9239[2] != null
	    && !((Class87_Sub2) this).aClass383Array9239[2].method7055()) {
	    boolean bool
		= ((Class87_Sub2) this).aClass392_9248
		      .method7165(((Class87_Sub2) this).aClass383Array9239[2]);
	    if (bool)
		((Class87_Sub2) this).aClass380_9232.method7028();
	    return bool;
	}
	return false;
    }
    
    public boolean method2184() {
	return (((Class87_Sub2) this).aClass383Array9239[2] != null
		&& ((Class87_Sub2) this).aClass383Array9239[2].method7055());
    }
    
    public void method2185(Class167 class167, float f, Class167 class167_50_,
			   float f_51_, Class167 class167_52_, float f_53_) {
	int i = 0;
	Class383_Sub3.aClass167_Sub1Array10138[0] = (Class167_Sub1) class167;
	Class383_Sub3.aFloatArray10146[0] = f;
	if (f > 0.0F)
	    i++;
	Class383_Sub3.aClass167_Sub1Array10138[1]
	    = (Class167_Sub1) class167_50_;
	Class383_Sub3.aFloatArray10146[1] = f_51_;
	if (f_51_ > 0.0F)
	    i++;
	Class383_Sub3.aClass167_Sub1Array10138[2]
	    = (Class167_Sub1) class167_52_;
	Class383_Sub3.aFloatArray10146[2] = f_53_;
	if (f_53_ > 0.0F)
	    i++;
	Class383_Sub3.anInt10136 = i;
	Class383_Sub3.aFloat10137 = 1.0F - (f + f_51_ + f_53_);
    }
    
    final Interface40 method15329(Class173 class173, int i, int i_54_,
				  boolean bool, byte[] is) {
	return method15442(class173, i, i_54_, bool, is, 0, 0);
    }
    
    public final void method2187() {
	if (((Class87_Sub2) this).aClass383Array9239[3] != null
	    && ((Class87_Sub2) this).aClass383Array9239[3].method7055()) {
	    ((Class87_Sub2) this).aClass392_9248
		.method7182(((Class87_Sub2) this).aClass383Array9239[3]);
	    ((Class87_Sub2) this).aClass380_9232.method7028();
	}
    }
    
    public final Class276 method2275() {
	return ((Class87_Sub2) this).aClass276_9126;
    }
    
    public int method2470(int i, int i_55_, int i_56_, int i_57_, int i_58_,
			  int i_59_) {
	int i_60_ = 0;
	float f = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2]
		      * (float) i)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		      * (float) i_55_)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		      * (float) i_56_));
	float f_61_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2]
		  * (float) i_57_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		  * (float) i_58_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		  * (float) i_59_));
	float f_62_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * (float) i_55_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * (float) i_56_));
	float f_63_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3]
		  * (float) i_57_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * (float) i_58_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * (float) i_59_));
	if (f < -f_62_ && f_61_ < -f_63_)
	    i_60_ |= 0x10;
	else if (f > f_62_ && f_61_ > f_63_)
	    i_60_ |= 0x20;
	float f_64_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * (float) i_55_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * (float) i_56_));
	float f_65_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		  * (float) i_57_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * (float) i_58_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * (float) i_59_));
	if (f_64_ < -f_62_ && f_65_ < -f_63_)
	    i_60_ |= 0x1;
	if (f_64_ > f_62_ && f_65_ > f_63_)
	    i_60_ |= 0x2;
	float f_66_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * (float) i_55_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * (float) i_56_));
	float f_67_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1]
		  * (float) i_57_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * (float) i_58_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * (float) i_59_));
	if (f_66_ < -f_62_ && f_67_ < -f_63_)
	    i_60_ |= 0x4;
	if (f_66_ > f_62_ && f_67_ > f_63_)
	    i_60_ |= 0x8;
	return i_60_;
    }
    
    public final Class243_Sub30 method2140(int i) {
	Class243_Sub30_Sub2 class243_sub30_sub2 = new Class243_Sub30_Sub2(i);
	((Class87_Sub2) this).aClass420_9137.method7495(class243_sub30_sub2,
							900996056);
	return class243_sub30_sub2;
    }
    
    public final void method2316(Class243_Sub30 class243_sub30) {
	((Class87_Sub2) this).aNativeHeap9144
	    = (((Class243_Sub30_Sub2) (Class243_Sub30_Sub2) class243_sub30)
	       .aNativeHeap10955);
    }
    
    void method15330() {
	((Class87_Sub2) this).aClass392_9248.method7161();
	((Class87_Sub2) this).anInterface36_9284.method23();
	((Class87_Sub2) this).anInterface36_9283.method23();
	((Class87_Sub2) this).anInterface36_9285.method23();
	for (int i = 0; i < 7; i++)
	    ((Class87_Sub2) this).aClass86_Sub1Array9294[i].method15211();
	((Class87_Sub2) this).aClass387_9274.method7119();
	((Class87_Sub2) this).anInterface31_9292.method23();
	((Class87_Sub2) this).aClass313_9238.method6133();
	((Class87_Sub2) this).aClass313_9238 = null;
    }
    
    final Interface31 method15331(int i) {
	if (((Class87_Sub2) this).anInterface31_9292.method25() < i * 2)
	    ((Class87_Sub2) this).anInterface31_9292.method194(i);
	return ((Class87_Sub2) this).anInterface31_9292;
    }
    
    public abstract void method15332(Class276 class276, Class276 class276_68_,
				     Class276 class276_69_);
    
    public final Class135 method2143(int i, int i_70_, boolean bool,
				     boolean bool_71_) {
	return new Class135_Sub1(this, i, i_70_, bool, bool_71_);
    }
    
    public final Class135 method2232(Class102 class102, boolean bool) {
	Class135 class135;
	if (class102.method2740() != 0 && class102.method2715() != 0) {
	    int[] is = class102.method2729(false);
	    class135 = method2145(is, 0, class102.method2740(),
				  class102.method2740(), class102.method2715(),
				  -1216767452);
	} else
	    class135 = method2145(new int[] { 0 }, 0, 1, 1, 1, 921588763);
	class135.method3344(class102.method2716(), class102.method2773(),
			    class102.method2732(), class102.method2719());
	return class135;
    }
    
    public final Class135 method2144(int[] is, int i, int i_72_, int i_73_,
				     int i_74_, boolean bool) {
	return new Class135_Sub1(this, i_73_, i_74_, is, i, i_72_);
    }
    
    public final Class135 method2147(int i, int i_75_, int i_76_, int i_77_,
				     boolean bool) {
	Class135_Sub1 class135_sub1
	    = new Class135_Sub1(this, i_76_, i_77_, bool, false);
	class135_sub1.method3350(0, 0, i_76_, i_77_, i, i_75_);
	return class135_sub1;
    }
    
    public final Class99 method2217
	(Class622 class622, Class102_Sub1[] class102_sub1s, boolean bool) {
	return new Class99_Sub5(this, class622, class102_sub1s, bool);
    }
    
    public final Class171 method2151(int i, int i_78_, int[] is,
				     int[] is_79_) {
	return Class171_Sub2.method15846(this, i, i_78_, is, is_79_);
    }
    
    public final void method2120(int i) {
	/* empty */
    }
    
    final void method15333() {
	if (((Class87_Sub2) this).anInt9243 != 8) {
	    method15597();
	    method15438(true);
	    method15358(true);
	    method15554(true);
	    method15674(1);
	    ((Class87_Sub2) this).anInt9243 = 8;
	}
    }
    
    public void method2210(float f, float f_80_, float f_81_, float[] fs) {
	float f_82_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * f_80_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * f_81_));
	float f_83_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * f_80_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * f_81_));
	float f_84_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * f_80_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * f_81_));
	float f_85_ = (aClass276_9230.aFloatArray4141[14]
		       + aClass276_9230.aFloatArray4141[2] * f
		       + aClass276_9230.aFloatArray4141[6] * f_80_
		       + aClass276_9230.aFloatArray4141[10] * f_81_);
	fs[0] = (((Class87_Sub2) this).aFloat9191
		 + ((Class87_Sub2) this).aFloat9170 * f_83_ / f_82_);
	fs[1] = (((Class87_Sub2) this).aFloat9179
		 + ((Class87_Sub2) this).aFloat9224 * f_84_ / f_82_);
	fs[2] = f_85_;
    }
    
    public final int method2159(int i, int i_86_) {
	return i | i_86_;
    }
    
    abstract void method15334();
    
    public final boolean method2359() {
	return ((Class392) ((Class87_Sub2) this).aClass392_9248).aBool5692;
    }
    
    public final Class350 method2155() {
	return ((Class87_Sub2) this).aClass350_9296;
    }
    
    public final boolean method2221() {
	return aBool9281;
    }
    
    public final void method2177(Class103 class103) {
	((Class87_Sub2) this).aClass103_Sub1_9254 = (Class103_Sub1) class103;
    }
    
    public void method2279(Class350 class350, Class97 class97,
			   Class346 class346) {
	Class276 class276 = aClass276_9187;
	class276.method5513(class350);
	class276.method5537(((Class87_Sub2) this).aClass276_9174);
	class97.method2544(class346, ((Class87_Sub2) this).aClass276_9234,
			   class276, ((Class87_Sub2) this).aFloat9191,
			   ((Class87_Sub2) this).aFloat9179,
			   ((Class87_Sub2) this).aFloat9170,
			   ((Class87_Sub2) this).aFloat9224);
    }
    
    final Class276 method15335() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    return aClass276_9230;
	return aClass276_9158;
    }
    
    public void method2110(int i, int i_87_, int i_88_, int i_89_) {
	((Class87_Sub2) this).anInt9280 = i;
	((Class87_Sub2) this).anInt9192 = i_87_;
	((Class87_Sub2) this).anInt9261 = i_88_;
	((Class87_Sub2) this).anInt9194 = i_89_;
	method15522();
    }
    
    final void method15336() {
	method15392();
    }
    
    public void method2419(int i) {
	if (((Class87_Sub2) this).aClass380_9232 != null)
	    ((Class87_Sub2) this).aClass380_9232.method7029();
	anInt9271 = i & 0x7fffffff;
    }
    
    public final void method2116(int[] is) {
	is[0] = anInt9176;
	is[1] = anInt9253;
	is[2] = anInt9190;
	is[3] = anInt9202;
    }
    
    public final void method2112() {
	if (aClass169_993 != null) {
	    anInt9253 = 0;
	    anInt9176 = 0;
	    anInt9190 = aClass169_993.method3826();
	    anInt9202 = aClass169_993.method3836();
	} else {
	    anInt9202 = 0;
	    anInt9190 = 0;
	    anInt9253 = 0;
	    anInt9176 = 0;
	}
	if (aBool9175) {
	    aBool9175 = false;
	    method15340();
	}
    }
    
    public final void method2113(int i, int i_90_, int i_91_, int i_92_) {
	int i_93_;
	int i_94_;
	if (aClass169_993 != null) {
	    i_94_ = aClass169_993.method3826();
	    i_93_ = aClass169_993.method3836();
	} else {
	    i_93_ = 0;
	    i_94_ = 0;
	}
	if (i <= 0 && i_91_ >= i_94_ - 1 && i_90_ <= 0 && i_92_ >= i_93_ - 1)
	    method2112();
	else {
	    anInt9176 = i >= 0 ? i : 0;
	    anInt9190 = i_91_ <= i_94_ ? i_91_ : i_94_;
	    anInt9253 = i_90_ >= 0 ? i_90_ : 0;
	    anInt9202 = i_92_ <= i_93_ ? i_92_ : i_93_;
	    if (!aBool9175 && (((Class87_Sub2) this).aBool9237
			       || method15320() == Class363.aClass363_5517)) {
		aBool9175 = true;
		method15340();
	    }
	    method15339();
	}
    }
    
    abstract Interface40 method15337(Class173 class173, Class90 class90, int i,
				     int i_95_);
    
    public void method2133(int i, int i_96_, int i_97_, int i_98_, int i_99_,
			   int i_100_, int i_101_, int i_102_, int i_103_) {
	float f = (float) i_97_ - (float) i;
	float f_104_ = (float) i_98_ - (float) i_96_;
	if (f == 0.0F && f_104_ == 0.0F)
	    f = 1.0F;
	else {
	    float f_105_
		= (float) (1.0
			   / Math.sqrt((double) (f * f + f_104_ * f_104_)));
	    f *= f_105_;
	    f_104_ *= f_105_;
	}
	method15352();
	Class65 class65 = ((Class87_Sub2) this).aClass65Array9142[13];
	class65.method1526();
	class65.method1512(i_99_);
	method15674(i_100_);
	class65.method1516();
	method15461(false);
	i_103_ %= i_102_ + i_101_;
	float f_106_ = f * (float) i_101_;
	float f_107_ = f_104_ * (float) i_101_;
	float f_108_ = 0.0F;
	float f_109_ = 0.0F;
	float f_110_ = f_106_;
	float f_111_ = f_107_;
	if (i_103_ > i_101_) {
	    f_108_ = f * (float) (i_101_ + i_102_ - i_103_);
	    f_109_ = f_104_ * (float) (i_101_ + i_102_ - i_103_);
	} else {
	    f_110_ = f * (float) (i_101_ - i_103_);
	    f_111_ = f_104_ * (float) (i_101_ - i_103_);
	}
	float f_112_ = (float) i + f_108_;
	float f_113_ = (float) i_96_ + f_109_;
	float f_114_ = f * (float) i_102_;
	float f_115_ = f_104_ * (float) i_102_;
	for (;;) {
	    if (i_97_ > i) {
		if (f_112_ > (float) i_97_)
		    break;
		if (f_112_ + f_110_ > (float) i_97_)
		    f_110_ = (float) i_97_ - f_112_;
	    } else {
		if (f_112_ < (float) i_97_)
		    break;
		if (f_112_ + f_110_ < (float) i_97_)
		    f_110_ = (float) i_97_ - f_112_;
	    }
	    if (i_98_ > i_96_) {
		if (f_113_ > (float) i_98_)
		    break;
		if (f_113_ + f_111_ > (float) i_98_)
		    f_111_ = (float) i_98_ - f_113_;
	    } else {
		if (f_113_ < (float) i_98_)
		    break;
		if (f_113_ + f_111_ < (float) i_98_)
		    f_111_ = (float) i_98_ - f_113_;
	    }
	    if (!method15316(f_112_, f_113_, 0.0F, f_112_ + f_110_,
			     f_113_ + f_111_, 0.0F))
		return;
	    method15447();
	    f_112_ += f_114_ + f_110_;
	    f_113_ += f_115_ + f_111_;
	    f_110_ = f_106_;
	    f_111_ = f_107_;
	}
	method15461(true);
	class65.method1511();
    }
    
    public void method2115(boolean bool) {
	((Class87_Sub2) this).aBool9237 = bool;
    }
    
    abstract void method15338();
    
    abstract void method15339();
    
    abstract void method15340();
    
    final Class276 method15341() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    return aClass276_9230;
	return aClass276_9158;
    }
    
    final Class276 method15342() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    return ((Class87_Sub2) this).aClass276_9155;
	return aClass276_9158;
    }
    
    public final void method2320(Class350 class350) {
	((Class87_Sub2) this).aClass350_9151 = class350;
	aClass276_9230.method5513(((Class87_Sub2) this).aClass350_9151);
	((Class87_Sub2) this).aClass276_9204.method5455(aClass276_9230);
	((Class87_Sub2) this).aClass276_9204.method5545();
	((Class87_Sub2) this).aClass350_9152.method6638(class350);
	((Class87_Sub2) this).aClass350_9152.method6624();
	((Class87_Sub2) this).aClass276_9155
	    .method5513(((Class87_Sub2) this).aClass350_9152);
	method15343();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15565();
    }
    
    public Class350 method2257() {
	return ((Class87_Sub2) this).aClass350_9151;
    }
    
    public final void method2166(Class276 class276) {
	((Class87_Sub2) this).aClass276_9234.method5455(class276);
	method15343();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15435();
    }
    
    final void method15343() {
	((Class87_Sub2) this).aClass276_9174.method5455(aClass276_9230);
	((Class87_Sub2) this).aClass276_9174
	    .method5537(((Class87_Sub2) this).aClass276_9234);
	((Class87_Sub2) this).aClass276_9174
	    .method5515(((Class87_Sub2) this).aFloatArrayArray9291[0]);
	((Class87_Sub2) this).aClass276_9174
	    .method5479(((Class87_Sub2) this).aFloatArrayArray9291[1]);
	((Class87_Sub2) this).aClass276_9174
	    .method5474(((Class87_Sub2) this).aFloatArrayArray9291[2]);
	((Class87_Sub2) this).aClass276_9174
	    .method5475(((Class87_Sub2) this).aFloatArrayArray9291[3]);
	((Class87_Sub2) this).aClass276_9174
	    .method5549(((Class87_Sub2) this).aFloatArrayArray9291[4]);
	((Class87_Sub2) this).aClass276_9174
	    .method5569(((Class87_Sub2) this).aFloatArrayArray9291[5]);
	aClass276_9289.method5455(((Class87_Sub2) this).aClass276_9174);
	method15350(aClass276_9289);
    }
    
    public final Class276 method2167() {
	return ((Class87_Sub2) this).aClass276_9234;
    }
    
    final void method15344() {
	if (((Class87_Sub2) this).aClass65_9235 != null)
	    ((Class87_Sub2) this).aClass65_9235.method1514();
	method15405();
    }
    
    Class276 method15345() {
	return ((Class87_Sub2) this).aClass276_9150;
    }
    
    Class350 method15346() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164) {
		((Class87_Sub2) this).aClass350_9156
		    .method6638(((Class87_Sub2) this).aClass350_9141);
		((Class87_Sub2) this).aClass350_9156
		    .method6606(((Class87_Sub2) this).aClass350_9151);
		((Class87_Sub2) this).aClass276_9157
		    .method5513(((Class87_Sub2) this).aClass350_9156);
		((Class87_Sub2) this).aBool9164 = true;
	    }
	    return ((Class87_Sub2) this).aClass350_9156;
	}
	return ((Class87_Sub2) this).aClass350_9141;
    }
    
    Class276 method15347() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164)
		method15346();
	    return ((Class87_Sub2) this).aClass276_9157;
	}
	return ((Class87_Sub2) this).aClass276_9150;
    }
    
    final Class276 method15348() {
	return aClass276_9289;
    }
    
    abstract void method15349();
    
    public abstract void method15350(Class276 class276);
    
    final void method15351() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5714) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5714;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9171;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    final void method15352() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5713) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5713;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    method15356();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9167;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0x8;
	}
    }
    
    final void method15353() {
	((Class87_Sub2) this).aBool9166 = false;
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5713) {
	    method15356();
	    method15435();
	}
    }
    
    public final void method15354(Interface44 interface44) {
	if (((Class87_Sub2) this).anInterface44Array9226[anInt9225]
	    != interface44) {
	    ((Class87_Sub2) this).anInterface44Array9226[anInt9225]
		= interface44;
	    if (interface44 != null)
		interface44.method319();
	    else
		anInterface40_9233.method319();
	    ((Class87_Sub2) this).anInt9243 &= ~0x1;
	}
    }
    
    final void method15355() {
	((Class87_Sub2) this).aBool9297 = false;
	method15357();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15435();
    }
    
    final void method15356() {
	if (!((Class87_Sub2) this).aBool9166) {
	    int i;
	    int i_116_;
	    if (aClass169_993 != null) {
		i_116_ = aClass169_993.method3826();
		i = aClass169_993.method3836();
	    } else {
		i = 0;
		i_116_ = 0;
	    }
	    Class276 class276 = ((Class87_Sub2) this).aClass276_9167;
	    if (i_116_ != 0 && i != 0)
		class276.method5466(0.0F, (float) i_116_, 0.0F, (float) i,
				    -1.0F, 1.0F);
	    else
		class276.method5472();
	    ((Class87_Sub2) this).aClass276_9188.method5455(class276);
	    method15350(((Class87_Sub2) this).aClass276_9188);
	    ((Class87_Sub2) this).aBool9166 = true;
	}
    }
    
    final void method15357() {
	if (!((Class87_Sub2) this).aBool9297)
	    ((Class87_Sub2) this).aBool9297 = true;
    }
    
    public final boolean method2219() {
	return true;
    }
    
    public final void method2391(int[] is) {
	is[0] = anInt9176;
	is[1] = anInt9253;
	is[2] = anInt9190;
	is[3] = anInt9202;
    }
    
    final void method15358(boolean bool) {
	if (bool != aBool9203) {
	    aBool9203 = bool;
	    method15568();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    public final void method2356(Class103 class103) {
	((Class87_Sub2) this).aClass103_Sub1_9254 = (Class103_Sub1) class103;
    }
    
    abstract void method15359();
    
    abstract void method15360();
    
    public void method2460(float f, float f_117_, float f_118_, float[] fs) {
	float f_119_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * f_117_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * f_118_));
	float f_120_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * f_117_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * f_118_));
	float f_121_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * f_117_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * f_118_));
	float f_122_ = (aClass276_9230.aFloatArray4141[14]
			+ aClass276_9230.aFloatArray4141[2] * f
			+ aClass276_9230.aFloatArray4141[6] * f_117_
			+ aClass276_9230.aFloatArray4141[10] * f_118_);
	fs[0] = (((Class87_Sub2) this).aFloat9191
		 + ((Class87_Sub2) this).aFloat9170 * f_120_ / f_119_);
	fs[1] = (((Class87_Sub2) this).aFloat9179
		 + ((Class87_Sub2) this).aFloat9224 * f_121_ / f_119_);
	fs[2] = f_122_;
    }
    
    public final void method15361() {
	((Class87_Sub2) this).anInterface44Array9226
	    = new Interface44[anInt9276];
	aClass276Array9265 = new Class276[anInt9276];
	aClass366Array9228 = new Class366[anInt9276];
	aClass391Array9229 = new Class391[anInt9276];
	aClass391Array9206 = new Class391[anInt9276];
	for (int i = 0; i < anInt9276; i++) {
	    aClass391Array9206[i] = Class391.aClass391_5686;
	    aClass391Array9229[i] = Class391.aClass391_5686;
	    aClass366Array9228[i] = Class366.aClass366_5527;
	    aClass276Array9265[i] = new Class276();
	}
	aClass243_Sub42Array9218 = new Class243_Sub42[anInt9277 - 2];
	int[] is = { -1 };
	anInterface40_9233 = method15376(1, 1, false, is, 0, 0);
	is[0] = -16777216;
	((Class87_Sub2) this).anInterface40_9223
	    = method15376(1, 1, false, is, 0, 0);
	method2316(new Class243_Sub30_Sub2(262144));
	((Class87_Sub2) this).aClass367_9290
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5598 }) });
	((Class87_Sub2) this).aClass367_9177
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5604 }) });
	((Class87_Sub2) this).aClass367_9259
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607),
			    new Class378(Class379.aClass379_5604),
			    new Class378(Class379.aClass379_5598),
			    new Class378(Class379.aClass379_5595) });
	((Class87_Sub2) this).aClass367_9288
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607),
			    new Class378(Class379.aClass379_5604),
			    new Class378(Class379.aClass379_5598) });
	for (int i = 0; i < 7; i++) {
	    ((Class87_Sub2) this).aClass86_Sub1Array9293[i]
		= new Class86_Sub1(this, 0, 0, false, false);
	    ((Class87_Sub2) this).aClass86_Sub1Array9294[i]
		= new Class86_Sub1(this, 0, 0, true, true);
	}
	method15310();
	((Class87_Sub2) this).anInterface31_9292 = method15408(true);
	method15598();
	method2163();
	method2112();
	method2108();
	((Class87_Sub2) this).aClass135_Sub1_9256
	    = new Class135_Sub1(this, anInterface40_9233);
	((Class87_Sub2) this).aClass135_Sub1_9236
	    = new Class135_Sub1(this,
				((Class87_Sub2) this).anInterface40_9223);
	method2117(3, 0);
    }
    
    public final void method15362(int i) {
	if (anInt9225 != i) {
	    anInt9225 = i;
	    method15393();
	}
    }
    
    boolean method2138(int i, int i_123_, int i_124_, int i_125_,
		       Class350 class350, Class346 class346) {
	Class276 class276 = aClass276_9187;
	class276.method5513(class350);
	class276.method5537(((Class87_Sub2) this).aClass276_9174);
	return class346.method6486(i, i_123_, i_124_, i_125_, class276,
				   ((Class87_Sub2) this).aFloat9191,
				   ((Class87_Sub2) this).aFloat9179,
				   ((Class87_Sub2) this).aFloat9170,
				   ((Class87_Sub2) this).aFloat9224);
    }
    
    public void method2337(float f, float f_126_) {
	((Class87_Sub2) this).aFloat9183 = f;
	((Class87_Sub2) this).aFloat9181 = f_126_;
	method15522();
    }
    
    public final int method2172() {
	return anInt9277 - 2;
    }
    
    final void method15363(boolean bool) {
	if (bool != aBool9298) {
	    aBool9298 = bool;
	    method15615();
	    ((Class87_Sub2) this).anInt9243 &= ~0x7;
	}
    }
    
    public final void method2449(int i, Class243_Sub42[] class243_sub42s) {
	for (int i_127_ = 0; i_127_ < i; i_127_++)
	    aClass243_Sub42Array9218[i_127_] = class243_sub42s[i_127_];
	anInt9220 = i;
    }
    
    public final void method2311(float f) {
	if (aFloat9145 != f) {
	    aFloat9145 = f;
	    method15364();
	    method15367();
	}
    }
    
    public final void method2169(int i, float f, float f_128_, float f_129_,
				 float f_130_, float f_131_) {
	boolean bool = ((Class87_Sub2) this).anInt9211 != i;
	if (bool || aFloat9193 != f || aFloat9217 != f_128_) {
	    ((Class87_Sub2) this).anInt9211 = i;
	    aFloat9193 = f;
	    aFloat9217 = f_128_;
	    if (bool) {
		aFloat9154 = (float) (((Class87_Sub2) this).anInt9211
				      & 0xff0000) / 1.671168E7F;
		aFloat9213 = (float) (((Class87_Sub2) this).anInt9211
				      & 0xff00) / 65280.0F;
		aFloat9214 = ((float) (((Class87_Sub2) this).anInt9211 & 0xff)
			      / 255.0F);
		method15364();
	    }
	    method15365();
	}
	if (((Class87_Sub2) this).aFloatArray9209[0] != f_129_
	    || ((Class87_Sub2) this).aFloatArray9209[1] != f_130_
	    || ((Class87_Sub2) this).aFloatArray9209[2] != f_131_) {
	    ((Class87_Sub2) this).aFloatArray9209[0] = f_129_;
	    ((Class87_Sub2) this).aFloatArray9209[1] = f_130_;
	    ((Class87_Sub2) this).aFloatArray9209[2] = f_131_;
	    ((Class87_Sub2) this).aFloatArray9295[0] = -f_129_;
	    ((Class87_Sub2) this).aFloatArray9295[1] = -f_130_;
	    ((Class87_Sub2) this).aFloatArray9295[2] = -f_131_;
	    float f_132_
		= (float) (1.0 / Math.sqrt((double) (f_129_ * f_129_
						     + f_130_ * f_130_
						     + f_131_ * f_131_)));
	    aFloatArray9207[0] = f_129_ * f_132_;
	    aFloatArray9207[1] = f_130_ * f_132_;
	    aFloatArray9207[2] = f_131_ * f_132_;
	    aFloatArray9208[0] = -aFloatArray9207[0];
	    aFloatArray9208[1] = -aFloatArray9207[1];
	    aFloatArray9208[2] = -aFloatArray9207[2];
	    method15366();
	    ((Class87_Sub2) this).anInt9196 = (int) (f_129_ * 256.0F / f_130_);
	    ((Class87_Sub2) this).anInt9131 = (int) (f_131_ * 256.0F / f_130_);
	}
	method15367();
    }
    
    public final void method2170(int i) {
	((Class87_Sub2) this).anInt9133 = 0;
	for (/**/; i > 1; i >>= 1)
	    ((Class87_Sub2) this).anInt9133++;
	((Class87_Sub2) this).anInt9221 = 1 << ((Class87_Sub2) this).anInt9133;
    }
    
    public final Class276 method2412() {
	return ((Class87_Sub2) this).aClass276_9234;
    }
    
    abstract void method15364();
    
    abstract void method15365();
    
    abstract void method15366();
    
    abstract void method15367();
    
    final void method15368() {
	aClass276_9173.method5455(((Class87_Sub2) this).aClass276_9172);
	method15350(aClass276_9173);
	aFloat9186 = ((aClass276_9173.aFloatArray4141[14]
		       - aClass276_9173.aFloatArray4141[15])
		      / (aClass276_9173.aFloatArray4141[11]
			 - aClass276_9173.aFloatArray4141[10]));
	aFloat9185 = (-aClass276_9173.aFloatArray4141[14]
		      / aClass276_9173.aFloatArray4141[10]);
	method15404();
    }
    
    final void method15369() {
	if (method15302())
	    method15414();
	anInt9219 = anInt9220;
    }
    
    final Interface40 method15370(Class173 class173, int i, int i_133_,
				  boolean bool, float[] fs) {
	return method15640(class173, i, i_133_, bool, fs, 0, 0);
    }
    
    abstract boolean method15371(Class173 class173, Class90 class90);
    
    abstract boolean method15372(Class173 class173, Class90 class90);
    
    public final void method2131(int i, int i_134_, int i_135_, int i_136_,
				 int i_137_, int i_138_) {
	method2135(i, i_134_, i_135_, i_136_, i_137_, 1, i_138_);
    }
    
    abstract void method15373();
    
    final Interface40 method15374(Class173 class173, int i, int i_139_,
				  boolean bool, float[] fs) {
	return method15640(class173, i, i_139_, bool, fs, 0, 0);
    }
    
    public final void method2327(Class104 class104) {
	((Class87_Sub2) this).aClass387_9274.method7117(this, class104);
    }
    
    public final boolean method2216() {
	return true;
    }
    
    abstract void method15375();
    
    abstract Interface40 method15376(int i, int i_140_, boolean bool, int[] is,
				     int i_141_, int i_142_);
    
    abstract Interface32 method15377(int i, boolean bool, int[][] is);
    
    abstract Interface38 method15378(Class173 class173, int i, int i_143_,
				     int i_144_, boolean bool, byte[] is);
    
    public void method2269(int i, int i_145_, int i_146_, int i_147_,
			   int i_148_, int i_149_, Class171 class171,
			   int i_150_, int i_151_, int i_152_, int i_153_,
			   int i_154_) {
	/* empty */
    }
    
    public final int method15379() {
	return anInt9225;
    }
    
    public final void method2404(int i, int i_155_, int i_156_, int i_157_,
				 int i_158_, int i_159_) {
	i_156_--;
	i_157_--;
	int i_160_ = 0;
	if (this instanceof Class87_Sub2_Sub2)
	    i_160_ = -1;
	method2131(i, i_155_ + i_160_, i + i_156_, i_155_ + i_160_, i_158_,
		   i_159_);
	method2131(i, i_155_ + i_157_ + i_160_, i + i_156_,
		   i_155_ + i_157_ + i_160_, i_158_, i_159_);
	method2131(i, i_155_, i, i_155_ + i_157_, i_158_, i_159_);
	method2131(i + i_156_, i_155_, i + i_156_, i_155_ + i_157_, i_158_,
		   i_159_);
    }
    
    public final void method2114(int i, int i_161_, int i_162_, int i_163_) {
	int i_164_;
	int i_165_;
	if (aClass169_993 != null) {
	    i_165_ = aClass169_993.method3826();
	    i_164_ = aClass169_993.method3836();
	} else {
	    i_164_ = 0;
	    i_165_ = 0;
	}
	i = i >= 0 ? i : 0;
	i_162_ = i_162_ <= i_165_ ? i_162_ : i_165_;
	i_161_ = i_161_ >= 0 ? i_161_ : 0;
	i_163_ = i_163_ <= i_164_ ? i_163_ : i_164_;
	boolean bool = false;
	if (anInt9176 < i) {
	    anInt9176 = i;
	    bool = true;
	}
	if (anInt9190 > i_162_) {
	    anInt9190 = i_162_;
	    bool = true;
	}
	if (anInt9253 < i_161_) {
	    anInt9253 = i_161_;
	    bool = true;
	}
	if (anInt9202 > i_163_) {
	    anInt9202 = i_163_;
	    bool = true;
	}
	if (bool) {
	    if (!aBool9175 && (((Class87_Sub2) this).aBool9237
			       || method15320() == Class363.aClass363_5517)) {
		aBool9175 = true;
		method15340();
	    }
	    method15339();
	}
    }
    
    public final void method2388(int i, int i_166_, float f, int i_167_,
				 int i_168_, float f_169_, int i_170_,
				 int i_171_, float f_172_, int i_173_,
				 int i_174_, int i_175_, int i_176_) {
	/* empty */
    }
    
    public final void method15380(int i) {
	switch (i) {
	case 4:
	    method15381(Class391.aClass391_5688, Class391.aClass391_5688);
	    break;
	case 0:
	    method15381(Class391.aClass391_5686, Class391.aClass391_5686);
	    break;
	case 1:
	    method15381(Class391.aClass391_5687, Class391.aClass391_5687);
	    break;
	case 3:
	    method15381(Class391.aClass391_5685, Class391.aClass391_5686);
	    break;
	case 2:
	    method15381(Class391.aClass391_5689, Class391.aClass391_5687);
	    break;
	}
    }
    
    public final void method15381(Class391 class391, Class391 class391_177_) {
	boolean bool = false;
	if (aClass391Array9229[anInt9225] != class391) {
	    aClass391Array9229[anInt9225] = class391;
	    method15394();
	    bool = true;
	}
	if (aClass391Array9206[anInt9225] != class391_177_) {
	    aClass391Array9206[anInt9225] = class391_177_;
	    method15397();
	    bool = true;
	}
	if (bool)
	    ((Class87_Sub2) this).anInt9243 &= ~0xd;
    }
    
    public final void method15382(int i, Class385 class385) {
	method15383(i, class385, false, false);
    }
    
    abstract void method15383(int i, Class385 class385, boolean bool,
			      boolean bool_178_);
    
    public final void method15384(int i, Class385 class385) {
	method15385(i, class385, false);
    }
    
    abstract void method15385(int i, Class385 class385, boolean bool);
    
    public void method15386(int i) {
	if (i != anInt9231) {
	    anInt9231 = i;
	    method15391();
	}
    }
    
    final Class276 method15387() {
	return aClass276Array9265[anInt9225];
    }
    
    final Class276 method15388() {
	return aClass276_9289;
    }
    
    public abstract float method15389();
    
    final void method15390() {
	if (aClass366Array9228[anInt9225] != Class366.aClass366_5527) {
	    aClass366Array9228[anInt9225] = Class366.aClass366_5527;
	    aClass276Array9265[anInt9225].method5472();
	    method15336();
	}
    }
    
    public final boolean method2174() {
	return ((Class392) ((Class87_Sub2) this).aClass392_9248).aBool5692;
    }
    
    abstract void method15391();
    
    abstract void method15392();
    
    abstract void method15393();
    
    abstract void method15394();
    
    public void method15395(Interface37 interface37) {
	((Class87_Sub2) this).aClass625_9127
	    .method13475(interface37, anObject9212, 1001102764);
    }
    
    Class105 method15396() {
	return ((Class87_Sub2) this).aClass105_9258;
    }
    
    public final void method2191(int i, Class105 class105) {
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	((Class87_Sub2) this).aBool9215 = true;
    }
    
    abstract void method15397();
    
    public final void method2193() {
	((Class87_Sub2) this).aBool9215 = false;
    }
    
    Class87_Sub2(Class106 class106, Interface7 interface7, Class272 class272,
		 int i, int i_179_) {
	super(class106, interface7);
	((Class87_Sub2) this).aClass420_9137 = new Class420();
	((Class87_Sub2) this).aClass350_9141 = new Class350();
	((Class87_Sub2) this).aClass276_9150 = new Class276();
	((Class87_Sub2) this).aClass350_9151 = new Class350();
	((Class87_Sub2) this).aClass350_9152 = new Class350();
	aClass276_9230 = new Class276();
	((Class87_Sub2) this).aClass276_9155 = new Class276();
	((Class87_Sub2) this).aClass276_9204 = new Class276();
	((Class87_Sub2) this).aClass350_9156 = new Class350();
	((Class87_Sub2) this).aClass276_9157 = new Class276();
	((Class87_Sub2) this).aClass350_9268 = new Class350();
	aClass276_9187 = new Class276();
	((Class87_Sub2) this).aClass276_9161 = new Class276();
	((Class87_Sub2) this).aClass275_9162 = new Class275();
	((Class87_Sub2) this).aFloatArray9240 = new float[4];
	((Class87_Sub2) this).aBool9164 = false;
	((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5714;
	((Class87_Sub2) this).aBool9166 = false;
	((Class87_Sub2) this).aClass276_9167 = new Class276();
	((Class87_Sub2) this).aClass276_9188 = new Class276();
	((Class87_Sub2) this).aBool9297 = false;
	((Class87_Sub2) this).aClass276_9234 = new Class276();
	((Class87_Sub2) this).aClass276_9171 = new Class276();
	((Class87_Sub2) this).aClass276_9172
	    = ((Class87_Sub2) this).aClass276_9171;
	aClass276_9173 = new Class276();
	((Class87_Sub2) this).aClass276_9174 = new Class276();
	aClass276_9289 = new Class276();
	((Class87_Sub2) this).aFloatArrayArray9291 = new float[6][4];
	aFloat9244 = 0.0F;
	aFloat9182 = 1.0F;
	((Class87_Sub2) this).aFloat9183 = 0.0F;
	((Class87_Sub2) this).aFloat9181 = 1.0F;
	aFloat9185 = 50.0F;
	aFloat9186 = 3584.0F;
	anInt9253 = 0;
	anInt9202 = 0;
	anInt9176 = 0;
	anInt9190 = 0;
	((Class87_Sub2) this).anInt9280 = 0;
	((Class87_Sub2) this).anInt9192 = 0;
	((Class87_Sub2) this).anInt9261 = 0;
	((Class87_Sub2) this).anInt9194 = 0;
	anInt9195 = 0;
	anInt9168 = 0;
	anInt9197 = 0;
	anInt9198 = 0;
	anInt9149 = 0;
	anInt9272 = 0;
	aBool9201 = true;
	aBool9180 = false;
	aBool9203 = false;
	aBool9298 = false;
	aBool9205 = true;
	aBool9222 = false;
	aFloatArray9207 = new float[] { 0.0F, 0.0F, 1.0F, 0.0F };
	aFloatArray9208 = new float[] { 0.0F, 0.0F, -1.0F, 0.0F };
	((Class87_Sub2) this).aFloatArray9209
	    = new float[] { 0.0F, 0.0F, 1.0F, 0.0F };
	((Class87_Sub2) this).aFloatArray9295
	    = new float[] { 0.0F, 0.0F, 1.0F, 0.0F };
	((Class87_Sub2) this).anInt9211 = 16777215;
	aFloat9154 = 1.0F;
	aFloat9213 = 1.0F;
	aFloat9214 = 1.0F;
	aFloat9145 = 1.0F;
	aFloat9193 = -1.0F;
	aFloat9217 = -1.0F;
	((Class87_Sub2) this).anInt9221 = 8;
	((Class87_Sub2) this).anInt9133 = 3;
	anInt9225 = 0;
	((Class87_Sub2) this).aBool9237 = false;
	((Class87_Sub2) this).aClass65Array9142 = new Class65[16];
	((Class87_Sub2) this).aClass383Array9239 = new Class383[4];
	((Class87_Sub2) this).aBool9216 = false;
	aBool9260 = true;
	anInt9147 = -1;
	anInt9169 = -1;
	anInt9263 = 0;
	((Class87_Sub2) this).anInt9266 = 1;
	aClass375_9267 = Class375.aClass375_5583;
	aBool9282 = true;
	aBool9269 = true;
	((Class87_Sub2) this).aBool9273 = false;
	new Stream();
	((Class87_Sub2) this).aClass86_Sub1Array9293 = new Class86_Sub1[7];
	((Class87_Sub2) this).aClass86_Sub1Array9294 = new Class86_Sub1[7];
	((Class87_Sub2) this).aClass276_9126 = new Class276();
	((Class87_Sub2) this).aClass350_9296 = new Class350();
	anInt9255 = -1;
	try {
	    ((Class87_Sub2) this).aClass272_9136 = class272;
	    anInt9270 = i;
	    ((Class87_Sub2) this).anInt9275 = i_179_;
	    Class298.method5950(false, true, (byte) -10);
	    if (anInterface7_991 != null)
		((Class87_Sub2) this).aClass380_9232
		    = new Class380(this, anInterface7_991);
	    else
		((Class87_Sub2) this).aClass380_9232 = null;
	    if (((Class87_Sub2) this).anInt9275 == 0)
		((Class87_Sub2) this).anIntArray9138 = Class469.anIntArray6378;
	    else
		((Class87_Sub2) this).anIntArray9138 = Class481.anIntArray6474;
	    try {
		Field field
		    = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
		field.setAccessible(true);
		anUnsafe9199 = (Unsafe) field.get(null);
	    } catch (Exception exception) {
		/* empty */
	    }
	    aByteBuffer9139 = ByteBuffer.allocateDirect(4194304);
	    aByteBuffer9139.order(ByteOrder.nativeOrder());
	    aLong9140
		= DirectBufferHelper.getDirectBufferAddress(aByteBuffer9139);
	} catch (Throwable throwable) {
	    throwable.printStackTrace();
	    method2240(-1390466367);
	    if (throwable instanceof OutOfMemoryError)
		throw (OutOfMemoryError) throwable;
	    throw new RuntimeException("");
	}
	method2316(method2140(131072));
    }
    
    final void method15398(int i) {
	if (anInt9255 != i) {
	    anInt9255 = i;
	    method15401();
	}
    }
    
    abstract void method15399(int i);
    
    abstract Interface40 method15400(Class173 class173, Class90 class90, int i,
				     int i_180_);
    
    abstract void method15401();
    
    public final Class276 method15402() {
	return aClass276Array9265[anInt9225];
    }
    
    boolean method15403() {
	if (((Class87_Sub2) this).aClass383Array9239[2] != null
	    && !((Class87_Sub2) this).aClass383Array9239[2].method7055()) {
	    boolean bool
		= ((Class87_Sub2) this).aClass392_9248
		      .method7165(((Class87_Sub2) this).aClass383Array9239[2]);
	    if (bool)
		((Class87_Sub2) this).aClass380_9232.method7028();
	    return bool;
	}
	return false;
    }
    
    public final void method2244(int i, int i_181_, int i_182_) {
	if (anInt9147 != i || anInt9169 != i_181_ || anInt9263 != i_182_) {
	    anInt9147 = i;
	    anInt9169 = i_181_;
	    anInt9263 = i_182_;
	    method15404();
	    method15406();
	}
    }
    
    final void method15404() {
	if (((Class87_Sub2) this).aClass65_9235 != null)
	    ((Class87_Sub2) this).aClass65_9235.method1514();
	method15405();
    }
    
    abstract void method15405();
    
    abstract void method15406();
    
    final void method15407() {
	if (!((Class87_Sub2) this).aBool9297)
	    ((Class87_Sub2) this).aBool9297 = true;
    }
    
    abstract Interface31 method15408(boolean bool);
    
    abstract void method15409();
    
    abstract Class367 method15410(Class378[] class378s);
    
    public abstract void method15411(Class367 class367);
    
    public abstract void method15412(int i, Interface36 interface36);
    
    public abstract void method15413(Class276 class276);
    
    public final void method2403(int i, Class171 class171, int i_183_,
				 int i_184_) {
	method2281(false);
	((Class87_Sub2) this).aClass135_Sub1_9236.method3370
	    (0.0F, 0.0F, (float) method2164(-21310866).method3826(), 0.0F,
	     0.0F, (float) method2164(747921112).method3836(), 0, class171,
	     i_183_, i_184_);
	method2281(true);
    }
    
    public final void method2125(int i, int i_185_, int i_186_, int i_187_,
				 int i_188_, int i_189_) {
	if (aBool9201) {
	    method2281(false);
	    ((Class87_Sub2) this).aClass135_Sub1_9256
		.method3406(i, i_185_, i_186_, i_187_, 0, i_188_, i_189_);
	    method2281(true);
	} else
	    ((Class87_Sub2) this).aClass135_Sub1_9256
		.method3406(i, i_185_, i_186_, i_187_, 0, i_188_, i_189_);
    }
    
    public final void method2205(int i, int i_190_, int i_191_, int i_192_,
				 int i_193_, int i_194_) {
	i_191_--;
	i_192_--;
	int i_195_ = 0;
	if (this instanceof Class87_Sub2_Sub2)
	    i_195_ = -1;
	method2131(i, i_190_ + i_195_, i + i_191_, i_190_ + i_195_, i_193_,
		   i_194_);
	method2131(i, i_190_ + i_192_ + i_195_, i + i_191_,
		   i_190_ + i_192_ + i_195_, i_193_, i_194_);
	method2131(i, i_190_, i, i_190_ + i_192_, i_193_, i_194_);
	method2131(i + i_191_, i_190_, i + i_191_, i_190_ + i_192_, i_193_,
		   i_194_);
    }
    
    public final void method2233(int i, Class105 class105) {
	if (!((Class87_Sub2) this).aBool9215)
	    throw new RuntimeException("");
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	if (((Class87_Sub2) this).aBool9216) {
	    ((Class87_Sub2) this).aClass65Array9142[3].method1515();
	    ((Class87_Sub2) this).aClass65Array9142[3].method1514();
	}
    }
    
    abstract void method15414();
    
    final void method2153(int i, int i_196_, int i_197_, int i_198_,
			  int i_199_) {
	/* empty */
    }
    
    public void method2194(float f, float f_200_, float f_201_, float[] fs) {
	float f_202_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		  * f_200_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		  * f_201_));
	float f_203_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * f_200_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * f_201_));
	if (f_202_ < -f_203_ || f_202_ > f_203_) {
	    float[] fs_204_ = fs;
	    float[] fs_205_ = fs;
	    fs[2] = Float.NaN;
	    fs_205_[1] = Float.NaN;
	    fs_204_[0] = Float.NaN;
	} else {
	    float f_206_
		= (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		      * f)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		      * f_200_)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		      * f_201_));
	    if (f_206_ < -f_203_ || f_206_ > f_203_) {
		float[] fs_207_ = fs;
		float[] fs_208_ = fs;
		fs[2] = Float.NaN;
		fs_208_[1] = Float.NaN;
		fs_207_[0] = Float.NaN;
	    } else {
		float f_209_
		    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [1]) * f
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [5]) * f_200_
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [9]) * f_201_);
		if (f_209_ < -f_203_ || f_209_ > f_203_) {
		    float[] fs_210_ = fs;
		    float[] fs_211_ = fs;
		    fs[2] = Float.NaN;
		    fs_211_[1] = Float.NaN;
		    fs_210_[0] = Float.NaN;
		} else {
		    float f_212_
			= (aClass276_9230.aFloatArray4141[14]
			   + aClass276_9230.aFloatArray4141[2] * f
			   + aClass276_9230.aFloatArray4141[6] * f_200_
			   + aClass276_9230.aFloatArray4141[10] * f_201_);
		    fs[0] = (((Class87_Sub2) this).aFloat9191
			     + (((Class87_Sub2) this).aFloat9170 * f_206_
				/ f_203_));
		    fs[1] = (((Class87_Sub2) this).aFloat9179
			     + (((Class87_Sub2) this).aFloat9224 * f_209_
				/ f_203_));
		    fs[2] = f_212_;
		}
	    }
	}
    }
    
    public abstract void method15415(Class311 class311, int i, int i_213_,
				     int i_214_, int i_215_);
    
    public final boolean method2400() {
	return true;
    }
    
    public final void method2397(float f) {
	if (aFloat9145 != f) {
	    aFloat9145 = f;
	    method15364();
	    method15367();
	}
    }
    
    public final boolean method2124() {
	return (((Class87_Sub2) this).aClass383Array9239[3] != null
		&& ((Class87_Sub2) this).aClass383Array9239[3].method7055());
    }
    
    public abstract boolean method15416();
    
    public final void method2135(int i, int i_216_, int i_217_, int i_218_,
				 int i_219_, int i_220_, int i_221_) {
	i += 1.0F;
	i_216_ += 1.0F;
	i_217_ += 1.0F;
	i_218_ += 1.0F;
	float f = (float) (i_217_ - i);
	float f_222_ = (float) (i_218_ - i_216_);
	float f_223_
	    = 1.0F / (float) Math.sqrt((double) (f * f + f_222_ * f_222_));
	f *= f_223_;
	f_222_ *= f_223_;
	i -= f;
	i_216_ -= f_222_;
	float f_224_ = -f_222_;
	float f_225_ = f;
	f_224_ *= 0.5F * (float) i_220_;
	f_225_ *= 0.5F * (float) i_220_;
	((Class87_Sub2) this).aClass135_Sub1_9256.method3367
	    ((float) i - f_224_, (float) i_216_ - f_225_,
	     (float) i_217_ - f_224_, (float) i_218_ - f_225_,
	     (float) i + f_224_, (float) i_216_ + f_225_, 0, i_219_, i_221_);
    }
    
    public final void method2437(Class104 class104) {
	((Class87_Sub2) this).aClass387_9274.method7117(this, class104);
    }
    
    void method15417() {
	((Class87_Sub2) this).aClass392_9248.method7161();
	((Class87_Sub2) this).anInterface36_9284.method23();
	((Class87_Sub2) this).anInterface36_9283.method23();
	((Class87_Sub2) this).anInterface36_9285.method23();
	for (int i = 0; i < 7; i++)
	    ((Class87_Sub2) this).aClass86_Sub1Array9294[i].method15211();
	((Class87_Sub2) this).aClass387_9274.method7119();
	((Class87_Sub2) this).anInterface31_9292.method23();
	((Class87_Sub2) this).aClass313_9238.method6133();
	((Class87_Sub2) this).aClass313_9238 = null;
    }
    
    public final void method15418() {
	method15471(Class311.aClass311_4590, 2);
    }
    
    public final Class276 method2321() {
	return ((Class87_Sub2) this).aClass276_9234;
    }
    
    public abstract void method15419(Class311 class311, int i, int i_226_);
    
    abstract void method15420(Interface31 interface31, Class311 class311,
			      int i, int i_227_, int i_228_, int i_229_);
    
    public abstract void method15421(Class311 class311, int i, int i_230_,
				     int i_231_, int i_232_);
    
    public final void method15422() {
	if (((Class87_Sub2) this).anInt9243 != 2) {
	    method15352();
	    method15438(false);
	    method15363(false);
	    method15358(false);
	    method15554(false);
	    ((Class87_Sub2) this).anInt9243 = 2;
	}
    }
    
    final void method15423() {
	if (((Class87_Sub2) this).anInt9243 != 8) {
	    method15597();
	    method15438(true);
	    method15358(true);
	    method15554(true);
	    method15674(1);
	    ((Class87_Sub2) this).anInt9243 = 8;
	}
    }
    
    abstract void method15424(int i);
    
    abstract void method15425();
    
    void method2206() {
	if (!((Class87_Sub2) this).aBool9273) {
	    method15330();
	    ((Class87_Sub2) this).aClass380_9232.method7028();
	    for (Class243 class243 = ((Class87_Sub2) this).aClass420_9137
					 .method7523(-1545116853);
		 class243 != null;
		 class243 = ((Class87_Sub2) this).aClass420_9137
				.method7520(-255577042))
		((Class243_Sub30_Sub2) class243).method17472();
	    Class5.method495(false, true, -712384164);
	    for (int i = 0; i < ((Class87_Sub2) this).aClass65Array9142.length;
		 i++) {
		if (((Class87_Sub2) this).aClass65Array9142[i] != null) {
		    ((Class87_Sub2) this).aClass65Array9142[i].method1522();
		    ((Class87_Sub2) this).aClass65Array9142[i] = null;
		}
	    }
	    for (int i = 0;
		 i < ((Class87_Sub2) this).aClass383Array9239.length; i++) {
		if (((Class87_Sub2) this).aClass383Array9239[i] != null) {
		    ((Class87_Sub2) this).aClass383Array9239[i].method7067();
		    ((Class87_Sub2) this).aClass383Array9239[i] = null;
		}
	    }
	    method15299();
	    method2081(0);
	    ((Class87_Sub2) this).aBool9273 = true;
	}
    }
    
    public final int method2371() {
	return anInt9227 + anInt9146 + anInt9148;
    }
    
    final void method15426(int i) {
	if (anInt9255 != i) {
	    anInt9255 = i;
	    method15401();
	}
    }
    
    public final boolean method2096() {
	return true;
    }
    
    public final boolean method2467() {
	return true;
    }
    
    public final boolean method2094() {
	return true;
    }
    
    public final boolean method2212() {
	return ((Class87_Sub2) this).aClass383Array9239[3] != null;
    }
    
    public final boolean method2213() {
	return ((Class87_Sub2) this).aClass383Array9239[3] != null;
    }
    
    public final boolean method2432() {
	return ((Class87_Sub2) this).aClass383Array9239[3] != null;
    }
    
    public int method2136(int i, int i_233_, int i_234_, int i_235_,
			  int i_236_, int i_237_) {
	int i_238_ = 0;
	float f = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2]
		      * (float) i)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		      * (float) i_233_)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		      * (float) i_234_));
	float f_239_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2]
		  * (float) i_235_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		  * (float) i_236_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		  * (float) i_237_));
	float f_240_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * (float) i_233_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * (float) i_234_));
	float f_241_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3]
		  * (float) i_235_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * (float) i_236_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * (float) i_237_));
	if (f < -f_240_ && f_239_ < -f_241_)
	    i_238_ |= 0x10;
	else if (f > f_240_ && f_239_ > f_241_)
	    i_238_ |= 0x20;
	float f_242_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * (float) i_233_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * (float) i_234_));
	float f_243_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		  * (float) i_235_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * (float) i_236_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * (float) i_237_));
	if (f_242_ < -f_240_ && f_243_ < -f_241_)
	    i_238_ |= 0x1;
	if (f_242_ > f_240_ && f_243_ > f_241_)
	    i_238_ |= 0x2;
	float f_244_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * (float) i_233_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * (float) i_234_));
	float f_245_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1]
		  * (float) i_235_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * (float) i_236_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * (float) i_237_));
	if (f_244_ < -f_240_ && f_245_ < -f_241_)
	    i_238_ |= 0x4;
	if (f_244_ > f_240_ && f_245_ > f_241_)
	    i_238_ |= 0x8;
	return i_238_;
    }
    
    final void method2188(float f, float f_246_, float f_247_, float f_248_,
			  float f_249_, float f_250_) {
	Class383_Sub1.aFloat10094 = f;
	Class383_Sub1.aFloat10095 = f_246_;
	Class383_Sub1.aFloat10096 = f_247_;
	Class383_Sub1.aFloat10097 = f_250_;
    }
    
    public final boolean method2462() {
	return true;
    }
    
    public final boolean method2207() {
	return true;
    }
    
    final void method15427(boolean bool) {
	if (bool != aBool9184) {
	    aBool9184 = bool;
	    method15406();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    final void method2376(int i, int i_251_, int i_252_, int i_253_,
			  int i_254_) {
	/* empty */
    }
    
    final void method15428() {
	((Class87_Sub2) this).anInterface36_9283 = method15436(true);
	((Class87_Sub2) this).anInterface36_9283.method226(24, 12);
	((Class87_Sub2) this).aClass367_9286
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607) });
    }
    
    public final boolean method2222() {
	return false;
    }
    
    public final Class99 method2156
	(Class622 class622, Class102_Sub1[] class102_sub1s, boolean bool) {
	return new Class99_Sub5(this, class622, class102_sub1s, bool);
    }
    
    public final Class86 method2157(Class98 class98, int i, int i_255_,
				    int i_256_, int i_257_) {
	return new Class86_Sub1(this, class98, i, i_256_, i_257_, i_255_);
    }
    
    public final void method2234(boolean bool) {
	aBool9201 = bool;
	method15360();
    }
    
    public void method2235() {
	((Class87_Sub2) this).anInt9280 = 0;
	((Class87_Sub2) this).anInt9192 = 0;
	((Class87_Sub2) this).anInt9261 = aClass169_993.method3826();
	((Class87_Sub2) this).anInt9194 = aClass169_993.method3836();
	method15522();
    }
    
    public void method2236() {
	((Class87_Sub2) this).anInt9280 = 0;
	((Class87_Sub2) this).anInt9192 = 0;
	((Class87_Sub2) this).anInt9261 = aClass169_993.method3826();
	((Class87_Sub2) this).anInt9194 = aClass169_993.method3836();
	method15522();
    }
    
    abstract Interface45 method15429(Class173 class173, Class90 class90, int i,
				     int i_258_);
    
    public final Class163 method2160(int i, int i_259_, int[][] is,
				     int[][] is_260_, int i_261_, int i_262_,
				     int i_263_) {
	return new Class163_Sub3(this, i_262_, i_263_, i, i_259_, is, is_260_,
				 i_261_);
    }
    
    byte[] method15430(String string, String string_264_) {
	return ((Class87_Sub2) this).aClass272_9136
		   .method5316(string, string_264_, 2100420797);
    }
    
    final Class276 method15431() {
	return aClass276_9173;
    }
    
    public final void method2229() {
	if (aClass169_993 != null) {
	    anInt9253 = 0;
	    anInt9176 = 0;
	    anInt9190 = aClass169_993.method3826();
	    anInt9202 = aClass169_993.method3836();
	} else {
	    anInt9202 = 0;
	    anInt9190 = 0;
	    anInt9253 = 0;
	    anInt9176 = 0;
	}
	if (aBool9175) {
	    aBool9175 = false;
	    method15340();
	}
    }
    
    public final void method2079() {
	if (aClass169_993 != null) {
	    anInt9253 = 0;
	    anInt9176 = 0;
	    anInt9190 = aClass169_993.method3826();
	    anInt9202 = aClass169_993.method3836();
	} else {
	    anInt9202 = 0;
	    anInt9190 = 0;
	    anInt9253 = 0;
	    anInt9176 = 0;
	}
	if (aBool9175) {
	    aBool9175 = false;
	    method15340();
	}
    }
    
    public final void method2443(int i, int i_265_, int i_266_, int i_267_) {
	int i_268_;
	int i_269_;
	if (aClass169_993 != null) {
	    i_269_ = aClass169_993.method3826();
	    i_268_ = aClass169_993.method3836();
	} else {
	    i_268_ = 0;
	    i_269_ = 0;
	}
	i = i >= 0 ? i : 0;
	i_266_ = i_266_ <= i_269_ ? i_266_ : i_269_;
	i_265_ = i_265_ >= 0 ? i_265_ : 0;
	i_267_ = i_267_ <= i_268_ ? i_267_ : i_268_;
	boolean bool = false;
	if (anInt9176 < i) {
	    anInt9176 = i;
	    bool = true;
	}
	if (anInt9190 > i_266_) {
	    anInt9190 = i_266_;
	    bool = true;
	}
	if (anInt9253 < i_265_) {
	    anInt9253 = i_265_;
	    bool = true;
	}
	if (anInt9202 > i_267_) {
	    anInt9202 = i_267_;
	    bool = true;
	}
	if (bool) {
	    if (!aBool9175 && (((Class87_Sub2) this).aBool9237
			       || method15320() == Class363.aClass363_5517)) {
		aBool9175 = true;
		method15340();
	    }
	    method15339();
	}
    }
    
    public final void method2354(int[] is) {
	is[0] = anInt9176;
	is[1] = anInt9253;
	is[2] = anInt9190;
	is[3] = anInt9202;
    }
    
    public final void method2245(int[] is) {
	is[0] = anInt9176;
	is[1] = anInt9253;
	is[2] = anInt9190;
	is[3] = anInt9202;
    }
    
    public final void method2379(int i) {
	/* empty */
    }
    
    public final void method2247(int[] is) {
	is[0] = anInt9176;
	is[1] = anInt9253;
	is[2] = anInt9190;
	is[3] = anInt9202;
    }
    
    abstract Interface45 method15432(Class173 class173, Class90 class90, int i,
				     int i_270_);
    
    public final void method2253(int i, int i_271_, int i_272_, int i_273_,
				 int i_274_, int i_275_) {
	if (aBool9201) {
	    method2281(false);
	    ((Class87_Sub2) this).aClass135_Sub1_9256
		.method3406(i, i_271_, i_272_, i_273_, 0, i_274_, i_275_);
	    method2281(true);
	} else
	    ((Class87_Sub2) this).aClass135_Sub1_9256
		.method3406(i, i_271_, i_272_, i_273_, 0, i_274_, i_275_);
    }
    
    public void method2408(float f, float f_276_) {
	((Class87_Sub2) this).aFloat9183 = f;
	((Class87_Sub2) this).aFloat9181 = f_276_;
	method15522();
    }
    
    public final void method2141(int i, int i_277_, int i_278_, int i_279_,
				 int i_280_, int i_281_, byte[] is, int i_282_,
				 int i_283_) {
	/* empty */
    }
    
    abstract void method15433();
    
    final void method2477(int i, int i_284_, int i_285_, int i_286_,
			  int i_287_) {
	/* empty */
    }
    
    public final void method2258(int i, int i_288_, int i_289_, int i_290_,
				 int i_291_) {
	method2131(i, i_288_, i + i_289_, i_288_, i_290_, i_291_);
    }
    
    public final void method2442(int i, int i_292_, int i_293_, int i_294_,
				 int i_295_) {
	method2131(i, i_292_, i + i_293_, i_292_, i_294_, i_295_);
    }
    
    public final void method2260(int i, int i_296_, int i_297_, int i_298_,
				 int i_299_) {
	method2131(i, i_296_, i, i_296_ + i_297_, i_298_, i_299_);
    }
    
    abstract void method15434();
    
    public final Class135 method2259(int i, int i_300_, boolean bool,
				     boolean bool_301_) {
	return new Class135_Sub1(this, i, i_300_, bool, bool_301_);
    }
    
    public final void method2263(int i, int i_302_, int i_303_, int i_304_,
				 int i_305_, int i_306_) {
	method2135(i, i_302_, i_303_, i_304_, i_305_, 1, i_306_);
    }
    
    public final boolean method2186() {
	if (((Class87_Sub2) this).aClass383Array9239[3] != null
	    && !((Class87_Sub2) this).aClass383Array9239[3].method7055()) {
	    boolean bool
		= ((Class87_Sub2) this).aClass392_9248
		      .method7165(((Class87_Sub2) this).aClass383Array9239[3]);
	    if (bool)
		((Class87_Sub2) this).aClass380_9232.method7028();
	    return bool;
	}
	return false;
    }
    
    final void method15435() {
	aClass276_9173.method5455(((Class87_Sub2) this).aClass276_9172);
	method15350(aClass276_9173);
	aFloat9186 = ((aClass276_9173.aFloatArray4141[14]
		       - aClass276_9173.aFloatArray4141[15])
		      / (aClass276_9173.aFloatArray4141[11]
			 - aClass276_9173.aFloatArray4141[10]));
	aFloat9185 = (-aClass276_9173.aFloatArray4141[14]
		      / aClass276_9173.aFloatArray4141[10]);
	method15404();
    }
    
    public final void method2351(int i, float f, float f_307_, float f_308_,
				 float f_309_, float f_310_) {
	boolean bool = ((Class87_Sub2) this).anInt9211 != i;
	if (bool || aFloat9193 != f || aFloat9217 != f_307_) {
	    ((Class87_Sub2) this).anInt9211 = i;
	    aFloat9193 = f;
	    aFloat9217 = f_307_;
	    if (bool) {
		aFloat9154 = (float) (((Class87_Sub2) this).anInt9211
				      & 0xff0000) / 1.671168E7F;
		aFloat9213 = (float) (((Class87_Sub2) this).anInt9211
				      & 0xff00) / 65280.0F;
		aFloat9214 = ((float) (((Class87_Sub2) this).anInt9211 & 0xff)
			      / 255.0F);
		method15364();
	    }
	    method15365();
	}
	if (((Class87_Sub2) this).aFloatArray9209[0] != f_308_
	    || ((Class87_Sub2) this).aFloatArray9209[1] != f_309_
	    || ((Class87_Sub2) this).aFloatArray9209[2] != f_310_) {
	    ((Class87_Sub2) this).aFloatArray9209[0] = f_308_;
	    ((Class87_Sub2) this).aFloatArray9209[1] = f_309_;
	    ((Class87_Sub2) this).aFloatArray9209[2] = f_310_;
	    ((Class87_Sub2) this).aFloatArray9295[0] = -f_308_;
	    ((Class87_Sub2) this).aFloatArray9295[1] = -f_309_;
	    ((Class87_Sub2) this).aFloatArray9295[2] = -f_310_;
	    float f_311_
		= (float) (1.0 / Math.sqrt((double) (f_308_ * f_308_
						     + f_309_ * f_309_
						     + f_310_ * f_310_)));
	    aFloatArray9207[0] = f_308_ * f_311_;
	    aFloatArray9207[1] = f_309_ * f_311_;
	    aFloatArray9207[2] = f_310_ * f_311_;
	    aFloatArray9208[0] = -aFloatArray9207[0];
	    aFloatArray9208[1] = -aFloatArray9207[1];
	    aFloatArray9208[2] = -aFloatArray9207[2];
	    method15366();
	    ((Class87_Sub2) this).anInt9196 = (int) (f_308_ * 256.0F / f_309_);
	    ((Class87_Sub2) this).anInt9131 = (int) (f_310_ * 256.0F / f_309_);
	}
	method15367();
    }
    
    public final void method2267(int i, int i_312_, int i_313_, int i_314_,
				 int i_315_, int i_316_, Class171 class171,
				 int i_317_, int i_318_) {
	/* empty */
    }
    
    public final void method2268(int i, int i_319_, int i_320_, int i_321_,
				 int i_322_, int i_323_, Class171 class171,
				 int i_324_, int i_325_) {
	/* empty */
    }
    
    public void method2282(float f, float f_326_) {
	((Class87_Sub2) this).aFloat9183 = f;
	((Class87_Sub2) this).aFloat9181 = f_326_;
	method15522();
    }
    
    public final boolean method2284() {
	if (((Class87_Sub2) this).aClass383Array9239[3] != null
	    && !((Class87_Sub2) this).aClass383Array9239[3].method7055()) {
	    boolean bool
		= ((Class87_Sub2) this).aClass392_9248
		      .method7165(((Class87_Sub2) this).aClass383Array9239[3]);
	    if (bool)
		((Class87_Sub2) this).aClass380_9232.method7028();
	    return bool;
	}
	return false;
    }
    
    public Class167 method2366(int[] is) {
	return new Class167_Sub1(this, is);
    }
    
    public void method2197(int i, int i_327_, int i_328_, int i_329_,
			   int i_330_, int i_331_, Class171 class171,
			   int i_332_, int i_333_, int i_334_, int i_335_,
			   int i_336_) {
	/* empty */
    }
    
    abstract Interface36 method15436(boolean bool);
    
    public int method2274(int i, int i_337_, int i_338_, int i_339_,
			  int i_340_, int i_341_) {
	int i_342_ = 0;
	float f = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2]
		      * (float) i)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		      * (float) i_337_)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		      * (float) i_338_));
	float f_343_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2]
		  * (float) i_339_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		  * (float) i_340_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		  * (float) i_341_));
	float f_344_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * (float) i_337_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * (float) i_338_));
	float f_345_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3]
		  * (float) i_339_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * (float) i_340_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * (float) i_341_));
	if (f < -f_344_ && f_343_ < -f_345_)
	    i_342_ |= 0x10;
	else if (f > f_344_ && f_343_ > f_345_)
	    i_342_ |= 0x20;
	float f_346_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * (float) i_337_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * (float) i_338_));
	float f_347_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		  * (float) i_339_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * (float) i_340_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * (float) i_341_));
	if (f_346_ < -f_344_ && f_347_ < -f_345_)
	    i_342_ |= 0x1;
	if (f_346_ > f_344_ && f_347_ > f_345_)
	    i_342_ |= 0x2;
	float f_348_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1]
		  * (float) i)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * (float) i_337_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * (float) i_338_));
	float f_349_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1]
		  * (float) i_339_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * (float) i_340_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * (float) i_341_));
	if (f_348_ < -f_344_ && f_349_ < -f_345_)
	    i_342_ |= 0x4;
	if (f_348_ > f_344_ && f_349_ > f_345_)
	    i_342_ |= 0x8;
	return i_342_;
    }
    
    public void method2103(int i, int i_350_, int i_351_, int i_352_,
			   int i_353_, int i_354_, int i_355_, int i_356_,
			   int i_357_) {
	float f = (float) i_351_ - (float) i;
	float f_358_ = (float) i_352_ - (float) i_350_;
	if (f == 0.0F && f_358_ == 0.0F)
	    f = 1.0F;
	else {
	    float f_359_
		= (float) (1.0
			   / Math.sqrt((double) (f * f + f_358_ * f_358_)));
	    f *= f_359_;
	    f_358_ *= f_359_;
	}
	method15352();
	Class65 class65 = ((Class87_Sub2) this).aClass65Array9142[13];
	class65.method1526();
	class65.method1512(i_353_);
	method15674(i_354_);
	class65.method1516();
	method15461(false);
	i_357_ %= i_356_ + i_355_;
	float f_360_ = f * (float) i_355_;
	float f_361_ = f_358_ * (float) i_355_;
	float f_362_ = 0.0F;
	float f_363_ = 0.0F;
	float f_364_ = f_360_;
	float f_365_ = f_361_;
	if (i_357_ > i_355_) {
	    f_362_ = f * (float) (i_355_ + i_356_ - i_357_);
	    f_363_ = f_358_ * (float) (i_355_ + i_356_ - i_357_);
	} else {
	    f_364_ = f * (float) (i_355_ - i_357_);
	    f_365_ = f_358_ * (float) (i_355_ - i_357_);
	}
	float f_366_ = (float) i + f_362_;
	float f_367_ = (float) i_350_ + f_363_;
	float f_368_ = f * (float) i_356_;
	float f_369_ = f_358_ * (float) i_356_;
	for (;;) {
	    if (i_351_ > i) {
		if (f_366_ > (float) i_351_)
		    break;
		if (f_366_ + f_364_ > (float) i_351_)
		    f_364_ = (float) i_351_ - f_366_;
	    } else {
		if (f_366_ < (float) i_351_)
		    break;
		if (f_366_ + f_364_ < (float) i_351_)
		    f_364_ = (float) i_351_ - f_366_;
	    }
	    if (i_352_ > i_350_) {
		if (f_367_ > (float) i_352_)
		    break;
		if (f_367_ + f_365_ > (float) i_352_)
		    f_365_ = (float) i_352_ - f_367_;
	    } else {
		if (f_367_ < (float) i_352_)
		    break;
		if (f_367_ + f_365_ < (float) i_352_)
		    f_365_ = (float) i_352_ - f_367_;
	    }
	    if (!method15316(f_366_, f_367_, 0.0F, f_366_ + f_364_,
			     f_367_ + f_365_, 0.0F))
		return;
	    method15447();
	    f_366_ += f_368_ + f_364_;
	    f_367_ += f_369_ + f_365_;
	    f_364_ = f_360_;
	    f_365_ = f_361_;
	}
	method15461(true);
	class65.method1511();
    }
    
    abstract void method15437();
    
    final void method15438(boolean bool) {
	if (bool != aBool9184) {
	    aBool9184 = bool;
	    method15406();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    public void method2278(Class350 class350, Class97 class97,
			   Class346 class346) {
	Class276 class276 = aClass276_9187;
	class276.method5513(class350);
	class276.method5537(((Class87_Sub2) this).aClass276_9174);
	class97.method2544(class346, ((Class87_Sub2) this).aClass276_9234,
			   class276, ((Class87_Sub2) this).aFloat9191,
			   ((Class87_Sub2) this).aFloat9179,
			   ((Class87_Sub2) this).aFloat9170,
			   ((Class87_Sub2) this).aFloat9224);
    }
    
    public final void method15439() {
	method15471(Class311.aClass311_4590, 2);
    }
    
    public final Class243_Sub30 method2405(int i) {
	Class243_Sub30_Sub2 class243_sub30_sub2 = new Class243_Sub30_Sub2(i);
	((Class87_Sub2) this).aClass420_9137.method7495(class243_sub30_sub2,
							56766374);
	return class243_sub30_sub2;
    }
    
    public final Class243_Sub30 method2480(int i) {
	Class243_Sub30_Sub2 class243_sub30_sub2 = new Class243_Sub30_Sub2(i);
	((Class87_Sub2) this).aClass420_9137.method7495(class243_sub30_sub2,
							526694583);
	return class243_sub30_sub2;
    }
    
    public abstract void method15440(Class311 class311, int i, int i_370_);
    
    public final void method2283(Class243_Sub30 class243_sub30) {
	((Class87_Sub2) this).aNativeHeap9144
	    = (((Class243_Sub30_Sub2) (Class243_Sub30_Sub2) class243_sub30)
	       .aNativeHeap10955);
    }
    
    public final Class135 method2248(int i, int i_371_, boolean bool,
				     boolean bool_372_) {
	return new Class135_Sub1(this, i, i_371_, bool, bool_372_);
    }
    
    public final Class135 method2357(int i, int i_373_, boolean bool,
				     boolean bool_374_) {
	return new Class135_Sub1(this, i, i_373_, bool, bool_374_);
    }
    
    public void method2148() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6126();
    }
    
    public final Class135 method2287(int[] is, int i, int i_375_, int i_376_,
				     int i_377_, boolean bool) {
	return new Class135_Sub1(this, i_376_, i_377_, is, i, i_375_);
    }
    
    public void method2344(float f, float f_378_, float f_379_, float[] fs) {
	float f_380_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * f_378_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * f_379_));
	float f_381_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		  * f_378_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		  * f_379_));
	float f_382_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[1] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[5]
		  * f_378_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[9]
		  * f_379_));
	float f_383_ = (aClass276_9230.aFloatArray4141[14]
			+ aClass276_9230.aFloatArray4141[2] * f
			+ aClass276_9230.aFloatArray4141[6] * f_378_
			+ aClass276_9230.aFloatArray4141[10] * f_379_);
	fs[0] = (((Class87_Sub2) this).aFloat9191
		 + ((Class87_Sub2) this).aFloat9170 * f_381_ / f_380_);
	fs[1] = (((Class87_Sub2) this).aFloat9179
		 + ((Class87_Sub2) this).aFloat9224 * f_382_ / f_380_);
	fs[2] = f_383_;
    }
    
    abstract Interface40 method15441(Class173 class173, Class90 class90, int i,
				     int i_384_);
    
    public final Class135 method2290(Class102 class102, boolean bool) {
	Class135 class135;
	if (class102.method2740() != 0 && class102.method2715() != 0) {
	    int[] is = class102.method2729(false);
	    class135 = method2145(is, 0, class102.method2740(),
				  class102.method2740(), class102.method2715(),
				  1160801275);
	} else
	    class135 = method2145(new int[] { 0 }, 0, 1, 1, 1, -332742901);
	class135.method3344(class102.method2716(), class102.method2773(),
			    class102.method2732(), class102.method2719());
	return class135;
    }
    
    public void method2139(Class350 class350, Class97 class97,
			   Class346 class346) {
	Class276 class276 = aClass276_9187;
	class276.method5513(class350);
	class276.method5537(((Class87_Sub2) this).aClass276_9174);
	class97.method2544(class346, ((Class87_Sub2) this).aClass276_9234,
			   class276, ((Class87_Sub2) this).aFloat9191,
			   ((Class87_Sub2) this).aFloat9179,
			   ((Class87_Sub2) this).aFloat9170,
			   ((Class87_Sub2) this).aFloat9224);
    }
    
    public final Class135 method2303(int i, int i_385_, int i_386_, int i_387_,
				     boolean bool) {
	Class135_Sub1 class135_sub1
	    = new Class135_Sub1(this, i_386_, i_387_, bool, false);
	class135_sub1.method3350(0, 0, i_386_, i_387_, i, i_385_);
	return class135_sub1;
    }
    
    public final Class135 method2293(int i, int i_388_, int i_389_, int i_390_,
				     boolean bool) {
	Class135_Sub1 class135_sub1
	    = new Class135_Sub1(this, i_389_, i_390_, bool, false);
	class135_sub1.method3350(0, 0, i_389_, i_390_, i, i_388_);
	return class135_sub1;
    }
    
    public final Class171 method2294(int i, int i_391_, int[] is,
				     int[] is_392_) {
	return Class171_Sub2.method15846(this, i, i_391_, is, is_392_);
    }
    
    abstract Interface40 method15442(Class173 class173, int i, int i_393_,
				     boolean bool, byte[] is, int i_394_,
				     int i_395_);
    
    public final Class99 method2296
	(Class622 class622, Class102_Sub1[] class102_sub1s, boolean bool) {
	return new Class99_Sub5(this, class622, class102_sub1s, bool);
    }
    
    final void method15443(boolean bool) {
	if (bool != aBool9184) {
	    aBool9184 = bool;
	    method15406();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    public final Class99 method2298
	(Class622 class622, Class102_Sub1[] class102_sub1s, boolean bool) {
	return new Class99_Sub5(this, class622, class102_sub1s, bool);
    }
    
    final void method15444() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    anInt9195 = ((Class87_Sub2) this).anInt9280;
	    anInt9168 = ((Class87_Sub2) this).anInt9192;
	    anInt9197 = ((Class87_Sub2) this).anInt9261;
	    anInt9198 = ((Class87_Sub2) this).anInt9194;
	    aFloat9244 = ((Class87_Sub2) this).aFloat9183;
	    aFloat9182 = ((Class87_Sub2) this).aFloat9181;
	} else {
	    anInt9195 = 0;
	    anInt9168 = 0;
	    anInt9197 = aClass169_993.method3826();
	    anInt9198 = aClass169_993.method3836();
	    aFloat9244 = 0.0F;
	    aFloat9182 = 1.0F;
	}
	method15338();
	((Class87_Sub2) this).aFloat9170
	    = (float) ((Class87_Sub2) this).anInt9261 / 2.0F;
	((Class87_Sub2) this).aFloat9224
	    = (float) ((Class87_Sub2) this).anInt9194 / 2.0F;
	((Class87_Sub2) this).aFloat9191
	    = ((float) ((Class87_Sub2) this).anInt9280
	       + ((Class87_Sub2) this).aFloat9170);
	((Class87_Sub2) this).aFloat9179
	    = ((float) ((Class87_Sub2) this).anInt9192
	       + ((Class87_Sub2) this).aFloat9224);
    }
    
    public final void method2300(int i) {
	/* empty */
    }
    
    final void method2190(float f, float f_396_, float f_397_, float f_398_,
			  float f_399_, float f_400_) {
	Class383_Sub1.aFloat10094 = f;
	Class383_Sub1.aFloat10095 = f_396_;
	Class383_Sub1.aFloat10096 = f_397_;
	Class383_Sub1.aFloat10097 = f_400_;
    }
    
    public final void method2302(int i) {
	/* empty */
    }
    
    public final Class86 method2087(Class98 class98, int i, int i_401_,
				    int i_402_, int i_403_) {
	return new Class86_Sub1(this, class98, i, i_402_, i_403_, i_401_);
    }
    
    final Interface40 method15445(Class173 class173, int i, int i_404_,
				  boolean bool, byte[] is) {
	return method15442(class173, i, i_404_, bool, is, 0, 0);
    }
    
    public final int method2305(int i, int i_405_) {
	return i & i_405_ ^ i_405_;
    }
    
    public final NativeHeapBuffer method15446(int i, boolean bool) {
	return ((Class87_Sub2) this).aNativeHeap9144.method996(i, bool);
    }
    
    public final Class86 method2304(Class98 class98, int i, int i_406_,
				    int i_407_, int i_408_) {
	return new Class86_Sub1(this, class98, i, i_407_, i_408_, i_406_);
    }
    
    final void method15447() {
	method15412(0, ((Class87_Sub2) this).anInterface36_9283);
	method15411(((Class87_Sub2) this).aClass367_9286);
	method15419(Class311.aClass311_4592, 0, 1);
    }
    
    public final int method2309(int i, int i_409_) {
	return i | i_409_;
    }
    
    public final int method2310(int i, int i_410_) {
	return i | i_410_;
    }
    
    public final int method2411(int i, int i_411_) {
	return i | i_411_;
    }
    
    public final int method2312(int i, int i_412_) {
	return i | i_412_;
    }
    
    public final int method2452(int i, int i_413_) {
	return i | i_413_;
    }
    
    public final Class163 method2313(int i, int i_414_, int[][] is,
				     int[][] is_415_, int i_416_, int i_417_,
				     int i_418_) {
	return new Class163_Sub3(this, i_417_, i_418_, i, i_414_, is, is_415_,
				 i_416_);
    }
    
    public final void method2285(int i, int i_419_, int i_420_, int i_421_,
				 int i_422_, int i_423_, Class171 class171,
				 int i_424_, int i_425_) {
	/* empty */
    }
    
    public final Class276 method2189() {
	return ((Class87_Sub2) this).aClass276_9126;
    }
    
    public final void method15448(Interface44 interface44) {
	if (((Class87_Sub2) this).anInterface44Array9226[anInt9225]
	    != interface44) {
	    ((Class87_Sub2) this).anInterface44Array9226[anInt9225]
		= interface44;
	    if (interface44 != null)
		interface44.method319();
	    else
		anInterface40_9233.method319();
	    ((Class87_Sub2) this).anInt9243 &= ~0x1;
	}
    }
    
    public final Class350 method2317() {
	return ((Class87_Sub2) this).aClass350_9296;
    }
    
    abstract void method15449();
    
    public void method2331() {
	((Class87_Sub2) this).anInt9280 = 0;
	((Class87_Sub2) this).anInt9192 = 0;
	((Class87_Sub2) this).anInt9261 = aClass169_993.method3826();
	((Class87_Sub2) this).anInt9194 = aClass169_993.method3836();
	method15522();
    }
    
    public final void method2358(int i, int i_426_, int i_427_, int i_428_) {
	for (int i_429_ = 0;
	     i_429_ < ((Class87_Sub2) this).aClass383Array9239.length;
	     i_429_++) {
	    if (((Class87_Sub2) this).aClass383Array9239[i_429_] != null
		&& ((Class87_Sub2) this).aClass383Array9239[i_429_]
		       .method7055()
		&& !((Class87_Sub2) this).aClass383Array9239[i_429_]
			.method7056()) {
		((Class87_Sub2) this).aClass392_9248
		    .method7187(i, i_426_, i_427_, i_428_);
		break;
	    }
	}
    }
    
    public final int method2280() {
	return anInt9277 - 2;
    }
    
    public final void method2414(int i, Class171 class171, int i_430_,
				 int i_431_) {
	method2281(false);
	((Class87_Sub2) this).aClass135_Sub1_9236.method3370
	    (0.0F, 0.0F, (float) method2164(-2132926659).method3826(), 0.0F,
	     0.0F, (float) method2164(918494693).method3836(), 0, class171,
	     i_430_, i_431_);
	method2281(true);
    }
    
    public final void method2325(int i, Class243_Sub42[] class243_sub42s) {
	for (int i_432_ = 0; i_432_ < i; i_432_++)
	    aClass243_Sub42Array9218[i_432_] = class243_sub42s[i_432_];
	anInt9220 = i;
    }
    
    abstract void method15450();
    
    final void method15451() {
	((Class87_Sub2) this).aBool9297 = false;
	method15357();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15435();
    }
    
    final void method15452() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5714) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5714;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9171;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    public final void method2173(Class104 class104) {
	((Class87_Sub2) this).aClass387_9274.method7117(this, class104);
    }
    
    public final void method2330(Class350 class350) {
	((Class87_Sub2) this).aClass350_9151 = class350;
	aClass276_9230.method5513(((Class87_Sub2) this).aClass350_9151);
	((Class87_Sub2) this).aClass276_9204.method5455(aClass276_9230);
	((Class87_Sub2) this).aClass276_9204.method5545();
	((Class87_Sub2) this).aClass350_9152.method6638(class350);
	((Class87_Sub2) this).aClass350_9152.method6624();
	((Class87_Sub2) this).aClass276_9155
	    .method5513(((Class87_Sub2) this).aClass350_9152);
	method15343();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15565();
    }
    
    public final void method15453(int i, Class385 class385) {
	method15385(i, class385, false);
    }
    
    public final void method2332(Class350 class350) {
	((Class87_Sub2) this).aClass350_9151 = class350;
	aClass276_9230.method5513(((Class87_Sub2) this).aClass350_9151);
	((Class87_Sub2) this).aClass276_9204.method5455(aClass276_9230);
	((Class87_Sub2) this).aClass276_9204.method5545();
	((Class87_Sub2) this).aClass350_9152.method6638(class350);
	((Class87_Sub2) this).aClass350_9152.method6624();
	((Class87_Sub2) this).aClass276_9155
	    .method5513(((Class87_Sub2) this).aClass350_9152);
	method15343();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15565();
    }
    
    public Class350 method2333() {
	return ((Class87_Sub2) this).aClass350_9151;
    }
    
    public Class350 method2334() {
	return ((Class87_Sub2) this).aClass350_9151;
    }
    
    public final void method2335(Class276 class276) {
	((Class87_Sub2) this).aClass276_9234.method5455(class276);
	method15343();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15435();
    }
    
    public final void method2126(int i, int i_433_, int i_434_, int i_435_,
				 int i_436_, int i_437_, byte[] is, int i_438_,
				 int i_439_) {
	/* empty */
    }
    
    public final void method2398(Class276 class276) {
	((Class87_Sub2) this).aClass276_9234.method5455(class276);
	method15343();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15435();
    }
    
    public final void method2338(float f) {
	if (aFloat9145 != f) {
	    aFloat9145 = f;
	    method15364();
	    method15367();
	}
    }
    
    public final void method2453(int i, int i_440_, int i_441_, int i_442_,
				 int i_443_, int i_444_) {
	i_441_--;
	i_442_--;
	int i_445_ = 0;
	if (this instanceof Class87_Sub2_Sub2)
	    i_445_ = -1;
	method2131(i, i_440_ + i_445_, i + i_441_, i_440_ + i_445_, i_443_,
		   i_444_);
	method2131(i, i_440_ + i_442_ + i_445_, i + i_441_,
		   i_440_ + i_442_ + i_445_, i_443_, i_444_);
	method2131(i, i_440_, i, i_440_ + i_442_, i_443_, i_444_);
	method2131(i + i_441_, i_440_, i + i_441_, i_440_ + i_442_, i_443_,
		   i_444_);
    }
    
    public final void method2340(int i, float f, float f_446_, float f_447_,
				 float f_448_, float f_449_) {
	boolean bool = ((Class87_Sub2) this).anInt9211 != i;
	if (bool || aFloat9193 != f || aFloat9217 != f_446_) {
	    ((Class87_Sub2) this).anInt9211 = i;
	    aFloat9193 = f;
	    aFloat9217 = f_446_;
	    if (bool) {
		aFloat9154 = (float) (((Class87_Sub2) this).anInt9211
				      & 0xff0000) / 1.671168E7F;
		aFloat9213 = (float) (((Class87_Sub2) this).anInt9211
				      & 0xff00) / 65280.0F;
		aFloat9214 = ((float) (((Class87_Sub2) this).anInt9211 & 0xff)
			      / 255.0F);
		method15364();
	    }
	    method15365();
	}
	if (((Class87_Sub2) this).aFloatArray9209[0] != f_447_
	    || ((Class87_Sub2) this).aFloatArray9209[1] != f_448_
	    || ((Class87_Sub2) this).aFloatArray9209[2] != f_449_) {
	    ((Class87_Sub2) this).aFloatArray9209[0] = f_447_;
	    ((Class87_Sub2) this).aFloatArray9209[1] = f_448_;
	    ((Class87_Sub2) this).aFloatArray9209[2] = f_449_;
	    ((Class87_Sub2) this).aFloatArray9295[0] = -f_447_;
	    ((Class87_Sub2) this).aFloatArray9295[1] = -f_448_;
	    ((Class87_Sub2) this).aFloatArray9295[2] = -f_449_;
	    float f_450_
		= (float) (1.0 / Math.sqrt((double) (f_447_ * f_447_
						     + f_448_ * f_448_
						     + f_449_ * f_449_)));
	    aFloatArray9207[0] = f_447_ * f_450_;
	    aFloatArray9207[1] = f_448_ * f_450_;
	    aFloatArray9207[2] = f_449_ * f_450_;
	    aFloatArray9208[0] = -aFloatArray9207[0];
	    aFloatArray9208[1] = -aFloatArray9207[1];
	    aFloatArray9208[2] = -aFloatArray9207[2];
	    method15366();
	    ((Class87_Sub2) this).anInt9196 = (int) (f_447_ * 256.0F / f_448_);
	    ((Class87_Sub2) this).anInt9131 = (int) (f_449_ * 256.0F / f_448_);
	}
	method15367();
    }
    
    public final void method2341(int i, float f, float f_451_, float f_452_,
				 float f_453_, float f_454_) {
	boolean bool = ((Class87_Sub2) this).anInt9211 != i;
	if (bool || aFloat9193 != f || aFloat9217 != f_451_) {
	    ((Class87_Sub2) this).anInt9211 = i;
	    aFloat9193 = f;
	    aFloat9217 = f_451_;
	    if (bool) {
		aFloat9154 = (float) (((Class87_Sub2) this).anInt9211
				      & 0xff0000) / 1.671168E7F;
		aFloat9213 = (float) (((Class87_Sub2) this).anInt9211
				      & 0xff00) / 65280.0F;
		aFloat9214 = ((float) (((Class87_Sub2) this).anInt9211 & 0xff)
			      / 255.0F);
		method15364();
	    }
	    method15365();
	}
	if (((Class87_Sub2) this).aFloatArray9209[0] != f_452_
	    || ((Class87_Sub2) this).aFloatArray9209[1] != f_453_
	    || ((Class87_Sub2) this).aFloatArray9209[2] != f_454_) {
	    ((Class87_Sub2) this).aFloatArray9209[0] = f_452_;
	    ((Class87_Sub2) this).aFloatArray9209[1] = f_453_;
	    ((Class87_Sub2) this).aFloatArray9209[2] = f_454_;
	    ((Class87_Sub2) this).aFloatArray9295[0] = -f_452_;
	    ((Class87_Sub2) this).aFloatArray9295[1] = -f_453_;
	    ((Class87_Sub2) this).aFloatArray9295[2] = -f_454_;
	    float f_455_
		= (float) (1.0 / Math.sqrt((double) (f_452_ * f_452_
						     + f_453_ * f_453_
						     + f_454_ * f_454_)));
	    aFloatArray9207[0] = f_452_ * f_455_;
	    aFloatArray9207[1] = f_453_ * f_455_;
	    aFloatArray9207[2] = f_454_ * f_455_;
	    aFloatArray9208[0] = -aFloatArray9207[0];
	    aFloatArray9208[1] = -aFloatArray9207[1];
	    aFloatArray9208[2] = -aFloatArray9207[2];
	    method15366();
	    ((Class87_Sub2) this).anInt9196 = (int) (f_452_ * 256.0F / f_453_);
	    ((Class87_Sub2) this).anInt9131 = (int) (f_454_ * 256.0F / f_453_);
	}
	method15367();
    }
    
    public final int method2306(int i, int i_456_) {
	return i & i_456_ ^ i_456_;
    }
    
    public final void method2343(int i) {
	((Class87_Sub2) this).anInt9133 = 0;
	for (/**/; i > 1; i >>= 1)
	    ((Class87_Sub2) this).anInt9133++;
	((Class87_Sub2) this).anInt9221 = 1 << ((Class87_Sub2) this).anInt9133;
    }
    
    public final void method2161(int i, int i_457_, int i_458_) {
	if (anInt9147 != i || anInt9169 != i_457_ || anInt9263 != i_458_) {
	    anInt9147 = i;
	    anInt9169 = i_457_;
	    anInt9263 = i_458_;
	    method15404();
	    method15406();
	}
    }
    
    public final void method2345(int i, int i_459_, int i_460_) {
	if (anInt9147 != i || anInt9169 != i_459_ || anInt9263 != i_460_) {
	    anInt9147 = i;
	    anInt9169 = i_459_;
	    anInt9263 = i_460_;
	    method15404();
	    method15406();
	}
    }
    
    public final void method2346(int i, int i_461_, int i_462_) {
	if (anInt9147 != i || anInt9169 != i_461_ || anInt9263 != i_462_) {
	    anInt9147 = i;
	    anInt9169 = i_461_;
	    anInt9263 = i_462_;
	    method15404();
	    method15406();
	}
    }
    
    public final Class103 method2347(int i) {
	return new Class103_Sub1_Sub1(this, i);
    }
    
    public final Class103 method2106(int i) {
	return new Class103_Sub1_Sub1(this, i);
    }
    
    public final Class103 method2349(int i) {
	return new Class103_Sub1_Sub1(this, i);
    }
    
    public final Class103 method2350(int i) {
	return new Class103_Sub1_Sub1(this, i);
    }
    
    public final void method2456(int i, int i_463_, int i_464_, int i_465_) {
	int i_466_;
	int i_467_;
	if (aClass169_993 != null) {
	    i_467_ = aClass169_993.method3826();
	    i_466_ = aClass169_993.method3836();
	} else {
	    i_466_ = 0;
	    i_467_ = 0;
	}
	if (i <= 0 && i_464_ >= i_467_ - 1 && i_463_ <= 0
	    && i_465_ >= i_466_ - 1)
	    method2112();
	else {
	    anInt9176 = i >= 0 ? i : 0;
	    anInt9190 = i_464_ <= i_467_ ? i_464_ : i_467_;
	    anInt9253 = i_463_ >= 0 ? i_463_ : 0;
	    anInt9202 = i_465_ <= i_466_ ? i_465_ : i_466_;
	    if (!aBool9175 && (((Class87_Sub2) this).aBool9237
			       || method15320() == Class363.aClass363_5517)) {
		aBool9175 = true;
		method15340();
	    }
	    method15339();
	}
    }
    
    public final void method2393(Class103 class103) {
	((Class87_Sub2) this).aClass103_Sub1_9254 = (Class103_Sub1) class103;
    }
    
    public final void method2355(Class103 class103) {
	((Class87_Sub2) this).aClass103_Sub1_9254 = (Class103_Sub1) class103;
    }
    
    abstract Interface45 method15454(Class173 class173, Class90 class90, int i,
				     int i_468_);
    
    public final void method2181(int i, int i_469_, int i_470_, int i_471_) {
	for (int i_472_ = 0;
	     i_472_ < ((Class87_Sub2) this).aClass383Array9239.length;
	     i_472_++) {
	    if (((Class87_Sub2) this).aClass383Array9239[i_472_] != null
		&& ((Class87_Sub2) this).aClass383Array9239[i_472_]
		       .method7055()
		&& !((Class87_Sub2) this).aClass383Array9239[i_472_]
			.method7056()) {
		((Class87_Sub2) this).aClass392_9248
		    .method7187(i, i_469_, i_470_, i_471_);
		break;
	    }
	}
    }
    
    public final void method2266() {
	((Class87_Sub2) this).aClass392_9248.method7171();
    }
    
    abstract Interface40 method15455(Class173 class173, int i, int i_473_,
				     boolean bool, float[] fs, int i_474_,
				     int i_475_);
    
    public final boolean method2360() {
	return ((Class392) ((Class87_Sub2) this).aClass392_9248).aBool5692;
    }
    
    final Interface40 method15456(int i, int i_476_, boolean bool, int[] is) {
	return method15376(i, i_476_, bool, is, 0, 0);
    }
    
    public boolean method2362() {
	return (((Class87_Sub2) this).aClass383Array9239[1] != null
		&& ((Class87_Sub2) this).aClass383Array9239[1].method7055());
    }
    
    public boolean method2363() {
	return (((Class87_Sub2) this).aClass383Array9239[1] != null
		&& ((Class87_Sub2) this).aClass383Array9239[1].method7055());
    }
    
    public final boolean method2377() {
	return (((Class87_Sub2) this).aClass383Array9239[3] != null
		&& ((Class87_Sub2) this).aClass383Array9239[3].method7055());
    }
    
    public void method2365(float f, float f_477_, float f_478_, float f_479_,
			   float f_480_) {
	Class383_Sub2.aFloat10118 = f;
	Class383_Sub2.aFloat10119 = f_477_;
	Class383_Sub2.aFloat10120 = f_478_;
	Class383_Sub2.aFloat10121 = f_479_;
	Class383_Sub2.aFloat10111 = f_480_;
    }
    
    public final Class171 method2295(int i, int i_481_, int[] is,
				     int[] is_482_) {
	return Class171_Sub2.method15846(this, i, i_481_, is, is_482_);
    }
    
    public Class167 method2455(int[] is) {
	return new Class167_Sub1(this, is);
    }
    
    final void method15457() {
	((Class87_Sub2) this).aClass276_9174.method5455(aClass276_9230);
	((Class87_Sub2) this).aClass276_9174
	    .method5537(((Class87_Sub2) this).aClass276_9234);
	((Class87_Sub2) this).aClass276_9174
	    .method5515(((Class87_Sub2) this).aFloatArrayArray9291[0]);
	((Class87_Sub2) this).aClass276_9174
	    .method5479(((Class87_Sub2) this).aFloatArrayArray9291[1]);
	((Class87_Sub2) this).aClass276_9174
	    .method5474(((Class87_Sub2) this).aFloatArrayArray9291[2]);
	((Class87_Sub2) this).aClass276_9174
	    .method5475(((Class87_Sub2) this).aFloatArrayArray9291[3]);
	((Class87_Sub2) this).aClass276_9174
	    .method5549(((Class87_Sub2) this).aFloatArrayArray9291[4]);
	((Class87_Sub2) this).aClass276_9174
	    .method5569(((Class87_Sub2) this).aFloatArrayArray9291[5]);
	aClass276_9289.method5455(((Class87_Sub2) this).aClass276_9174);
	method15350(aClass276_9289);
    }
    
    public boolean method2369() {
	return (((Class87_Sub2) this).aClass383Array9239[2] != null
		&& ((Class87_Sub2) this).aClass383Array9239[2].method7055());
    }
    
    public void method2111(Class167 class167, float f, Class167 class167_483_,
			   float f_484_, Class167 class167_485_,
			   float f_486_) {
	int i = 0;
	Class383_Sub3.aClass167_Sub1Array10138[0] = (Class167_Sub1) class167;
	Class383_Sub3.aFloatArray10146[0] = f;
	if (f > 0.0F)
	    i++;
	Class383_Sub3.aClass167_Sub1Array10138[1]
	    = (Class167_Sub1) class167_483_;
	Class383_Sub3.aFloatArray10146[1] = f_484_;
	if (f_484_ > 0.0F)
	    i++;
	Class383_Sub3.aClass167_Sub1Array10138[2]
	    = (Class167_Sub1) class167_485_;
	Class383_Sub3.aFloatArray10146[2] = f_486_;
	if (f_486_ > 0.0F)
	    i++;
	Class383_Sub3.anInt10136 = i;
	Class383_Sub3.aFloat10137 = 1.0F - (f + f_484_ + f_486_);
    }
    
    public final boolean method2450() {
	if (((Class87_Sub2) this).aClass383Array9239[3] != null
	    && !((Class87_Sub2) this).aClass383Array9239[3].method7055()) {
	    boolean bool
		= ((Class87_Sub2) this).aClass392_9248
		      .method7165(((Class87_Sub2) this).aClass383Array9239[3]);
	    if (bool)
		((Class87_Sub2) this).aClass380_9232.method7028();
	    return bool;
	}
	return false;
    }
    
    abstract boolean method15458(Class173 class173, Class90 class90);
    
    public final void method2367() {
	if (((Class87_Sub2) this).aClass383Array9239[3] != null
	    && ((Class87_Sub2) this).aClass383Array9239[3].method7055()) {
	    ((Class87_Sub2) this).aClass392_9248
		.method7182(((Class87_Sub2) this).aClass383Array9239[3]);
	    ((Class87_Sub2) this).aClass380_9232.method7028();
	}
    }
    
    public final void method2374() {
	if (((Class87_Sub2) this).aClass383Array9239[3] != null
	    && ((Class87_Sub2) this).aClass383Array9239[3].method7055()) {
	    ((Class87_Sub2) this).aClass392_9248
		.method7182(((Class87_Sub2) this).aClass383Array9239[3]);
	    ((Class87_Sub2) this).aClass380_9232.method7028();
	}
    }
    
    public final void method2375() {
	if (((Class87_Sub2) this).aClass383Array9239[3] != null
	    && ((Class87_Sub2) this).aClass383Array9239[3].method7055()) {
	    ((Class87_Sub2) this).aClass392_9248
		.method7182(((Class87_Sub2) this).aClass383Array9239[3]);
	    ((Class87_Sub2) this).aClass380_9232.method7028();
	}
    }
    
    public final boolean method2370() {
	return (((Class87_Sub2) this).aClass383Array9239[3] != null
		&& ((Class87_Sub2) this).aClass383Array9239[3].method7055());
    }
    
    public final void method2328(Class104 class104) {
	((Class87_Sub2) this).aClass387_9274.method7117(this, class104);
    }
    
    abstract Interface38 method15459(Class173 class173, int i, int i_487_,
				     int i_488_, boolean bool, byte[] is);
    
    public final void method2314(int i, Class105 class105) {
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	((Class87_Sub2) this).aBool9215 = true;
    }
    
    public final void method2326(int i, Class243_Sub42[] class243_sub42s) {
	for (int i_489_ = 0; i_489_ < i; i_489_++)
	    aClass243_Sub42Array9218[i_489_] = class243_sub42s[i_489_];
	anInt9220 = i;
    }
    
    public final void method2381(int i, Class105 class105) {
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	((Class87_Sub2) this).aBool9215 = true;
    }
    
    public final void method2254(int i, Class105 class105) {
	if (!((Class87_Sub2) this).aBool9215)
	    throw new RuntimeException("");
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	if (((Class87_Sub2) this).aBool9216) {
	    ((Class87_Sub2) this).aClass65Array9142[3].method1515();
	    ((Class87_Sub2) this).aClass65Array9142[3].method1514();
	}
    }
    
    public final void method2273(int i, int i_490_, int i_491_, int i_492_,
				 int i_493_, int i_494_, int i_495_) {
	i += 1.0F;
	i_490_ += 1.0F;
	i_491_ += 1.0F;
	i_492_ += 1.0F;
	float f = (float) (i_491_ - i);
	float f_496_ = (float) (i_492_ - i_490_);
	float f_497_
	    = 1.0F / (float) Math.sqrt((double) (f * f + f_496_ * f_496_));
	f *= f_497_;
	f_496_ *= f_497_;
	i -= f;
	i_490_ -= f_496_;
	float f_498_ = -f_496_;
	float f_499_ = f;
	f_498_ *= 0.5F * (float) i_494_;
	f_499_ *= 0.5F * (float) i_494_;
	((Class87_Sub2) this).aClass135_Sub1_9256.method3367
	    ((float) i - f_498_, (float) i_490_ - f_499_,
	     (float) i_491_ - f_498_, (float) i_492_ - f_499_,
	     (float) i + f_498_, (float) i_490_ + f_499_, 0, i_493_, i_495_);
    }
    
    public final void method2384(int i, Class105 class105) {
	if (!((Class87_Sub2) this).aBool9215)
	    throw new RuntimeException("");
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	if (((Class87_Sub2) this).aBool9216) {
	    ((Class87_Sub2) this).aClass65Array9142[3].method1515();
	    ((Class87_Sub2) this).aClass65Array9142[3].method1514();
	}
    }
    
    public final void method2399(int i, Class105 class105) {
	if (!((Class87_Sub2) this).aBool9215)
	    throw new RuntimeException("");
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	if (((Class87_Sub2) this).aBool9216) {
	    ((Class87_Sub2) this).aClass65Array9142[3].method1515();
	    ((Class87_Sub2) this).aClass65Array9142[3].method1514();
	}
    }
    
    abstract void method15460();
    
    public final void method2387() {
	((Class87_Sub2) this).aBool9215 = false;
    }
    
    public void method2100(int i, int i_500_, int i_501_, int i_502_) {
	((Class87_Sub2) this).anInt9280 = i;
	((Class87_Sub2) this).anInt9192 = i_500_;
	((Class87_Sub2) this).anInt9261 = i_501_;
	((Class87_Sub2) this).anInt9194 = i_502_;
	method15522();
    }
    
    public final void method2389(int i, int i_503_, float f, int i_504_,
				 int i_505_, float f_506_, int i_507_,
				 int i_508_, float f_509_, int i_510_,
				 int i_511_, int i_512_, int i_513_) {
	/* empty */
    }
    
    abstract void method15461(boolean bool);
    
    public final Class135 method2083(int i, int i_514_, int i_515_, int i_516_,
				     boolean bool) {
	Class135_Sub1 class135_sub1
	    = new Class135_Sub1(this, i_515_, i_516_, bool, false);
	class135_sub1.method3350(0, 0, i_515_, i_516_, i, i_514_);
	return class135_sub1;
    }
    
    public void method2392(float f, float f_517_, float f_518_, float[] fs) {
	float f_519_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		  * f_517_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		  * f_518_));
	float f_520_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * f_517_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * f_518_));
	if (f_519_ < -f_520_ || f_519_ > f_520_) {
	    float[] fs_521_ = fs;
	    float[] fs_522_ = fs;
	    fs[2] = Float.NaN;
	    fs_522_[1] = Float.NaN;
	    fs_521_[0] = Float.NaN;
	} else {
	    float f_523_
		= (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		      * f)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		      * f_517_)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		      * f_518_));
	    if (f_523_ < -f_520_ || f_523_ > f_520_) {
		float[] fs_524_ = fs;
		float[] fs_525_ = fs;
		fs[2] = Float.NaN;
		fs_525_[1] = Float.NaN;
		fs_524_[0] = Float.NaN;
	    } else {
		float f_526_
		    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [1]) * f
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [5]) * f_517_
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [9]) * f_518_);
		if (f_526_ < -f_520_ || f_526_ > f_520_) {
		    float[] fs_527_ = fs;
		    float[] fs_528_ = fs;
		    fs[2] = Float.NaN;
		    fs_528_[1] = Float.NaN;
		    fs_527_[0] = Float.NaN;
		} else {
		    float f_529_
			= (aClass276_9230.aFloatArray4141[14]
			   + aClass276_9230.aFloatArray4141[2] * f
			   + aClass276_9230.aFloatArray4141[6] * f_517_
			   + aClass276_9230.aFloatArray4141[10] * f_518_);
		    fs[0] = (((Class87_Sub2) this).aFloat9191
			     + (((Class87_Sub2) this).aFloat9170 * f_523_
				/ f_520_));
		    fs[1] = (((Class87_Sub2) this).aFloat9179
			     + (((Class87_Sub2) this).aFloat9224 * f_526_
				/ f_520_));
		    fs[2] = f_529_;
		}
	    }
	}
    }
    
    public void method2130(float f, float f_530_, float f_531_, float[] fs) {
	float f_532_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		  * f_530_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		  * f_531_));
	float f_533_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * f_530_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * f_531_));
	if (f_532_ < -f_533_ || f_532_ > f_533_) {
	    float[] fs_534_ = fs;
	    float[] fs_535_ = fs;
	    fs[2] = Float.NaN;
	    fs_535_[1] = Float.NaN;
	    fs_534_[0] = Float.NaN;
	} else {
	    float f_536_
		= (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		      * f)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		      * f_530_)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		      * f_531_));
	    if (f_536_ < -f_533_ || f_536_ > f_533_) {
		float[] fs_537_ = fs;
		float[] fs_538_ = fs;
		fs[2] = Float.NaN;
		fs_538_[1] = Float.NaN;
		fs_537_[0] = Float.NaN;
	    } else {
		float f_539_
		    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [1]) * f
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [5]) * f_530_
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [9]) * f_531_);
		if (f_539_ < -f_533_ || f_539_ > f_533_) {
		    float[] fs_540_ = fs;
		    float[] fs_541_ = fs;
		    fs[2] = Float.NaN;
		    fs_541_[1] = Float.NaN;
		    fs_540_[0] = Float.NaN;
		} else {
		    float f_542_
			= (aClass276_9230.aFloatArray4141[14]
			   + aClass276_9230.aFloatArray4141[2] * f
			   + aClass276_9230.aFloatArray4141[6] * f_530_
			   + aClass276_9230.aFloatArray4141[10] * f_531_);
		    fs[0] = (((Class87_Sub2) this).aFloat9191
			     + (((Class87_Sub2) this).aFloat9170 * f_536_
				/ f_533_));
		    fs[1] = (((Class87_Sub2) this).aFloat9179
			     + (((Class87_Sub2) this).aFloat9224 * f_539_
				/ f_533_));
		    fs[2] = f_542_;
		}
	    }
	}
    }
    
    public void method2394(float f, float f_543_, float f_544_, float[] fs) {
	float f_545_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[14]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[2] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[6]
		  * f_543_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[10]
		  * f_544_));
	float f_546_
	    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[15]
	       + ((Class87_Sub2) this).aClass276_9174.aFloatArray4141[3] * f
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[7]
		  * f_543_)
	       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[11]
		  * f_544_));
	if (f_545_ < -f_546_ || f_545_ > f_546_) {
	    float[] fs_547_ = fs;
	    float[] fs_548_ = fs;
	    fs[2] = Float.NaN;
	    fs_548_[1] = Float.NaN;
	    fs_547_[0] = Float.NaN;
	} else {
	    float f_549_
		= (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[12]
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[0]
		      * f)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[4]
		      * f_543_)
		   + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[8]
		      * f_544_));
	    if (f_549_ < -f_546_ || f_549_ > f_546_) {
		float[] fs_550_ = fs;
		float[] fs_551_ = fs;
		fs[2] = Float.NaN;
		fs_551_[1] = Float.NaN;
		fs_550_[0] = Float.NaN;
	    } else {
		float f_552_
		    = (((Class87_Sub2) this).aClass276_9174.aFloatArray4141[13]
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [1]) * f
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [5]) * f_543_
		       + (((Class87_Sub2) this).aClass276_9174.aFloatArray4141
			  [9]) * f_544_);
		if (f_552_ < -f_546_ || f_552_ > f_546_) {
		    float[] fs_553_ = fs;
		    float[] fs_554_ = fs;
		    fs[2] = Float.NaN;
		    fs_554_[1] = Float.NaN;
		    fs_553_[0] = Float.NaN;
		} else {
		    float f_555_
			= (aClass276_9230.aFloatArray4141[14]
			   + aClass276_9230.aFloatArray4141[2] * f
			   + aClass276_9230.aFloatArray4141[6] * f_543_
			   + aClass276_9230.aFloatArray4141[10] * f_544_);
		    fs[0] = (((Class87_Sub2) this).aFloat9191
			     + (((Class87_Sub2) this).aFloat9170 * f_549_
				/ f_546_));
		    fs[1] = (((Class87_Sub2) this).aFloat9179
			     + (((Class87_Sub2) this).aFloat9224 * f_552_
				/ f_546_));
		    fs[2] = f_555_;
		}
	    }
	}
    }
    
    public final boolean method2420() {
	return true;
    }
    
    abstract void method15462();
    
    public final boolean method2401() {
	return true;
    }
    
    public final boolean method2402() {
	return true;
    }
    
    public void method2081(int i) {
	if (((Class87_Sub2) this).aClass380_9232 != null)
	    ((Class87_Sub2) this).aClass380_9232.method7029();
	anInt9271 = i & 0x7fffffff;
    }
    
    final Class276 method15463() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    return ((Class87_Sub2) this).aClass276_9155;
	return aClass276_9158;
    }
    
    abstract Interface32 method15464(int i, boolean bool, int[][] is);
    
    public final void method2406(int i, int i_556_, int i_557_, int i_558_,
				 int i_559_, int i_560_) {
	i_557_--;
	i_558_--;
	int i_561_ = 0;
	if (this instanceof Class87_Sub2_Sub2)
	    i_561_ = -1;
	method2131(i, i_556_ + i_561_, i + i_557_, i_556_ + i_561_, i_559_,
		   i_560_);
	method2131(i, i_556_ + i_558_ + i_561_, i + i_557_,
		   i_556_ + i_558_ + i_561_, i_559_, i_560_);
	method2131(i, i_556_, i, i_556_ + i_558_, i_559_, i_560_);
	method2131(i + i_557_, i_556_, i + i_557_, i_556_ + i_558_, i_559_,
		   i_560_);
    }
    
    abstract void method15465();
    
    public void method2348(int i, int i_562_, int i_563_, int i_564_,
			   int i_565_, int i_566_, int i_567_, int i_568_,
			   int i_569_) {
	float f = (float) i_563_ - (float) i;
	float f_570_ = (float) i_564_ - (float) i_562_;
	if (f == 0.0F && f_570_ == 0.0F)
	    f = 1.0F;
	else {
	    float f_571_
		= (float) (1.0
			   / Math.sqrt((double) (f * f + f_570_ * f_570_)));
	    f *= f_571_;
	    f_570_ *= f_571_;
	}
	method15352();
	Class65 class65 = ((Class87_Sub2) this).aClass65Array9142[13];
	class65.method1526();
	class65.method1512(i_565_);
	method15674(i_566_);
	class65.method1516();
	method15461(false);
	i_569_ %= i_568_ + i_567_;
	float f_572_ = f * (float) i_567_;
	float f_573_ = f_570_ * (float) i_567_;
	float f_574_ = 0.0F;
	float f_575_ = 0.0F;
	float f_576_ = f_572_;
	float f_577_ = f_573_;
	if (i_569_ > i_567_) {
	    f_574_ = f * (float) (i_567_ + i_568_ - i_569_);
	    f_575_ = f_570_ * (float) (i_567_ + i_568_ - i_569_);
	} else {
	    f_576_ = f * (float) (i_567_ - i_569_);
	    f_577_ = f_570_ * (float) (i_567_ - i_569_);
	}
	float f_578_ = (float) i + f_574_;
	float f_579_ = (float) i_562_ + f_575_;
	float f_580_ = f * (float) i_568_;
	float f_581_ = f_570_ * (float) i_568_;
	for (;;) {
	    if (i_563_ > i) {
		if (f_578_ > (float) i_563_)
		    break;
		if (f_578_ + f_576_ > (float) i_563_)
		    f_576_ = (float) i_563_ - f_578_;
	    } else {
		if (f_578_ < (float) i_563_)
		    break;
		if (f_578_ + f_576_ < (float) i_563_)
		    f_576_ = (float) i_563_ - f_578_;
	    }
	    if (i_564_ > i_562_) {
		if (f_579_ > (float) i_564_)
		    break;
		if (f_579_ + f_577_ > (float) i_564_)
		    f_577_ = (float) i_564_ - f_579_;
	    } else {
		if (f_579_ < (float) i_564_)
		    break;
		if (f_579_ + f_577_ < (float) i_564_)
		    f_577_ = (float) i_564_ - f_579_;
	    }
	    if (!method15316(f_578_, f_579_, 0.0F, f_578_ + f_576_,
			     f_579_ + f_577_, 0.0F))
		return;
	    method15447();
	    f_578_ += f_580_ + f_576_;
	    f_579_ += f_581_ + f_577_;
	    f_576_ = f_572_;
	    f_577_ = f_573_;
	}
	method15461(true);
	class65.method1511();
    }
    
    public abstract float method15466();
    
    public void method15467(Interface37 interface37) {
	((Class87_Sub2) this).aClass625_9127.method13469(interface37,
							 (byte) -94);
    }
    
    public final void method2380(int i, Class105 class105) {
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	((Class87_Sub2) this).aBool9215 = true;
    }
    
    public void method15468(int i) {
	if (i != anInt9231) {
	    anInt9231 = i;
	    method15391();
	}
    }
    
    final void method2413(float f, float f_582_, float f_583_, float f_584_,
			  float f_585_, float f_586_) {
	Class383_Sub1.aFloat10094 = f;
	Class383_Sub1.aFloat10095 = f_582_;
	Class383_Sub1.aFloat10096 = f_583_;
	Class383_Sub1.aFloat10097 = f_586_;
    }
    
    final Class276 method15469() {
	return aClass276Array9265[anInt9225];
    }
    
    static {
	aClass276_9158 = new Class276();
    }
    
    public final void method2192(int i, Class105 class105) {
	if (!((Class87_Sub2) this).aBool9215)
	    throw new RuntimeException("");
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	if (((Class87_Sub2) this).aBool9216) {
	    ((Class87_Sub2) this).aClass65Array9142[3].method1515();
	    ((Class87_Sub2) this).aClass65Array9142[3].method1514();
	}
    }
    
    public final void method2459(int i, int i_587_, int i_588_, int i_589_) {
	int i_590_;
	int i_591_;
	if (aClass169_993 != null) {
	    i_591_ = aClass169_993.method3826();
	    i_590_ = aClass169_993.method3836();
	} else {
	    i_590_ = 0;
	    i_591_ = 0;
	}
	if (i <= 0 && i_588_ >= i_591_ - 1 && i_587_ <= 0
	    && i_589_ >= i_590_ - 1)
	    method2112();
	else {
	    anInt9176 = i >= 0 ? i : 0;
	    anInt9190 = i_588_ <= i_591_ ? i_588_ : i_591_;
	    anInt9253 = i_587_ >= 0 ? i_587_ : 0;
	    anInt9202 = i_589_ <= i_590_ ? i_589_ : i_590_;
	    if (!aBool9175 && (((Class87_Sub2) this).aBool9237
			       || method15320() == Class363.aClass363_5517)) {
		aBool9175 = true;
		method15340();
	    }
	    method15339();
	}
    }
    
    void method15470() {
	ArrayList arraylist
	    = ((Class87_Sub2) this).aClass625_9127.method13470(-1952127020);
	Iterator iterator = arraylist.iterator();
	while (iterator.hasNext()) {
	    Interface37 interface37 = (Interface37) iterator.next();
	    interface37.method23();
	}
    }
    
    public final void method2225(int i, int i_592_, int i_593_, int i_594_) {
	int i_595_;
	int i_596_;
	if (aClass169_993 != null) {
	    i_596_ = aClass169_993.method3826();
	    i_595_ = aClass169_993.method3836();
	} else {
	    i_595_ = 0;
	    i_596_ = 0;
	}
	if (i <= 0 && i_593_ >= i_596_ - 1 && i_592_ <= 0
	    && i_594_ >= i_595_ - 1)
	    method2112();
	else {
	    anInt9176 = i >= 0 ? i : 0;
	    anInt9190 = i_593_ <= i_596_ ? i_593_ : i_596_;
	    anInt9253 = i_592_ >= 0 ? i_592_ : 0;
	    anInt9202 = i_594_ <= i_595_ ? i_594_ : i_595_;
	    if (!aBool9175 && (((Class87_Sub2) this).aBool9237
			       || method15320() == Class363.aClass363_5517)) {
		aBool9175 = true;
		method15340();
	    }
	    method15339();
	}
    }
    
    public void method2458(boolean bool) {
	((Class87_Sub2) this).aBool9237 = bool;
    }
    
    public void method2237(boolean bool) {
	((Class87_Sub2) this).aBool9237 = bool;
    }
    
    public void method2471() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6126();
    }
    
    public void method2472() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6126();
    }
    
    public void method2473() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6126();
    }
    
    final void method15471(Class311 class311, int i) {
	method15412(0, ((Class87_Sub2) this).anInterface36_9284);
	method15411(((Class87_Sub2) this).aClass367_9287);
	method15419(class311, 0, i);
    }
    
    public void method2475() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6136();
    }
    
    public final void method15472(Class391 class391, Class391 class391_597_) {
	boolean bool = false;
	if (aClass391Array9229[anInt9225] != class391) {
	    aClass391Array9229[anInt9225] = class391;
	    method15394();
	    bool = true;
	}
	if (aClass391Array9206[anInt9225] != class391_597_) {
	    aClass391Array9206[anInt9225] = class391_597_;
	    method15397();
	    bool = true;
	}
	if (bool)
	    ((Class87_Sub2) this).anInt9243 &= ~0xd;
    }
    
    public final Interface32 method15473() {
	return (((Class87_Sub2) this).aClass103_Sub1_9254 != null
		? ((Class87_Sub2) this).aClass103_Sub1_9254.method14968()
		: null);
    }
    
    public void method2478() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6136();
    }
    
    public void method15474(Interface37 interface37) {
	((Class87_Sub2) this).aClass625_9127
	    .method13475(interface37, anObject9212, 1001102764);
    }
    
    public void method15475(Interface37 interface37) {
	((Class87_Sub2) this).aClass625_9127
	    .method13475(interface37, anObject9212, 1001102764);
    }
    
    public final void method15476(Class366 class366) {
	aClass366Array9228[anInt9225] = class366;
	method15336();
    }
    
    public void method15477(Interface37 interface37) {
	((Class87_Sub2) this).aClass625_9127.method13469(interface37,
							 (byte) -105);
    }
    
    final void method15478(int i, int i_598_) {
	anInt9149 = i;
	anInt9272 = i_598_;
	method15338();
	method15339();
    }
    
    void method15479() {
	ArrayList arraylist
	    = ((Class87_Sub2) this).aClass625_9127.method13470(-1783620611);
	Iterator iterator = arraylist.iterator();
	while (iterator.hasNext()) {
	    Interface37 interface37 = (Interface37) iterator.next();
	    interface37.method23();
	}
    }
    
    void method15480() {
	ArrayList arraylist
	    = ((Class87_Sub2) this).aClass625_9127.method13470(-976176713);
	Iterator iterator = arraylist.iterator();
	while (iterator.hasNext()) {
	    Interface37 interface37 = (Interface37) iterator.next();
	    interface37.method23();
	}
    }
    
    abstract void method15481();
    
    public abstract boolean method15482();
    
    public abstract boolean method15483();
    
    public abstract boolean method15484();
    
    final boolean method15485() {
	return aBool9153;
    }
    
    final boolean method15486() {
	return aBool9153;
    }
    
    final boolean method15487() {
	return aBool9153;
    }
    
    public abstract Class37 method15488(String string);
    
    public abstract Class37 method15489(String string);
    
    public abstract Class37 method15490(String string);
    
    public void method2476() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6136();
    }
    
    byte[] method15491(String string, String string_599_) {
	return ((Class87_Sub2) this).aClass272_9136
		   .method5316(string, string_599_, 106771300);
    }
    
    Class45 method15492(byte[] is) {
	if (is == null)
	    return null;
	Class45 class45;
	try {
	    class45 = new Class45(is);
	} catch (Exception exception) {
	    return null;
	}
	return class45;
    }
    
    Class45 method15493(byte[] is) {
	if (is == null)
	    return null;
	Class45 class45;
	try {
	    class45 = new Class45(is);
	} catch (Exception exception) {
	    return null;
	}
	return class45;
    }
    
    Class45 method15494(byte[] is) {
	if (is == null)
	    return null;
	Class45 class45;
	try {
	    class45 = new Class45(is);
	} catch (Exception exception) {
	    return null;
	}
	return class45;
    }
    
    public abstract void method15495(Class276 class276, Class276 class276_600_,
				     Class276 class276_601_);
    
    public abstract void method15496(Class276 class276, Class276 class276_602_,
				     Class276 class276_603_);
    
    abstract boolean method15497(Class173 class173, Class90 class90);
    
    public static void method15498() throws Exception_Sub4 {
	Class437.method7817(1225968161).method105("jaclib", 1244869560);
    }
    
    final void method15499() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5714) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5714;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9171;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    public final void method15500() {
	((Class87_Sub2) this).anInterface44Array9226
	    = new Interface44[anInt9276];
	aClass276Array9265 = new Class276[anInt9276];
	aClass366Array9228 = new Class366[anInt9276];
	aClass391Array9229 = new Class391[anInt9276];
	aClass391Array9206 = new Class391[anInt9276];
	for (int i = 0; i < anInt9276; i++) {
	    aClass391Array9206[i] = Class391.aClass391_5686;
	    aClass391Array9229[i] = Class391.aClass391_5686;
	    aClass366Array9228[i] = Class366.aClass366_5527;
	    aClass276Array9265[i] = new Class276();
	}
	aClass243_Sub42Array9218 = new Class243_Sub42[anInt9277 - 2];
	int[] is = { -1 };
	anInterface40_9233 = method15376(1, 1, false, is, 0, 0);
	is[0] = -16777216;
	((Class87_Sub2) this).anInterface40_9223
	    = method15376(1, 1, false, is, 0, 0);
	method2316(new Class243_Sub30_Sub2(262144));
	((Class87_Sub2) this).aClass367_9290
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5598 }) });
	((Class87_Sub2) this).aClass367_9177
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5604 }) });
	((Class87_Sub2) this).aClass367_9259
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607),
			    new Class378(Class379.aClass379_5604),
			    new Class378(Class379.aClass379_5598),
			    new Class378(Class379.aClass379_5595) });
	((Class87_Sub2) this).aClass367_9288
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607),
			    new Class378(Class379.aClass379_5604),
			    new Class378(Class379.aClass379_5598) });
	for (int i = 0; i < 7; i++) {
	    ((Class87_Sub2) this).aClass86_Sub1Array9293[i]
		= new Class86_Sub1(this, 0, 0, false, false);
	    ((Class87_Sub2) this).aClass86_Sub1Array9294[i]
		= new Class86_Sub1(this, 0, 0, true, true);
	}
	method15310();
	((Class87_Sub2) this).anInterface31_9292 = method15408(true);
	method15598();
	method2163();
	method2112();
	method2108();
	((Class87_Sub2) this).aClass135_Sub1_9256
	    = new Class135_Sub1(this, anInterface40_9233);
	((Class87_Sub2) this).aClass135_Sub1_9236
	    = new Class135_Sub1(this,
				((Class87_Sub2) this).anInterface40_9223);
	method2117(3, 0);
    }
    
    public final Class350 method2211() {
	return ((Class87_Sub2) this).aClass350_9296;
    }
    
    final void method15501() {
	((Class87_Sub2) this).aClass353_9143 = new Class353(this);
	aBool9153 = false;
	try {
	    ((Class87_Sub2) this).aClass69_9241 = new Class69_Sub2(this);
	    ((Class87_Sub2) this).aClass371_9242 = new Class371_Sub2(this);
	    ((Class87_Sub2) this).aClass64_9262 = new Class64_Sub2(this);
	    ((Class87_Sub2) this).aClass373_9159 = new Class373_Sub1(this);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9245
		= new Class65_Sub1_Sub1(this,
					((Class87_Sub2) this).aClass353_9143,
					false);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9246
		= new Class65_Sub1_Sub1(this,
					((Class87_Sub2) this).aClass353_9143,
					true);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub2_9247
		= new Class65_Sub1_Sub2(this,
					((Class87_Sub2) this).aClass353_9143);
	} catch (Exception exception) {
	    exception.printStackTrace();
	    ((Class87_Sub2) this).aClass69_9241 = new Class69_Sub1(this);
	    ((Class87_Sub2) this).aClass371_9242 = new Class371_Sub1(this);
	    ((Class87_Sub2) this).aClass64_9262 = new Class64_Sub1(this);
	    ((Class87_Sub2) this).aClass373_9159 = new Class373_Sub2(this);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9245 = null;
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9246 = null;
	    ((Class87_Sub2) this).aClass65_Sub1_Sub2_9247 = null;
	    aBool9153 = true;
	}
	int i;
	int i_604_;
	if (aClass169_993 != null) {
	    i_604_ = aClass169_993.method3826();
	    i = aClass169_993.method3836();
	} else {
	    i = 0;
	    i_604_ = 0;
	}
	((Class87_Sub2) this).aClass392_9248 = new Class392(this, i_604_, i);
	if (!aBool9153) {
	    ((Class87_Sub2) this).aClass383Array9239[3]
		= new Class383_Sub1(this);
	    ((Class87_Sub2) this).aClass383Array9239[1]
		= new Class383_Sub2(this);
	    ((Class87_Sub2) this).aClass383Array9239[2]
		= new Class383_Sub3(this);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[3]);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[1]);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[2]);
	    method15326();
	    method15328();
	}
	if (((Class87_Sub2) this).aClass65_9235 != null) {
	    ((Class87_Sub2) this).aClass65_9235.method1511();
	    ((Class87_Sub2) this).aClass65_9235 = null;
	}
	method15313();
    }
    
    final void method15502() {
	((Class87_Sub2) this).aClass353_9143 = new Class353(this);
	aBool9153 = false;
	try {
	    ((Class87_Sub2) this).aClass69_9241 = new Class69_Sub2(this);
	    ((Class87_Sub2) this).aClass371_9242 = new Class371_Sub2(this);
	    ((Class87_Sub2) this).aClass64_9262 = new Class64_Sub2(this);
	    ((Class87_Sub2) this).aClass373_9159 = new Class373_Sub1(this);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9245
		= new Class65_Sub1_Sub1(this,
					((Class87_Sub2) this).aClass353_9143,
					false);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9246
		= new Class65_Sub1_Sub1(this,
					((Class87_Sub2) this).aClass353_9143,
					true);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub2_9247
		= new Class65_Sub1_Sub2(this,
					((Class87_Sub2) this).aClass353_9143);
	} catch (Exception exception) {
	    exception.printStackTrace();
	    ((Class87_Sub2) this).aClass69_9241 = new Class69_Sub1(this);
	    ((Class87_Sub2) this).aClass371_9242 = new Class371_Sub1(this);
	    ((Class87_Sub2) this).aClass64_9262 = new Class64_Sub1(this);
	    ((Class87_Sub2) this).aClass373_9159 = new Class373_Sub2(this);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9245 = null;
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9246 = null;
	    ((Class87_Sub2) this).aClass65_Sub1_Sub2_9247 = null;
	    aBool9153 = true;
	}
	int i;
	int i_605_;
	if (aClass169_993 != null) {
	    i_605_ = aClass169_993.method3826();
	    i = aClass169_993.method3836();
	} else {
	    i = 0;
	    i_605_ = 0;
	}
	((Class87_Sub2) this).aClass392_9248 = new Class392(this, i_605_, i);
	if (!aBool9153) {
	    ((Class87_Sub2) this).aClass383Array9239[3]
		= new Class383_Sub1(this);
	    ((Class87_Sub2) this).aClass383Array9239[1]
		= new Class383_Sub2(this);
	    ((Class87_Sub2) this).aClass383Array9239[2]
		= new Class383_Sub3(this);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[3]);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[1]);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[2]);
	    method15326();
	    method15328();
	}
	if (((Class87_Sub2) this).aClass65_9235 != null) {
	    ((Class87_Sub2) this).aClass65_9235.method1511();
	    ((Class87_Sub2) this).aClass65_9235 = null;
	}
	method15313();
    }
    
    public abstract void method15503(Class311 class311, int i, int i_606_,
				     int i_607_, int i_608_);
    
    void method15504() {
	method15399(7);
	method15311();
    }
    
    void method15505() {
	method15399(7);
	method15311();
    }
    
    void method15506() {
	((Class87_Sub2) this).aClass392_9248.method7161();
	((Class87_Sub2) this).anInterface36_9284.method23();
	((Class87_Sub2) this).anInterface36_9283.method23();
	((Class87_Sub2) this).anInterface36_9285.method23();
	for (int i = 0; i < 7; i++)
	    ((Class87_Sub2) this).aClass86_Sub1Array9294[i].method15211();
	((Class87_Sub2) this).aClass387_9274.method7119();
	((Class87_Sub2) this).anInterface31_9292.method23();
	((Class87_Sub2) this).aClass313_9238.method6133();
	((Class87_Sub2) this).aClass313_9238 = null;
    }
    
    public final void method2261(int i, int i_609_, int i_610_, int i_611_,
				 int i_612_) {
	method2131(i, i_609_, i, i_609_ + i_610_, i_611_, i_612_);
    }
    
    final void method15507() {
	method15392();
    }
    
    public final void method2129(int i, int i_613_, int i_614_, int i_615_,
				 int i_616_) {
	method2131(i, i_613_, i + i_614_, i_613_, i_615_, i_616_);
    }
    
    final void method15508() {
	((Class87_Sub2) this).anInterface36_9284 = method15436(false);
	int i = 160;
	((Class87_Sub2) this).anInterface36_9284.method226(i, 32);
	aByteBuffer9139.clear();
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(1.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putInt(-1);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	((Class87_Sub2) this).anInterface36_9284
	    .method228(0, aByteBuffer9139.position(), aLong9140);
	((Class87_Sub2) this).aClass367_9287
	    = method15410(new Class378[]
			  { new Class378(new Class379[]
					 { Class379.aClass379_5607,
					   Class379.aClass379_5604,
					   Class379.aClass379_5598,
					   Class379.aClass379_5598 }) });
    }
    
    final void method15509() {
	((Class87_Sub2) this).anInterface36_9283 = method15436(true);
	((Class87_Sub2) this).anInterface36_9283.method226(24, 12);
	((Class87_Sub2) this).aClass367_9286
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607) });
    }
    
    public abstract void method15510();
    
    final void method15511() {
	((Class87_Sub2) this).anInterface36_9283 = method15436(true);
	((Class87_Sub2) this).anInterface36_9283.method226(24, 12);
	((Class87_Sub2) this).aClass367_9286
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607) });
    }
    
    final void method15512() {
	((Class87_Sub2) this).anInterface36_9283 = method15436(true);
	((Class87_Sub2) this).anInterface36_9283.method226(24, 12);
	((Class87_Sub2) this).aClass367_9286
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607) });
    }
    
    final void method15513() {
	((Class87_Sub2) this).anInterface36_9285 = method15436(false);
	((Class87_Sub2) this).anInterface36_9285.method226(3096, 12);
	aByteBuffer9139.clear();
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	aByteBuffer9139.putFloat(0.0F);
	for (int i = 0; i <= 256; i++) {
	    double d = (double) (i * 2) * 3.141592653589793 / 256.0;
	    float f = (float) Math.cos(d);
	    float f_617_ = (float) Math.sin(d);
	    aByteBuffer9139.putFloat(f_617_);
	    aByteBuffer9139.putFloat(f);
	    aByteBuffer9139.putFloat(0.0F);
	}
	((Class87_Sub2) this).anInterface36_9285
	    .method228(0, aByteBuffer9139.position(), aLong9140);
    }
    
    public final void method2378(int i, Class105 class105) {
	((Class87_Sub2) this).anInt9257 = i;
	((Class87_Sub2) this).aClass105_9258 = class105;
	((Class87_Sub2) this).aBool9215 = true;
    }
    
    Class363 method15514() {
	if (((Class87_Sub2) this).aClass313_9238 == null)
	    return Class363.aClass363_5517;
	return ((Class87_Sub2) this).aClass313_9238.method6134();
    }
    
    Class363 method15515() {
	if (((Class87_Sub2) this).aClass313_9238 == null)
	    return Class363.aClass363_5517;
	return ((Class87_Sub2) this).aClass313_9238.method6134();
    }
    
    Class363 method15516() {
	if (((Class87_Sub2) this).aClass313_9238 == null)
	    return Class363.aClass363_5517;
	return ((Class87_Sub2) this).aClass313_9238.method6134();
    }
    
    public void method2482() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6144();
    }
    
    void method15517() {
	method15353();
	method15355();
	method15351();
	method2331();
	method2112();
    }
    
    void method15518() {
	method15353();
	method15355();
	method15351();
	method2331();
	method2112();
    }
    
    void method15519() {
	method15353();
	method15355();
	method15351();
	method2331();
	method2112();
    }
    
    public final Class163 method2195(int i, int i_618_, int[][] is,
				     int[][] is_619_, int i_620_, int i_621_,
				     int i_622_) {
	return new Class163_Sub3(this, i_621_, i_622_, i, i_618_, is, is_619_,
				 i_620_);
    }
    
    abstract void method15520();
    
    public final NativeHeapBuffer method15521(int i, boolean bool) {
	return ((Class87_Sub2) this).aNativeHeap9144.method996(i, bool);
    }
    
    final void method15522() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    anInt9195 = ((Class87_Sub2) this).anInt9280;
	    anInt9168 = ((Class87_Sub2) this).anInt9192;
	    anInt9197 = ((Class87_Sub2) this).anInt9261;
	    anInt9198 = ((Class87_Sub2) this).anInt9194;
	    aFloat9244 = ((Class87_Sub2) this).aFloat9183;
	    aFloat9182 = ((Class87_Sub2) this).aFloat9181;
	} else {
	    anInt9195 = 0;
	    anInt9168 = 0;
	    anInt9197 = aClass169_993.method3826();
	    anInt9198 = aClass169_993.method3836();
	    aFloat9244 = 0.0F;
	    aFloat9182 = 1.0F;
	}
	method15338();
	((Class87_Sub2) this).aFloat9170
	    = (float) ((Class87_Sub2) this).anInt9261 / 2.0F;
	((Class87_Sub2) this).aFloat9224
	    = (float) ((Class87_Sub2) this).anInt9194 / 2.0F;
	((Class87_Sub2) this).aFloat9191
	    = ((float) ((Class87_Sub2) this).anInt9280
	       + ((Class87_Sub2) this).aFloat9170);
	((Class87_Sub2) this).aFloat9179
	    = ((float) ((Class87_Sub2) this).anInt9192
	       + ((Class87_Sub2) this).aFloat9224);
    }
    
    final Interface31 method15523(int i) {
	if (((Class87_Sub2) this).anInterface31_9292.method25() < i * 2)
	    ((Class87_Sub2) this).anInterface31_9292.method194(i);
	return ((Class87_Sub2) this).anInterface31_9292;
    }
    
    public final Interface32 method15524() {
	return (((Class87_Sub2) this).aClass103_Sub1_9254 != null
		? ((Class87_Sub2) this).aClass103_Sub1_9254.method14968()
		: null);
    }
    
    public final int method2319() {
	return anInt9277 - 2;
    }
    
    public final Interface32 method15525() {
	return (((Class87_Sub2) this).aClass103_Sub1_9254 != null
		? ((Class87_Sub2) this).aClass103_Sub1_9254.method14968()
		: null);
    }
    
    public final Interface32 method15526() {
	return (((Class87_Sub2) this).aClass103_Sub1_9254 != null
		? ((Class87_Sub2) this).aClass103_Sub1_9254.method14968()
		: null);
    }
    
    public final void method2324(int i, Class243_Sub42[] class243_sub42s) {
	for (int i_623_ = 0; i_623_ < i; i_623_++)
	    aClass243_Sub42Array9218[i_623_] = class243_sub42s[i_623_];
	anInt9220 = i;
    }
    
    final void method15527(int i, int i_624_) {
	anInt9149 = i;
	anInt9272 = i_624_;
	method15338();
	method15339();
    }
    
    final void method15528(int i, int i_625_) {
	anInt9149 = i;
	anInt9272 = i_625_;
	method15338();
	method15339();
    }
    
    abstract void method15529();
    
    abstract void method15530();
    
    abstract void method15531();
    
    abstract void method15532();
    
    public final NativeHeapBuffer method15533(int i, boolean bool) {
	return ((Class87_Sub2) this).aNativeHeap9144.method996(i, bool);
    }
    
    final Class276 method15534() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    return aClass276_9230;
	return aClass276_9158;
    }
    
    final Class276 method15535() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    return ((Class87_Sub2) this).aClass276_9155;
	return aClass276_9158;
    }
    
    public final void method2262(int i, int i_626_, int i_627_, int i_628_,
				 int i_629_) {
	method2131(i, i_626_, i, i_626_ + i_627_, i_628_, i_629_);
    }
    
    final void method15536() {
	((Class87_Sub2) this).aClass276_9174.method5455(aClass276_9230);
	((Class87_Sub2) this).aClass276_9174
	    .method5537(((Class87_Sub2) this).aClass276_9234);
	((Class87_Sub2) this).aClass276_9174
	    .method5515(((Class87_Sub2) this).aFloatArrayArray9291[0]);
	((Class87_Sub2) this).aClass276_9174
	    .method5479(((Class87_Sub2) this).aFloatArrayArray9291[1]);
	((Class87_Sub2) this).aClass276_9174
	    .method5474(((Class87_Sub2) this).aFloatArrayArray9291[2]);
	((Class87_Sub2) this).aClass276_9174
	    .method5475(((Class87_Sub2) this).aFloatArrayArray9291[3]);
	((Class87_Sub2) this).aClass276_9174
	    .method5549(((Class87_Sub2) this).aFloatArrayArray9291[4]);
	((Class87_Sub2) this).aClass276_9174
	    .method5569(((Class87_Sub2) this).aFloatArrayArray9291[5]);
	aClass276_9289.method5455(((Class87_Sub2) this).aClass276_9174);
	method15350(aClass276_9289);
    }
    
    public abstract void method15537(Class367 class367);
    
    final void method15538() {
	((Class87_Sub2) this).aClass276_9174.method5455(aClass276_9230);
	((Class87_Sub2) this).aClass276_9174
	    .method5537(((Class87_Sub2) this).aClass276_9234);
	((Class87_Sub2) this).aClass276_9174
	    .method5515(((Class87_Sub2) this).aFloatArrayArray9291[0]);
	((Class87_Sub2) this).aClass276_9174
	    .method5479(((Class87_Sub2) this).aFloatArrayArray9291[1]);
	((Class87_Sub2) this).aClass276_9174
	    .method5474(((Class87_Sub2) this).aFloatArrayArray9291[2]);
	((Class87_Sub2) this).aClass276_9174
	    .method5475(((Class87_Sub2) this).aFloatArrayArray9291[3]);
	((Class87_Sub2) this).aClass276_9174
	    .method5549(((Class87_Sub2) this).aFloatArrayArray9291[4]);
	((Class87_Sub2) this).aClass276_9174
	    .method5569(((Class87_Sub2) this).aFloatArrayArray9291[5]);
	aClass276_9289.method5455(((Class87_Sub2) this).aClass276_9174);
	method15350(aClass276_9289);
    }
    
    final void method15539() {
	((Class87_Sub2) this).aBool9164 = false;
    }
    
    Class276 method15540() {
	return ((Class87_Sub2) this).aClass276_9150;
    }
    
    Class276 method15541() {
	return ((Class87_Sub2) this).aClass276_9150;
    }
    
    Class350 method15542() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164) {
		((Class87_Sub2) this).aClass350_9156
		    .method6638(((Class87_Sub2) this).aClass350_9141);
		((Class87_Sub2) this).aClass350_9156
		    .method6606(((Class87_Sub2) this).aClass350_9151);
		((Class87_Sub2) this).aClass276_9157
		    .method5513(((Class87_Sub2) this).aClass350_9156);
		((Class87_Sub2) this).aBool9164 = true;
	    }
	    return ((Class87_Sub2) this).aClass350_9156;
	}
	return ((Class87_Sub2) this).aClass350_9141;
    }
    
    Class350 method15543() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164) {
		((Class87_Sub2) this).aClass350_9156
		    .method6638(((Class87_Sub2) this).aClass350_9141);
		((Class87_Sub2) this).aClass350_9156
		    .method6606(((Class87_Sub2) this).aClass350_9151);
		((Class87_Sub2) this).aClass276_9157
		    .method5513(((Class87_Sub2) this).aClass350_9156);
		((Class87_Sub2) this).aBool9164 = true;
	    }
	    return ((Class87_Sub2) this).aClass350_9156;
	}
	return ((Class87_Sub2) this).aClass350_9141;
    }
    
    Class350 method15544() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164) {
		((Class87_Sub2) this).aClass350_9156
		    .method6638(((Class87_Sub2) this).aClass350_9141);
		((Class87_Sub2) this).aClass350_9156
		    .method6606(((Class87_Sub2) this).aClass350_9151);
		((Class87_Sub2) this).aClass276_9157
		    .method5513(((Class87_Sub2) this).aClass350_9156);
		((Class87_Sub2) this).aBool9164 = true;
	    }
	    return ((Class87_Sub2) this).aClass350_9156;
	}
	return ((Class87_Sub2) this).aClass350_9141;
    }
    
    final void method15545() {
	((Class87_Sub2) this).aClass353_9143 = new Class353(this);
	aBool9153 = false;
	try {
	    ((Class87_Sub2) this).aClass69_9241 = new Class69_Sub2(this);
	    ((Class87_Sub2) this).aClass371_9242 = new Class371_Sub2(this);
	    ((Class87_Sub2) this).aClass64_9262 = new Class64_Sub2(this);
	    ((Class87_Sub2) this).aClass373_9159 = new Class373_Sub1(this);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9245
		= new Class65_Sub1_Sub1(this,
					((Class87_Sub2) this).aClass353_9143,
					false);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9246
		= new Class65_Sub1_Sub1(this,
					((Class87_Sub2) this).aClass353_9143,
					true);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub2_9247
		= new Class65_Sub1_Sub2(this,
					((Class87_Sub2) this).aClass353_9143);
	} catch (Exception exception) {
	    exception.printStackTrace();
	    ((Class87_Sub2) this).aClass69_9241 = new Class69_Sub1(this);
	    ((Class87_Sub2) this).aClass371_9242 = new Class371_Sub1(this);
	    ((Class87_Sub2) this).aClass64_9262 = new Class64_Sub1(this);
	    ((Class87_Sub2) this).aClass373_9159 = new Class373_Sub2(this);
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9245 = null;
	    ((Class87_Sub2) this).aClass65_Sub1_Sub1_9246 = null;
	    ((Class87_Sub2) this).aClass65_Sub1_Sub2_9247 = null;
	    aBool9153 = true;
	}
	int i;
	int i_630_;
	if (aClass169_993 != null) {
	    i_630_ = aClass169_993.method3826();
	    i = aClass169_993.method3836();
	} else {
	    i = 0;
	    i_630_ = 0;
	}
	((Class87_Sub2) this).aClass392_9248 = new Class392(this, i_630_, i);
	if (!aBool9153) {
	    ((Class87_Sub2) this).aClass383Array9239[3]
		= new Class383_Sub1(this);
	    ((Class87_Sub2) this).aClass383Array9239[1]
		= new Class383_Sub2(this);
	    ((Class87_Sub2) this).aClass383Array9239[2]
		= new Class383_Sub3(this);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[3]);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[1]);
	    ((Class87_Sub2) this).aClass392_9248
		.method7165(((Class87_Sub2) this).aClass383Array9239[2]);
	    method15326();
	    method15328();
	}
	if (((Class87_Sub2) this).aClass65_9235 != null) {
	    ((Class87_Sub2) this).aClass65_9235.method1511();
	    ((Class87_Sub2) this).aClass65_9235 = null;
	}
	method15313();
    }
    
    Class350 method15546() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164) {
		((Class87_Sub2) this).aClass350_9156
		    .method6638(((Class87_Sub2) this).aClass350_9141);
		((Class87_Sub2) this).aClass350_9156
		    .method6606(((Class87_Sub2) this).aClass350_9151);
		((Class87_Sub2) this).aClass276_9157
		    .method5513(((Class87_Sub2) this).aClass350_9156);
		((Class87_Sub2) this).aBool9164 = true;
	    }
	    return ((Class87_Sub2) this).aClass350_9156;
	}
	return ((Class87_Sub2) this).aClass350_9141;
    }
    
    abstract void method15547(int i);
    
    Class276 method15548() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164)
		method15346();
	    return ((Class87_Sub2) this).aClass276_9157;
	}
	return ((Class87_Sub2) this).aClass276_9150;
    }
    
    Class276 method15549() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164)
		method15346();
	    return ((Class87_Sub2) this).aClass276_9157;
	}
	return ((Class87_Sub2) this).aClass276_9150;
    }
    
    public final void method2171(int i, int i_631_, int i_632_, int i_633_,
				 int i_634_, int i_635_, byte[] is, int i_636_,
				 int i_637_) {
	/* empty */
    }
    
    final Class276 method15550() {
	return aClass276_9289;
    }
    
    final Class276 method15551() {
	return aClass276_9173;
    }
    
    final Class276 method15552() {
	return aClass276_9173;
    }
    
    final Class276 method15553() {
	return aClass276_9173;
    }
    
    final void method15554(boolean bool) {
	if (bool != aBool9180) {
	    aBool9180 = bool;
	    method15360();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    public abstract void method15555(Class276 class276);
    
    final void method15556() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5714) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5714;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9171;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    abstract void method15557();
    
    public final void method2410(int i, Class171 class171, int i_638_,
				 int i_639_) {
	method2281(false);
	((Class87_Sub2) this).aClass135_Sub1_9236.method3370
	    (0.0F, 0.0F, (float) method2164(380464901).method3826(), 0.0F,
	     0.0F, (float) method2164(-263119504).method3836(), 0, class171,
	     i_638_, i_639_);
	method2281(true);
    }
    
    final void method15558() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5714) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5714;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9171;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    final void method15559() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5713) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5713;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    method15356();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9167;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0x8;
	}
    }
    
    final void method15560() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5713) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5713;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    method15356();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9167;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0x8;
	}
    }
    
    final void method15561() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5713) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5713;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    method15356();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9167;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0x8;
	}
    }
    
    final void method15562() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5713) {
	    Class393 class393 = ((Class87_Sub2) this).aClass393_9165;
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5713;
	    if (class393 == Class393.aClass393_5712)
		method15565();
	    method15356();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9167;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0x8;
	}
    }
    
    final void method15563() {
	((Class87_Sub2) this).aBool9166 = false;
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5713) {
	    method15356();
	    method15435();
	}
    }
    
    abstract void method15564();
    
    final void method15565() {
	((Class87_Sub2) this).aBool9164 = false;
    }
    
    final void method15566() {
	if (!((Class87_Sub2) this).aBool9166) {
	    int i;
	    int i_640_;
	    if (aClass169_993 != null) {
		i_640_ = aClass169_993.method3826();
		i = aClass169_993.method3836();
	    } else {
		i = 0;
		i_640_ = 0;
	    }
	    Class276 class276 = ((Class87_Sub2) this).aClass276_9167;
	    if (i_640_ != 0 && i != 0)
		class276.method5466(0.0F, (float) i_640_, 0.0F, (float) i,
				    -1.0F, 1.0F);
	    else
		class276.method5472();
	    ((Class87_Sub2) this).aClass276_9188.method5455(class276);
	    method15350(((Class87_Sub2) this).aClass276_9188);
	    ((Class87_Sub2) this).aBool9166 = true;
	}
    }
    
    boolean method2276(int i, int i_641_, int i_642_, int i_643_,
		       Class350 class350, Class346 class346) {
	Class276 class276 = aClass276_9187;
	class276.method5513(class350);
	class276.method5537(((Class87_Sub2) this).aClass276_9174);
	return class346.method6486(i, i_641_, i_642_, i_643_, class276,
				   ((Class87_Sub2) this).aFloat9191,
				   ((Class87_Sub2) this).aFloat9179,
				   ((Class87_Sub2) this).aFloat9170,
				   ((Class87_Sub2) this).aFloat9224);
    }
    
    Class350 method15567() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164) {
		((Class87_Sub2) this).aClass350_9156
		    .method6638(((Class87_Sub2) this).aClass350_9141);
		((Class87_Sub2) this).aClass350_9156
		    .method6606(((Class87_Sub2) this).aClass350_9151);
		((Class87_Sub2) this).aClass276_9157
		    .method5513(((Class87_Sub2) this).aClass350_9156);
		((Class87_Sub2) this).aBool9164 = true;
	    }
	    return ((Class87_Sub2) this).aClass350_9156;
	}
	return ((Class87_Sub2) this).aClass350_9141;
    }
    
    abstract void method15568();
    
    final void method15569() {
	if (!((Class87_Sub2) this).aBool9297)
	    ((Class87_Sub2) this).aBool9297 = true;
    }
    
    final void method15570() {
	aClass276_9173.method5455(((Class87_Sub2) this).aClass276_9172);
	method15350(aClass276_9173);
	aFloat9186 = ((aClass276_9173.aFloatArray4141[14]
		       - aClass276_9173.aFloatArray4141[15])
		      / (aClass276_9173.aFloatArray4141[11]
			 - aClass276_9173.aFloatArray4141[10]));
	aFloat9185 = (-aClass276_9173.aFloatArray4141[14]
		      / aClass276_9173.aFloatArray4141[10]);
	method15404();
    }
    
    final void method15571() {
	aClass276_9173.method5455(((Class87_Sub2) this).aClass276_9172);
	method15350(aClass276_9173);
	aFloat9186 = ((aClass276_9173.aFloatArray4141[14]
		       - aClass276_9173.aFloatArray4141[15])
		      / (aClass276_9173.aFloatArray4141[11]
			 - aClass276_9173.aFloatArray4141[10]));
	aFloat9185 = (-aClass276_9173.aFloatArray4141[14]
		      / aClass276_9173.aFloatArray4141[10]);
	method15404();
    }
    
    final void method15572() {
	aClass276_9173.method5455(((Class87_Sub2) this).aClass276_9172);
	method15350(aClass276_9173);
	aFloat9186 = ((aClass276_9173.aFloatArray4141[14]
		       - aClass276_9173.aFloatArray4141[15])
		      / (aClass276_9173.aFloatArray4141[11]
			 - aClass276_9173.aFloatArray4141[10]));
	aFloat9185 = (-aClass276_9173.aFloatArray4141[14]
		      / aClass276_9173.aFloatArray4141[10]);
	method15404();
    }
    
    public final Class276 method2154() {
	return ((Class87_Sub2) this).aClass276_9126;
    }
    
    final void method15573(boolean bool) {
	if (bool != aBool9203) {
	    aBool9203 = bool;
	    method15568();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    public abstract void method15574(Class367 class367);
    
    final void method15575(boolean bool) {
	if (bool != aBool9180) {
	    aBool9180 = bool;
	    method15360();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    abstract void method15576();
    
    public final void method2199(int i, int i_644_, int i_645_, int i_646_,
				 int i_647_, int i_648_, Class171 class171,
				 int i_649_, int i_650_) {
	/* empty */
    }
    
    public final boolean method2361() {
	return ((Class392) ((Class87_Sub2) this).aClass392_9248).aBool5692;
    }
    
    public final int method2307(int i, int i_651_) {
	return i & i_651_ ^ i_651_;
    }
    
    abstract void method15577();
    
    final void method15578(boolean bool) {
	if (bool != aBool9298) {
	    aBool9298 = bool;
	    method15615();
	    ((Class87_Sub2) this).anInt9243 &= ~0x7;
	}
    }
    
    final void method15579(boolean bool) {
	if (bool != aBool9298) {
	    aBool9298 = bool;
	    method15615();
	    ((Class87_Sub2) this).anInt9243 &= ~0x7;
	}
    }
    
    final void method15580(boolean bool) {
	if (bool != aBool9298) {
	    aBool9298 = bool;
	    method15615();
	    ((Class87_Sub2) this).anInt9243 &= ~0x7;
	}
    }
    
    public final boolean method2076() {
	return aBool9281;
    }
    
    abstract void method15581();
    
    public void method2209() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6136();
    }
    
    void method15582() {
	method15399(7);
	method15311();
    }
    
    abstract void method15583();
    
    abstract void method15584();
    
    public final boolean method2339() {
	return true;
    }
    
    final void method15585() {
	((Class87_Sub2) this).anInterface36_9283 = method15436(true);
	((Class87_Sub2) this).anInterface36_9283.method226(24, 12);
	((Class87_Sub2) this).aClass367_9286
	    = method15410(new Class378[]
			  { new Class378(Class379.aClass379_5607) });
    }
    
    abstract void method15586();
    
    abstract void method15587();
    
    abstract void method15588();
    
    abstract void method15589();
    
    final void method15590() {
	if (method15302())
	    method15414();
	anInt9219 = anInt9220;
    }
    
    final void method15591() {
	if (method15302())
	    method15414();
	anInt9219 = anInt9220;
    }
    
    final void method15592() {
	if (method15302())
	    method15414();
	anInt9219 = anInt9220;
    }
    
    final void method15593() {
	if (method15302())
	    method15414();
	anInt9219 = anInt9220;
    }
    
    abstract void method15594();
    
    public final Class276 method15595() {
	return aClass276Array9265[anInt9225];
    }
    
    abstract boolean method15596(Class173 class173, Class90 class90);
    
    public final void method2407(int i, int i_652_, int i_653_, int i_654_,
				 int i_655_) {
	method2131(i, i_652_, i, i_652_ + i_653_, i_654_, i_655_);
    }
    
    final void method15597() {
	if (((Class87_Sub2) this).aClass393_9165 != Class393.aClass393_5712) {
	    ((Class87_Sub2) this).aClass393_9165 = Class393.aClass393_5712;
	    method15565();
	    method15357();
	    ((Class87_Sub2) this).aClass276_9172
		= ((Class87_Sub2) this).aClass276_9234;
	    method15435();
	    method15522();
	    ((Class87_Sub2) this).anInt9243 &= ~0x7;
	}
    }
    
    void method15598() {
	method15399(7);
	method15311();
    }
    
    final Interface40 method15599(Class173 class173, int i, int i_656_,
				  boolean bool, byte[] is) {
	return method15442(class173, i, i_656_, bool, is, 0, 0);
    }
    
    public final void method15600(int i, Class385 class385) {
	method15383(i, class385, false, false);
    }
    
    public abstract boolean method15601();
    
    public final void method2099(int i, int i_657_, float f, int i_658_,
				 int i_659_, float f_660_, int i_661_,
				 int i_662_, float f_663_, int i_664_,
				 int i_665_, int i_666_, int i_667_) {
	/* empty */
    }
    
    public final int method2382() {
	return anInt9277 - 2;
    }
    
    abstract Interface40 method15602(Class173 class173, Class90 class90, int i,
				     int i_668_);
    
    abstract Interface40 method15603(Class173 class173, Class90 class90, int i,
				     int i_669_);
    
    public void method2165(Class350 class350, Class97 class97,
			   Class346 class346) {
	Class276 class276 = aClass276_9187;
	class276.method5513(class350);
	class276.method5537(((Class87_Sub2) this).aClass276_9174);
	class97.method2544(class346, ((Class87_Sub2) this).aClass276_9234,
			   class276, ((Class87_Sub2) this).aFloat9191,
			   ((Class87_Sub2) this).aFloat9179,
			   ((Class87_Sub2) this).aFloat9170,
			   ((Class87_Sub2) this).aFloat9224);
    }
    
    abstract Interface31 method15604(boolean bool);
    
    abstract Interface40 method15605(Class173 class173, int i, int i_670_,
				     boolean bool, byte[] is, int i_671_,
				     int i_672_);
    
    public final void method15606(int i) {
	switch (i) {
	case 4:
	    method15381(Class391.aClass391_5688, Class391.aClass391_5688);
	    break;
	case 0:
	    method15381(Class391.aClass391_5686, Class391.aClass391_5686);
	    break;
	case 1:
	    method15381(Class391.aClass391_5687, Class391.aClass391_5687);
	    break;
	case 3:
	    method15381(Class391.aClass391_5685, Class391.aClass391_5686);
	    break;
	case 2:
	    method15381(Class391.aClass391_5689, Class391.aClass391_5687);
	    break;
	}
    }
    
    final Interface40 method15607(int i, int i_673_, boolean bool, int[] is) {
	return method15376(i, i_673_, bool, is, 0, 0);
    }
    
    abstract Interface32 method15608(int i, boolean bool, int[][] is);
    
    public void method2474() {
	if (((Class87_Sub2) this).aClass313_9238 != null)
	    ((Class87_Sub2) this).aClass313_9238.method6136();
    }
    
    public final boolean method2215() {
	return ((Class87_Sub2) this).aClass383Array9239[3] != null;
    }
    
    abstract Interface45 method15609(Class173 class173, Class90 class90, int i,
				     int i_674_);
    
    public final int method2308(int i, int i_675_) {
	return i & i_675_ ^ i_675_;
    }
    
    abstract Interface45 method15610(Class173 class173, Class90 class90, int i,
				     int i_676_);
    
    abstract Interface45 method15611(Class173 class173, Class90 class90, int i,
				     int i_677_);
    
    public abstract void method15612();
    
    public final void method2336(Class276 class276) {
	((Class87_Sub2) this).aClass276_9234.method5455(class276);
	method15343();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15435();
    }
    
    public final void method15613(Interface44 interface44) {
	if (((Class87_Sub2) this).anInterface44Array9226[anInt9225]
	    != interface44) {
	    ((Class87_Sub2) this).anInterface44Array9226[anInt9225]
		= interface44;
	    if (interface44 != null)
		interface44.method319();
	    else
		anInterface40_9233.method319();
	    ((Class87_Sub2) this).anInt9243 &= ~0x1;
	}
    }
    
    public void method15614(Interface37 interface37) {
	((Class87_Sub2) this).aClass625_9127.method13469(interface37,
							 (byte) -43);
    }
    
    public Class167 method2183(int[] is) {
	return new Class167_Sub1(this, is);
    }
    
    abstract void method15615();
    
    public final void method15616(int i) {
	switch (i) {
	case 4:
	    method15381(Class391.aClass391_5688, Class391.aClass391_5688);
	    break;
	case 0:
	    method15381(Class391.aClass391_5686, Class391.aClass391_5686);
	    break;
	case 1:
	    method15381(Class391.aClass391_5687, Class391.aClass391_5687);
	    break;
	case 3:
	    method15381(Class391.aClass391_5685, Class391.aClass391_5686);
	    break;
	case 2:
	    method15381(Class391.aClass391_5689, Class391.aClass391_5687);
	    break;
	}
    }
    
    final Interface40 method15617(int i, int i_678_, boolean bool, int[] is) {
	return method15376(i, i_678_, bool, is, 0, 0);
    }
    
    public final void method15618(Class391 class391, Class391 class391_679_) {
	boolean bool = false;
	if (aClass391Array9229[anInt9225] != class391) {
	    aClass391Array9229[anInt9225] = class391;
	    method15394();
	    bool = true;
	}
	if (aClass391Array9206[anInt9225] != class391_679_) {
	    aClass391Array9206[anInt9225] = class391_679_;
	    method15397();
	    bool = true;
	}
	if (bool)
	    ((Class87_Sub2) this).anInt9243 &= ~0xd;
    }
    
    public final void method15619(Class391 class391, Class391 class391_680_) {
	boolean bool = false;
	if (aClass391Array9229[anInt9225] != class391) {
	    aClass391Array9229[anInt9225] = class391;
	    method15394();
	    bool = true;
	}
	if (aClass391Array9206[anInt9225] != class391_680_) {
	    aClass391Array9206[anInt9225] = class391_680_;
	    method15397();
	    bool = true;
	}
	if (bool)
	    ((Class87_Sub2) this).anInt9243 &= ~0xd;
    }
    
    public final void method2281(boolean bool) {
	aBool9201 = bool;
	method15360();
    }
    
    public final void method15620(int i, Class385 class385) {
	method15383(i, class385, false, false);
    }
    
    abstract void method15621(int i, Class385 class385, boolean bool,
			      boolean bool_681_);
    
    public final void method15622(int i, Class385 class385) {
	method15385(i, class385, false);
    }
    
    public final void method15623(int i) {
	if (anInt9225 != i) {
	    anInt9225 = i;
	    method15393();
	}
    }
    
    abstract void method15624(int i, Class385 class385, boolean bool);
    
    abstract void method15625(int i, Class385 class385, boolean bool);
    
    abstract void method15626(int i, Class385 class385, boolean bool);
    
    public void method15627(int i) {
	if (i != anInt9231) {
	    anInt9231 = i;
	    method15391();
	}
    }
    
    public final void method2301(int i) {
	/* empty */
    }
    
    public void method15628(int i) {
	if (i != anInt9231) {
	    anInt9231 = i;
	    method15391();
	}
    }
    
    final void method15629(boolean bool) {
	if (bool != aBool9203) {
	    aBool9203 = bool;
	    method15568();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    final void method15630(boolean bool) {
	if (bool != aBool9184) {
	    aBool9184 = bool;
	    method15406();
	    ((Class87_Sub2) this).anInt9243 &= ~0xf;
	}
    }
    
    final Class276 method15631() {
	return aClass276Array9265[anInt9225];
    }
    
    Class276 method15632() {
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712) {
	    if (!((Class87_Sub2) this).aBool9164)
		method15346();
	    return ((Class87_Sub2) this).aClass276_9157;
	}
	return ((Class87_Sub2) this).aClass276_9150;
    }
    
    abstract Interface40 method15633(int i, int i_682_, boolean bool, int[] is,
				     int i_683_, int i_684_);
    
    public final Class276 method15634() {
	return aClass276Array9265[anInt9225];
    }
    
    public final Class276 method15635() {
	return aClass276Array9265[anInt9225];
    }
    
    public final void method15636(Class366 class366) {
	aClass366Array9228[anInt9225] = class366;
	method15336();
    }
    
    public final void method15637(Class366 class366) {
	aClass366Array9228[anInt9225] = class366;
	method15336();
    }
    
    public final void method15638(Class366 class366) {
	aClass366Array9228[anInt9225] = class366;
	method15336();
    }
    
    final void method15639() {
	method15392();
    }
    
    public final boolean method2239() {
	return true;
    }
    
    public boolean method2255() {
	return (((Class87_Sub2) this).aClass383Array9239[1] != null
		&& ((Class87_Sub2) this).aClass383Array9239[1].method7055());
    }
    
    abstract Interface40 method15640(Class173 class173, int i, int i_685_,
				     boolean bool, float[] fs, int i_686_,
				     int i_687_);
    
    public final Class135 method2288(Class102 class102, boolean bool) {
	Class135 class135;
	if (class102.method2740() != 0 && class102.method2715() != 0) {
	    int[] is = class102.method2729(false);
	    class135 = method2145(is, 0, class102.method2740(),
				  class102.method2740(), class102.method2715(),
				  -1153484232);
	} else
	    class135 = method2145(new int[] { 0 }, 0, 1, 1, 1, -75364843);
	class135.method3344(class102.method2716(), class102.method2773(),
			    class102.method2732(), class102.method2719());
	return class135;
    }
    
    public final void method2425(int i, int i_688_, int i_689_, int i_690_,
				 int i_691_, int i_692_) {
	if (aBool9201) {
	    method2281(false);
	    ((Class87_Sub2) this).aClass135_Sub1_9256
		.method3406(i, i_688_, i_689_, i_690_, 0, i_691_, i_692_);
	    method2281(true);
	} else
	    ((Class87_Sub2) this).aClass135_Sub1_9256
		.method3406(i, i_688_, i_689_, i_690_, 0, i_691_, i_692_);
    }
    
    abstract void method15641();
    
    abstract void method15642();
    
    abstract void method15643();
    
    public abstract void method15644(int i, Interface36 interface36);
    
    abstract void method15645();
    
    abstract void method15646();
    
    abstract void method15647();
    
    public void method2238(float f, float f_693_) {
	((Class87_Sub2) this).aFloat9183 = f;
	((Class87_Sub2) this).aFloat9181 = f_693_;
	method15522();
    }
    
    abstract void method15648();
    
    abstract void method15649();
    
    final void method15650(int i) {
	if (((Class87_Sub2) this).anInt9266 != i) {
	    Class375 class375;
	    boolean bool;
	    boolean bool_694_;
	    if (i == 1) {
		class375 = Class375.aClass375_5583;
		bool = true;
		bool_694_ = true;
	    } else if (i == 2) {
		class375 = Class375.aClass375_5582;
		bool = false;
		bool_694_ = true;
	    } else if (i == 128) {
		class375 = Class375.aClass375_5580;
		bool = true;
		bool_694_ = true;
	    } else {
		class375 = Class375.aClass375_5581;
		bool = false;
		bool_694_ = false;
	    }
	    if (bool != aBool9269) {
		aBool9269 = bool;
		method15433();
	    }
	    if (bool_694_ != aBool9282) {
		aBool9282 = bool_694_;
		method15318();
	    }
	    if (class375 != aClass375_9267) {
		aClass375_9267 = class375;
		method15401();
	    }
	    ((Class87_Sub2) this).anInt9266 = i;
	    ((Class87_Sub2) this).anInt9243 &= ~0xc;
	}
    }
    
    public boolean method2368() {
	return (((Class87_Sub2) this).aClass383Array9239[2] != null
		&& ((Class87_Sub2) this).aClass383Array9239[2].method7055());
    }
    
    final void method15651(int i) {
	if (anInt9255 != i) {
	    anInt9255 = i;
	    method15401();
	}
    }
    
    abstract void method15652(int i);
    
    abstract void method15653(int i);
    
    public final boolean method2373() {
	return ((Class87_Sub2) this).aClass383Array9239[3] != null;
    }
    
    boolean method15654() {
	if (((Class87_Sub2) this).aClass383Array9239[1] != null
	    && !((Class87_Sub2) this).aClass383Array9239[1].method7055()) {
	    boolean bool
		= ((Class87_Sub2) this).aClass392_9248
		      .method7165(((Class87_Sub2) this).aClass383Array9239[1]);
	    if (bool)
		((Class87_Sub2) this).aClass380_9232.method7028();
	    return bool;
	}
	return false;
    }
    
    abstract void method15655();
    
    abstract void method15656();
    
    abstract void method15657(int i);
    
    abstract void method15658();
    
    abstract void method15659();
    
    abstract void method15660();
    
    void method2080() {
	if (!((Class87_Sub2) this).aBool9273) {
	    method15330();
	    ((Class87_Sub2) this).aClass380_9232.method7028();
	    for (Class243 class243 = ((Class87_Sub2) this).aClass420_9137
					 .method7523(317096211);
		 class243 != null;
		 class243 = ((Class87_Sub2) this).aClass420_9137
				.method7520(896006161))
		((Class243_Sub30_Sub2) class243).method17472();
	    Class5.method495(false, true, 1152496705);
	    for (int i = 0; i < ((Class87_Sub2) this).aClass65Array9142.length;
		 i++) {
		if (((Class87_Sub2) this).aClass65Array9142[i] != null) {
		    ((Class87_Sub2) this).aClass65Array9142[i].method1522();
		    ((Class87_Sub2) this).aClass65Array9142[i] = null;
		}
	    }
	    for (int i = 0;
		 i < ((Class87_Sub2) this).aClass383Array9239.length; i++) {
		if (((Class87_Sub2) this).aClass383Array9239[i] != null) {
		    ((Class87_Sub2) this).aClass383Array9239[i].method7067();
		    ((Class87_Sub2) this).aClass383Array9239[i] = null;
		}
	    }
	    method15299();
	    method2081(0);
	    ((Class87_Sub2) this).aBool9273 = true;
	}
    }
    
    final Interface40 method15661(Class173 class173, int i, int i_695_,
				  boolean bool, byte[] is) {
	return method15442(class173, i, i_695_, bool, is, 0, 0);
    }
    
    public final int method2158(int i, int i_696_) {
	return i & i_696_ ^ i_696_;
    }
    
    public final Interface32 method15662() {
	return (((Class87_Sub2) this).aClass103_Sub1_9254 != null
		? ((Class87_Sub2) this).aClass103_Sub1_9254.method14968()
		: null);
    }
    
    abstract void method15663();
    
    abstract void method15664();
    
    abstract void method15665();
    
    public final void method2286(Class243_Sub30 class243_sub30) {
	((Class87_Sub2) this).aNativeHeap9144
	    = (((Class243_Sub30_Sub2) (Class243_Sub30_Sub2) class243_sub30)
	       .aNativeHeap10955);
    }
    
    abstract Interface31 method15666(boolean bool);
    
    public void method2132(int i) {
	if (((Class87_Sub2) this).aClass380_9232 != null)
	    ((Class87_Sub2) this).aClass380_9232.method7029();
	anInt9271 = i & 0x7fffffff;
    }
    
    abstract Interface31 method15667(boolean bool);
    
    abstract Interface36 method15668(boolean bool);
    
    abstract Interface36 method15669(boolean bool);
    
    abstract Interface36 method15670(boolean bool);
    
    abstract Class367 method15671(Class378[] class378s);
    
    abstract Interface40 method15672(Class173 class173, Class90 class90, int i,
				     int i_697_);
    
    public final Class276 method15673() {
	return aClass276Array9265[anInt9225];
    }
    
    final void method15674(int i) {
	if (((Class87_Sub2) this).anInt9266 != i) {
	    Class375 class375;
	    boolean bool;
	    boolean bool_698_;
	    if (i == 1) {
		class375 = Class375.aClass375_5583;
		bool = true;
		bool_698_ = true;
	    } else if (i == 2) {
		class375 = Class375.aClass375_5582;
		bool = false;
		bool_698_ = true;
	    } else if (i == 128) {
		class375 = Class375.aClass375_5580;
		bool = true;
		bool_698_ = true;
	    } else {
		class375 = Class375.aClass375_5581;
		bool = false;
		bool_698_ = false;
	    }
	    if (bool != aBool9269) {
		aBool9269 = bool;
		method15433();
	    }
	    if (bool_698_ != aBool9282) {
		aBool9282 = bool_698_;
		method15318();
	    }
	    if (class375 != aClass375_9267) {
		aClass375_9267 = class375;
		method15401();
	    }
	    ((Class87_Sub2) this).anInt9266 = i;
	    ((Class87_Sub2) this).anInt9243 &= ~0xc;
	}
    }
    
    public abstract void method15675(Class367 class367);
    
    public final void method2386() {
	((Class87_Sub2) this).aBool9215 = false;
    }
    
    public abstract void method15676(Class367 class367);
    
    abstract void method15677();
    
    public abstract void method15678(int i, Interface36 interface36);
    
    final void method15679() {
	method15412(0, ((Class87_Sub2) this).anInterface36_9283);
	method15411(((Class87_Sub2) this).aClass367_9286);
	method15419(Class311.aClass311_4592, 0, 1);
    }
    
    public final void method2291(int i, int i_699_, int i_700_, int i_701_,
				 int i_702_, int i_703_) {
	method2135(i, i_699_, i_700_, i_701_, i_702_, 1, i_703_);
    }
    
    final void method15680(Class311 class311, int i) {
	method15412(0, ((Class87_Sub2) this).anInterface36_9284);
	method15411(((Class87_Sub2) this).aClass367_9287);
	method15419(class311, 0, i);
    }
    
    public abstract void method15681(Class311 class311, int i, int i_704_);
    
    final void method15682() {
	((Class87_Sub2) this).aBool9297 = false;
	method15357();
	if (((Class87_Sub2) this).aClass393_9165 == Class393.aClass393_5712)
	    method15435();
    }
    
    public final Class103 method2175(int i) {
	return new Class103_Sub1_Sub1(this, i);
    }
    
    abstract void method15683(Interface31 interface31, Class311 class311,
			      int i, int i_705_, int i_706_, int i_707_);
    
    public abstract void method15684(Class311 class311, int i, int i_708_,
				     int i_709_, int i_710_);
    
    final Class276 method15685() {
	return aClass276Array9265[anInt9225];
    }
    
    public void method2271(int i, int i_711_, int i_712_, int i_713_,
			   int i_714_, int i_715_, Class171 class171,
			   int i_716_, int i_717_, int i_718_, int i_719_,
			   int i_720_) {
	/* empty */
    }
    
    public final void method15686() {
	if (((Class87_Sub2) this).anInt9243 != 2) {
	    method15352();
	    method15438(false);
	    method15363(false);
	    method15358(false);
	    method15554(false);
	    ((Class87_Sub2) this).anInt9243 = 2;
	}
    }
    
    final void method15687() {
	if (((Class87_Sub2) this).anInt9243 != 8) {
	    method15597();
	    method15438(true);
	    method15358(true);
	    method15554(true);
	    method15674(1);
	    ((Class87_Sub2) this).anInt9243 = 8;
	}
    }
    
    final void method15688() {
	if (((Class87_Sub2) this).anInt9243 != 8) {
	    method15597();
	    method15438(true);
	    method15358(true);
	    method15554(true);
	    method15674(1);
	    ((Class87_Sub2) this).anInt9243 = 8;
	}
    }
    
    public void method2182(float f, float f_721_, float f_722_, float f_723_,
			   float f_724_) {
	Class383_Sub2.aFloat10118 = f;
	Class383_Sub2.aFloat10119 = f_721_;
	Class383_Sub2.aFloat10120 = f_722_;
	Class383_Sub2.aFloat10121 = f_723_;
	Class383_Sub2.aFloat10111 = f_724_;
    }
    
    abstract void method15689();
    
    abstract Class367 method15690(Class378[] class378s);
    
    public final boolean method2085() {
	return true;
    }
    
    abstract boolean method15691(Class173 class173, Class90 class90);
    
    abstract void method15692(Interface31 interface31);
    
    public final int method2082() {
	return anInt9227 + anInt9146 + anInt9148;
    }
    
    final void method15693() {
	if (!((Class87_Sub2) this).aBool9297)
	    ((Class87_Sub2) this).aBool9297 = true;
    }
    
    abstract void method15694(boolean bool);
    
    abstract void method15695(boolean bool);
    
    abstract void method15696(boolean bool);
    
    abstract void method15697(Interface31 interface31);
    
    abstract void method15698(Interface31 interface31);
    
    abstract void method15699(Interface31 interface31);
    
    abstract void method15700(Interface31 interface31);
    
    abstract void method15701(int i);
    
    public final void method2107(boolean bool) {
	aBool9201 = bool;
	method15360();
    }
}
