/* Class220 - Decompiled by JODE
 * Visit http://jode.sourceforge.net/
 */
import jaclib.memory.heap.NativeHeapBuffer;

import jaggl.OpenGL;

public abstract class Class220 implements Interface44 {
	int anInt2616;
	static final int anInt2617 = 34962;
	Class84_Sub1_Sub1 aClass84_Sub1_Sub1_2618;
	static final int anInt2619 = 34963;
	int anInt2620;
	int anInt2621 = -1;
	int anInt2622;
	boolean aBool2623;
	NativeHeapBuffer aNativeHeapBuffer2624;
	static int[] anIntArray2625 = new int[1];

	public boolean method303(int i, int i_0_, long l) {
		method4525();
		if (((Class220) this).anInt2621 > 0) {
			OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
			OpenGL.glBufferSubDataARBa(((Class220) this).anInt2620, i, i_0_, l);
		} else
			((Class220) this).aNativeHeapBuffer2624.aNativeHeap1047.copy((((Class220) this).aNativeHeapBuffer2624.method110() + (long) i), l, i_0_);
		return true;
	}

	void method4525() {
		if (((Class220) this).anInt2621 < 0) {
			if (((Class84_Sub1_Sub1) ((Class220) this).aClass84_Sub1_Sub1_2618).aBool10379) {
				OpenGL.glGenBuffersARB(1, anIntArray2625, 0);
				((Class220) this).anInt2621 = anIntArray2625[0];
				OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
			} else
				((Class220) this).anInt2621 = 0;
		}
	}

	public int method52() {
		return ((Class220) this).anInt2622;
	}

	long method4526() {
		return (((Class220) this).anInt2621 == 0 ? ((Class220) this).aNativeHeapBuffer2624.method110() : 0L);
	}

	void method4527() {
		if (((Class84_Sub1_Sub1) ((Class220) this).aClass84_Sub1_Sub1_2618).aBool10379)
			OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
	}

	void method295(int i) {
		if (i > ((Class220) this).anInt2616) {
			method4525();
			if (((Class220) this).anInt2621 > 0) {
				OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
				OpenGL.glBufferDataARBub(((Class220) this).anInt2620, i, null, 0, (((Class220) this).aBool2623 ? 35040 : 35044));
				((Class220) this).aClass84_Sub1_Sub1_2618.anInt8884 += i - ((Class220) this).anInt2616;
			} else
				((Class220) this).aNativeHeapBuffer2624 = ((Class220) this).aClass84_Sub1_Sub1_2618.method14902(i, false);
			((Class220) this).anInt2616 = i;
		}
		((Class220) this).anInt2622 = i;
	}

	public long method304(int i, int i_1_) {
		OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
		return (OpenGL.glMapBufferARB(((Class220) this).anInt2620, 35001) + (long) i);
	}

	void method19() {
		if (((Class220) this).anInt2621 > 0) {
			((Class220) this).aClass84_Sub1_Sub1_2618.method16561(((Class220) this).anInt2621, ((Class220) this).anInt2622);
			((Class220) this).anInt2621 = -1;
		}
	}

	public boolean method302(int i, int i_2_, long l) {
		method4525();
		if (((Class220) this).anInt2621 > 0) {
			OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
			OpenGL.glBufferSubDataARBa(((Class220) this).anInt2620, i, i_2_, l);
		} else
			((Class220) this).aNativeHeapBuffer2624.aNativeHeap1047.copy((((Class220) this).aNativeHeapBuffer2624.method110() + (long) i), l, i_2_);
		return true;
	}

	void method54() {
		if (((Class220) this).anInt2621 > 0) {
			((Class220) this).aClass84_Sub1_Sub1_2618.method16561(((Class220) this).anInt2621, ((Class220) this).anInt2622);
			((Class220) this).anInt2621 = -1;
		}
	}

	public void finalize() throws Throwable {
		method54();
		super.finalize();
	}

	void method4528() {
		if (((Class84_Sub1_Sub1) ((Class220) this).aClass84_Sub1_Sub1_2618).aBool10379)
			OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
	}

	void method53() {
		if (((Class220) this).anInt2621 > 0) {
			((Class220) this).aClass84_Sub1_Sub1_2618.method16561(((Class220) this).anInt2621, ((Class220) this).anInt2622);
			((Class220) this).anInt2621 = -1;
		}
	}

	void method4529() {
		if (((Class84_Sub1_Sub1) ((Class220) this).aClass84_Sub1_Sub1_2618).aBool10379)
			OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
	}

	void method4530() throws Throwable {
		method54();
		super.finalize();
	}

	public void method246() {
		OpenGL.glUnmapBufferARB(((Class220) this).anInt2620);
	}

	public int method301() {
		return ((Class220) this).anInt2622;
	}

	void method23() {
		if (((Class220) this).anInt2621 > 0) {
			((Class220) this).aClass84_Sub1_Sub1_2618.method16561(((Class220) this).anInt2621, ((Class220) this).anInt2622);
			((Class220) this).anInt2621 = -1;
		}
	}

