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

import jaggl.OpenGL;

public abstract class Class456 implements Interface32
{
    static int[] anIntArray5243 = new int[1];
    NativeHeapBuffer aNativeHeapBuffer5244;
    Class151_Sub2_Sub2 aClass151_Sub2_Sub2_5245;
    int anInt5246;
    boolean aBool5247;
    int anInt5248 = -1;
    int anInt5249;
    static final int anInt5250 = 34963;
    static final int anInt5251 = 34962;
    int anInt5252;
    
    void method80() {
	if (((Class456) this).anInt5248 > 0) {
	    ((Class456) this).aClass151_Sub2_Sub2_5245.method10218
		(((Class456) this).anInt5248, ((Class456) this).anInt5252);
	    ((Class456) this).anInt5248 = -1;
	}
    }
    
    void method5649() {
	if (((Class456) this).anInt5248 < 0) {
	    if (((Class151_Sub2_Sub2)
		 ((Class456) this).aClass151_Sub2_Sub2_5245)
		.aBool11201) {
		OpenGL.glGenBuffersARB(1, anIntArray5243, 0);
		((Class456) this).anInt5248 = anIntArray5243[0];
		OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				       ((Class456) this).anInt5248);
	    } else
		((Class456) this).anInt5248 = 0;
	}
    }
    
    public int method5() {
	return ((Class456) this).anInt5252;
    }
    
    long method5650() {
	return (((Class456) this).anInt5248 == 0
		? ((Class456) this).aNativeHeapBuffer5244.method2() : 0L);
    }
    
    Class456(Class151_Sub2_Sub2 class151_sub2_sub2, int i, boolean bool) {
	((Class456) this).aClass151_Sub2_Sub2_5245 = class151_sub2_sub2;
	((Class456) this).anInt5246 = i;
	((Class456) this).aBool5247 = bool;
    }
    
    void method276(int i) {
	if (i > ((Class456) this).anInt5249) {
	    method5649();
	    if (((Class456) this).anInt5248 > 0) {
		OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				       ((Class456) this).anInt5248);
		OpenGL.glBufferDataARBub(((Class456) this).anInt5246, i, null,
					 0,
					 (((Class456) this).aBool5247 ? 35040
					  : 35044));
		((Class456) this).aClass151_Sub2_Sub2_5245.anInt8932
		    += i - ((Class456) this).anInt5249;
	    } else
		((Class456) this).aNativeHeapBuffer5244
		    = ((Class456) this).aClass151_Sub2_Sub2_5245
			  .method8265(i, false);
	    ((Class456) this).anInt5249 = i;
	}
	((Class456) this).anInt5252 = i;
    }
    
    public long method208(int i, int i_0_) {
	OpenGL.glBindBufferARB(((Class456) this).anInt5246,
			       ((Class456) this).anInt5248);
	return (OpenGL.glMapBufferARB(((Class456) this).anInt5246, 35001)
		+ (long) i);
    }
    
    public boolean method209(int i, int i_1_, long l) {
	method5649();
	if (((Class456) this).anInt5248 > 0) {
	    OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				   ((Class456) this).anInt5248);
	    OpenGL.glBufferSubDataARBa(((Class456) this).anInt5246, i, i_1_,
				       l);
	} else
	    ((Class456) this).aNativeHeapBuffer5244.aNativeHeap887.copy
		(((Class456) this).aNativeHeapBuffer5244.method2() + (long) i,
		 l, i_1_);
	return true;
    }
    
    public void finalize() throws Throwable {
	method80();
	super.finalize();
    }
    
    public boolean method213(int i, int i_2_, long l) {
	method5649();
	if (((Class456) this).anInt5248 > 0) {
	    OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				   ((Class456) this).anInt5248);
	    OpenGL.glBufferSubDataARBa(((Class456) this).anInt5246, i, i_2_,
				       l);
	} else
	    ((Class456) this).aNativeHeapBuffer5244.aNativeHeap887.copy
		(((Class456) this).aNativeHeapBuffer5244.method2() + (long) i,
		 l, i_2_);
	return true;
    }
    
    void method81() {
	if (((Class456) this).anInt5248 > 0) {
	    ((Class456) this).aClass151_Sub2_Sub2_5245.method10218
		(((Class456) this).anInt5248, ((Class456) this).anInt5252);
	    ((Class456) this).anInt5248 = -1;
	}
    }
    
    void method79() {
	if (((Class456) this).anInt5248 > 0) {
	    ((Class456) this).aClass151_Sub2_Sub2_5245.method10218
		(((Class456) this).anInt5248, ((Class456) this).anInt5252);
	    ((Class456) this).anInt5248 = -1;
	}
    }
    
    void method5651() throws Throwable {
	method80();
	super.finalize();
    }
    
    void method5652() throws Throwable {
	method80();
	super.finalize();
    }
    
    public long method210(int i, int i_3_) {
	OpenGL.glBindBufferARB(((Class456) this).anInt5246,
			       ((Class456) this).anInt5248);
	return (OpenGL.glMapBufferARB(((Class456) this).anInt5246, 35001)
		+ (long) i);
    }
    
    public long method207(int i, int i_4_) {
	OpenGL.glBindBufferARB(((Class456) this).anInt5246,
			       ((Class456) this).anInt5248);
	return (OpenGL.glMapBufferARB(((Class456) this).anInt5246, 35001)
		+ (long) i);
    }
    
    void method5653() {
	if (((Class151_Sub2_Sub2) ((Class456) this).aClass151_Sub2_Sub2_5245)
	    .aBool11201)
	    OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				   ((Class456) this).anInt5248);
    }
    
    public void method211() {
	OpenGL.glUnmapBufferARB(((Class456) this).anInt5246);
    }
    
    void method277(int i) {
	if (i > ((Class456) this).anInt5249) {
	    method5649();
	    if (((Class456) this).anInt5248 > 0) {
		OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				       ((Class456) this).anInt5248);
		OpenGL.glBufferDataARBub(((Class456) this).anInt5246, i, null,
					 0,
					 (((Class456) this).aBool5247 ? 35040
					  : 35044));
		((Class456) this).aClass151_Sub2_Sub2_5245.anInt8932
		    += i - ((Class456) this).anInt5249;
	    } else
		((Class456) this).aNativeHeapBuffer5244
		    = ((Class456) this).aClass151_Sub2_Sub2_5245
			  .method8265(i, false);
	    ((Class456) this).anInt5249 = i;
	}
	((Class456) this).anInt5252 = i;
    }
    
    public int method206() {
	return ((Class456) this).anInt5252;
    }
    
    public boolean method214(int i, int i_5_, long l) {
	method5649();
	if (((Class456) this).anInt5248 > 0) {
	    OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				   ((Class456) this).anInt5248);
	    OpenGL.glBufferSubDataARBa(((Class456) this).anInt5246, i, i_5_,
				       l);
	} else
	    ((Class456) this).aNativeHeapBuffer5244.aNativeHeap887.copy
		(((Class456) this).aNativeHeapBuffer5244.method2() + (long) i,
		 l, i_5_);
	return true;
    }
    
    public void method212() {
	OpenGL.glUnmapBufferARB(((Class456) this).anInt5246);
    }
    
    void method5654() {
	if (((Class456) this).anInt5248 < 0) {
	    if (((Class151_Sub2_Sub2)
		 ((Class456) this).aClass151_Sub2_Sub2_5245)
		.aBool11201) {
		OpenGL.glGenBuffersARB(1, anIntArray5243, 0);
		((Class456) this).anInt5248 = anIntArray5243[0];
		OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				       ((Class456) this).anInt5248);
	    } else
		((Class456) this).anInt5248 = 0;
	}
    }
    
    void method281(int i) {
	if (i > ((Class456) this).anInt5249) {
	    method5649();
	    if (((Class456) this).anInt5248 > 0) {
		OpenGL.glBindBufferARB(((Class456) this).anInt5246,
				       ((Class456) this).anInt5248);
		OpenGL.glBufferDataARBub(((Class456) this).anInt5246, i, null,
					 0,
					 (((Class456) this).aBool5247 ? 35040
					  : 35044));
		((Class456) this).aClass151_Sub2_Sub2_5245.anInt8932
		    += i - ((Class456) this).anInt5249;
	    } else
		((Class456) this).aNativeHeapBuffer5244
		    = ((Class456) this).aClass151_Sub2_Sub2_5245
			  .method8265(i, false);
	    ((Class456) this).anInt5249 = i;
	}
	((Class456) this).anInt5252 = i;
    }
}