	public boolean method305(int i, int i_3_, long l) {
		method4525();
		if (((Class220) this).anInt2621 > 0) {
			OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
			OpenGL.glBufferSubDataARBa(((Class220) this).anInt2620, i, i_3_, l);
		} else
			((Class220) this).aNativeHeapBuffer2624.aNativeHeap1047.copy((((Class220) this).aNativeHeapBuffer2624.method110() + (long) i), l, i_3_);
		return true;
	}

	public long method306(int i, int i_4_) {
		OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
		return (OpenGL.glMapBufferARB(((Class220) this).anInt2620, 35001) + (long) i);
	}

	void method4531() throws Throwable {
		method54();
		super.finalize();
	}

	void method296(int i) {
		if (i > ((Class220) this).anInt2616) {
			method4525();
			if (((Class220) this).anInt2621 > 0) {
				OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
				OpenGL.glBufferDataARBub(((Class220) this).anInt2620, i, null, 0, (((Class220) this).aBool2623 ? 35040 : 35044));
				((Class220) this).aClass84_Sub1_Sub1_2618.anInt8884 += i - ((Class220) this).anInt2616;
			} else
				((Class220) this).aNativeHeapBuffer2624 = ((Class220) this).aClass84_Sub1_Sub1_2618.method14902(i, false);
			((Class220) this).anInt2616 = i;
		}
		((Class220) this).anInt2622 = i;
	}

	void method298(int i) {
		if (i > ((Class220) this).anInt2616) {
			method4525();
			if (((Class220) this).anInt2621 > 0) {
				OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
				OpenGL.glBufferDataARBub(((Class220) this).anInt2620, i, null, 0, (((Class220) this).aBool2623 ? 35040 : 35044));
				((Class220) this).aClass84_Sub1_Sub1_2618.anInt8884 += i - ((Class220) this).anInt2616;
			} else
				((Class220) this).aNativeHeapBuffer2624 = ((Class220) this).aClass84_Sub1_Sub1_2618.method14902(i, false);
			((Class220) this).anInt2616 = i;
		}
		((Class220) this).anInt2622 = i;
	}

	Class220(Class84_Sub1_Sub1 class84_sub1_sub1, int i, boolean bool) {
		((Class220) this).aClass84_Sub1_Sub1_2618 = class84_sub1_sub1;
		((Class220) this).anInt2620 = i;
		((Class220) this).aBool2623 = bool;
	}

	void method300(int i) {
		if (i > ((Class220) this).anInt2616) {
			method4525();
			if (((Class220) this).anInt2621 > 0) {
				OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
				OpenGL.glBufferDataARBub(((Class220) this).anInt2620, i, null, 0, (((Class220) this).aBool2623 ? 35040 : 35044));
				((Class220) this).aClass84_Sub1_Sub1_2618.anInt8884 += i - ((Class220) this).anInt2616;
			} else
				((Class220) this).aNativeHeapBuffer2624 = ((Class220) this).aClass84_Sub1_Sub1_2618.method14902(i, false);
			((Class220) this).anInt2616 = i;
		}
		((Class220) this).anInt2622 = i;
	}

	public long method307(int i, int i_5_) {
		OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
		return (OpenGL.glMapBufferARB(((Class220) this).anInt2620, 35001) + (long) i);
	}

	public void method247() {
		OpenGL.glUnmapBufferARB(((Class220) this).anInt2620);
	}

	void method4532() {
		if (((Class220) this).anInt2621 < 0) {
			if (((Class84_Sub1_Sub1) ((Class220) this).aClass84_Sub1_Sub1_2618).aBool10379) {
				OpenGL.glGenBuffersARB(1, anIntArray2625, 0);
				((Class220) this).anInt2621 = anIntArray2625[0];
				OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
			} else
				((Class220) this).anInt2621 = 0;
		}
	}

	long method4533() {
		return (((Class220) this).anInt2621 == 0 ? ((Class220) this).aNativeHeapBuffer2624.method110() : 0L);
	}

	long method4534() {
		return (((Class220) this).anInt2621 == 0 ? ((Class220) this).aNativeHeapBuffer2624.method110() : 0L);
	}

	void method299(int i) {
		if (i > ((Class220) this).anInt2616) {
			method4525();
			if (((Class220) this).anInt2621 > 0) {
				OpenGL.glBindBufferARB(((Class220) this).anInt2620, ((Class220) this).anInt2621);
				OpenGL.glBufferDataARBub(((Class220) this).anInt2620, i, null, 0, (((Class220) this).aBool2623 ? 35040 : 35044));
				((Class220) this).aClass84_Sub1_Sub1_2618.anInt8884 += i - ((Class220) this).anInt2616;
			} else
				((Class220) this).aNativeHeapBuffer2624 = ((Class220) this).aClass84_Sub1_Sub1_2618.method14902(i, false);
			((Class220) this).anInt2616 = i;
		}
		((Class220) this).anInt2622 = i;
	}

	public void method251() {
		OpenGL.glUnmapBufferARB(((Class220) this).anInt2620);
	}
}
