
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/teximage.c
	mc68030
	mc68881
	XREF	_gl_read_rgba_span
	XREF	_gl_free_image
	XREF	_gl_pack_rgba_span
	XREF	_gl_unpack_image3D
	XREF	_gl_pixel_addr_in_image
	XREF	_gl_components_in_format
	XREF	_gl_sizeof_type
	XREF	_gl_error
	XREF	_gl_problem
	XREF	_q_memset
	XREF	_q_memcpy
	XREF	_malloc
	XREF	_free
	XREF	_calloc
	XREF	_std__in
	XREF	_std__out
	XREF	_std__err
	XREF	_CC

	SECTION "_logbase2:0",CODE


;static int logbase2( int n )
_logbase2
	movem.l	d2/d3,-(a7)
	move.l	$C(a7),d2
L464
;   GLint i = 1;
	moveq	#1,d1
;   GLint log2 = 0;
	moveq	#0,d0
;   if (n<0) 
	tst.l	d2
	bpl.b	L468
L465
	moveq	#-1,d0
	movem.l	(a7)+,d2/d3
	rts
L466
;   while ( n > i ) 
	bra.b	L468
L467
;      i *= 2;
	moveq	#1,d3
	asl.l	d3,d1
;      log2++;
	addq.l	#1,d0
L468
	cmp.l	d1,d2
	bgt.b	L467
L469
;   if (i != n) 
	cmp.l	d2,d1
	beq.b	L471
L470
	moveq	#-1,d0
	movem.l	(a7)+,d2/d3
	rts
L471
	movem.l	(a7)+,d2/d3
	rts

	SECTION "_decode_internal_format:0",CODE

	rts

;static GLint decode_internal_format( GLint format )
_decode_internal_format
	move.l	4(a7),d0
L472
;   switch (format)
	cmp.l	#$8049,d0
	beq	L476
	bgt	L481
	cmp.l	#$803D,d0
	beq	L473
	bgt	L482
	cmp.l	#$1908,d0
	beq	L478
	bgt.b	L483
	cmp.l	#4,d0
	beq	L478
	bgt.b	L484
	cmp.l	#2,d0
	beq	L475
	bgt.b	L485
	cmp.l	#1,d0
	beq	L474
	bra	L480
L485
	bgt	L477
L484
	cmp.l	#$1906,d0
	beq	L473
	cmp.l	#$1907,d0
	beq	L477
	bra	L480
L483
	cmp.l	#$2A10,d0
	beq	L477
	bgt.b	L486
	cmp.l	#$1909,d0
	beq	L474
	cmp.l	#$190A,d0
	beq	L475
	bra	L480
L486
	cmp.l	#$803B,d0
	beq	L473
	cmp.l	#$803C,d0
	beq	L473
	bra	L480
L482
	sub.l	#$803E,d0
	cmp.l	#$A,d0
	bhi	L480
	move.l	L487(pc,d0.l*4),a0
	jmp	(a0)
L487
	dc.l	L473
	dc.l	L474
	dc.l	L474
	dc.l	L474
	dc.l	L474
	dc.l	L475
	dc.l	L475
	dc.l	L475
	dc.l	L475
	dc.l	L475
	dc.l	L475
L481
	cmp.l	#$8056,d0
	beq	L478
	bgt.b	L488
	sub.l	#$804A,d0
	cmp.l	#$B,d0
	bhi	L480
	move.l	L489(pc,d0.l*4),a0
	jmp	(a0)
L489
	dc.l	L476
	dc.l	L476
	dc.l	L476
	dc.l	L476
	dc.l	L480
	dc.l	L477
	dc.l	L477
	dc.l	L477
	dc.l	L477
	dc.l	L477
	dc.l	L477
	dc.l	L478
L488
	cmp.l	#$80E2,d0
	beq	L479
	bgt.b	L490
	cmp.l	#$8059,d0
	beq	L478
	bgt.b	L491
	cmp.l	#$8057,d0
	beq	L478
	cmp.l	#$8058,d0
	beq.b	L478
	bra	L480
L491
	cmp.l	#$805A,d0
	beq.b	L478
	cmp.l	#$805B,d0
	beq.b	L478
	bra.b	L480
L490
	cmp.l	#$80E5,d0
	beq.b	L479
	bgt.b	L492
	cmp.l	#$80E3,d0
	beq.b	L479
	cmp.l	#$80E4,d0
	beq.b	L479
	bra.b	L480
L492
	cmp.l	#$80E6,d0
	beq.b	L479
	cmp.l	#$80E7,d0
	beq.b	L479
	bra.b	L480
;      
L473
	move.l	#$1906,d0
	rts
L474
	move.l	#$1909,d0
	rts
L475
	move.l	#$190A,d0
	rts
L476
	move.l	#$8049,d0
	rts
L477
	move.l	#$1907,d0
	rts
L478
	move.l	#$1908,d0
	rts
L479
	move.l	#$1900,d0
	rts
L480
	moveq	#-1,d0
	rts

	SECTION "_components_in_intformat:0",CODE


;static GLint components_in_intformat( GLint format )
_components_in_intformat
	move.l	4(a7),d0
L493
;   switch (format)
	cmp.l	#$8048,d0
	beq	L496
	bgt	L502
	cmp.l	#$803C,d0
	beq	L494
	bgt	L503
	cmp.l	#$1907,d0
	beq	L498
	bgt.b	L504
	cmp.l	#4,d0
	beq	L499
	bgt.b	L505
	cmp.l	#2,d0
	beq	L496
	bgt.b	L506
	cmp.l	#1,d0
	beq	L495
	bra	L501
L506
	bgt	L498
L505
	cmp.l	#$1900,d0
	beq	L500
	cmp.l	#$1906,d0
	beq	L494
	bra	L501
L504
	cmp.l	#$190A,d0
	beq	L496
	bgt.b	L507
	cmp.l	#$1908,d0
	beq	L499
	cmp.l	#$1909,d0
	beq	L495
	bra	L501
L507
	cmp.l	#$2A10,d0
	beq	L498
	cmp.l	#$803B,d0
	beq	L494
	bra	L501
L503
	sub.l	#$803D,d0
	cmp.l	#$A,d0
	bhi	L501
	move.l	L508(pc,d0.l*4),a0
	jmp	(a0)
L508
	dc.l	L494
	dc.l	L494
	dc.l	L495
	dc.l	L495
	dc.l	L495
	dc.l	L495
	dc.l	L496
	dc.l	L496
	dc.l	L496
	dc.l	L496
	dc.l	L496
L502
	cmp.l	#$8056,d0
	beq	L499
	bgt.b	L509
	sub.l	#$8049,d0
	cmp.l	#$C,d0
	bhi	L501
	move.l	L510(pc,d0.l*4),a0
	jmp	(a0)
L510
	dc.l	L497
	dc.l	L497
	dc.l	L497
	dc.l	L497
	dc.l	L497
	dc.l	L501
	dc.l	L498
	dc.l	L498
	dc.l	L498
	dc.l	L498
	dc.l	L498
	dc.l	L498
	dc.l	L499
L509
	cmp.l	#$80E2,d0
	beq	L500
	bgt.b	L511
	cmp.l	#$8059,d0
	beq.b	L499
	bgt.b	L512
	cmp.l	#$8057,d0
	beq.b	L499
	cmp.l	#$8058,d0
	beq.b	L499
	bra.b	L501
L512
	cmp.l	#$805A,d0
	beq.b	L499
	cmp.l	#$805B,d0
	beq.b	L499
	bra.b	L501
L511
	cmp.l	#$80E5,d0
	beq.b	L500
	bgt.b	L513
	cmp.l	#$80E3,d0
	beq.b	L500
	cmp.l	#$80E4,d0
	beq.b	L500
	bra.b	L501
L513
	cmp.l	#$80E6,d0
	beq.b	L500
	cmp.l	#$80E7,d0
	beq.b	L500
	bra.b	L501
;      
L494
	moveq	#1,d0
	rts
L495
	moveq	#1,d0
	rts
L496
	moveq	#2,d0
	rts
L497
	moveq	#1,d0
	rts
L498
	moveq	#3,d0
	rts
L499
	moveq	#4,d0
	rts
L500
	moveq	#1,d0
	rts
L501
	moveq	#-1,d0
	rts

	SECTION "_gl_alloc_texture_image:0",CODE


;struct gl_texture_image *gl_alloc_texture_image( void )
	XDEF	_gl_alloc_texture_image
_gl_alloc_texture_image
L514
	pea	$3C.w
	pea	1.w
	jsr	_calloc
	addq.w	#$8,a7
	rts

	SECTION "_gl_free_texture_image:0",CODE


;void gl_free_texture_image( struct gl_texture_image *teximage )
	XDEF	_gl_free_texture_image
_gl_free_texture_image
	move.l	a2,-(a7)
	move.l	$8(a7),a2
L515
;   if (teximage->Data) 
	tst.l	$34(a2)
	beq.b	L517
L516
;      free( teximage->Data );
	move.l	$34(a2),-(a7)
	jsr	_free
	addq.w	#4,a7
L517
;   free( teximage );
	move.l	a2,-(a7)
	jsr	_free
	addq.w	#4,a7
	move.l	(a7)+,a2
	rts

	SECTION "_image_to_texture:0",CODE


;static struct gl_texture_image *
_image_to_texture
L692	EQU	-$190
	link	a5,#L692
	movem.l	d2-d7/a2-a4,-(a7)
	fmovem.x fp2/fp3/fp4,-(a7)
	move.l	$14(a5),d2
	move.l	$8(a5),a4
L524
;   components = components_in_intformat(internalFormat);
	move.l	$10(a5),-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
	move.l	d0,d7
;   numPixels = image->Width * image->Height * image->Depth;
	move.l	$C(a5),a0
	move.l	(a0),-$C(a5)
	move.l	$C(a5),a0
	move.l	-$C(a5),d0
	muls.l	4(a0),d0
	move.l	d0,-$C(a5)
	move.l	$C(a5),a0
	move.l	-$C(a5),d0
	muls.l	$8(a0),d0
	move.l	d0,-$C(a5)
;   texImage = gl_alloc_texture_image();
	jsr	_gl_alloc_texture_image
	move.l	d0,a2
;   if (!texImage)
	cmp.w	#0,a2
	bne.b	L526
L525
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L526
;   texImage->Format = (GLenum) decode_internal_format(internalFor
	move.l	$10(a5),-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
	move.l	d0,(a2)
;   texImage->IntFormat = (GLenum) internalFormat;
	move.l	$10(a5),4(a2)
;   texImage->Border = border;
	move.l	d2,$8(a2)
;   texImage->Width = image->Width;
	move.l	$C(a5),a0
	move.l	(a0),$C(a2)
;   texImage->Height = image->Height;
	move.l	$C(a5),a0
	move.l	4(a0),$10(a2)
;   texImage->Depth = image->Depth;
	move.l	$C(a5),a0
	move.l	$8(a0),$14(a2)
;   texImage->WidthLog2 = logbase2(image->Width - 2*border);
	move.l	$C(a5),a0
	move.l	d2,d1
	moveq	#1,d6
	asl.l	d6,d1
	move.l	(a0),d0
	sub.l	d1,d0
	move.l	d0,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	move.l	d0,$24(a2)
;   if (image->Height==1)  /* 1-D texture */
	move.l	$C(a5),a0
	move.l	4(a0),d0
	cmp.l	#1,d0
	bne.b	L528
L527
;      texImage->HeightLog2 = 0;
	clr.l	$28(a2)
	bra.b	L529
L528
;      texImage->HeightLog2 = logbase2(image->Height - 2*border)
	move.l	$C(a5),a0
	move.l	d2,d1
	moveq	#1,d6
	asl.l	d6,d1
	move.l	4(a0),d0
	sub.l	d1,d0
	move.l	d0,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	move.l	d0,$28(a2)
L529
;   if (image->Depth==1)   /* 2-D texture */
	move.l	$C(a5),a0
	move.l	$8(a0),d0
	cmp.l	#1,d0
	bne.b	L531
L530
;      texImage->DepthLog2 = 0;
	clr.l	$2C(a2)
	bra.b	L532
L531
;      texImage->DepthLog2 = logbase2(image->Depth - 2*border);
	move.l	$C(a5),a0
	move.l	d2,d1
	moveq	#1,d2
	asl.l	d2,d1
	move.l	$8(a0),d0
	sub.l	d1,d0
	move.l	d0,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	move.l	d0,$2C(a2)
L532
;   texImage->Width2 = 1 << texImage->WidthLog2;
	moveq	#1,d0
	move.l	$24(a2),d1
	asl.l	d1,d0
	move.l	d0,$18(a2)
;   texImage->Height2 = 1 << texImage->HeightLog2;
	moveq	#1,d0
	move.l	$28(a2),d1
	asl.l	d1,d0
	move.l	d0,$1C(a2)
;   texImage->Depth2 = 1 << texImage->DepthLog2;
	moveq	#1,d0
	move.l	$2C(a2),d1
	asl.l	d1,d0
	move.l	d0,$20(a2)
;   texImage->MaxLog2 = MAX2( texImage->WidthLog2, texImage->Heigh
	move.l	$24(a2),d1
	cmp.l	$28(a2),d1
	bls.b	L534
L533
	move.l	$24(a2),d0
	bra.b	L535
L534
	move.l	$28(a2),d0
L535
	move.l	d0,$30(a2)
;   texImage->Data = (GLubyte *) malloc( numPixels * components );
	move.l	-$C(a5),d0
	muls.l	d7,d0
	move.l	d0,-(a7)
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,$34(a2)
;   if (!texImage->Data) 
	tst.l	$34(a2)
	bne.b	L537
L536
;      gl_free_texture_image( texImage );
	move.l	a2,-(a7)
	jsr	_gl_free_texture_image
	addq.w	#4,a7
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L537
;   if (ctx->Pixel.RedScale!=1.0F   || ctx->Pixel.RedBias!=0.0F ||
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.s	$8(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L545
L538
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.s	4(a0),fp0
	fcmp.s	#$.00000000,fp0
	fbne.b	L545
L539
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.s	$10(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L545
L540
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.s	$C(a0),fp0
	fcmp.s	#$.00000000,fp0
	fbne.b	L545
L541
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.s	$18(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L545
L542
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.s	$14(a0),fp0
	fcmp.s	#$.00000000,fp0
	fbne.b	L545
L543
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.s	$20(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L545
L544
	move.l	a4,a0
	add.l	#$B168,a0
	ftst.s	$1C(a0)
	fbeq.b	L546
L545
;      scaleOrBias = GL_TRUE;
	moveq	#1,d7
	bra.b	L547
L546
;      scaleOrBias = GL_FALSE;
	moveq	#0,d7
L547
;   switch (image->Type)
	move.l	$C(a5),a0
	move.l	$14(a0),d0
	cmp.l	#$1406,d0
	beq	L631
	bgt.b	L693
	cmp.l	#$1401,d0
	beq	L573
	bra	L690
L693
	cmp.l	#$1A00,d0
	beq.b	L548
	bra	L690
;      
L548
;            GLint shift = ctx->Pixel.IndexShift;
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$2E(a0),d5
;            GLint offset = ctx->Pixel.IndexOffset;
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$32(a0),-$1A(a5)
;            GLint rMask = ctx->Pixel.MapItoRsize-1;
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$48(a0),-$1E(a5)
	subq.l	#1,-$1E(a5)
;            GLint gMask = ctx->Pixel.MapItoGsize-1;
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$4C(a0),-$22(a5)
	subq.l	#1,-$22(a5)
;            GLint bMask = ctx->Pixel.MapItoBsize-1;
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$50(a0),-$26(a5)
	subq.l	#1,-$26(a5)
;            GLint aMask = ctx->Pixel.MapItoAsize-1;
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$54(a0),-$2A(a5)
	subq.l	#1,-$2A(a5)
;            GLubyte *srcPtr = (GLubyte *) image->Data;
	move.l	$C(a5),a1
	move.l	$18(a1),a0
;            for (j=0;
	clr.l	-$32(a5)
	bra	L571
L549
;               GLubyte bitMask = 128;
	move.b	#$80,d3
;               for (i=0;
	moveq	#0,d4
	bra	L567
L550
;                  index = (*srcPtr & bitMask) ? 1 
	moveq	#0,d0
	move.b	(a0),d0
	moveq	#0,d1
	move.b	d3,d1
	and.l	d1,d0
	beq.b	L552
L551
	moveq	#1,d0
	bra.b	L553
L552
	moveq	#0,d0
L553
;                  bitMask = bitMask >> 1;
	moveq	#0,d1
	move.b	d3,d1
	moveq	#1,d2
	asr.l	d2,d1
	move.b	d1,d3
;                  if (bitMask==0) 
	bne.b	L555
L554
;                     bitMask = 128;
	move.b	#$80,d3
;                     srcPtr++;
	addq.w	#1,a0
L555
;                  if (shift>=0) 
	tst.l	d5
	bmi.b	L557
L556
;                     index = (index << shift) +
	asl.l	d5,d0
	add.l	-$1A(a5),d0
	bra.b	L558
L557
;                     index = (index >> -shift) 
	move.l	d5,d1
	neg.l	d1
	asr.l	d1,d0
	add.l	-$1A(a5),d0
L558
;                  red   = (GLint) (ctx->Pixel.MapI
	move.l	a4,a1
	add.l	#$B9D0,a1
	move.l	d0,d1
	and.l	-$1E(a5),d1
	fmove.s	0(a1,d1.l*4),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d1
;                  green = (GLint) (ctx->Pixel.MapI
	move.l	a4,a1
	add.l	#$BDD0,a1
	move.l	d0,d2
	and.l	-$22(a5),d2
	fmove.s	0(a1,d2.l*4),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d2
	move.b	d2,-$3E(a5)
;                  blue  = (GLint) (ctx->Pixel.MapI
	move.l	a4,a1
	add.l	#$C1D0,a1
	move.l	d0,d2
	and.l	-$26(a5),d2
	fmove.s	0(a1,d2.l*4),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d2
	move.b	d2,-$3F(a5)
;                  alpha = (GLint) (ctx->Pixel.MapI
	move.l	a4,a1
	add.l	#$C5D0,a1
	and.l	-$2A(a5),d0
	fmove.s	0(a1,d0.l*4),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
;                  pixel = j * image->Width + i;
	move.l	$C(a5),a1
	move.l	(a1),d2
	muls.l	-$32(a5),d2
	add.l	d4,d2
;                  switch (texImage->Format)
	move.l	(a2),d6
	cmp.l	#$1909,d6
	beq.b	L560
	bgt.b	L694
	cmp.l	#$1907,d6
	beq.b	L563
	bgt.b	L695
	cmp.l	#$1906,d6
	beq.b	L559
	bra	L565
L695
	bgt	L564
L694
	cmp.l	#$190A,d6
	beq.b	L561
	cmp.l	#$8049,d6
	beq.b	L562
	bra	L565
;                     
L559
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	move.b	d0,0(a1,d2.l)
;                        
	bra	L566
L560
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	move.b	d1,0(a1,d2.l)
;                        
	bra	L566
L561
;                        texImage->Data[pixel
	move.l	d2,d6
	moveq	#1,d7
	asl.l	d7,d6
	move.l	$34(a2),a1
	move.b	d1,0(a1,d6.l)
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	moveq	#1,d1
	asl.l	d1,d2
	lea	1(a1),a1
	move.b	d0,0(a1,d2.l)
;                        
	bra	L566
L562
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	move.b	d1,0(a1,d2.l)
;                        
	bra	L566
L563
;                        texImage->Data[pixel
	move.l	d2,d0
	muls.l	#3,d0
	move.l	$34(a2),a1
	move.b	d1,0(a1,d0.l)
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	move.l	d2,d0
	muls.l	#3,d0
	lea	1(a1),a1
	move.b	-$3E(a5),0(a1,d0.l)
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	muls.l	#3,d2
	lea	2(a1),a1
	move.b	-$3F(a5),0(a1,d2.l)
;                        
	bra.b	L566
L564
;                        texImage->Data[pixel
	move.l	d2,d6
	moveq	#2,d7
	asl.l	d7,d6
	move.l	$34(a2),a1
	move.b	d1,0(a1,d6.l)
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	move.l	d2,d1
	moveq	#2,d6
	asl.l	d6,d1
	lea	1(a1),a1
	move.b	-$3E(a5),0(a1,d1.l)
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	move.l	d2,d1
	moveq	#2,d6
	asl.l	d6,d1
	lea	2(a1),a1
	move.b	-$3F(a5),0(a1,d1.l)
;                        texImage->Data[pixel
	move.l	$34(a2),a1
	moveq	#2,d1
	asl.l	d1,d2
	lea	3(a1),a1
	move.b	d0,0(a1,d2.l)
;                        
	bra.b	L566
L565
;                        gl_problem(ctx,"Bad 
	move.l	#L518,-(a7)
	move.l	a4,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L566
	addq.l	#1,d4
L567
	move.l	$C(a5),a1
	cmp.l	(a1),d4
	blt	L550
L568
;                        return 
;               if (bitMask!=128) 
	cmp.b	#$80,d3
	beq.b	L570
L569
;                  srcPtr++;
	addq.w	#1,a0
L570
	addq.l	#1,-$32(a5)
L571
	move.l	$C(a5),a1
	move.l	-$32(a5),d1
	cmp.l	4(a1),d1
	blt	L549
L572
;         
	bra	L691
L573
;         for (pixel=0;
	moveq	#0,d2
	bra	L629
L574
;            switch (image->Format)
	move.l	$C(a5),a0
	move.l	$10(a0),d0
	sub.l	#$1900,d0
	cmp.l	#$A,d0
	bhi	L587
	move.l	L696(pc,d0.l*4),a0
	jmp	(a0)
L696
	dc.l	L575
	dc.l	L587
	dc.l	L587
	dc.l	L581
	dc.l	L582
	dc.l	L583
	dc.l	L584
	dc.l	L579
	dc.l	L580
	dc.l	L585
	dc.l	L586
;               
L575
;                  if (decode_internal_format(inter
	move.l	$10(a5),-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
	cmp.l	#$1900,d0
	bne.b	L577
L576
;                     GLint index = ((GLubyte*)i
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	moveq	#0,d0
	move.b	0(a0,d2.l),d0
;                     red = index;
	bra	L578
L577
;                     GLint index = ((GLubyte*)i
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	moveq	#0,d1
	move.b	0(a0,d2.l),d1
;                     red   = (GLint) (255.0F * 
	move.l	a4,a0
	add.l	#$B9D0,a0
	fmove.s	0(a0,d1.l*4),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
;                     green = (GLint) (255.0F * 
	move.l	a4,a0
	add.l	#$BDD0,a0
	fmove.s	0(a0,d1.l*4),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d3
	move.b	d3,d5
;                     blue  = (GLint) (255.0F * 
	move.l	a4,a0
	add.l	#$C1D0,a0
	fmove.s	0(a0,d1.l*4),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d3
	move.b	d3,d4
;                     alpha = (GLint) (255.0F * 
	move.l	a4,a0
	add.l	#$C5D0,a0
	fmove.s	0(a0,d1.l*4),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d1
	move.b	d1,d3
L578
;                  
	bra	L588
L579
;                  red   = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	d2,d0
	muls.l	#3,d0
	move.l	$18(a1),a0
	move.b	0(a0,d0.l),d0
;                  green = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d1
	muls.l	#3,d1
	lea	1(a0),a0
	move.b	0(a0,d1.l),d5
;                  blue  = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d1
	muls.l	#3,d1
	lea	2(a0),a0
	move.b	0(a0,d1.l),d4
;                  alpha = 255;
	move.b	#$FF,d3
;                  
	bra	L588
L580
;                  red   = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	move.l	$18(a1),a0
	move.b	0(a0,d0.l),d0
;                  green = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d1
	moveq	#2,d3
	asl.l	d3,d1
	lea	1(a0),a0
	move.b	0(a0,d1.l),d5
;                  blue  = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d1
	moveq	#2,d3
	asl.l	d3,d1
	lea	2(a0),a0
	move.b	0(a0,d1.l),d4
;                  alpha = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d1
	moveq	#2,d3
	asl.l	d3,d1
	lea	3(a0),a0
	move.b	0(a0,d1.l),d3
;                  
	bra	L588
L581
;                  red   = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.b	0(a0,d2.l),d0
;                  green = 0;
	moveq	#0,d5
;                  blue  = 0;
	moveq	#0,d4
;                  alpha = 255;
	move.b	#$FF,d3
;                  
	bra	L588
L582
;                  red   = 0;
	moveq	#0,d0
;                  green = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.b	0(a0,d2.l),d5
;                  blue  = 0;
	moveq	#0,d4
;                  alpha = 255;
	move.b	#$FF,d3
;                  
	bra	L588
L583
;                  red   = 0;
	moveq	#0,d0
;                  green = 0;
	moveq	#0,d5
;                  blue  = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.b	0(a0,d2.l),d4
;                  alpha = 255;
	move.b	#$FF,d3
;                  
	bra	L588
L584
;                  red   = 0;
	moveq	#0,d0
;                  green = 0;
	moveq	#0,d5
;                  blue  = 0;
	moveq	#0,d4
;                  alpha = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.b	0(a0,d2.l),d3
;                  
	bra.b	L588
L585
;                  red   = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.b	0(a0,d2.l),d0
;                  green = red;
	move.b	d0,d5
;                  blue  = red;
	move.b	d0,d4
;                  alpha = 255;
	move.b	#$FF,d3
;                  
	bra.b	L588
L586
;                  red   = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	move.l	$18(a1),a0
	move.b	0(a0,d0.l),d0
;                  green = red;
	move.b	d0,d5
;                  blue  = red;
	move.b	d0,d4
;                  alpha = ((GLubyte*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d1
	moveq	#1,d3
	asl.l	d3,d1
	lea	1(a0),a0
	move.b	0(a0,d1.l),d3
;                  
	bra.b	L588
L587
;                 gl_problem(ctx,"Bad format (2) in 
	move.l	#L519,-(a7)
	move.l	a4,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L588
;                 return 
;            if (scaleOrBias || ctx->Pixel.MapColorFlag) 
	tst.b	d7
	bne.b	L590
L589
	move.l	a4,a0
	add.l	#$B168,a0
	tst.b	$36(a0)
	beq	L619
L590
;               GLfloat r = red   * (1.0F/255.0F);
	and.l	#$FF,d0
	fmove.l	d0,fp3
	fmul.s	#$.3B808080,fp3
;               GLfloat g = green * (1.0F/255.0F);
	moveq	#0,d0
	move.b	d5,d0
	fmove.l	d0,fp2
	fmul.s	#$.3B808080,fp2
;               GLfloat b = blue  * (1.0F/255.0F);
	moveq	#0,d0
	move.b	d4,d0
	fmove.l	d0,fp1
	fmul.s	#$.3B808080,fp1
;               GLfloat a = alpha * (1.0F/255.0F);
	moveq	#0,d0
	move.b	d3,d0
	fmove.l	d0,fp0
	fmul.s	#$.3B808080,fp0
;               if (scaleOrBias) 
	tst.b	d7
	beq	L616
L591
;                  r = r * ctx->Pixel.RedScale   + 
	move.l	a4,a0
	add.l	#$B168,a0
	fmul.s	$8(a0),fp3
	move.l	a4,a0
	add.l	#$B168,a0
	fadd.s	4(a0),fp3
;                  g = g * ctx->Pixel.GreenScale + 
	move.l	a4,a0
	add.l	#$B168,a0
	fmul.s	$10(a0),fp2
	move.l	a4,a0
	add.l	#$B168,a0
	fadd.s	$C(a0),fp2
;                  b = b * ctx->Pixel.BlueScale  + 
	move.l	a4,a0
	add.l	#$B168,a0
	fmul.s	$18(a0),fp1
	move.l	a4,a0
	add.l	#$B168,a0
	fadd.s	$14(a0),fp1
;                  a = a * ctx->Pixel.AlphaScale + 
	move.l	a4,a0
	add.l	#$B168,a0
	fmul.s	$20(a0),fp0
	move.l	a4,a0
	add.l	#$B168,a0
	fadd.s	$1C(a0),fp0
;                  r = CLAMP( r, 0.0F, 1.0F );
	fcmp.s	#$.00000000,fp3
	fboge.b	L593
L592
	fmove.s	#$.00000000,fp3
	bra.b	L597
L593
	fcmp.s	#$.3F800000,fp3
	fbole.b	L595
L594
	fmove.s	#$.3F800000,fp3
L595
L596
L597
;                  g = CLAMP( g, 0.0F, 1.0F );
	fcmp.s	#$.00000000,fp2
	fboge.b	L599
L598
	fmove.s	#$.00000000,fp2
	bra.b	L603
L599
	fcmp.s	#$.3F800000,fp2
	fbole.b	L601
L600
	fmove.s	#$.3F800000,fp2
L601
L602
L603
;                  b = CLAMP( b, 0.0F, 1.0F );
	fcmp.s	#$.00000000,fp1
	fboge.b	L605
L604
	fmove.s	#$.00000000,fp1
	bra.b	L609
L605
	fcmp.s	#$.3F800000,fp1
	fbole.b	L607
L606
	fmove.s	#$.3F800000,fp1
L607
L608
L609
;                  a = CLAMP( a, 0.0F, 1.0F );
	fcmp.s	#$.00000000,fp0
	fboge.b	L611
L610
	fmove.s	#$.00000000,fp0
	bra.b	L615
L611
	fcmp.s	#$.3F800000,fp0
	fbole.b	L613
L612
	fmove.s	#$.3F800000,fp0
L613
L614
L615
L616
;               if (ctx->Pixel.MapColorFlag) 
	move.l	a4,a0
	add.l	#$B168,a0
	tst.b	$36(a0)
	beq	L618
L617
;                  GLint ir = (GLint) (r*ctx->Pixel
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.l	$58(a0),fp4
	fmul.x	fp4,fp3
	fmove.l	fp3,d4
;                  GLint ig = (GLint) (g*ctx->Pixel
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.l	$5C(a0),fp3
	fmul.x	fp3,fp2
	fmove.l	fp2,d3
;                  GLint ib = (GLint) (b*ctx->Pixel
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.l	$60(a0),fp2
	fmul.x	fp2,fp1
	fmove.l	fp1,d1
;                  GLint ia = (GLint) (a*ctx->Pixel
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.l	$64(a0),fp1
	fmul.x	fp1,fp0
	fmove.l	fp0,d0
;                  r = ctx->Pixel.MapRtoR[ir];
	move.l	a4,a0
	add.l	#$CDD0,a0
	fmove.s	0(a0,d4.l*4),fp3
;                  g = ctx->Pixel.MapGtoG[ig];
	move.l	a4,a0
	add.l	#$D1D0,a0
	fmove.s	0(a0,d3.l*4),fp2
;                  b = ctx->Pixel.MapBtoB[ib];
	move.l	a4,a0
	add.l	#$D5D0,a0
	fmove.s	0(a0,d1.l*4),fp1
;                  a = ctx->Pixel.MapAtoA[ia];
	move.l	a4,a0
	add.l	#$D9D0,a0
	fmove.s	0(a0,d0.l*4),fp0
L618
;               red   = (GLint) (r * 255.0F);
	fmul.s	#$.437F0000,fp3
	fmove.l	fp3,d0
;               green = (GLint) (g * 255.0F);
	fmul.s	#$.437F0000,fp2
	fmove.l	fp2,d1
	move.b	d1,d5
;               blue  = (GLint) (b * 255.0F);
	fmul.s	#$.437F0000,fp1
	fmove.l	fp1,d1
	move.b	d1,d4
;               alpha = (GLint) (a * 255.0F);
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d1
	move.b	d1,d3
L619
;            switch (texImage->Format)
	move.l	(a2),d1
	cmp.l	#$1908,d1
	beq	L626
	bgt.b	L697
	cmp.l	#$1906,d1
	beq.b	L621
	bgt.b	L698
	cmp.l	#$1900,d1
	beq.b	L620
	bra	L627
L698
	bgt.b	L625
L697
	cmp.l	#$190A,d1
	beq.b	L623
	bgt.b	L699
	blt.b	L622
L699
	cmp.l	#$8049,d1
	beq.b	L624
	bra	L627
;               
L620
;                  texImage->Data[pixel] = red;
	move.l	$34(a2),a0
	move.b	d0,0(a0,d2.l)
;                  
	bra	L628
L621
;                  texImage->Data[pixel] = alpha;
	move.l	$34(a2),a0
	move.b	d3,0(a0,d2.l)
;                  
	bra	L628
L622
;                  texImage->Data[pixel] = red;
	move.l	$34(a2),a0
	move.b	d0,0(a0,d2.l)
;                  
	bra	L628
L623
;                  texImage->Data[pixel*2+0] = red;
	move.l	d2,d1
	moveq	#1,d6
	asl.l	d6,d1
	move.l	$34(a2),a0
	move.b	d0,0(a0,d1.l)
;                  texImage->Data[pixel*2+1] = alph
	move.l	$34(a2),a0
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	lea	1(a0),a0
	move.b	d3,0(a0,d0.l)
;                  
	bra	L628
L624
;                  texImage->Data[pixel] = red;
	move.l	$34(a2),a0
	move.b	d0,0(a0,d2.l)
;                  
	bra	L628
L625
;                  texImage->Data[pixel*3+0] = red;
	move.l	d2,d1
	muls.l	#3,d1
	move.l	$34(a2),a0
	move.b	d0,0(a0,d1.l)
;                  texImage->Data[pixel*3+1] = gree
	move.l	$34(a2),a0
	move.l	d2,d0
	muls.l	#3,d0
	lea	1(a0),a0
	move.b	d5,0(a0,d0.l)
;                  texImage->Data[pixel*3+2] = blue;
	move.l	$34(a2),a0
	move.l	d2,d0
	muls.l	#3,d0
	lea	2(a0),a0
	move.b	d4,0(a0,d0.l)
;                  
	bra.b	L628
L626
;                  texImage->Data[pixel*4+0] = red;
	move.l	d2,d1
	moveq	#2,d6
	asl.l	d6,d1
	move.l	$34(a2),a0
	move.b	d0,0(a0,d1.l)
;                  texImage->Data[pixel*4+1] = gree
	move.l	$34(a2),a0
	move.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	lea	1(a0),a0
	move.b	d5,0(a0,d0.l)
;                  texImage->Data[pixel*4+2] = blue;
	move.l	$34(a2),a0
	move.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	lea	2(a0),a0
	move.b	d4,0(a0,d0.l)
;                  texImage->Data[pixel*4+3] = alph
	move.l	$34(a2),a0
	move.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	lea	3(a0),a0
	move.b	d3,0(a0,d0.l)
;                  
	bra.b	L628
L627
;                  gl_problem(ctx,"Bad format (3) i
	move.l	#L520,-(a7)
	move.l	a4,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L628
	addq.l	#1,d2
L629
	cmp.l	-$C(a5),d2
	blt	L574
L630
;                  return 
;         
	bra	L691
L631
;         for (pixel=0;
	moveq	#0,d2
	bra	L688
L632
;            switch (texImage->Format)
	move.l	(a2),d0
	sub.l	#$1900,d0
	cmp.l	#$A,d0
	bhi	L648
	move.l	L700(pc,d0.l*4),a0
	jmp	(a0)
L700
	dc.l	L633
	dc.l	L648
	dc.l	L648
	dc.l	L642
	dc.l	L643
	dc.l	L644
	dc.l	L645
	dc.l	L640
	dc.l	L641
	dc.l	L646
	dc.l	L647
;               
L633
;                  if (decode_internal_format(inter
	move.l	$10(a5),-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
	cmp.l	#$1900,d0
	bne.b	L635
L634
;                     GLint index = (GLint) ((GL
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	fmove.s	0(a0,d2.l*4),fp0
	fmove.l	fp0,d0
;                     red = index;
	fmove.l	d0,fp0
	bra	L639
L635
;                     GLint shift = ctx->Pixel.I
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$2E(a0),d1
;                     GLint offset = ctx->Pixel.
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$32(a0),-$68(a5)
;                     GLint rMask = ctx->Pixel.M
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$48(a0),d0
	subq.l	#1,d0
	move.l	d0,d6
;                     GLint gMask = ctx->Pixel.M
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$4C(a0),d5
	subq.l	#1,d5
;                     GLint bMask = ctx->Pixel.M
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$50(a0),d4
	subq.l	#1,d4
;                     GLint aMask = ctx->Pixel.M
	move.l	a4,a0
	add.l	#$B168,a0
	move.l	$54(a0),d3
	subq.l	#1,d3
;                     GLint index = (GLint) ((GL
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	fmove.s	0(a0,d2.l*4),fp0
	fmove.l	fp0,d0
;                     if (shift>=0) 
	tst.l	d1
	bmi.b	L637
L636
;                        index = (index << sh
	asl.l	d1,d0
	add.l	-$68(a5),d0
	bra.b	L638
L637
;                        index = (index >> -s
	neg.l	d1
	asr.l	d1,d0
	add.l	-$68(a5),d0
L638
;                     red   = ctx->Pixel.MapItoR
	move.l	a4,a0
	add.l	#$B9D0,a0
	move.l	d0,d1
	and.l	d6,d1
	fmove.s	0(a0,d1.l*4),fp0
;                     green = ctx->Pixel.MapItoG
	move.l	a4,a0
	add.l	#$BDD0,a0
	move.l	d0,d1
	and.l	d5,d1
	fmove.s	0(a0,d1.l*4),fp4
;                     blue  = ctx->Pixel.MapItoB
	move.l	a4,a0
	add.l	#$C1D0,a0
	move.l	d0,d1
	and.l	d4,d1
	fmove.s	0(a0,d1.l*4),fp3
;                     alpha = ctx->Pixel.MapItoA
	move.l	a4,a0
	add.l	#$C5D0,a0
	and.l	d3,d0
	fmove.s	0(a0,d0.l*4),fp2
L639
;                  
	bra	L649
L640
;                  red   = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	d2,d0
	muls.l	#3,d0
	move.l	$18(a1),a0
	fmove.s	0(a0,d0.l*4),fp0
;                  green = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d0
	muls.l	#3,d0
	lea	4(a0),a0
	fmove.s	0(a0,d0.l*4),fp4
;                  blue  = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d0
	muls.l	#3,d0
	lea	$8(a0),a0
	fmove.s	0(a0,d0.l*4),fp3
;                  alpha = 1.0;
	fmove.s	#$.3F800000,fp2
;                  
	bra	L649
L641
;                  red   = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	move.l	$18(a1),a0
	fmove.s	0(a0,d0.l*4),fp0
;                  green = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	lea	4(a0),a0
	fmove.s	0(a0,d0.l*4),fp4
;                  blue  = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	lea	$8(a0),a0
	fmove.s	0(a0,d0.l*4),fp3
;                  alpha = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	lea	$C(a0),a0
	fmove.s	0(a0,d0.l*4),fp2
;                  
	bra	L649
L642
;                  red   = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	fmove.s	0(a0,d2.l*4),fp0
;                  green = 0.0;
	fmove.s	#$.00000000,fp4
;                  blue  = 0.0;
	fmove.s	#$.00000000,fp3
;                  alpha = 1.0;
	fmove.s	#$.3F800000,fp2
;                  
	bra	L649
L643
;                  red   = 0.0;
	fmove.s	#$.00000000,fp0
;                  green = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	fmove.s	0(a0,d2.l*4),fp4
;                  blue  = 0.0;
	fmove.s	#$.00000000,fp3
;                  alpha = 1.0;
	fmove.s	#$.3F800000,fp2
;                  
	bra	L649
L644
;                  red   = 0.0;
	fmove.s	#$.00000000,fp0
;                  green = 0.0;
	fmove.s	#$.00000000,fp4
;                  blue  = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	fmove.s	0(a0,d2.l*4),fp3
;                  alpha = 1.0;
	fmove.s	#$.3F800000,fp2
;                  
	bra	L649
L645
;                  red   = 0.0;
	fmove.s	#$.00000000,fp0
;                  green = 0.0;
	fmove.s	#$.00000000,fp4
;                  blue  = 0.0;
	fmove.s	#$.00000000,fp3
;                  alpha = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	fmove.s	0(a0,d2.l*4),fp2
;                  
	bra	L649
L646
;                  red   = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	fmove.s	0(a0,d2.l*4),fp0
;                  green = red;
	fmove.x	fp0,fp4
;                  blue  = red;
	fmove.x	fp0,fp3
;                  alpha = 1.0;
	fmove.s	#$.3F800000,fp2
;                  
	bra.b	L649
L647
;                  red   = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	move.l	$18(a1),a0
	fmove.s	0(a0,d0.l*4),fp0
;                  green = red;
	fmove.x	fp0,fp4
;                  blue  = red;
	fmove.x	fp0,fp3
;                  alpha = ((GLfloat*) image->Data)
	move.l	$C(a5),a1
	move.l	$18(a1),a0
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	lea	4(a0),a0
	fmove.s	0(a0,d0.l*4),fp2
;                  
	bra.b	L649
L648
;                  gl_problem(ctx,"Bad format (4) i
	move.l	#L521,-(a7)
	move.l	a4,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L649
;                  return 
;            if (image->Format!=GL_COLOR_INDEX) 
	move.l	$C(a5),a0
	move.l	$10(a0),d0
	cmp.l	#$1900,d0
	beq	L678
L650
;               if (scaleOrBias) 
	tst.b	d7
	beq	L676
L651
;                  red   = red   * ctx->Pixel.RedSc
	move.l	a4,a0
	add.l	#$B168,a0
	fmul.s	$8(a0),fp0
	move.l	a4,a0
	add.l	#$B168,a0
	fadd.s	4(a0),fp0
;                  green = green * ctx->Pixel.Green
	move.l	a4,a0
	add.l	#$B168,a0
	fmul.s	$10(a0),fp4
	move.l	a4,a0
	add.l	#$B168,a0
	fadd.s	$C(a0),fp4
;                  blue  = blue  * ctx->Pixel.BlueS
	move.l	a4,a0
	add.l	#$B168,a0
	fmul.s	$18(a0),fp3
	move.l	a4,a0
	add.l	#$B168,a0
	fadd.s	$14(a0),fp3
;                  alpha = alpha * ctx->Pixel.Alpha
	move.l	a4,a0
	add.l	#$B168,a0
	fmul.s	$20(a0),fp2
	move.l	a4,a0
	add.l	#$B168,a0
	fadd.s	$1C(a0),fp2
;                  red   = CLAMP( red,    0.0F, 1.0
	fcmp.s	#$.00000000,fp0
	fboge.b	L653
L652
	fmove.s	#$.00000000,fp0
	bra.b	L657
L653
	fcmp.s	#$.3F800000,fp0
	fbole.b	L655
L654
	fmove.s	#$.3F800000,fp0
L655
L656
L657
;                  green = CLAMP( green,  0.0F, 1.0
	fcmp.s	#$.00000000,fp4
	fboge.b	L659
L658
	fmove.s	#$.00000000,fp4
	bra.b	L663
L659
	fcmp.s	#$.3F800000,fp4
	fbole.b	L661
L660
	fmove.s	#$.3F800000,fp4
L661
L662
L663
;                  blue  = CLAMP( blue,   0.0F, 1.0
	fcmp.s	#$.00000000,fp3
	fboge.b	L665
L664
	fmove.s	#$.00000000,fp3
	bra.b	L669
L665
	fcmp.s	#$.3F800000,fp3
	fbole.b	L667
L666
	fmove.s	#$.3F800000,fp3
L667
L668
L669
;                  alpha = CLAMP( alpha,  0.0F, 1.0
	fcmp.s	#$.00000000,fp2
	fboge.b	L671
L670
	fmove.s	#$.00000000,fp2
	bra.b	L675
L671
	fcmp.s	#$.3F800000,fp2
	fbole.b	L673
L672
	fmove.s	#$.3F800000,fp2
L673
L674
L675
L676
;               if (ctx->Pixel.MapColorFlag) 
	move.l	a4,a0
	add.l	#$B168,a0
	tst.b	$36(a0)
	beq	L678
L677
;                  GLint ir = (GLint) (red  *ctx->P
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.l	$58(a0),fp1
	fmul.x	fp1,fp0
	fmove.l	fp0,d4
;                  GLint ig = (GLint) (green*ctx->P
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.l	$5C(a0),fp0
	fmul.x	fp0,fp4
	fmove.l	fp4,d3
;                  GLint ib = (GLint) (blue *ctx->P
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.l	$60(a0),fp0
	fmul.x	fp0,fp3
	fmove.l	fp3,d1
;                  GLint ia = (GLint) (alpha*ctx->P
	move.l	a4,a0
	add.l	#$B168,a0
	fmove.l	$64(a0),fp0
	fmul.x	fp0,fp2
	fmove.l	fp2,d0
;                  red   = ctx->Pixel.MapRtoR[ir];
	move.l	a4,a0
	add.l	#$CDD0,a0
	fmove.s	0(a0,d4.l*4),fp0
;                  green = ctx->Pixel.MapGtoG[ig];
	move.l	a4,a0
	add.l	#$D1D0,a0
	fmove.s	0(a0,d3.l*4),fp4
;                  blue  = ctx->Pixel.MapBtoB[ib];
	move.l	a4,a0
	add.l	#$D5D0,a0
	fmove.s	0(a0,d1.l*4),fp3
;                  alpha = ctx->Pixel.MapAtoA[ia];
	move.l	a4,a0
	add.l	#$D9D0,a0
	fmove.s	0(a0,d0.l*4),fp2
L678
;            switch (texImage->Format)
	move.l	(a2),d0
	cmp.l	#$1908,d0
	beq	L685
	bgt.b	L701
	cmp.l	#$1906,d0
	beq.b	L680
	bgt.b	L702
	cmp.l	#$1900,d0
	beq.b	L679
	bra	L686
L702
	bgt	L684
L701
	cmp.l	#$190A,d0
	beq.b	L682
	bgt.b	L703
	blt.b	L681
L703
	cmp.l	#$8049,d0
	beq	L683
	bra	L686
;               
L679
;                  texImage->Data[pixel] = (GLint) 
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.l	$34(a2),a0
	move.b	d0,0(a0,d2.l)
;                  
	bra	L687
L680
;                  texImage->Data[pixel] = (GLint) 
	fmove.x	fp2,fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.l	$34(a2),a0
	move.b	d0,0(a0,d2.l)
;                  
	bra	L687
L681
;                  texImage->Data[pixel] = (GLint) 
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.l	$34(a2),a0
	move.b	d0,0(a0,d2.l)
;                  
	bra	L687
L682
;                  texImage->Data[pixel*2+0] = (GLi
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	d2,d0
	moveq	#1,d3
	asl.l	d3,d0
	move.l	$34(a2),a0
	move.b	d1,0(a0,d0.l)
;                  texImage->Data[pixel*2+1] = (GLi
	fmove.x	fp2,fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	$34(a2),a0
	move.l	d2,d0
	moveq	#1,d3
	asl.l	d3,d0
	lea	1(a0),a0
	move.b	d1,0(a0,d0.l)
;                  
	bra	L687
L683
;                  texImage->Data[pixel] = (GLint) 
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.l	$34(a2),a0
	move.b	d0,0(a0,d2.l)
;                  
	bra	L687
L684
;                  texImage->Data[pixel*3+0] = (GLi
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	d2,d0
	muls.l	#3,d0
	move.l	$34(a2),a0
	move.b	d1,0(a0,d0.l)
;                  texImage->Data[pixel*3+1] = (GLi
	fmove.x	fp4,fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	$34(a2),a0
	move.l	d2,d0
	muls.l	#3,d0
	lea	1(a0),a0
	move.b	d1,0(a0,d0.l)
;                  texImage->Data[pixel*3+2] = (GLi
	fmove.x	fp3,fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	$34(a2),a0
	move.l	d2,d0
	muls.l	#3,d0
	lea	2(a0),a0
	move.b	d1,0(a0,d0.l)
;                  
	bra	L687
L685
;                  texImage->Data[pixel*4+0] = (GLi
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	d2,d0
	moveq	#2,d3
	asl.l	d3,d0
	move.l	$34(a2),a0
	move.b	d1,0(a0,d0.l)
;                  texImage->Data[pixel*4+1] = (GLi
	fmove.x	fp4,fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	$34(a2),a0
	move.l	d2,d0
	moveq	#2,d3
	asl.l	d3,d0
	lea	1(a0),a0
	move.b	d1,0(a0,d0.l)
;                  texImage->Data[pixel*4+2] = (GLi
	fmove.x	fp3,fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	$34(a2),a0
	move.l	d2,d0
	moveq	#2,d3
	asl.l	d3,d0
	lea	2(a0),a0
	move.b	d1,0(a0,d0.l)
;                  texImage->Data[pixel*4+3] = (GLi
	fmove.x	fp2,fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
	move.l	$34(a2),a0
	move.l	d2,d0
	moveq	#2,d3
	asl.l	d3,d0
	lea	3(a0),a0
	move.b	d1,0(a0,d0.l)
;                  
	bra.b	L687
L686
;                  gl_problem(ctx,"Bad format (5) i
	move.l	#L522,-(a7)
	move.l	a4,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L687
	addq.l	#1,d2
L688
	cmp.l	-$C(a5),d2
	blt	L632
L689
;                  return 
;         
	bra.b	L691
L690
;         gl_problem(ctx, "Bad image type in image_to_textur
	move.l	#L523,-(a7)
	move.l	a4,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L691
;         return 
	move.l	a2,d0
	fmovem.x (a7)+,fp2/fp3/fp4
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L519
	dc.b	'Bad format (2) in image_to_texture',0
L520
	dc.b	'Bad format (3) in image_to_texture',0
L521
	dc.b	'Bad format (4) in image_to_texture',0
L522
	dc.b	'Bad format (5) in image_to_texture',0
L518
	dc.b	'Bad format in image_to_texture',0
L523
	dc.b	'Bad image type in image_to_texture',0

	SECTION "_make_null_texture:0",CODE


;static struct gl_texture_image *
_make_null_texture
L737	EQU	-$126
	link	a5,#L737
	movem.l	d2-d7/a2/a3,-(a7)
	movem.l	$18(a5),d4/d6
	move.l	$10(a5),d5
	move.l	$C(a5),d7
L712
;   (void) ctx;
;   components = components_in_intformat(internalFormat);
	move.l	d7,-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
	move.l	d0,d3
;   numPixels = width * height * depth;
	move.l	d5,d2
	muls.l	$14(a5),d2
	muls.l	d4,d2
;   texImage = gl_alloc_texture_image();
	jsr	_gl_alloc_texture_image
	move.l	d0,a2
;   if (!texImage)
	cmp.w	#0,a2
	bne.b	L714
L713
	moveq	#0,d0
	movem.l	(a7)+,d2-d7/a2/a3
	unlk	a5
	rts
L714
;   texImage->Format = (GLenum) decode_internal_format(internalFor
	move.l	d7,-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
	move.l	d0,(a2)
;   texImage->IntFormat = internalFormat;
	move.l	d7,4(a2)
;   texImage->Border = border;
	move.l	d6,$8(a2)
;   texImage->Width = width;
	move.l	d5,$C(a2)
;   texImage->Height = height;
	move.l	$14(a5),$10(a2)
;   texImage->Depth = depth;
	move.l	d4,$14(a2)
;   texImage->WidthLog2 = logbase2(width - 2*border);
	move.l	d6,d0
	moveq	#1,d1
	asl.l	d1,d0
	move.l	d5,d1
	sub.l	d0,d1
	move.l	d1,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	move.l	d0,$24(a2)
;   if (height==1)  /* 1-D texture */
	move.l	$14(a5),d0
	cmp.l	#1,d0
	bne.b	L716
L715
;      texImage->HeightLog2 = 0;
	clr.l	$28(a2)
	bra.b	L717
L716
;      texImage->HeightLog2 = logbase2(height - 2*border);
	move.l	d6,d0
	moveq	#1,d1
	asl.l	d1,d0
	move.l	$14(a5),d1
	sub.l	d0,d1
	move.l	d1,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	move.l	d0,$28(a2)
L717
;   if (depth==1)   /* 2-D texture */
	cmp.l	#1,d4
	bne.b	L719
L718
;      texImage->DepthLog2 = 0;
	clr.l	$2C(a2)
	bra.b	L720
L719
;      texImage->DepthLog2 = logbase2(depth - 2*border);
	move.l	d6,d0
	moveq	#1,d1
	asl.l	d1,d0
	sub.l	d0,d4
	move.l	d4,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	move.l	d0,$2C(a2)
L720
;   texImage->Width2 = 1 << texImage->WidthLog2;
	moveq	#1,d0
	move.l	$24(a2),d1
	asl.l	d1,d0
	move.l	d0,$18(a2)
;   texImage->Height2 = 1 << texImage->HeightLog2;
	moveq	#1,d0
	move.l	$28(a2),d1
	asl.l	d1,d0
	move.l	d0,$1C(a2)
;   texImage->Depth2 = 1 << texImage->DepthLog2;
	moveq	#1,d0
	move.l	$2C(a2),d1
	asl.l	d1,d0
	move.l	d0,$20(a2)
;   texImage->MaxLog2 = MAX2( texImage->WidthLog2, texImage->Heigh
	move.l	$24(a2),d1
	cmp.l	$28(a2),d1
	bls.b	L722
L721
	move.l	$24(a2),d0
	bra.b	L723
L722
	move.l	$28(a2),d0
L723
	move.l	d0,$30(a2)
;   texImage->Data = (GLubyte *) malloc( numPixels * components );
	muls.l	d3,d2
	move.l	d2,-(a7)
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,$34(a2)
;   if (texImage->Data) 
	tst.l	$34(a2)
	beq	L736
L724
;      char message[8][32] = {
	lea	-$10C(a5),a0
	move.l	#L704,a3
	move.l	a0,a1
	moveq	#7,d0
L738
	move.l	(a3)+,(a1)+
	dbra	d0,L738
	add.w	#$20,a0
	move.l	#L705,a3
	move.l	a0,a1
	moveq	#7,d0
L739
	move.l	(a3)+,(a1)+
	dbra	d0,L739
	add.w	#$20,a0
	move.l	#L706,a3
	move.l	a0,a1
	moveq	#7,d0
L740
	move.l	(a3)+,(a1)+
	dbra	d0,L740
	add.w	#$20,a0
	move.l	#L707,a3
	move.l	a0,a1
	moveq	#7,d0
L741
	move.l	(a3)+,(a1)+
	dbra	d0,L741
	add.w	#$20,a0
	move.l	#L708,a3
	move.l	a0,a1
	moveq	#7,d0
L742
	move.l	(a3)+,(a1)+
	dbra	d0,L742
	add.w	#$20,a0
	move.l	#L709,a3
	move.l	a0,a1
	moveq	#7,d0
L743
	move.l	(a3)+,(a1)+
	dbra	d0,L743
	add.w	#$20,a0
	move.l	#L710,a3
	move.l	a0,a1
	moveq	#7,d0
L744
	move.l	(a3)+,(a1)+
	dbra	d0,L744
	move.l	#L711,a1
	add.w	#$20,a0
	moveq	#7,d0
L745
	move.l	(a1)+,(a0)+
	dbra	d0,L745
;      GLubyte *imgPtr = texImage->Data;
	move.l	$34(a2),a0
;      for (i=0;
	moveq	#0,d7
	bra.b	L735
L725
;         GLint srcRow = 7 - i % 8;
	move.l	d7,d0
	divsl.l	#$8,d1:d0
	moveq	#7,d4
	sub.l	d1,d4
;         for (j=0;
	moveq	#0,d2
	bra.b	L733
L726
;            GLint srcCol = j % 32;
	move.l	d2,d0
	divsl.l	#$20,d1:d0
	move.l	d1,d0
;            GLubyte texel = (message[srcRow][srcCol]=='X
	lea	-$10C(a5),a1
	move.l	d4,d1
	asl.l	#5,d1
	lea	0(a1,d1.l),a1
	move.b	0(a1,d0.l),d0
	cmp.b	#$58,d0
	bne.b	L728
L727
	move.l	#$FF,d0
	bra.b	L729
L728
	moveq	#$46,d0
L729
	move.b	d0,d1
;            for (k=0;
	moveq	#0,d0
	bra.b	L731
L730
;               *imgPtr++ = texel;
	move.b	d1,(a0)+
	addq.l	#1,d0
L731
	cmp.l	d3,d0
	blt.b	L730
L732
	addq.l	#1,d2
L733
	cmp.l	d5,d2
	blt.b	L726
L734
	move.l	d7,d0
	addq.l	#1,d0
	move.l	d0,d7
L735
	move.l	d7,d0
	cmp.l	$14(a5),d0
	blt.b	L725
L736
	move.l	a2,d0
	movem.l	(a7)+,d2-d7/a2/a3
	unlk	a5
	rts

L711
	dc.b	'                               ',0
L708
	dc.b	'   X   X  X          X  X   X  ',0
L709
	dc.b	'   X   X  X      X   X  X   X  ',0
L707
	dc.b	'   X   X  XXXX    XXX   XXXXX  ',0
L704
	dc.b	'   X   X  XXXXX   XXX     X    ',0
L710
	dc.b	'   X   X  XXXXX   XXX   X   X  ',0
L706
	dc.b	'   X X X  X      X      X   X  ',0
L705
	dc.b	'   XX XX  X      X   X   X X   ',0

	SECTION "_texture_1d_error_check:0",CODE


;static GLboolean texture_1d_error_check( GLcontext *ctx, GLenum targ
_texture_1d_error_check
	movem.l	d2-d6/a2,-(a7)
	movem.l	$24(a7),d0/d1/d6
	movem.l	$34(a7),d2/d3
	move.l	$20(a7),d4
	move.l	$30(a7),d5
	move.l	$1C(a7),a2
L754
;   if (target!=GL_TEXTURE_1D && target!=GL_PROXY_TEXTURE_1D) 
	cmp.l	#$DE0,d4
	beq.b	L757
L755
	cmp.l	#$8063,d4
	beq.b	L757
L756
;      gl_error( ctx, GL_INVALID_ENUM, "glTexImage1D" );
	move.l	#L746,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d6/a2
	rts
L757
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d0
	bmi.b	L759
L758
	cmp.l	#$B,d0
	blt.b	L760
L759
;      gl_error( ctx, GL_INVALID_VALUE, "glTexImage1D(level)" );
	move.l	#L747,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d6/a2
	rts
L760
;   iformat = decode_internal_format( internalFormat );
	move.l	d1,-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
;   if (iformat<0) 
	tst.l	d0
	bpl.b	L762
L761
;      gl_error( ctx, GL_INVALID_VALUE, "glTexImage1D(internalF
	move.l	#L748,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d6/a2
	rts
L762
;   if (border!=0 && border!=1) 
	tst.l	d3
	beq.b	L767
L763
	cmp.l	#1,d3
	beq.b	L767
L764
;      if (target!=GL_PROXY_TEXTURE_1D) 
	cmp.l	#$8063,d4
	beq.b	L766
L765
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage1D(bor
	move.l	#L749,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L766
	moveq	#1,d0
	movem.l	(a7)+,d2-d6/a2
	rts
L767
;   if (width<2*border || width>2+MAX_TEXTURE_SIZE) 
	move.l	d3,d0
	moveq	#1,d1
	asl.l	d1,d0
	cmp.l	d0,d2
	blt.b	L769
L768
	cmp.l	#$402,d2
	ble.b	L772
L769
;      if (target!=GL_PROXY_TEXTURE_1D) 
	cmp.l	#$8063,d4
	beq.b	L771
L770
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage1D(wid
	move.l	#L750,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L771
	moveq	#1,d0
	movem.l	(a7)+,d2-d6/a2
	rts
L772
;   if (logbase2( width-2*border )<0) 
	move.l	d3,d0
	moveq	#1,d3
	asl.l	d3,d0
	sub.l	d0,d2
	move.l	d2,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	tst.l	d0
	bpl.b	L774
L773
;      gl_error( ctx, GL_INVALID_VALUE,
	move.l	#L751,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d6/a2
	rts
L774
;   switch (format)
	move.l	d6,d0
	cmp.l	#$1907,d0
	beq.b	L775
	bgt.b	L781
	cmp.l	#$1904,d0
	beq.b	L775
	bgt.b	L782
	cmp.l	#$1900,d0
	beq.b	L775
	cmp.l	#$1903,d0
	beq.b	L775
	bra.b	L776
L782
	cmp.l	#$1905,d0
	beq.b	L775
	cmp.l	#$1906,d0
	beq.b	L775
	bra.b	L776
L781
	cmp.l	#$190A,d0
	beq.b	L775
	bgt.b	L783
	cmp.l	#$1908,d0
	beq.b	L775
	cmp.l	#$1909,d0
	beq.b	L775
	bra.b	L776
L783
	cmp.l	#$8000,d0
	beq.b	L775
	bra.b	L776
;      
L775
;         
	bra.b	L777
L776
;         gl_error( ctx, GL_INVALID_ENUM, "glTexImage1D(form
	move.l	#L752,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d6/a2
	rts
L777
;         return 
;   switch (type)
	sub.l	#$1400,d5
	cmp.l	#6,d5
	bhi.b	L779
	move.l	L784(pc,d5.l*4),a0
	jmp	(a0)
L784
	dc.l	L778
	dc.l	L778
	dc.l	L778
	dc.l	L778
	dc.l	L778
	dc.l	L778
	dc.l	L778
;      
L778
;         
	bra.b	L780
L779
;         gl_error( ctx, GL_INVALID_ENUM, "glTexImage1D(type)
	move.l	#L753,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d6/a2
	rts
L780
;         return 
	moveq	#0,d0
	movem.l	(a7)+,d2-d6/a2
	rts

L746
	dc.b	'glTexImage1D',0
L749
	dc.b	'glTexImage1D(border)',0
L752
	dc.b	'glTexImage1D(format)',0
L748
	dc.b	'glTexImage1D(internalFormat)',0
L747
	dc.b	'glTexImage1D(level)',0
L753
	dc.b	'glTexImage1D(type)',0
L751
	dc.b	'glTexImage1D(width != 2^k + 2*border)',0
L750
	dc.b	'glTexImage1D(width)',0

	SECTION "_texture_2d_error_check:0",CODE


;static GLboolean texture_2d_error_check( GLcontext *ctx, GLenum targ
_texture_2d_error_check
	movem.l	d2-d7/a2,-(a7)
	movem.l	$28(a7),d0/d1/d7
	move.l	$40(a7),d2
	move.l	$3C(a7),d3
	move.l	$38(a7),d4
	move.l	$24(a7),d5
	move.l	$34(a7),d6
	move.l	$20(a7),a2
L795
;   if (target!=GL_TEXTURE_2D && target!=GL_PROXY_TEXTURE_2D) 
	cmp.l	#$DE1,d5
	beq.b	L798
L796
	cmp.l	#$8064,d5
	beq.b	L798
L797
;      gl_error( ctx, GL_INVALID_ENUM, "glTexImage2D(target)" );
	move.l	#L785,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L798
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d0
	bmi.b	L800
L799
	cmp.l	#$B,d0
	blt.b	L801
L800
;      gl_error( ctx, GL_INVALID_VALUE, "glTexImage2D(level)" );
	move.l	#L786,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L801
;   iformat = decode_internal_format( internalFormat );
	move.l	d1,-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
;   if (iformat<0) 
	tst.l	d0
	bpl.b	L803
L802
;      gl_error( ctx, GL_INVALID_VALUE, "glTexImage2D(internalF
	move.l	#L787,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L803
;   if (border!=0 && border!=1) 
	tst.l	d2
	beq.b	L808
L804
	cmp.l	#1,d2
	beq.b	L808
L805
;      if (target!=GL_PROXY_TEXTURE_2D) 
	cmp.l	#$8064,d5
	beq.b	L807
L806
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage2D(bor
	move.l	#L788,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L807
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L808
;   if (width<2*border || width>2+MAX_TEXTURE_SIZE) 
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	cmp.l	d0,d4
	blt.b	L810
L809
	cmp.l	#$402,d4
	ble.b	L813
L810
;      if (target!=GL_PROXY_TEXTURE_2D) 
	cmp.l	#$8064,d5
	beq.b	L812
L811
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage2D(wid
	move.l	#L789,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L812
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L813
;   if (height<2*border || height>2+MAX_TEXTURE_SIZE) 
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	cmp.l	d0,d3
	blt.b	L815
L814
	cmp.l	#$402,d3
	ble.b	L818
L815
;      if (target!=GL_PROXY_TEXTURE_2D) 
	cmp.l	#$8064,d5
	beq.b	L817
L816
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage2D(hei
	move.l	#L790,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L817
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L818
;   if (logbase2( width-2*border )<0) 
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	sub.l	d0,d4
	move.l	d4,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	tst.l	d0
	bpl.b	L820
L819
;      gl_error( ctx,GL_INVALID_VALUE,
	move.l	#L791,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L820
;   if (logbase2( height-2*border )<0) 
	move.l	d2,d0
	moveq	#1,d2
	asl.l	d2,d0
	sub.l	d0,d3
	move.l	d3,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	tst.l	d0
	bpl.b	L822
L821
;      gl_error( ctx,GL_INVALID_VALUE,
	move.l	#L792,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L822
;   switch (format)
	move.l	d7,d0
	cmp.l	#$1907,d0
	beq.b	L823
	bgt.b	L829
	cmp.l	#$1904,d0
	beq.b	L823
	bgt.b	L830
	cmp.l	#$1900,d0
	beq.b	L823
	cmp.l	#$1903,d0
	beq.b	L823
	bra.b	L824
L830
	cmp.l	#$1905,d0
	beq.b	L823
	cmp.l	#$1906,d0
	beq.b	L823
	bra.b	L824
L829
	cmp.l	#$190A,d0
	beq.b	L823
	bgt.b	L831
	cmp.l	#$1908,d0
	beq.b	L823
	cmp.l	#$1909,d0
	beq.b	L823
	bra.b	L824
L831
	cmp.l	#$8000,d0
	beq.b	L823
	bra.b	L824
;      
L823
;         
	bra.b	L825
L824
;         gl_error( ctx, GL_INVALID_ENUM, "glTexImage2D(form
	move.l	#L793,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L825
;         return 
;   switch (type)
	move.l	d6,d0
	sub.l	#$1400,d0
	cmp.l	#6,d0
	bhi.b	L827
	move.l	L832(pc,d0.l*4),a0
	jmp	(a0)
L832
	dc.l	L826
	dc.l	L826
	dc.l	L826
	dc.l	L826
	dc.l	L826
	dc.l	L826
	dc.l	L826
;      
L826
;         
	bra.b	L828
L827
;         gl_error( ctx, GL_INVALID_ENUM, "glTexImage2D(type)
	move.l	#L794,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	rts
L828
;         return 
	moveq	#0,d0
	movem.l	(a7)+,d2-d7/a2
	rts

L788
	dc.b	'glTexImage2D(border)',0
L793
	dc.b	'glTexImage2D(format)',0
L792
	dc.b	'glTexImage2D(height != 2^k + 2*border)',0
L790
	dc.b	'glTexImage2D(height)',0
L787
	dc.b	'glTexImage2D(internalFormat)',0
L786
	dc.b	'glTexImage2D(level)',0
L785
	dc.b	'glTexImage2D(target)',0
L794
	dc.b	'glTexImage2D(type)',0
L791
	dc.b	'glTexImage2D(width != 2^k + 2*border)',0
L789
	dc.b	'glTexImage2D(width)',0

	SECTION "_texture_3d_error_check:0",CODE


;static GLboolean texture_3d_error_check( GLcontext *ctx, GLenum targ
_texture_3d_error_check
L886	EQU	-4
	link	a5,#L886
	movem.l	d2-d7/a2,-(a7)
	movem.l	$10(a5),d0/d1
	move.l	$2C(a5),d2
	move.l	$C(a5),d3
	move.l	$28(a5),d4
	move.l	$24(a5),d5
	move.l	$20(a5),d6
	move.l	$1C(a5),d7
	move.l	$8(a5),a2
L845
;   if (target!=GL_TEXTURE_3D_EXT && target!=GL_PROXY_TEXTURE_3D_E
	cmp.l	#$806F,d3
	beq.b	L848
L846
	cmp.l	#$8070,d3
	beq.b	L848
L847
;      gl_error( ctx, GL_INVALID_ENUM, "glTexImage3DEXT(target)
	move.l	#L833,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L848
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d0
	bmi.b	L850
L849
	cmp.l	#$B,d0
	blt.b	L851
L850
;      gl_error( ctx, GL_INVALID_VALUE, "glTexImage3DEXT(level)
	move.l	#L834,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L851
;   iformat = decode_internal_format( internalFormat );
	move.l	d1,-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
;   if (iformat<0) 
	tst.l	d0
	bpl.b	L853
L852
;      gl_error( ctx, GL_INVALID_VALUE, "glTexImage3DEXT(intern
	move.l	#L835,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L853
;   if (border!=0 && border!=1) 
	tst.l	d2
	beq.b	L858
L854
	cmp.l	#1,d2
	beq.b	L858
L855
;      if (target!=GL_PROXY_TEXTURE_3D_EXT) 
	cmp.l	#$8070,d3
	beq.b	L857
L856
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage3DEXT(
	move.l	#L836,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L857
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L858
;   if (width<2*border || width>2+MAX_TEXTURE_SIZE) 
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	move.l	d6,d1
	cmp.l	d0,d1
	blt.b	L860
L859
	move.l	d6,d0
	cmp.l	#$402,d0
	ble.b	L863
L860
;      if (target!=GL_PROXY_TEXTURE_3D_EXT) 
	cmp.l	#$8070,d3
	beq.b	L862
L861
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage3DEXT(
	move.l	#L837,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L862
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L863
;   if (height<2*border || height>2+MAX_TEXTURE_SIZE) 
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	cmp.l	d0,d5
	blt.b	L865
L864
	cmp.l	#$402,d5
	ble.b	L868
L865
;      if (target!=GL_PROXY_TEXTURE_3D_EXT) 
	cmp.l	#$8070,d3
	beq.b	L867
L866
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage3DEXT(
	move.l	#L838,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L867
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L868
;   if (depth<2*border || depth>2+MAX_TEXTURE_SIZE) 
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	cmp.l	d0,d4
	blt.b	L870
L869
	cmp.l	#$402,d4
	ble.b	L873
L870
;      if (target!=GL_PROXY_TEXTURE_3D_EXT) 
	cmp.l	#$8070,d3
	beq.b	L872
L871
;         gl_error( ctx, GL_INVALID_VALUE, "glTexImage3DEXT(
	move.l	#L839,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L872
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L873
;   if (logbase2( width-2*border )<0) 
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	move.l	d6,d1
	sub.l	d0,d1
	move.l	d1,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	tst.l	d0
	bpl.b	L875
L874
;      gl_error( ctx,GL_INVALID_VALUE,
	move.l	#L840,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L875
;   if (logbase2( height-2*border )<0) 
	move.l	d2,d0
	moveq	#1,d1
	asl.l	d1,d0
	sub.l	d0,d5
	move.l	d5,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	tst.l	d0
	bpl.b	L877
L876
;      gl_error( ctx,GL_INVALID_VALUE,
	move.l	#L841,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L877
;   if (logbase2( depth-2*border )<0) 
	move.l	d2,d0
	moveq	#1,d2
	asl.l	d2,d0
	sub.l	d0,d4
	move.l	d4,-(a7)
	jsr	_logbase2
	addq.w	#4,a7
	tst.l	d0
	bpl.b	L879
L878
;      gl_error( ctx,GL_INVALID_VALUE,
	move.l	#L842,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L879
;   switch (format)
	move.l	$18(a5),d0
	cmp.l	#$1907,d0
	beq.b	L880
	bgt.b	L887
	cmp.l	#$1904,d0
	beq.b	L880
	bgt.b	L888
	cmp.l	#$1900,d0
	beq.b	L880
	cmp.l	#$1903,d0
	beq.b	L880
	bra.b	L881
L888
	cmp.l	#$1905,d0
	beq.b	L880
	cmp.l	#$1906,d0
	beq.b	L880
	bra.b	L881
L887
	cmp.l	#$190A,d0
	beq.b	L880
	bgt.b	L889
	cmp.l	#$1908,d0
	beq.b	L880
	cmp.l	#$1909,d0
	beq.b	L880
	bra.b	L881
L889
	cmp.l	#$8000,d0
	beq.b	L880
	bra.b	L881
;      
L880
;         
	bra.b	L882
L881
;         gl_error( ctx, GL_INVALID_ENUM, "glTexImage3DEXT(f
	move.l	#L843,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L882
;         return 
;   switch (type)
	move.l	d7,d0
	sub.l	#$1400,d0
	cmp.l	#6,d0
	bhi.b	L884
	move.l	L890(pc,d0.l*4),a0
	jmp	(a0)
L890
	dc.l	L883
	dc.l	L883
	dc.l	L883
	dc.l	L883
	dc.l	L883
	dc.l	L883
	dc.l	L883
;      
L883
;         
	bra.b	L885
L884
;         gl_error( ctx, GL_INVALID_ENUM, "glTexImage3DEXT(t
	move.l	#L844,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#1,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L885
;         return 
	moveq	#0,d0
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

L836
	dc.b	'glTexImage3DEXT(border)',0
L842
	dc.b	'glTexImage3DEXT(depth  != 2^k + 2*border))',0
L839
	dc.b	'glTexImage3DEXT(depth)',0
L843
	dc.b	'glTexImage3DEXT(format)',0
L841
	dc.b	'glTexImage3DEXT(height != 2^k + 2*border))',0
L838
	dc.b	'glTexImage3DEXT(height)',0
L835
	dc.b	'glTexImage3DEXT(internalFormat)',0
L834
	dc.b	'glTexImage3DEXT(level)',0
L833
	dc.b	'glTexImage3DEXT(target)',0
L844
	dc.b	'glTexImage3DEXT(type)',0
L840
	dc.b	'glTexImage3DEXT(width != 2^k + 2*border))',0
L837
	dc.b	'glTexImage3DEXT(width)',0

	SECTION "_gl_TexImage1D:0",CODE


;void gl_TexImage1D( GLcontext *ctx,
	XDEF	_gl_TexImage1D
_gl_TexImage1D
L922	EQU	-$8
	link	a5,#L922
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$C(a5),d0/d2/d3/d5
	move.l	$20(a5),d1
	move.l	$1C(a5),d4
	move.l	$8(a5),a2
	move.l	$28(a5),a3
L893
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d6
	muls.l	#$BC,d6
	add.l	a1,d6
	move.l	d6,a4
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d6
	cmp.l	#$1A00,d6
	beq.b	L895
L894
;      gl_error( ctx, GL_INVALID_OPERATION, "glTexImage1D" );
	move.l	#L891,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L895
;   if (target==GL_TEXTURE_1D) 
	cmp.l	#$DE0,d0
	bne	L909
L896
;      if (texture_1d_error_check( ctx, target, level, internal
	move.l	d4,-(a7)
	move.l	d5,-(a7)
	move.l	$24(a5),-(a7)
	move.l	d1,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_texture_1d_error_check
	add.w	#$20,a7
	tst.b	d0
	beq.b	L898
L897
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L898
;      if (texSet->Current1D->Image[level]) 
	move.l	a4,a1
	move.l	$A8(a1),a0
	lea	$50(a0),a0
	tst.l	0(a0,d2.l*4)
	beq.b	L900
L899
;         gl_free_texture_image( texSet->Current1D->Image[le
	move.l	a4,a1
	move.l	$A8(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),-(a7)
	jsr	_gl_free_texture_image
	addq.w	#4,a7
L900
;      if (image) 
	cmp.w	#0,a3
	beq.b	L902
L901
;         teximage = image_to_texture(ctx, image, internalfo
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	a3,-(a7)
	move.l	a2,-(a7)
	jsr	_image_to_texture
	add.w	#$10,a7
	move.l	d0,-$8(a5)
	bra.b	L903
L902
;         teximage = make_null_texture(ctx, (GLenum) interna
	move.l	d4,-(a7)
	pea	1.w
	pea	1.w
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	jsr	_make_null_texture
	add.w	#$18,a7
	move.l	d0,-$8(a5)
L903
;      texSet->Current1D->Image[level] = teximage;
	move.l	a4,a1
	move.l	$A8(a1),a0
	lea	$50(a0),a0
	move.l	-$8(a5),0(a0,d2.l*4)
;      texSet->Current1D->Dirty = GL_TRUE;
	move.l	a4,a1
	move.l	$A8(a1),a0
	move.b	#1,$488(a0)
;      ctx->Texture.AnyDirty = GL_TRUE;
	move.l	a2,a0
	add.l	#$E03E,a0
	move.b	#1,(a0)
;      ctx->NewState |= NEW_TEXTURING;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#4,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
;      if (image && image->RefCount==0) 
	cmp.w	#0,a3
	beq.b	L906
L904
	move.l	a3,a0
	tst.l	$1E(a0)
	bne.b	L906
L905
;         gl_free_image(image);
	move.l	a3,-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L906
;      if (ctx->Driver.TexImage) 
	tst.l	$9C8(a2)
	beq.b	L908
L907
;                                      width, height, 1, border);
	move.l	-$8(a5),-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	a4,a1
	move.l	$A8(a1),-(a7)
	pea	$DE0.w
	move.l	a2,-(a7)
	move.l	$9C8(a2),a0
	jsr	(a0)
	add.w	#$18,a7
L908
	bra	L921
L909
;   else if (target==GL_PROXY_TEXTURE_1D) 
	cmp.l	#$8063,d0
	bne	L920
L910
;      if (texture_1d_error_check( ctx, target, level, internal
	move.l	d4,-(a7)
	move.l	d5,-(a7)
	move.l	$24(a5),-(a7)
	move.l	d1,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_texture_1d_error_check
	add.w	#$20,a7
	tst.b	d0
	beq.b	L915
L911
;         if (level>=0 && level<MAX_TEXTURE_LEVELS) 
	tst.l	d2
	bmi.b	L914
L912
	cmp.l	#$B,d2
	bge.b	L914
L913
;                 
	pea	$3C.w
	clr.l	-(a7)
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$186(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),-(a7)
	jsr	_q_memset
	add.w	#$C,a7
L914
	bra	L916
L915
;         ctx->Texture.Proxy1D->Image[level]->Format = (GLen
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$186(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d3,(a0)
;         ctx->Texture.Proxy1D->Image[level]->IntFormat = (G
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$186(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d3,4(a0)
;         ctx->Texture.Proxy1D->Image[level]->Border = borde
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$186(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d4,$8(a0)
;         ctx->Texture.Proxy1D->Image[level]->Width = width;
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$186(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d5,$C(a0)
;         ctx->Texture.Proxy1D->Image[level]->Height = 1;
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$186(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	#1,$10(a0)
L916
;      if (image && image->RefCount==0) 
	cmp.w	#0,a3
	beq.b	L919
L917
	move.l	a3,a0
	tst.l	$1E(a0)
	bne.b	L919
L918
;         gl_free_image(image);
	move.l	a3,-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L919
	bra.b	L921
L920
;      gl_error( ctx, GL_INVALID_ENUM, "glTexImage1D(target)" );
	move.l	#L892,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L921
;      return;
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L891
	dc.b	'glTexImage1D',0
L892
	dc.b	'glTexImage1D(target)',0

	SECTION "_gl_TexImage2D:0",CODE


;void gl_TexImage2D( GLcontext *ctx,
	XDEF	_gl_TexImage2D
_gl_TexImage2D
L954	EQU	-$8
	link	a5,#L954
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$C(a5),d0/d2/d3/d5
	move.l	$24(a5),d1
	move.l	$20(a5),d4
	move.l	$8(a5),a2
	move.l	$2C(a5),a3
L925
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d6
	muls.l	#$BC,d6
	add.l	a1,d6
	move.l	d6,a4
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d6
	cmp.l	#$1A00,d6
	beq.b	L927
L926
;      gl_error( ctx, GL_INVALID_OPERATION, "glTexImage2D" );
	move.l	#L923,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L927
;   if (target==GL_TEXTURE_2D) 
	cmp.l	#$DE1,d0
	bne	L941
L928
;      if (texture_2d_error_check( ctx, target, level, internal
	move.l	d4,-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d5,-(a7)
	move.l	$28(a5),-(a7)
	move.l	d1,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_texture_2d_error_check
	add.w	#$24,a7
	tst.b	d0
	beq.b	L930
L929
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L930
;      if (texSet->Current2D->Image[level]) 
	move.l	a4,a1
	move.l	$AC(a1),a0
	lea	$50(a0),a0
	tst.l	0(a0,d2.l*4)
	beq.b	L932
L931
;         gl_free_texture_image( texSet->Current2D->Image[le
	move.l	a4,a1
	move.l	$AC(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),-(a7)
	jsr	_gl_free_texture_image
	addq.w	#4,a7
L932
;      if (image) 
	cmp.w	#0,a3
	beq.b	L934
L933
;         teximage = image_to_texture(ctx, image, internalfo
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	a3,-(a7)
	move.l	a2,-(a7)
	jsr	_image_to_texture
	add.w	#$10,a7
	move.l	d0,-$8(a5)
	bra.b	L935
L934
;         teximage = make_null_texture(ctx, (GLenum) interna
	move.l	d4,-(a7)
	pea	1.w
	move.l	$1C(a5),-(a7)
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	jsr	_make_null_texture
	add.w	#$18,a7
	move.l	d0,-$8(a5)
L935
;      texSet->Current2D->Image[level] = teximage;
	move.l	a4,a1
	move.l	$AC(a1),a0
	lea	$50(a0),a0
	move.l	-$8(a5),0(a0,d2.l*4)
;      texSet->Current2D->Dirty = GL_TRUE;
	move.l	a4,a1
	move.l	$AC(a1),a0
	move.b	#1,$488(a0)
;      ctx->Texture.AnyDirty = GL_TRUE;
	move.l	a2,a0
	add.l	#$E03E,a0
	move.b	#1,(a0)
;      ctx->NewState |= NEW_TEXTURING;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#4,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
;      if (image && image->RefCount==0) 
	cmp.w	#0,a3
	beq.b	L938
L936
	move.l	a3,a0
	tst.l	$1E(a0)
	bne.b	L938
L937
;         gl_free_image(image);
	move.l	a3,-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L938
;      if (ctx->Driver.TexImage) 
	tst.l	$9C8(a2)
	beq.b	L940
L939
;         (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_2D,
	move.l	-$8(a5),-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	a4,a1
	move.l	$AC(a1),-(a7)
	pea	$DE1.w
	move.l	a2,-(a7)
	move.l	$9C8(a2),a0
	jsr	(a0)
	add.w	#$18,a7
L940
	bra	L953
L941
;   else if (target==GL_PROXY_TEXTURE_2D) 
	cmp.l	#$8064,d0
	bne	L952
L942
;      if (texture_2d_error_check( ctx, target, level, internal
	move.l	d4,-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d5,-(a7)
	move.l	$28(a5),-(a7)
	move.l	d1,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_texture_2d_error_check
	add.w	#$24,a7
	tst.b	d0
	beq.b	L947
L943
;         if (level>=0 && level<MAX_TEXTURE_LEVELS) 
	tst.l	d2
	bmi.b	L946
L944
	cmp.l	#$B,d2
	bge.b	L946
L945
;                 
	pea	$3C.w
	clr.l	-(a7)
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18A(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),-(a7)
	jsr	_q_memset
	add.w	#$C,a7
L946
	bra.b	L948
L947
;         ctx->Texture.Proxy2D->Image[level]->Format = (GLen
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18A(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d3,(a0)
;         ctx->Texture.Proxy2D->Image[level]->IntFormat = (G
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18A(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d3,4(a0)
;         ctx->Texture.Proxy2D->Image[level]->Border = borde
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18A(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d4,$8(a0)
;         ctx->Texture.Proxy2D->Image[level]->Width = width;
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18A(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d5,$C(a0)
;         ctx->Texture.Proxy2D->Image[level]->Height = heigh
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18A(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	$1C(a5),$10(a0)
L948
;      if (image && image->RefCount==0) 
	cmp.w	#0,a3
	beq.b	L951
L949
	move.l	a3,a0
	tst.l	$1E(a0)
	bne.b	L951
L950
;         gl_free_image(image);
	move.l	a3,-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L951
	bra.b	L953
L952
;      gl_error( ctx, GL_INVALID_ENUM, "glTexImage2D(target)" );
	move.l	#L924,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L953
;      return;
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L923
	dc.b	'glTexImage2D',0
L924
	dc.b	'glTexImage2D(target)',0

	SECTION "_gl_TexImage3DEXT:0",CODE


;void gl_TexImage3DEXT( GLcontext *ctx,
	XDEF	_gl_TexImage3DEXT
_gl_TexImage3DEXT
L986	EQU	-$8
	link	a5,#L986
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$C(a5),d0/d2/d3/d5
	move.l	$28(a5),d1
	move.l	$24(a5),d4
	move.l	$8(a5),a2
	move.l	$30(a5),a3
L957
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d6
	muls.l	#$BC,d6
	add.l	a1,d6
	move.l	d6,a4
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d6
	cmp.l	#$1A00,d6
	beq.b	L959
L958
;      gl_error( ctx, GL_INVALID_OPERATION, "glTexImage3DEXT" );
	move.l	#L955,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L959
;   if (target==GL_TEXTURE_3D_EXT) 
	cmp.l	#$806F,d0
	bne	L973
L960
;   }
	move.l	d4,-(a7)
	move.l	$20(a5),-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d5,-(a7)
	move.l	$2C(a5),-(a7)
	move.l	d1,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_texture_3d_error_check
	add.w	#$28,a7
	tst.b	d0
	beq.b	L962
L961
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L962
;      if (texSet->Current3D->Image[level]) 
	move.l	a4,a1
	move.l	$B0(a1),a0
	lea	$50(a0),a0
	tst.l	0(a0,d2.l*4)
	beq.b	L964
L963
;         gl_free_texture_image( texSet->Current3D->Image[le
	move.l	a4,a1
	move.l	$B0(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),-(a7)
	jsr	_gl_free_texture_image
	addq.w	#4,a7
L964
;      if (image) 
	cmp.w	#0,a3
	beq.b	L966
L965
;         teximage = image_to_texture(ctx, image, internalfo
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	a3,-(a7)
	move.l	a2,-(a7)
	jsr	_image_to_texture
	add.w	#$10,a7
	move.l	d0,-$8(a5)
	bra.b	L967
L966
;         teximage = make_null_texture(ctx, (GLenum) interna
	move.l	d4,-(a7)
	move.l	$20(a5),-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	jsr	_make_null_texture
	add.w	#$18,a7
	move.l	d0,-$8(a5)
L967
;      texSet->Current3D->Image[level] = teximage;
	move.l	a4,a1
	move.l	$B0(a1),a0
	lea	$50(a0),a0
	move.l	-$8(a5),0(a0,d2.l*4)
;      texSet->Current3D->Dirty = GL_TRUE;
	move.l	a4,a1
	move.l	$B0(a1),a0
	move.b	#1,$488(a0)
;      ctx->Texture.AnyDirty = GL_TRUE;
	move.l	a2,a0
	add.l	#$E03E,a0
	move.b	#1,(a0)
;      ctx->NewState |= NEW_TEXTURING;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#4,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
;      if (image && image->RefCount==0) 
	cmp.w	#0,a3
	beq.b	L970
L968
	move.l	a3,a0
	tst.l	$1E(a0)
	bne.b	L970
L969
;         gl_free_image(image);
	move.l	a3,-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L970
;      if (ctx->Driver.TexImage) 
	tst.l	$9C8(a2)
	beq.b	L972
L971
;         (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_3D_EXT,
	move.l	-$8(a5),-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	a4,a1
	move.l	$B0(a1),-(a7)
	move.l	#$806F,-(a7)
	move.l	a2,-(a7)
	move.l	$9C8(a2),a0
	jsr	(a0)
	add.w	#$18,a7
L972
	bra	L985
L973
;   else if (target==GL_PROXY_TEXTURE_3D_EXT) 
	cmp.l	#$8070,d0
	bne	L984
L974
;      if (texture_3d_error_check( ctx, target, level, internal
	move.l	d4,-(a7)
	move.l	$20(a5),-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d5,-(a7)
	move.l	$2C(a5),-(a7)
	move.l	d1,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_texture_3d_error_check
	add.w	#$28,a7
	tst.b	d0
	beq.b	L979
L975
;         if (level>=0 && level<MAX_TEXTURE_LEVELS) 
	tst.l	d2
	bmi.b	L978
L976
	cmp.l	#$B,d2
	bge.b	L978
L977
;                 
	pea	$3C.w
	clr.l	-(a7)
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18E(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),-(a7)
	jsr	_q_memset
	add.w	#$C,a7
L978
	bra	L980
L979
;         ctx->Texture.Proxy3D->Image[level]->Format = (GLen
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18E(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d3,(a0)
;         ctx->Texture.Proxy3D->Image[level]->IntFormat = (G
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18E(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d3,4(a0)
;         ctx->Texture.Proxy3D->Image[level]->Border = borde
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18E(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d4,$8(a0)
;         ctx->Texture.Proxy3D->Image[level]->Width = width;
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18E(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	d5,$C(a0)
;         ctx->Texture.Proxy3D->Image[level]->Height = heigh
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18E(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	$1C(a5),$10(a0)
;         ctx->Texture.Proxy3D->Image[level]->Depth  = depth;
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$18E(a0),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	$20(a5),$14(a0)
L980
;      if (image && image->RefCount==0) 
	cmp.w	#0,a3
	beq.b	L983
L981
	move.l	a3,a0
	tst.l	$1E(a0)
	bne.b	L983
L982
;         gl_free_image(image);
	move.l	a3,-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L983
	bra.b	L985
L984
;      gl_error( ctx, GL_INVALID_ENUM, "glTexImage3DEXT(target)
	move.l	#L956,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L985
;      return;
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L955
	dc.b	'glTexImage3DEXT',0
L956
	dc.b	'glTexImage3DEXT(target)',0

	SECTION "_gl_GetTexImage:0",CODE


;void gl_GetTexImage( GLcontext *ctx, GLenum target, GLint level, GLe
	XDEF	_gl_GetTexImage
_gl_GetTexImage
L1044	EQU	-$1920
	link	a5,#L1044
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$10(a5),d2/d4/d5
	move.l	$C(a5),d3
	move.l	$8(a5),a2
L995
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L997
L996
;      gl_error( ctx, GL_INVALID_OPERATION, "glGetTexImage" );
	move.l	#L987,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L997
;   if (level < 0 || level >= MAX_TEXTURE_LEVELS) 
	tst.l	d2
	bmi.b	L999
L998
	cmp.l	#$B,d2
	blt.b	L1000
L999
;      gl_error( ctx, GL_INVALID_VALUE, "glGetTexImage(level)" )
	move.l	#L988,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1000
;   if (gl_sizeof_type(type) <= 0) 
	move.l	d5,-(a7)
	jsr	_gl_sizeof_type
	addq.w	#4,a7
	cmp.l	#0,d0
	bgt.b	L1002
L1001
;      gl_error( ctx, GL_INVALID_ENUM, "glGetTexImage(type)" );
	move.l	#L989,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1002
;   if (gl_components_in_format(format) <= 0) 
	move.l	d4,-(a7)
	jsr	_gl_components_in_format
	addq.w	#4,a7
	cmp.l	#0,d0
	bgt.b	L1004
L1003
;      gl_error( ctx, GL_INVALID_ENUM, "glGetTexImage(format)" )
	move.l	#L990,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1004
;   if (!pixels)
	tst.l	$1C(a5)
	bne.b	L1006
L1005
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1006
;   switch (target)
	cmp.l	#$DE1,d3
	beq.b	L1008
	bgt.b	L1045
	cmp.l	#$DE0,d3
	beq.b	L1007
	bra	L1010
L1045
	cmp.l	#$806F,d3
	beq.b	L1009
	bra.b	L1010
;      
L1007
;         texObj = ctx->Texture.Set[ctx->Texture.CurrentSet]
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	lea	0(a1,d0.l),a0
	move.l	$A8(a0),a0
;         
	bra.b	L1011
L1008
;         texObj = ctx->Texture.Set[ctx->Texture.CurrentSet]
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	lea	0(a1,d0.l),a0
	move.l	$AC(a0),a0
;         
	bra.b	L1011
L1009
;         texObj = ctx->Texture.Set[ctx->Texture.CurrentSet]
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	lea	0(a1,d0.l),a0
	move.l	$B0(a0),a0
;         
	bra.b	L1011
L1010
;         gl_error( ctx, GL_INVALID_ENUM, "glGetTexImage(tar
	move.l	#L991,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1011
;         return;
;   if (texObj->Image[level] && texObj->Image[level]->Data) 
	lea	$50(a0),a1
	tst.l	0(a1,d2.l*4)
	beq	L1043
L1012
	lea	$50(a0),a1
	move.l	0(a1,d2.l*4),a1
	tst.l	$34(a1)
	beq	L1043
L1013
;      const struct gl_texture_image *texImage = texObj->Image[
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a3
;      GLint width = texImage->Width;
	move.l	a3,a0
	move.l	$C(a0),d2
;      GLint height = texImage->Height;
	move.l	a3,a0
	move.l	$10(a0),d7
;      for (row = 0;
	moveq	#0,d3
	bra	L1042
L1014
;         GLvoid *dest = gl_pixel_addr_in_image( &ctx->Unpac
	clr.l	-(a7)
	move.l	d3,-(a7)
	clr.l	-(a7)
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	move.l	d7,-(a7)
	move.l	d2,-(a7)
	move.l	$1C(a5),-(a7)
	move.l	a2,a0
	add.l	#$E65E,a0
	pea	(a0)
	jsr	_gl_pixel_addr_in_image
	add.w	#$24,a7
	move.l	d0,a4
;         if (texImage->Format == GL_RGBA) 
	move.l	a3,a0
	move.l	(a0),d0
	cmp.l	#$1908,d0
	bne.b	L1016
L1015
;            const GLubyte *src = texImage->Data + row * 
	move.l	a3,a1
	move.l	d3,d0
	muls.l	d2,d0
	moveq	#2,d1
	asl.l	d1,d0
	move.l	$34(a1),a0
;            gl_pack_rgba_span( ctx, width, (void *) src,
	move.l	a4,-(a7)
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	pea	0(a0,d0.l)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_pack_rgba_span
	add.w	#$18,a7
	bra	L1041
L1016
;            switch (texImage->Format)
	move.l	a3,a0
	move.l	(a0),d0
	cmp.l	#$1908,d0
	beq	L1037
	bgt.b	L1046
	cmp.l	#$1906,d0
	beq.b	L1017
	bgt.b	L1047
	cmp.l	#$1900,d0
	beq	L1038
	bra	L1039
L1047
	bgt	L1033
L1046
	cmp.l	#$190A,d0
	beq	L1025
	bgt.b	L1048
	blt.b	L1021
L1048
	cmp.l	#$8049,d0
	beq	L1029
	bra	L1039
;               
L1017
;                  src = texImage->Data + row * wid
	move.l	a3,a1
	move.l	d3,d0
	muls.l	d2,d0
	move.l	$34(a1),a0
	add.l	d0,a0
;                  for (i = 0;
	moveq	#0,d0
	bra.b	L1019
L1018
;                     rgba[i][RCOMP] = 255;
	lea	-$1918(a5),a1
	move.b	#$FF,0(a1,d0.l*4)
;                     rgba[i][GCOMP] = 255;
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	#$FF,1(a1)
;                     rgba[i][BCOMP] = 255;
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	#$FF,2(a1)
;                     rgba[i][ACOMP] = src[i];
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	0(a0,d0.l),3(a1)
	addq.l	#1,d0
L1019
	cmp.l	d2,d0
	blt.b	L1018
L1020
;                  
	bra	L1040
L1021
;                  src = texImage->Data + row * wid
	move.l	a3,a1
	move.l	d3,d0
	muls.l	d2,d0
	move.l	$34(a1),a0
	add.l	d0,a0
;                  for (i = 0;
	moveq	#0,d0
	bra.b	L1023
L1022
;                     rgba[i][RCOMP] = src[i];
	lea	-$1918(a5),a1
	move.b	0(a0,d0.l),0(a1,d0.l*4)
;                     rgba[i][GCOMP] = src[i];
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	0(a0,d0.l),1(a1)
;                     rgba[i][BCOMP] = src[i];
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	0(a0,d0.l),2(a1)
;                     rgba[i][ACOMP] = 255;
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	#$FF,3(a1)
	addq.l	#1,d0
L1023
	cmp.l	d2,d0
	blt.b	L1022
L1024
;                  
	bra	L1040
L1025
;                  src = texImage->Data + row * 2 *
	move.l	a3,a1
	move.l	d3,d0
	moveq	#1,d1
	asl.l	d1,d0
	muls.l	d2,d0
	move.l	$34(a1),a0
	add.l	d0,a0
;                  for (i = 0;
	moveq	#0,d0
	bra.b	L1027
L1026
;                     rgba[i][RCOMP] = src[i*2+0
	move.l	d0,d1
	moveq	#1,d6
	asl.l	d6,d1
	lea	-$1918(a5),a1
	move.b	0(a0,d1.l),0(a1,d0.l*4)
;                     rgba[i][GCOMP] = src[i*2+0
	move.l	d0,d1
	moveq	#1,d6
	asl.l	d6,d1
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	0(a0,d1.l),1(a1)
;                     rgba[i][BCOMP] = src[i*2+0
	move.l	d0,d1
	moveq	#1,d6
	asl.l	d6,d1
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	0(a0,d1.l),2(a1)
;                     rgba[i][ACOMP] = src[i*2+1
	move.l	d0,d1
	moveq	#1,d6
	asl.l	d6,d1
	lea	1(a0),a1
	move.b	0(a1,d1.l),d1
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	d1,3(a1)
	addq.l	#1,d0
L1027
	cmp.l	d2,d0
	blt.b	L1026
L1028
;                  
	bra	L1040
L1029
;                  src = texImage->Data + row * wid
	move.l	a3,a1
	move.l	d3,d0
	muls.l	d2,d0
	move.l	$34(a1),a0
	add.l	d0,a0
;                  for (i = 0;
	moveq	#0,d0
	bra.b	L1031
L1030
;                     rgba[i][RCOMP] = src[i];
	lea	-$1918(a5),a1
	move.b	0(a0,d0.l),0(a1,d0.l*4)
;                     rgba[i][GCOMP] = src[i];
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	0(a0,d0.l),1(a1)
;                     rgba[i][BCOMP] = src[i];
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	0(a0,d0.l),2(a1)
;                     rgba[i][ACOMP] = 255;
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	#$FF,3(a1)
	addq.l	#1,d0
L1031
	cmp.l	d2,d0
	blt.b	L1030
L1032
;                  
	bra	L1040
L1033
;                  src = texImage->Data + row * 3 *
	move.l	a3,a1
	move.l	d3,d0
	muls.l	#3,d0
	muls.l	d2,d0
	move.l	$34(a1),a0
	add.l	d0,a0
;                  for (i = 0;
	moveq	#0,d0
	bra.b	L1035
L1034
;                     rgba[i][RCOMP] = src[i*3+0
	move.l	d0,d1
	muls.l	#3,d1
	lea	-$1918(a5),a1
	move.b	0(a0,d1.l),0(a1,d0.l*4)
;                     rgba[i][GCOMP] = src[i*3+1
	move.l	d0,d1
	muls.l	#3,d1
	lea	1(a0),a1
	move.b	0(a1,d1.l),d1
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	d1,1(a1)
;                     rgba[i][BCOMP] = src[i*3+2
	move.l	d0,d1
	muls.l	#3,d1
	lea	2(a0),a1
	move.b	0(a1,d1.l),d1
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	d1,2(a1)
;                     rgba[i][ACOMP] = 255;
	lea	-$1918(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	#$FF,3(a1)
	addq.l	#1,d0
L1035
	cmp.l	d2,d0
	blt.b	L1034
L1036
;                  
	bra.b	L1040
L1037
;                  gl_problem( ctx, "error 1 in gl_
	move.l	#L992,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
;                  
	bra.b	L1040
L1038
;                  gl_problem( ctx, "GL_COLOR_INDEX
	move.l	#L993,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
;                  
	bra.b	L1040
L1039
;                  gl_problem( ctx, "bad format in 
	move.l	#L994,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
L1040
;            gl_pack_rgba_span( ctx, width, (CONST GLubyt
	move.l	a4,-(a7)
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	pea	-$1918(a5)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_pack_rgba_span
	add.w	#$18,a7
L1041
	addq.l	#1,d3
L1042
	cmp.l	d7,d3
	blt	L1014
L1043
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L993
	dc.b	'GL_COLOR_INDEX not implemented in gl_GetTexImage',0
L994
	dc.b	'bad format in gl_GetTexImage',0
L992
	dc.b	'error 1 in gl_GetTexImage',0
L987
	dc.b	'glGetTexImage',0
L990
	dc.b	'glGetTexImage(format)',0
L988
	dc.b	'glGetTexImage(level)',0
L991
	dc.b	'glGetTexImage(target)',0
L989
	dc.b	'glGetTexImage(type)',0

	SECTION "_gl_unpack_texsubimage:0",CODE


;struct gl_image *
	XDEF	_gl_unpack_texsubimage
_gl_unpack_texsubimage
	movem.l	d2-d5/a2/a3,-(a7)
	movem.l	$28(a7),d2/d3/a3
	movem.l	$20(a7),d4/d5
	move.l	$1C(a7),a2
L1049
;   if (type==GL_BITMAP && format!=GL_COLOR_INDEX) 
	cmp.l	#$1A00,d3
	bne.b	L1052
L1050
	cmp.l	#$1900,d2
	beq.b	L1052
L1051
	moveq	#0,d0
	movem.l	(a7)+,d2-d5/a2/a3
	rts
L1052
;   if (format==GL_STENCIL_INDEX || format==GL_DEPTH_COMPONENT)
	cmp.l	#$1901,d2
	beq.b	L1054
L1053
	cmp.l	#$1902,d2
	bne.b	L1055
L1054
	moveq	#0,d0
	movem.l	(a7)+,d2-d5/a2/a3
	rts
L1055
;   if (gl_sizeof_type(type)<=0) 
	move.l	d3,-(a7)
	jsr	_gl_sizeof_type
	addq.w	#4,a7
	cmp.l	#0,d0
	bgt.b	L1057
L1056
	moveq	#0,d0
	movem.l	(a7)+,d2-d5/a2/a3
	rts
L1057
	move.l	a3,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	pea	1.w
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_unpack_image3D
	add.w	#$1C,a7
	movem.l	(a7)+,d2-d5/a2/a3
	rts

	SECTION "_gl_unpack_texsubimage3D:0",CODE


;struct gl_image *
	XDEF	_gl_unpack_texsubimage3D
_gl_unpack_texsubimage3D
	movem.l	d2-d6/a2/a3,-(a7)
	movem.l	$30(a7),d2/d3/a3
	movem.l	$24(a7),d4-d6
	move.l	$20(a7),a2
L1058
;   if (type==GL_BITMAP && format!=GL_COLOR_INDEX) 
	cmp.l	#$1A00,d3
	bne.b	L1061
L1059
	cmp.l	#$1900,d2
	beq.b	L1061
L1060
	moveq	#0,d0
	movem.l	(a7)+,d2-d6/a2/a3
	rts
L1061
;   if (format==GL_STENCIL_INDEX || format==GL_DEPTH_COMPONENT)
	cmp.l	#$1901,d2
	beq.b	L1063
L1062
	cmp.l	#$1902,d2
	bne.b	L1064
L1063
	moveq	#0,d0
	movem.l	(a7)+,d2-d6/a2/a3
	rts
L1064
;   if (gl_sizeof_type(type)<=0) 
	move.l	d3,-(a7)
	jsr	_gl_sizeof_type
	addq.w	#4,a7
	cmp.l	#0,d0
	bgt.b	L1066
L1065
	moveq	#0,d0
	movem.l	(a7)+,d2-d6/a2/a3
	rts
L1066
	move.l	a3,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	d6,-(a7)
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_unpack_image3D
	add.w	#$1C,a7
	movem.l	(a7)+,d2-d6/a2/a3
	rts

	SECTION "_gl_TexSubImage1D:0",CODE


;void gl_TexSubImage1D( GLcontext *ctx,
	XDEF	_gl_TexSubImage1D
_gl_TexSubImage1D
L1111	EQU	-$48
	link	a5,#L1111
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$C(a5),d1/d2/d5
	movem.l	$1C(a5),d3/d7
	move.l	$18(a5),d4
	move.l	$8(a5),a2
L1075
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	add.l	a1,d0
	move.l	d0,-4(a5)
;   if (target!=GL_TEXTURE_1D) 
	cmp.l	#$DE0,d1
	beq.b	L1077
L1076
;      gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(target)
	move.l	#L1067,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1077
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d2
	bmi.b	L1079
L1078
	cmp.l	#$B,d2
	blt.b	L1080
L1079
;      gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(level)"
	move.l	#L1068,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1080
;   destTex = texSet->Current1D->Image[level];
	move.l	-4(a5),a1
	move.l	$A8(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a4
;   if (!destTex) 
	cmp.w	#0,a4
	bne.b	L1082
L1081
;      gl_error( ctx, GL_INVALID_OPERATION, "glTexSubImage1D" );
	move.l	#L1069,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1082
;   if (xoffset < -((GLint)destTex->Border)) 
	move.l	a4,a0
	move.l	$8(a0),d0
	neg.l	d0
	cmp.l	d0,d5
	bge.b	L1084
L1083
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage1D(xoffse
	move.l	#L1070,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1084
;   if (xoffset + width > (GLint) (destTex->Width + destTex->Borde
	move.l	d5,d0
	add.l	d4,d0
	move.l	d0,d6
	move.l	a4,a0
	move.l	$C(a0),d0
	move.l	a4,a0
	add.l	$8(a0),d0
	move.l	d6,d1
	cmp.l	d0,d1
	ble.b	L1086
L1085
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage1D(xoffse
	move.l	#L1071,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1086
;   if (image) 
	tst.l	$24(a5)
	beq	L1098
L1087
;      GLint texcomponents = components_in_intformat(destTex->F
	move.l	a4,a0
	move.l	(a0),-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
	move.l	d0,d3
;      if (image->Type==GL_UNSIGNED_BYTE && texcomponents==imag
	move.l	$24(a5),a0
	move.l	$14(a0),d0
	cmp.l	#$1401,d0
	bne.b	L1090
L1088
	move.l	$24(a5),a0
	cmp.l	$C(a0),d3
	bne.b	L1090
L1089
;         GLubyte *dst = destTex->Data + texcomponents * xof
	move.l	a4,a1
	move.l	d3,d0
	muls.l	d5,d0
	move.l	$34(a1),a0
	lea	0(a0,d0.l),a1
;         GLubyte *src = (GLubyte *) image->Data;
	move.l	$24(a5),a3
;         MEMCPY( ds
	move.l	d4,d0
	muls.l	d3,d0
	move.l	d0,-(a7)
	move.l	$18(a3),-(a7)
	move.l	a1,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
	bra.b	L1091
L1090
;         struct gl_texture_image *subTexImg = image_to_text
	move.l	a4,a0
	move.l	$8(a0),-(a7)
	move.l	a4,a0
	move.l	4(a0),-(a7)
	move.l	$24(a5),-(a7)
	move.l	a2,-(a7)
	jsr	_image_to_texture
	add.w	#$10,a7
	move.l	d0,-$10(a5)
;         GLubyte *dst = destTex->Data + texcomponents * xof
	move.l	a4,a1
	move.l	d3,d0
	muls.l	d5,d0
	move.l	$34(a1),a0
	lea	0(a0,d0.l),a1
;         GLubyte *src = subTexImg->Data;
	move.l	-$10(a5),a3
;         MEMCPY( ds
	move.l	d4,d0
	muls.l	d3,d0
	move.l	d0,-(a7)
	move.l	$34(a3),-(a7)
	move.l	a1,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;         gl_free_texture_image(subTexImg);
	move.l	-$10(a5),-(a7)
	jsr	_gl_free_texture_image
	addq.w	#4,a7
L1091
;      if (image->RefCount==0) 
	move.l	$24(a5),a0
	tst.l	$1E(a0)
	bne.b	L1093
L1092
;         gl_free_image(image);
	move.l	$24(a5),-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L1093
;      texSet->Current1D->Dirty = GL_TRUE;
	move.l	-4(a5),a1
	move.l	$A8(a1),a0
	move.b	#1,$488(a0)
;      ctx->Texture.AnyDirty = GL_TRUE;
	move.l	a2,a0
	add.l	#$E03E,a0
	move.b	#1,(a0)
;      if (ctx->Driver.TexSubImage) 
	tst.l	$9CC(a2)
	beq.b	L1095
L1094
;        (*ctx->Driver.TexSubImage)( ctx, GL_TEXTURE_1D,
	move.l	a4,-(a7)
	move.l	-4(a5),a1
	move.l	$A8(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	4(a0),-(a7)
	pea	1.w
	move.l	d4,-(a7)
	clr.l	-(a7)
	move.l	d5,-(a7)
	move.l	d2,-(a7)
	move.l	-4(a5),a1
	move.l	$A8(a1),-(a7)
	pea	$DE0.w
	move.l	a2,-(a7)
	move.l	$9CC(a2),a0
	jsr	(a0)
	add.w	#$28,a7
	bra.b	L1097
L1095
;        if (ctx->Driver.TexImage) 
	tst.l	$9C8(a2)
	beq.b	L1097
L1096
;          (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_1D, tex
	move.l	a4,-(a7)
	move.l	-4(a5),a1
	move.l	$A8(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a0
	move.l	4(a0),-(a7)
	move.l	d2,-(a7)
	move.l	-4(a5),a1
	move.l	$A8(a1),-(a7)
	pea	$DE0.w
	move.l	a2,-(a7)
	move.l	$9C8(a2),a0
	jsr	(a0)
	add.w	#$18,a7
L1097
	bra	L1110
L1098
;      if (width<0) 
	tst.l	d4
	bpl.b	L1100
L1099
;         gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage1D(
	move.l	#L1072,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1100
;      if (type==GL_BITMAP && format!=GL_COLOR_INDEX) 
	move.l	d7,d0
	cmp.l	#$1A00,d0
	bne.b	L1103
L1101
	cmp.l	#$1900,d3
	beq.b	L1103
L1102
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(f
	move.l	#L1073,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1103
;      components = components_in_intformat( format );
	move.l	d3,-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
;      if (components<0 || format==GL_STENCIL_INDEX
	tst.l	d0
	bmi.b	L1106
L1104
	cmp.l	#$1901,d3
	beq.b	L1106
L1105
	cmp.l	#$1902,d3
	bne.b	L1107
L1106
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(f
	move.l	#L1073,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1107
;      size = gl_sizeof_type( type );
	move.l	d7,-(a7)
	jsr	_gl_sizeof_type
	addq.w	#4,a7
;      if (size<=0) 
	cmp.l	#0,d0
	bgt.b	L1109
L1108
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(t
	move.l	#L1074,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1109
;      gl_error( ctx, GL_OUT_OF_MEMORY, "glTexSubImage1D" );
	move.l	#L1069,-(a7)
	pea	$505.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L1110
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L1069
	dc.b	'glTexSubImage1D',0
L1073
	dc.b	'glTexSubImage1D(format)',0
L1068
	dc.b	'glTexSubImage1D(level)',0
L1067
	dc.b	'glTexSubImage1D(target)',0
L1074
	dc.b	'glTexSubImage1D(type)',0
L1072
	dc.b	'glTexSubImage1D(width)',0
L1070
	dc.b	'glTexSubImage1D(xoffset)',0
L1071
	dc.b	'glTexSubImage1D(xoffset+width)',0

	SECTION "_gl_TexSubImage2D:0",CODE


;                  + (yoffset * destTex->W
	XDEF	_gl_TexSubImage2D
_gl_TexSubImage2D
L1172	EQU	-$54
	link	a5,#L1172
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$C(a5),d1/d7
	movem.l	$24(a5),d2/d4
	movem.l	$1C(a5),d3/d5
	move.l	$8(a5),a3
L1124
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	a3,a1
	add.l	#$DEC6,a1
	move.l	a3,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	add.l	a1,d0
	move.l	d0,-4(a5)
;   if (target!=GL_TEXTURE_2D) 
	cmp.l	#$DE1,d1
	beq.b	L1126
L1125
;      gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)
	move.l	#L1112,-(a7)
	pea	$500.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1126
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d7
	bmi.b	L1128
L1127
	move.l	d7,d0
	cmp.l	#$B,d0
	blt.b	L1129
L1128
;      gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(level)"
	move.l	#L1113,-(a7)
	pea	$500.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1129
;   destTex = texSet->Current2D->Image[level];
	move.l	-4(a5),a1
	move.l	$AC(a1),a0
	lea	$50(a0),a0
	move.l	d7,d0
	move.l	0(a0,d0.l*4),a2
;   if (!destTex) 
	cmp.w	#0,a2
	bne.b	L1131
L1130
;      gl_error( ctx, GL_INVALID_OPERATION, "glTexSubImage2D" );
	move.l	#L1114,-(a7)
	pea	$502.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1131
;   if (xoffset < -((GLint)destTex->Border)) 
	move.l	$8(a2),d0
	neg.l	d0
	move.l	$14(a5),d1
	cmp.l	d0,d1
	bge.b	L1133
L1132
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage2D(xoffse
	move.l	#L1115,-(a7)
	pea	$501.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1133
;   if (yoffset < -((GLint)destTex->Border)) 
	move.l	$8(a2),d0
	neg.l	d0
	move.l	$18(a5),d1
	cmp.l	d0,d1
	bge.b	L1135
L1134
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage2D(yoffse
	move.l	#L1116,-(a7)
	pea	$501.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1135
;   if (xoffset + width > (GLint) (destTex->Width + destTex->Borde
	move.l	$14(a5),d0
	add.l	d3,d0
	move.l	d0,d6
	move.l	$C(a2),d0
	add.l	$8(a2),d0
	move.l	d6,d1
	cmp.l	d0,d1
	ble.b	L1137
L1136
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage2D(xoffse
	move.l	#L1117,-(a7)
	pea	$501.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1137
;   if (yoffset + height > (GLint) (destTex->Height + destTex->Bor
	move.l	$18(a5),d0
	add.l	d5,d0
	move.l	d0,d6
	move.l	$10(a2),d0
	add.l	$8(a2),d0
	move.l	d6,d1
	cmp.l	d0,d1
	ble.b	L1139
L1138
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage2D(yoffse
	move.l	#L1118,-(a7)
	pea	$501.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1139
;   if (image) 
	tst.l	$2C(a5)
	beq	L1157
L1140
;      GLint texcomponents = components_in_intformat(destTex->F
	move.l	(a2),-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
	move.l	d0,d2
;      if (image->Type==GL_UNSIGNED_BYTE && texcomponents==imag
	move.l	$2C(a5),a0
	move.l	$14(a0),d0
	cmp.l	#$1401,d0
	bne.b	L1146
L1141
	move.l	$2C(a5),a0
	cmp.l	$C(a0),d2
	bne.b	L1146
L1142
;         GLubyte *dst = destTex->Data 
	move.l	$C(a2),d0
	mulu.l	$18(a5),d0
	add.l	$14(a5),d0
	mulu.l	d2,d0
	add.l	$34(a2),d0
	move.l	d0,-$10(a5)
;         GLubyte *src = (GLubyte *) image->Data;
	move.l	$2C(a5),a0
	move.l	$18(a0),a4
;         for (j=0;
	moveq	#0,d4
	bra.b	L1144
L1143
;           MEMCPY
	move.l	d3,d0
	muls.l	d2,d0
	move.l	d0,-(a7)
	move.l	a4,-(a7)
	move.l	-$10(a5),-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;            dst += destTex->Width * texcomponents * size
	move.l	$C(a2),d0
	mulu.l	d2,d0
	add.l	-$10(a5),d0
	move.l	d0,-$10(a5)
;            src += width * texcomponents * sizeof(GLubyt
	move.l	d3,d0
	muls.l	d2,d0
	add.l	a4,d0
	move.l	d0,a4
	addq.l	#1,d4
L1144
	cmp.l	d5,d4
	blt.b	L1143
L1145
	bra	L1150
L1146
;         struct gl_texture_image *subTexImg = image_to_text
	move.l	$8(a2),-(a7)
	move.l	4(a2),-(a7)
	move.l	$2C(a5),-(a7)
	move.l	a3,-(a7)
	jsr	_image_to_texture
	add.w	#$10,a7
	move.l	d0,-$10(a5)
;         GLubyte *dst = destTex->Data
	move.l	$C(a2),d0
	mulu.l	$18(a5),d0
	add.l	$14(a5),d0
	mulu.l	d2,d0
	add.l	$34(a2),d0
	move.l	d0,-$14(a5)
;         GLubyte *src = subTexImg->Data;
	move.l	-$10(a5),a0
	move.l	$34(a0),a4
;         for (j=0;
	moveq	#0,d4
	bra.b	L1148
L1147
;           MEMCPY
	move.l	d3,d0
	muls.l	d2,d0
	move.l	d0,-(a7)
	move.l	a4,-(a7)
	move.l	-$14(a5),-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;            dst += destTex->Width * texcomponents * size
	move.l	$C(a2),d0
	mulu.l	d2,d0
	add.l	-$14(a5),d0
	move.l	d0,-$14(a5)
;            src += width * texcomponents * sizeof(GLubyt
	move.l	d3,d0
	muls.l	d2,d0
	add.l	a4,d0
	move.l	d0,a4
	addq.l	#1,d4
L1148
	cmp.l	d5,d4
	blt.b	L1147
L1149
;         gl_free_texture_image(subTexImg);
	move.l	-$10(a5),-(a7)
	jsr	_gl_free_texture_image
	addq.w	#4,a7
L1150
;      if (image->RefCount==0) 
	move.l	$2C(a5),a0
	tst.l	$1E(a0)
	bne.b	L1152
L1151
;         gl_free_image(image);
	move.l	$2C(a5),-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L1152
;      texSet->Current2D->Dirty = GL_TRUE;
	move.l	-4(a5),a1
	move.l	$AC(a1),a0
	move.b	#1,$488(a0)
;      ctx->Texture.AnyDirty = GL_TRUE;
	move.l	a3,a0
	add.l	#$E03E,a0
	move.b	#1,(a0)
;      if (ctx->Driver.TexSubImage) 
	tst.l	$9CC(a3)
	beq.b	L1154
L1153
;        (*ctx->Driver.TexSubImage)( ctx, GL_TEXTURE_2D, texS
	move.l	a2,-(a7)
	move.l	-4(a5),a1
	move.l	$AC(a1),a0
	lea	$50(a0),a0
	move.l	d7,d0
	move.l	0(a0,d0.l*4),a0
	move.l	4(a0),-(a7)
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	$18(a5),-(a7)
	move.l	$14(a5),-(a7)
	move.l	d7,-(a7)
	move.l	-4(a5),a1
	move.l	$AC(a1),-(a7)
	pea	$DE1.w
	move.l	a3,-(a7)
	move.l	$9CC(a3),a0
	jsr	(a0)
	add.w	#$28,a7
	bra.b	L1156
L1154
;        if (ctx->Driver.TexImage) 
	tst.l	$9C8(a3)
	beq.b	L1156
L1155
;          (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_2D, tex
	move.l	a2,-(a7)
	move.l	-4(a5),a1
	move.l	$AC(a1),a0
	lea	$50(a0),a0
	move.l	d7,d0
	move.l	0(a0,d0.l*4),a0
	move.l	4(a0),-(a7)
	move.l	d7,-(a7)
	move.l	-4(a5),a1
	move.l	$AC(a1),-(a7)
	pea	$DE1.w
	move.l	a3,-(a7)
	move.l	$9C8(a3),a0
	jsr	(a0)
	add.w	#$18,a7
L1156
	bra	L1171
L1157
;      if (width<0) 
	tst.l	d3
	bpl.b	L1159
L1158
;         gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage2D(
	move.l	#L1119,-(a7)
	pea	$501.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1159
;      if (height<0) 
	tst.l	d5
	bpl.b	L1161
L1160
;         gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage2D(
	move.l	#L1120,-(a7)
	pea	$501.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1161
;      if (type==GL_BITMAP && format!=GL_COLOR_INDEX) 
	cmp.l	#$1A00,d4
	bne.b	L1164
L1162
	cmp.l	#$1900,d2
	beq.b	L1164
L1163
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(f
	move.l	#L1121,-(a7)
	pea	$500.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1164
;      components = gl_components_in_format( format );
	move.l	d2,-(a7)
	jsr	_gl_components_in_format
	addq.w	#4,a7
;      if (components<0 || format==GL_STENCIL_INDEX
	tst.l	d0
	bmi.b	L1167
L1165
	cmp.l	#$1901,d2
	beq.b	L1167
L1166
	cmp.l	#$1902,d2
	bne.b	L1168
L1167
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(f
	move.l	#L1122,-(a7)
	pea	$500.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1168
;      size = gl_sizeof_type( type );
	move.l	d4,-(a7)
	jsr	_gl_sizeof_type
	addq.w	#4,a7
;      if (size<=0) 
	cmp.l	#0,d0
	bgt.b	L1170
L1169
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(t
	move.l	#L1123,-(a7)
	pea	$500.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1170
;      gl_error( ctx, GL_OUT_OF_MEMORY, "glTexSubImage2D" );
	move.l	#L1114,-(a7)
	pea	$505.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L1171
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L1121
	dc.b	'glTexSubImage1D(format)',0
L1114
	dc.b	'glTexSubImage2D',0
L1122
	dc.b	'glTexSubImage2D(format)',0
L1120
	dc.b	'glTexSubImage2D(height)',0
L1113
	dc.b	'glTexSubImage2D(level)',0
L1112
	dc.b	'glTexSubImage2D(target)',0
L1123
	dc.b	'glTexSubImage2D(type)',0
L1119
	dc.b	'glTexSubImage2D(width)',0
L1115
	dc.b	'glTexSubImage2D(xoffset)',0
L1117
	dc.b	'glTexSubImage2D(xoffset+width)',0
L1116
	dc.b	'glTexSubImage2D(yoffset)',0
L1118
	dc.b	'glTexSubImage2D(yoffset+height)',0

	SECTION "_gl_TexSubImage3DEXT:0",CODE


;           for (j=0;j<height;j++) {
	XDEF	_gl_TexSubImage3DEXT
_gl_TexSubImage3DEXT
L1245	EQU	-$5C
	link	a5,#L1245
	movem.l	d2-d7/a2-a4,-(a7)
	move.l	$C(a5),d1
	move.l	$2C(a5),d2
	move.l	$20(a5),d3
	move.l	$1C(a5),d4
	move.l	$24(a5),d5
	move.l	$30(a5),d7
L1187
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	$8(a5),a0
	move.l	a0,a1
	add.l	#$DEC6,a1
	move.l	$8(a5),a2
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	add.l	a1,d0
	move.l	d0,-4(a5)
;   if (target!=GL_TEXTURE_3D_EXT) 
	cmp.l	#$806F,d1
	beq.b	L1189
L1188
;      gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage3DEXT(targ
	move.l	#L1173,-(a7)
	pea	$500.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1189
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	$10(a5)
	bmi.b	L1191
L1190
	move.l	$10(a5),d0
	cmp.l	#$B,d0
	blt.b	L1192
L1191
;      gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage3DEXT(leve
	move.l	#L1174,-(a7)
	pea	$500.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1192
;   destTex = texSet->Current3D->Image[level];
	move.l	-4(a5),a1
	move.l	$B0(a1),a0
	lea	$50(a0),a0
	move.l	$10(a5),d0
	move.l	0(a0,d0.l*4),a4
;   if (!destTex) 
	cmp.w	#0,a4
	bne.b	L1194
L1193
;      gl_error( ctx, GL_INVALID_OPERATION, "glTexSubImage3DEXT
	move.l	#L1175,-(a7)
	pea	$502.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1194
;   if (xoffset < -((GLint)destTex->Border)) 
	move.l	a4,a0
	move.l	$8(a0),d0
	neg.l	d0
	move.l	$14(a5),d1
	cmp.l	d0,d1
	bge.b	L1196
L1195
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DEXT(xof
	move.l	#L1176,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1196
;   if (yoffset < -((GLint)destTex->Border)) 
	move.l	a4,a0
	move.l	$8(a0),d0
	neg.l	d0
	move.l	$18(a5),d1
	cmp.l	d0,d1
	bge.b	L1198
L1197
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DEXT(yof
	move.l	#L1177,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1198
;   if (zoffset < -((GLint)destTex->Border)) 
	move.l	a4,a0
	move.l	$8(a0),d0
	neg.l	d0
	cmp.l	d0,d4
	bge.b	L1200
L1199
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DEXT(zof
	move.l	#L1178,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1200
;   if (xoffset + width > (GLint) (destTex->Width+destTex->Border))
	move.l	$14(a5),d0
	add.l	d3,d0
	move.l	d0,d6
	move.l	a4,a0
	move.l	$C(a0),d0
	move.l	a4,a0
	add.l	$8(a0),d0
	move.l	d6,d1
	cmp.l	d0,d1
	ble.b	L1202
L1201
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DEXT(xof
	move.l	#L1179,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1202
;   if (yoffset + height > (GLint) (destTex->Height+destTex->Borde
	move.l	$18(a5),d0
	add.l	d5,d0
	move.l	d0,d6
	move.l	a4,a0
	move.l	$10(a0),d0
	move.l	a4,a0
	add.l	$8(a0),d0
	move.l	d6,d1
	cmp.l	d0,d1
	ble.b	L1204
L1203
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DEXT(yof
	move.l	#L1180,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1204
;   if (zoffset + depth  > (GLint) (destTex->Depth+destTex->Border)
	move.l	d4,d0
	add.l	$28(a5),d0
	move.l	d0,d6
	move.l	a4,a0
	move.l	$14(a0),d0
	move.l	a4,a0
	add.l	$8(a0),d0
	move.l	d6,d1
	cmp.l	d0,d1
	ble.b	L1206
L1205
;      gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DEXT(zof
	move.l	#L1181,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1206
;   if (image) 
	tst.l	$34(a5)
	beq	L1228
L1207
;      GLint texcomponents = components_in_intformat(destTex->F
	move.l	a4,a0
	move.l	(a0),-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
	move.l	d0,d2
;      GLint dstRectArea = destTex->Width * destTex->Height;
	move.l	a4,a0
	move.l	$C(a0),d7
	move.l	a4,a0
	move.l	d7,d0
	mulu.l	$10(a0),d0
	move.l	d0,d7
;      GLint srcRectArea = width * height;
	move.l	d3,d0
	muls.l	d5,d0
	move.l	d0,-$14(a5)
;      if (image->Type==GL_UNSIGNED_BYTE && texcomponents==imag
	move.l	$34(a5),a0
	move.l	$14(a0),d0
	cmp.l	#$1401,d0
	bne	L1216
L1208
	move.l	$34(a5),a0
	cmp.l	$C(a0),d2
	bne	L1216
L1209
;         GLubyte *dst = destTex->Data 
	move.l	a4,a1
	move.l	$34(a1),a0
	muls.l	d7,d4
	move.l	a4,a1
	move.l	$18(a5),d0
	mulu.l	$C(a1),d0
	move.l	d0,$18(a5)
	add.l	$18(a5),d4
	add.l	$14(a5),d4
	mulu.l	d2,d4
	move.l	d4,d0
	add.l	a0,d0
	move.l	d0,a3
;         GLubyte *src = (GLubyte *) image->Data;
	move.l	$34(a5),a0
	move.l	$18(a0),a2
;         for(k=0;
	moveq	#0,d6
	bra.b	L1214
L1210
;           for (j=0;
	moveq	#0,d4
	bra.b	L1212
L1211
;           MEMCPY
	move.l	d3,d0
	muls.l	d2,d0
	move.l	d0,-(a7)
	move.l	a2,-(a7)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;              dst += destTex->Width * texcomponents;
	move.l	a4,a0
	move.l	$C(a0),d0
	mulu.l	d2,d0
	add.l	a3,d0
	move.l	d0,a3
;              src += width * texcomponents;
	move.l	d3,d0
	muls.l	d2,d0
	add.l	d0,a2
	addq.l	#1,d4
L1212
	cmp.l	d5,d4
	blt.b	L1211
L1213
;           dst += dstRectArea * texcomponents * sizeof(GL
	move.l	d7,d0
	muls.l	d2,d0
	add.l	a3,d0
	move.l	d0,a3
;           src += srcRectArea * texcomponents * sizeof(GL
	move.l	-$14(a5),d0
	muls.l	d2,d0
	add.l	d0,a2
	move.l	d6,d0
	addq.l	#1,d0
	move.l	d0,d6
L1214
	move.l	d6,d0
	cmp.l	$28(a5),d0
	blt.b	L1210
L1215
	bra	L1223
L1216
;         struct gl_texture_image *subTexImg = image_to_text
	move.l	a4,a0
	move.l	$8(a0),-(a7)
	move.l	a4,a0
	move.l	4(a0),-(a7)
	move.l	$34(a5),-(a7)
	move.l	$8(a5),-(a7)
	jsr	_image_to_texture
	add.w	#$10,a7
	move.l	d0,-$18(a5)
;         GLubyte *dst = destTex->Data 
	move.l	a4,a1
	move.l	$34(a1),a0
	muls.l	d7,d4
	move.l	a4,a1
	move.l	$18(a5),d0
	mulu.l	$C(a1),d0
	move.l	d0,$18(a5)
	add.l	$18(a5),d4
	add.l	$14(a5),d4
	mulu.l	d2,d4
	move.l	d4,d0
	add.l	a0,d0
	move.l	d0,a3
;         GLubyte *src = subTexImg->Data;
	move.l	-$18(a5),a0
	move.l	$34(a0),a2
;         for(k=0;
	moveq	#0,d6
	bra.b	L1221
L1217
;           for (j=0;
	moveq	#0,d4
	bra.b	L1219
L1218
;           MEMCPY
	move.l	d3,d0
	muls.l	d2,d0
	move.l	d0,-(a7)
	move.l	a2,-(a7)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;              dst += destTex->Width * texcomponents;
	move.l	a4,a0
	move.l	$C(a0),d0
	mulu.l	d2,d0
	add.l	a3,d0
	move.l	d0,a3
;              src += width * texcomponents;
	move.l	d3,d0
	muls.l	d2,d0
	add.l	d0,a2
	addq.l	#1,d4
L1219
	cmp.l	d5,d4
	blt.b	L1218
L1220
;           dst += dstRectArea * texcomponents * sizeof(GL
	move.l	d7,d0
	muls.l	d2,d0
	add.l	a3,d0
	move.l	d0,a3
;           src += srcRectArea * texcomponents * sizeof(GL
	move.l	-$14(a5),d0
	muls.l	d2,d0
	add.l	d0,a2
	move.l	d6,d0
	addq.l	#1,d0
	move.l	d0,d6
L1221
	move.l	d6,d0
	cmp.l	$28(a5),d0
	blt.b	L1217
L1222
;         gl_free_texture_image(subTexImg);
	move.l	-$18(a5),-(a7)
	jsr	_gl_free_texture_image
	addq.w	#4,a7
L1223
;      if (image->RefCount==0) 
	move.l	$34(a5),a0
	tst.l	$1E(a0)
	bne.b	L1225
L1224
;         gl_free_image(image);
	move.l	$34(a5),-(a7)
	jsr	_gl_free_image
	addq.w	#4,a7
L1225
;      texSet->Current3D->Dirty = GL_TRUE;
	move.l	-4(a5),a1
	move.l	$B0(a1),a0
	move.b	#1,$488(a0)
;      ctx->Texture.AnyDirty = GL_TRUE;
	move.l	$8(a5),a0
	add.l	#$E03E,a0
	move.b	#1,(a0)
;      if (ctx->Driver.TexImage) 
	move.l	$8(a5),a1
	tst.l	$9C8(a1)
	beq.b	L1227
L1226
;         (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_3D_EXT, t
	move.l	a4,-(a7)
	move.l	-4(a5),a1
	move.l	$B0(a1),a0
	lea	$50(a0),a0
	move.l	$10(a5),d0
	move.l	0(a0,d0.l*4),a0
	move.l	4(a0),-(a7)
	move.l	$10(a5),-(a7)
	move.l	-4(a5),a1
	move.l	$B0(a1),-(a7)
	move.l	#$806F,-(a7)
	move.l	$8(a5),-(a7)
	move.l	$8(a5),a1
	move.l	$9C8(a1),a0
	jsr	(a0)
	add.w	#$18,a7
L1227
	bra	L1244
L1228
;      if (width<0) 
	tst.l	d3
	bpl.b	L1230
L1229
;         gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DE
	move.l	#L1182,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1230
;      if (height<0) 
	tst.l	d5
	bpl.b	L1232
L1231
;         gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DE
	move.l	#L1183,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1232
;      if (depth<0) 
	tst.l	$28(a5)
	bpl.b	L1234
L1233
;         gl_error( ctx, GL_INVALID_VALUE, "glTexSubImage3DE
	move.l	#L1184,-(a7)
	pea	$501.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1234
;      if (type==GL_BITMAP && format!=GL_COLOR_INDEX) 
	move.l	d7,d0
	cmp.l	#$1A00,d0
	bne.b	L1237
L1235
	cmp.l	#$1900,d2
	beq.b	L1237
L1236
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage3DEX
	move.l	#L1185,-(a7)
	pea	$500.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1237
;      components = components_in_intformat( format );
	move.l	d2,-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
;      if (components<0 || format==GL_STENCIL_INDEX
	tst.l	d0
	bmi.b	L1240
L1238
	cmp.l	#$1901,d2
	beq.b	L1240
L1239
	cmp.l	#$1902,d2
	bne.b	L1241
L1240
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage3DEX
	move.l	#L1185,-(a7)
	pea	$500.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1241
;      size = gl_sizeof_type( type );
	move.l	d7,-(a7)
	jsr	_gl_sizeof_type
	addq.w	#4,a7
;      if (size<=0) 
	cmp.l	#0,d0
	bgt.b	L1243
L1242
;         gl_error( ctx, GL_INVALID_ENUM, "glTexSubImage3DEX
	move.l	#L1186,-(a7)
	pea	$500.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1243
;      gl_error( ctx, GL_OUT_OF_MEMORY, "glTexSubImage3DEXT" );
	move.l	#L1175,-(a7)
	pea	$505.w
	move.l	$8(a5),-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L1244
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L1175
	dc.b	'glTexSubImage3DEXT',0
L1184
	dc.b	'glTexSubImage3DEXT(depth)',0
L1185
	dc.b	'glTexSubImage3DEXT(format)',0
L1183
	dc.b	'glTexSubImage3DEXT(height)',0
L1174
	dc.b	'glTexSubImage3DEXT(level)',0
L1173
	dc.b	'glTexSubImage3DEXT(target)',0
L1186
	dc.b	'glTexSubImage3DEXT(type)',0
L1182
	dc.b	'glTexSubImage3DEXT(width)',0
L1176
	dc.b	'glTexSubImage3DEXT(xoffset)',0
L1179
	dc.b	'glTexSubImage3DEXT(xoffset+width)',0
L1177
	dc.b	'glTexSubImage3DEXT(yoffset)',0
L1180
	dc.b	'glTexSubImage3DEXT(yoffset+height)',0
L1178
	dc.b	'glTexSubImage3DEXT(zoffset)',0
L1181
	dc.b	'glTexSubImage3DEXT(zoffset+depth)',0

	SECTION "_read_color_image:0",CODE


;static struct gl_image *read_color_image( GLcontext *ctx, GLint x, G
_read_color_image
L1282	EQU	-$1914
	link	a5,#L1282
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$14(a5),d2/d4/d5
	move.l	$C(a5),d7
	move.l	$8(a5),a3
L1247
;   components = components_in_intformat( format );
	move.l	d5,-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
	move.l	d0,d3
;   image = (struct gl_image *) malloc( sizeof(struct gl_image) );
	pea	$22.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a4
;   if (image) 
	cmp.w	#0,a4
	beq.b	L1251
L1248
;      image->Width = width;
	move.l	a4,a0
	move.l	d2,(a0)
;      image->Height = height;
	move.l	a4,a0
	move.l	d4,4(a0)
;      image->Depth = 1;
	move.l	a4,a0
	move.l	#1,$8(a0)
;      image->Components = components;
	move.l	a4,a0
	move.l	d3,$C(a0)
;      image->Format = format;
	move.l	a4,a0
	move.l	d5,$10(a0)
;      image->Type = GL_UNSIGNED_BYTE;
	move.l	a4,a0
	move.l	#$1401,$14(a0)
;      image->RefCount = 0;
	move.l	a4,a0
	clr.l	$1E(a0)
;      image->Data = (GLubyte *) malloc( width * height * compo
	move.l	d2,d0
	muls.l	d4,d0
	muls.l	d3,d0
	move.l	d0,-(a7)
	jsr	_malloc
	addq.w	#4,a7
	move.l	a4,a1
	move.l	d0,$18(a1)
;      if (!image->Data) 
	move.l	a4,a1
	tst.l	$18(a1)
	bne.b	L1250
L1249
;         free(image);
	move.l	a4,-(a7)
	jsr	_free
	addq.w	#4,a7
	moveq	#0,d0
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1250
;         return 
	bra.b	L1252
L1251
	moveq	#0,d0
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1252
;   imgptr = (GLubyte *) image->Data;
	move.l	a4,a0
	move.l	$18(a0),a2
;   (void) (*ctx->Driver.SetBuffer)( ctx, ctx->Pixel.ReadBuffer );
	move.l	a3,a0
	add.l	#$B168,a0
	move.l	(a0),-(a7)
	move.l	a3,-(a7)
	move.l	$91C(a3),a0
	jsr	(a0)
	addq.w	#$8,a7
;   for (j=0;
	moveq	#0,d3
	bra	L1280
L1253
;      gl_read_rgba_span( ctx, width, x, y+j, rgba );
	pea	-$1914(a5)
	move.l	$10(a5),d0
	add.l	d3,d0
	move.l	d0,-(a7)
	move.l	d7,-(a7)
	move.l	d2,-(a7)
	move.l	a3,-(a7)
	jsr	_gl_read_rgba_span
	add.w	#$14,a7
;      switch (format)
	move.l	d5,d0
	cmp.l	#$1909,d0
	beq.b	L1258
	bgt.b	L1283
	cmp.l	#$1907,d0
	beq	L1270
	bgt.b	L1284
	cmp.l	#$1906,d0
	beq.b	L1254
	bra	L1278
L1284
	bgt	L1274
L1283
	cmp.l	#$190A,d0
	beq.b	L1262
	cmp.l	#$8049,d0
	beq.b	L1266
	bra	L1278
;         
L1254
;            for (i=0;
	moveq	#0,d0
	bra.b	L1256
L1255
;               *imgptr++ = rgba[i][ACOMP];
	lea	-$1914(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	3(a0),d1
	move.b	d1,(a2)+
	addq.l	#1,d0
L1256
	cmp.l	d2,d0
	blt.b	L1255
L1257
;            
	bra	L1279
L1258
;            for (i=0;
	moveq	#0,d0
	bra.b	L1260
L1259
;               *imgptr++ = rgba[i][RCOMP];
	lea	-$1914(a5),a0
	move.b	0(a0,d0.l*4),d1
	move.b	d1,(a2)+
	addq.l	#1,d0
L1260
	cmp.l	d2,d0
	blt.b	L1259
L1261
;            
	bra	L1279
L1262
;            for (i=0;
	moveq	#0,d0
	bra.b	L1264
L1263
;               *imgptr++ = rgba[i][RCOMP];
	lea	-$1914(a5),a0
	move.b	0(a0,d0.l*4),d1
	move.b	d1,(a2)+
;               *imgptr++ = rgba[i][ACOMP];
	lea	-$1914(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	3(a0),d1
	move.b	d1,(a2)+
	addq.l	#1,d0
L1264
	cmp.l	d2,d0
	blt.b	L1263
L1265
;            
	bra	L1279
L1266
;            for (i=0;
	moveq	#0,d0
	bra.b	L1268
L1267
;               *imgptr++ = rgba[i][RCOMP];
	lea	-$1914(a5),a0
	move.b	0(a0,d0.l*4),d1
	move.b	d1,(a2)+
	addq.l	#1,d0
L1268
	cmp.l	d2,d0
	blt.b	L1267
L1269
;            
	bra	L1279
L1270
;            for (i=0;
	moveq	#0,d0
	bra.b	L1272
L1271
;               *imgptr++ = rgba[i][RCOMP];
	lea	-$1914(a5),a0
	move.b	0(a0,d0.l*4),d1
	move.b	d1,(a2)+
;               *imgptr++ = rgba[i][GCOMP];
	lea	-$1914(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	1(a0),d1
	move.b	d1,(a2)+
;               *imgptr++ = rgba[i][BCOMP];
	lea	-$1914(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	2(a0),d1
	move.b	d1,(a2)+
	addq.l	#1,d0
L1272
	cmp.l	d2,d0
	blt.b	L1271
L1273
;            
	bra.b	L1279
L1274
;            for (i=0;
	moveq	#0,d0
	bra.b	L1276
L1275
;               *imgptr++ = rgba[i][RCOMP];
	lea	-$1914(a5),a0
	move.b	0(a0,d0.l*4),d1
	move.b	d1,(a2)+
;               *imgptr++ = rgba[i][GCOMP];
	lea	-$1914(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	1(a0),d1
	move.b	d1,(a2)+
;               *imgptr++ = rgba[i][BCOMP];
	lea	-$1914(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	2(a0),d1
	move.b	d1,(a2)+
;               *imgptr++ = rgba[i][ACOMP];
	lea	-$1914(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	3(a0),d1
	move.b	d1,(a2)+
	addq.l	#1,d0
L1276
	cmp.l	d2,d0
	blt.b	L1275
L1277
;            
	bra.b	L1279
L1278
;            gl_problem(ctx, "Bad format in read_color_im
	move.l	#L1246,-(a7)
	move.l	a3,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
;            
L1279
	addq.l	#1,d3
L1280
	cmp.l	d4,d3
	blt	L1253
L1281
;   (void) (*ctx->Driver.SetBuffer)( ctx, ctx->Color.DrawBuffer );
	move.l	$21E2(a3),-(a7)
	move.l	a3,-(a7)
	move.l	$91C(a3),a0
	jsr	(a0)
	addq.w	#$8,a7
	move.l	a4,d0
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L1246
	dc.b	'Bad format in read_color_image',0

	SECTION "_gl_CopyTexImage1D:0",CODE


;void gl_CopyTexImage1D( GLcontext *ctx,
	XDEF	_gl_CopyTexImage1D
_gl_CopyTexImage1D
L1312	EQU	-$8
	link	a5,#L1312
	movem.l	d2-d7/a2,-(a7)
	movem.l	$20(a5),d2/d4
	movem.l	$14(a5),d3/d7
	move.l	$10(a5),d5
	move.l	$C(a5),d6
	move.l	$8(a5),a2
L1291
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L1293
L1292
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyTexImage1D" )
	move.l	#L1285,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1293
;   if (target!=GL_TEXTURE_1D) 
	move.l	d6,d0
	cmp.l	#$DE0,d0
	beq.b	L1295
L1294
;      gl_error( ctx, GL_INVALID_ENUM, "glCopyTexImage1D(target)
	move.l	#L1286,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1295
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d5
	bmi.b	L1297
L1296
	cmp.l	#$B,d5
	blt.b	L1298
L1297
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage1D(level)
	move.l	#L1287,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1298
;   if (border!=0 && border!=1) 
	tst.l	d4
	beq.b	L1301
L1299
	cmp.l	#1,d4
	beq.b	L1301
L1300
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage1D(borde
	move.l	#L1288,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1301
;   if (width<2*border || width>2+MAX_TEXTURE_SIZE || width<0) 
	move.l	d4,d0
	moveq	#1,d1
	asl.l	d1,d0
	cmp.l	d0,d2
	blt.b	L1304
L1302
	cmp.l	#$402,d2
	bgt.b	L1304
L1303
	tst.l	d2
	bpl.b	L1305
L1304
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage1D(width)
	move.l	#L1289,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1305
;   format = decode_internal_format( internalformat );
	move.l	d3,-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
;   if (format<0 || (internalformat>=1 && internalformat<=4)) 
	tst.l	d0
	bmi.b	L1308
L1306
	cmp.l	#1,d3
	blt.b	L1309
L1307
	cmp.l	#4,d3
	bgt.b	L1309
L1308
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage1D(forma
	move.l	#L1290,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1309
;   teximage = read_color_image( ctx, x, y, width, 1, (GLenum) for
	move.l	d0,-(a7)
	pea	1.w
	move.l	d2,-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d7,-(a7)
	move.l	a2,-(a7)
	jsr	_read_color_image
	add.w	#$18,a7
	move.l	d0,a0
;   if (!teximage) 
	cmp.w	#0,a0
	bne.b	L1311
L1310
;      gl_error( ctx, GL_OUT_OF_MEMORY, "glCopyTexImage1D" );
	move.l	#L1285,-(a7)
	pea	$505.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1311
;   gl_TexImage1D( ctx, target, level, internalformat, width,
	move.l	a0,-(a7)
	pea	$1401.w
	pea	$1908.w
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	d3,-(a7)
	move.l	d5,-(a7)
	move.l	d6,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_TexImage1D
	add.w	#$24,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

L1285
	dc.b	'glCopyTexImage1D',0
L1288
	dc.b	'glCopyTexImage1D(border)',0
L1290
	dc.b	'glCopyTexImage1D(format)',0
L1287
	dc.b	'glCopyTexImage1D(level)',0
L1286
	dc.b	'glCopyTexImage1D(target)',0
L1289
	dc.b	'glCopyTexImage1D(width)',0

	SECTION "_gl_CopyTexImage2D:0",CODE


;void gl_CopyTexImage2D( GLcontext *ctx,
	XDEF	_gl_CopyTexImage2D
_gl_CopyTexImage2D
L1345	EQU	-$8
	link	a5,#L1345
	movem.l	d2-d7/a2,-(a7)
	movem.l	$24(a5),d2/d4
	move.l	$20(a5),d3
	move.l	$14(a5),d5
	move.l	$10(a5),d6
	move.l	$C(a5),d7
	move.l	$8(a5),a2
L1320
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L1322
L1321
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyTexImage2D" )
	move.l	#L1313,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1322
;   if (target!=GL_TEXTURE_2D) 
	move.l	d7,d0
	cmp.l	#$DE1,d0
	beq.b	L1324
L1323
;      gl_error( ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)
	move.l	#L1314,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1324
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d6
	bmi.b	L1326
L1325
	move.l	d6,d0
	cmp.l	#$B,d0
	blt.b	L1327
L1326
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage2D(level)
	move.l	#L1315,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1327
;   if (border!=0 && border!=1) 
	tst.l	d4
	beq.b	L1330
L1328
	cmp.l	#1,d4
	beq.b	L1330
L1329
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage2D(borde
	move.l	#L1316,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1330
;   if (width<2*border || width>2+MAX_TEXTURE_SIZE || width<0) 
	move.l	d4,d0
	moveq	#1,d1
	asl.l	d1,d0
	cmp.l	d0,d3
	blt.b	L1333
L1331
	cmp.l	#$402,d3
	bgt.b	L1333
L1332
	tst.l	d3
	bpl.b	L1334
L1333
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage2D(width)
	move.l	#L1317,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1334
;   if (height<2*border || height>2+MAX_TEXTURE_SIZE || height<0) 
	move.l	d4,d0
	moveq	#1,d1
	asl.l	d1,d0
	cmp.l	d0,d2
	blt.b	L1337
L1335
	cmp.l	#$402,d2
	bgt.b	L1337
L1336
	tst.l	d2
	bpl.b	L1338
L1337
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage2D(heigh
	move.l	#L1318,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1338
;   format = decode_internal_format( internalformat );
	move.l	d5,-(a7)
	jsr	_decode_internal_format
	addq.w	#4,a7
;   if (format<0 || (internalformat>=1 && internalformat<=4)) 
	tst.l	d0
	bmi.b	L1341
L1339
	cmp.l	#1,d5
	blt.b	L1342
L1340
	cmp.l	#4,d5
	bgt.b	L1342
L1341
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexImage2D(forma
	move.l	#L1319,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1342
;   teximage = read_color_image( ctx, x, y, width, height, (GLenum)
	move.l	d0,-(a7)
	move.l	d2,-(a7)
	move.l	d3,-(a7)
	move.l	$1C(a5),-(a7)
	move.l	$18(a5),-(a7)
	move.l	a2,-(a7)
	jsr	_read_color_image
	add.w	#$18,a7
	move.l	d0,a0
;   if (!teximage) 
	cmp.w	#0,a0
	bne.b	L1344
L1343
;      gl_error( ctx, GL_OUT_OF_MEMORY, "glCopyTexImage2D" );
	move.l	#L1313,-(a7)
	pea	$505.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L1344
;   gl_TexImage2D( ctx, target, level, internalformat, width, heig
	move.l	a0,-(a7)
	pea	$1401.w
	pea	$1908.w
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	d3,-(a7)
	move.l	d5,-(a7)
	move.l	d6,-(a7)
	move.l	d7,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_TexImage2D
	add.w	#$28,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

L1313
	dc.b	'glCopyTexImage2D',0
L1316
	dc.b	'glCopyTexImage2D(border)',0
L1319
	dc.b	'glCopyTexImage2D(format)',0
L1318
	dc.b	'glCopyTexImage2D(height)',0
L1315
	dc.b	'glCopyTexImage2D(level)',0
L1314
	dc.b	'glCopyTexImage2D(target)',0
L1317
	dc.b	'glCopyTexImage2D(width)',0

	SECTION "_copy_tex_sub_image:0",CODE


;static void copy_tex_sub_image( GLcontext *ctx, struct gl_texture_im
_copy_tex_sub_image
L1375	EQU	-$1920
	link	a5,#L1375
	movem.l	d2-d7/a2/a3,-(a7)
	move.l	$10(a5),d2
	move.l	$28(a5),d5
	move.l	$8(a5),a2
	move.l	$C(a5),a3
L1346
;   texwidth = dest->Width;
	move.l	a3,a0
	move.l	$C(a0),d7
;   texheight = dest->Height;
	move.l	a3,a0
;   rectarea = texwidth * texheight;
	move.l	$10(a0),d0
	muls.l	d7,d0
;   zoffset *= rectarea;
	muls.l	d0,d5
;   format = dest->Format;
	move.l	a3,a0
	move.l	(a0),d4
;   components = components_in_intformat( format );
	move.l	d4,-(a7)
	jsr	_components_in_intformat
	addq.w	#4,a7
	move.l	d0,-$10(a5)
;   (void) (*ctx->Driver.SetBuffer)( ctx, ctx->Pixel.ReadBuffer );
	move.l	a2,a0
	add.l	#$B168,a0
	move.l	(a0),-(a7)
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
;   for (j=0;
	moveq	#0,d3
	bra	L1373
L1347
;      gl_read_rgba_span( ctx, width, srcx, srcy+j, rgba );
	pea	-$191C(a5)
	move.l	$1C(a5),d0
	add.l	d3,d0
	move.l	d0,-(a7)
	move.l	$18(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_read_rgba_span
	add.w	#$14,a7
;      texptr = dest->Data + ( zoffset + (dsty+j) * texwidth + 
	move.l	a3,a1
	move.l	$24(a5),d0
	add.l	d3,d0
	muls.l	d7,d0
	add.l	d5,d0
	add.l	$20(a5),d0
	muls.l	-$10(a5),d0
	move.l	$34(a1),a0
	add.l	d0,a0
;      switch (format)
	move.l	d4,d0
	cmp.l	#$1909,d0
	beq.b	L1352
	bgt.b	L1376
	cmp.l	#$1907,d0
	beq	L1364
	bgt.b	L1377
	cmp.l	#$1906,d0
	beq.b	L1348
	bra	L1372
L1377
	bgt	L1368
L1376
	cmp.l	#$190A,d0
	beq.b	L1356
	cmp.l	#$8049,d0
	beq.b	L1360
	bra	L1372
;         
L1348
;            for (i=0;
	moveq	#0,d0
	bra.b	L1350
L1349
;               *texptr++ = rgba[i][ACOMP];
	lea	-$191C(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	3(a1),d1
	move.b	d1,(a0)+
	addq.l	#1,d0
L1350
	cmp.l	d2,d0
	blt.b	L1349
L1351
;            
	bra	L1372
L1352
;            for (i=0;
	moveq	#0,d0
	bra.b	L1354
L1353
;               *texptr++ = rgba[i][RCOMP];
	lea	-$191C(a5),a1
	move.b	0(a1,d0.l*4),d1
	move.b	d1,(a0)+
	addq.l	#1,d0
L1354
	cmp.l	d2,d0
	blt.b	L1353
L1355
;            
	bra	L1372
L1356
;            for (i=0;
	moveq	#0,d0
	bra.b	L1358
L1357
;               *texptr++ = rgba[i][RCOMP];
	lea	-$191C(a5),a1
	move.b	0(a1,d0.l*4),d1
	move.b	d1,(a0)+
;               *texptr++ = rgba[i][ACOMP];
	lea	-$191C(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	3(a1),d1
	move.b	d1,(a0)+
	addq.l	#1,d0
L1358
	cmp.l	d2,d0
	blt.b	L1357
L1359
;            
	bra	L1372
L1360
;            for (i=0;
	moveq	#0,d0
	bra.b	L1362
L1361
;               *texptr++ = rgba[i][RCOMP];
	lea	-$191C(a5),a1
	move.b	0(a1,d0.l*4),d1
	move.b	d1,(a0)+
	addq.l	#1,d0
L1362
	cmp.l	d2,d0
	blt.b	L1361
L1363
;            
	bra.b	L1372
L1364
;            for (i=0;
	moveq	#0,d0
	bra.b	L1366
L1365
;               *texptr++ = rgba[i][RCOMP];
	lea	-$191C(a5),a1
	move.b	0(a1,d0.l*4),d1
	move.b	d1,(a0)+
;               *texptr++ = rgba[i][GCOMP];
	lea	-$191C(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	1(a1),d1
	move.b	d1,(a0)+
;               *texptr++ = rgba[i][BCOMP];
	lea	-$191C(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	2(a1),d1
	move.b	d1,(a0)+
	addq.l	#1,d0
L1366
	cmp.l	d2,d0
	blt.b	L1365
L1367
;            
	bra.b	L1372
L1368
;            for (i=0;
	moveq	#0,d0
	bra.b	L1370
L1369
;               *texptr++ = rgba[i][RCOMP];
	lea	-$191C(a5),a1
	move.b	0(a1,d0.l*4),d1
	move.b	d1,(a0)+
;               *texptr++ = rgba[i][GCOMP];
	lea	-$191C(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	1(a1),d1
	move.b	d1,(a0)+
;               *texptr++ = rgba[i][BCOMP];
	lea	-$191C(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	2(a1),d1
	move.b	d1,(a0)+
;               *texptr++ = rgba[i][ACOMP];
	lea	-$191C(a5),a1
	lea	0(a1,d0.l*4),a1
	move.b	3(a1),d1
	move.b	d1,(a0)+
	addq.l	#1,d0
L1370
	cmp.l	d2,d0
	blt.b	L1369
L1371
;            
L1372
	addq.l	#1,d3
L1373
	cmp.l	$14(a5),d3
	blt	L1347
L1374
;   (void) (*ctx->Driver.SetBuffer)( ctx, ctx->Color.DrawBuffer );
	move.l	$21E2(a2),-(a7)
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
	movem.l	(a7)+,d2-d7/a2/a3
	unlk	a5
	rts

	SECTION "_gl_CopyTexSubImage1D:0",CODE


;void gl_CopyTexSubImage1D( GLcontext *ctx,
	XDEF	_gl_CopyTexSubImage1D
_gl_CopyTexSubImage1D
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$2C(a7),d1-d3/d6/d7
	move.l	$40(a7),d4
	move.l	$28(a7),a2
L1384
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	add.l	a1,d0
	move.l	d0,a4
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L1386
L1385
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyTexSubImage1
	move.l	#L1378,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	rts
L1386
;   if (target!=GL_TEXTURE_1D) 
	cmp.l	#$DE0,d1
	beq.b	L1388
L1387
;      gl_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage1D(tar
	move.l	#L1379,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	rts
L1388
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d2
	bmi.b	L1390
L1389
	cmp.l	#$B,d2
	blt.b	L1391
L1390
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImage1D(le
	move.l	#L1380,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	rts
L1391
;   if (width<0) 
	tst.l	d4
	bpl.b	L1393
L1392
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImage1D(wi
	move.l	#L1381,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	rts
L1393
;   teximage = texSet->Current1D->Image[level];
	move.l	a4,a1
	move.l	$A8(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a3
;   if (teximage) 
	cmp.w	#0,a3
	beq	L1404
L1394
;      if (xoffset < -((GLint)teximage->Border)) 
	move.l	a3,a0
	move.l	$8(a0),d0
	neg.l	d0
	cmp.l	d0,d3
	bge.b	L1396
L1395
;         gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImag
	move.l	#L1382,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	rts
L1396
;      if (xoffset+width > (GLint) (teximage->Width+teximage->B
	move.l	d3,d5
	add.l	d4,d5
	move.l	a3,a0
	move.l	$C(a0),d0
	move.l	a3,a0
	add.l	$8(a0),d0
	cmp.l	d0,d5
	ble.b	L1398
L1397
;         gl_error( ctx, GL_INVALID_VALUE,
	move.l	#L1383,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	rts
L1398
;      if (teximage->Data) 
	move.l	a3,a1
	tst.l	$34(a1)
	beq.b	L1403
L1399
;         copy_tex_sub_image( ctx, teximage, width, 1, x, y,
	clr.l	-(a7)
	clr.l	-(a7)
	move.l	d3,-(a7)
	move.l	d7,-(a7)
	move.l	d6,-(a7)
	pea	1.w
	move.l	d4,-(a7)
	move.l	a3,-(a7)
	move.l	a2,-(a7)
	jsr	_copy_tex_sub_image
	add.w	#$24,a7
;         if (ctx->Driver.TexSubImage) 
	tst.l	$9CC(a2)
	beq.b	L1401
L1400
;      if (teximage->Data) {
	move.l	a3,-(a7)
	move.l	a3,a0
	move.l	4(a0),-(a7)
	pea	1.w
	move.l	d4,-(a7)
	clr.l	-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	a4,a1
	move.l	$A8(a1),-(a7)
	pea	$DE0.w
	move.l	a2,-(a7)
	move.l	$9CC(a2),a0
	jsr	(a0)
	add.w	#$28,a7
	bra.b	L1403
L1401
;           if (ctx->Driver.TexImage) 
	tst.l	$9C8(a2)
	beq.b	L1403
L1402
;             (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_1
	move.l	a3,-(a7)
	move.l	a3,a0
	move.l	4(a0),-(a7)
	move.l	d2,-(a7)
	move.l	a4,a1
	move.l	$A8(a1),-(a7)
	pea	$DE0.w
	move.l	a2,-(a7)
	move.l	$9C8(a2),a0
	jsr	(a0)
	add.w	#$18,a7
L1403
	bra.b	L1405
L1404
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyTexSubImage1
	move.l	#L1378,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L1405
	movem.l	(a7)+,d2-d7/a2-a4
	rts

L1378
	dc.b	'glCopyTexSubImage1D',0
L1380
	dc.b	'glCopyTexSubImage1D(level)',0
L1379
	dc.b	'glCopyTexSubImage1D(target)',0
L1381
	dc.b	'glCopyTexSubImage1D(width)',0
L1382
	dc.b	'glCopyTexSubImage1D(xoffset)',0
L1383
	dc.b	'glCopyTexSubImage1D(xoffset+width)',0

	SECTION "_gl_CopyTexSubImage2D:0",CODE


;void gl_CopyTexSubImage2D( GLcontext *ctx,
	XDEF	_gl_CopyTexSubImage2D
_gl_CopyTexSubImage2D
L1443	EQU	-$8
	link	a5,#L1443
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$C(a5),d1/d2/d4
	move.l	$18(a5),d3
	move.l	$28(a5),d5
	move.l	$24(a5),d7
	move.l	$8(a5),a2
L1415
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	add.l	a1,d0
	move.l	d0,a4
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L1417
L1416
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyTexSubImage2
	move.l	#L1406,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1417
;   if (target!=GL_TEXTURE_2D) 
	cmp.l	#$DE1,d1
	beq.b	L1419
L1418
;      gl_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(tar
	move.l	#L1407,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1419
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d2
	bmi.b	L1421
L1420
	cmp.l	#$B,d2
	blt.b	L1422
L1421
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImage2D(le
	move.l	#L1408,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1422
;   if (width<0) 
	tst.l	d7
	bpl.b	L1424
L1423
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImage2D(wi
	move.l	#L1409,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1424
;   if (height<0) 
	tst.l	d5
	bpl.b	L1426
L1425
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImage2D(he
	move.l	#L1410,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1426
;   teximage = texSet->Current2D->Image[level];
	move.l	a4,a1
	move.l	$AC(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a3
;   if (teximage) 
	cmp.w	#0,a3
	beq	L1441
L1427
;      if (xoffset < -((GLint)teximage->Border)) 
	move.l	a3,a0
	move.l	$8(a0),d0
	neg.l	d0
	cmp.l	d0,d4
	bge.b	L1429
L1428
;         gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImag
	move.l	#L1411,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1429
;      if (yoffset < -((GLint)teximage->Border)) 
	move.l	a3,a0
	move.l	$8(a0),d0
	neg.l	d0
	cmp.l	d0,d3
	bge.b	L1431
L1430
;         gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImag
	move.l	#L1412,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1431
;      if (xoffset+width > (GLint) (teximage->Width+teximage->B
	move.l	d4,d0
	add.l	d7,d0
	move.l	d0,d6
	move.l	a3,a0
	move.l	$C(a0),d0
	move.l	a3,a0
	add.l	$8(a0),d0
	move.l	d6,d1
	cmp.l	d0,d1
	ble.b	L1433
L1432
;         gl_error( ctx, GL_INVALID_VALUE,
	move.l	#L1413,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1433
;      if (yoffset+height > (GLint) (teximage->Height+teximage-
	move.l	d3,d0
	add.l	d5,d0
	move.l	d0,d6
	move.l	a3,a0
	move.l	$10(a0),d0
	move.l	a3,a0
	add.l	$8(a0),d0
	move.l	d6,d1
	cmp.l	d0,d1
	ble.b	L1435
L1434
;         gl_error( ctx, GL_INVALID_VALUE,
	move.l	#L1414,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1435
;      if (teximage->Data) 
	move.l	a3,a1
	tst.l	$34(a1)
	beq.b	L1440
L1436
;         copy_tex_sub_image( ctx, teximage, width, height,
	clr.l	-(a7)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	$20(a5),-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d5,-(a7)
	move.l	d7,-(a7)
	move.l	a3,-(a7)
	move.l	a2,-(a7)
	jsr	_copy_tex_sub_image
	add.w	#$24,a7
;         if (ctx->Driver.TexSubImage) 
	tst.l	$9CC(a2)
	beq.b	L1438
L1437
;           (*ctx->Driver.TexSubImage)( ctx, GL_TEXTURE_2D
	move.l	a3,-(a7)
	move.l	a3,a0
	move.l	4(a0),-(a7)
	move.l	d5,-(a7)
	move.l	d7,-(a7)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a4,a1
	move.l	$AC(a1),-(a7)
	pea	$DE1.w
	move.l	a2,-(a7)
	move.l	$9CC(a2),a0
	jsr	(a0)
	add.w	#$28,a7
	bra.b	L1440
L1438
;           if (ctx->Driver.TexImage) 
	tst.l	$9C8(a2)
	beq.b	L1440
L1439
;             (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_2
	move.l	a3,-(a7)
	move.l	a3,a0
	move.l	4(a0),-(a7)
	move.l	d2,-(a7)
	move.l	a4,a1
	move.l	$AC(a1),-(a7)
	pea	$DE1.w
	move.l	a2,-(a7)
	move.l	$9C8(a2),a0
	jsr	(a0)
	add.w	#$18,a7
L1440
	bra.b	L1442
L1441
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyTexSubImage2
	move.l	#L1406,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L1442
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L1406
	dc.b	'glCopyTexSubImage2D',0
L1410
	dc.b	'glCopyTexSubImage2D(height)',0
L1408
	dc.b	'glCopyTexSubImage2D(level)',0
L1407
	dc.b	'glCopyTexSubImage2D(target)',0
L1409
	dc.b	'glCopyTexSubImage2D(width)',0
L1411
	dc.b	'glCopyTexSubImage2D(xoffset)',0
L1413
	dc.b	'glCopyTexSubImage2D(xoffset+width)',0
L1412
	dc.b	'glCopyTexSubImage2D(yoffset)',0
L1414
	dc.b	'glCopyTexSubImage2D(yoffset+height)',0

	SECTION "_gl_CopyTexSubImage3DEXT:0",CODE


;void gl_CopyTexSubImage3DEXT( GLcontext *ctx,
	XDEF	_gl_CopyTexSubImage3DEXT
_gl_CopyTexSubImage3DEXT
L1485	EQU	-$10
	link	a5,#L1485
	movem.l	d2-d7/a2-a4,-(a7)
	move.l	$1C(a5),d1
	move.l	$10(a5),d2
	move.l	$18(a5),d3
	move.l	$14(a5),d4
	move.l	$2C(a5),d5
	move.l	$28(a5),d7
	move.l	$8(a5),a2
L1455
;   struct gl_texture_set *texSet = &ctx->Texture.Set[ctx->Texture
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d0
	muls.l	#$BC,d0
	add.l	a1,d0
	move.l	d0,a4
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L1457
L1456
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyTexSubImage3
	move.l	#L1444,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1457
;   if (target!=GL_TEXTURE_2D) 
	move.l	$C(a5),d0
	cmp.l	#$DE1,d0
	beq.b	L1459
L1458
;      gl_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage3DEXT(
	move.l	#L1445,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1459
;   if (level<0 || level>=MAX_TEXTURE_LEVELS) 
	tst.l	d2
	bmi.b	L1461
L1460
	cmp.l	#$B,d2
	blt.b	L1462
L1461
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImage3DEXT
	move.l	#L1446,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1462
;   if (width<0) 
	tst.l	d7
	bpl.b	L1464
L1463
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImage3DEXT
	move.l	#L1447,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1464
;   if (height<0) 
	tst.l	d5
	bpl.b	L1466
L1465
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImage3DEXT
	move.l	#L1448,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1466
;   teximage = texSet->Current3D->Image[level];
	move.l	a4,a1
	move.l	$B0(a1),a0
	lea	$50(a0),a0
	move.l	0(a0,d2.l*4),a3
;   if (teximage) 
	cmp.w	#0,a3
	beq	L1483
L1467
;      if (xoffset < -((GLint)teximage->Border)) 
	move.l	a3,a0
	move.l	$8(a0),d0
	neg.l	d0
	cmp.l	d0,d4
	bge.b	L1469
L1468
;         gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImag
	move.l	#L1449,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1469
;      if (yoffset < -((GLint)teximage->Border)) 
	move.l	a3,a0
	move.l	$8(a0),d0
	neg.l	d0
	cmp.l	d0,d3
	bge.b	L1471
L1470
;         gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImag
	move.l	#L1450,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1471
;      if (zoffset < -((GLint)teximage->Border)) 
	move.l	a3,a0
	move.l	$8(a0),d0
	neg.l	d0
	cmp.l	d0,d1
	bge.b	L1473
L1472
;         gl_error( ctx, GL_INVALID_VALUE, "glCopyTexSubImag
	move.l	#L1451,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1473
;      if (xoffset+width > (GLint) (teximage->Width+teximage->B
	move.l	d4,d0
	add.l	d7,d0
	move.l	d0,-$10(a5)
	move.l	a3,a0
	move.l	$C(a0),d0
	move.l	a3,a0
	add.l	$8(a0),d0
	move.l	-$10(a5),d6
	cmp.l	d0,d6
	ble.b	L1475
L1474
;         gl_error( ctx, GL_INVALID_VALUE,
	move.l	#L1452,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1475
;      if (yoffset+height > (GLint) (teximage->Height+teximage-
	move.l	d3,d0
	add.l	d5,d0
	move.l	d0,-$C(a5)
	move.l	a3,a0
	move.l	$10(a0),d0
	move.l	a3,a0
	add.l	$8(a0),d0
	move.l	-$C(a5),d6
	cmp.l	d0,d6
	ble.b	L1477
L1476
;         gl_error( ctx, GL_INVALID_VALUE,
	move.l	#L1453,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1477
;      if (zoffset > (GLint) (teximage->Depth+teximage->Border))
	move.l	a3,a0
	move.l	$14(a0),d0
	move.l	a3,a0
	add.l	$8(a0),d0
	cmp.l	d0,d1
	ble.b	L1479
L1478
;         gl_error( ctx, GL_INVALID_VALUE,
	move.l	#L1454,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts
L1479
;      if (teximage->Data) 
	move.l	a3,a1
	tst.l	$34(a1)
	beq.b	L1482
L1480
;         copy_tex_sub_image( ctx, teximage, width, height, 
	move.l	d1,-(a7)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	$24(a5),-(a7)
	move.l	$20(a5),-(a7)
	move.l	d5,-(a7)
	move.l	d7,-(a7)
	move.l	a3,-(a7)
	move.l	a2,-(a7)
	jsr	_copy_tex_sub_image
	add.w	#$24,a7
;         if (ctx->Driver.TexImage) 
	tst.l	$9C8(a2)
	beq.b	L1482
L1481
;           (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_3D_EX
	move.l	a3,-(a7)
	move.l	a3,a0
	move.l	4(a0),-(a7)
	move.l	d2,-(a7)
	move.l	a4,a1
	move.l	$B0(a1),-(a7)
	move.l	#$806F,-(a7)
	move.l	a2,-(a7)
	move.l	$9C8(a2),a0
	jsr	(a0)
	add.w	#$18,a7
L1482
	bra.b	L1484
L1483
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyTexSubImage3
	move.l	#L1444,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L1484
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L1444
	dc.b	'glCopyTexSubImage3DEXT',0
L1448
	dc.b	'glCopyTexSubImage3DEXT(height)',0
L1446
	dc.b	'glCopyTexSubImage3DEXT(level)',0
L1445
	dc.b	'glCopyTexSubImage3DEXT(target)',0
L1447
	dc.b	'glCopyTexSubImage3DEXT(width)',0
L1449
	dc.b	'glCopyTexSubImage3DEXT(xoffset)',0
L1452
	dc.b	'glCopyTexSubImage3DEXT(xoffset+width)',0
L1450
	dc.b	'glCopyTexSubImage3DEXT(yoffset)',0
L1453
	dc.b	'glCopyTexSubImage3DEXT(yoffset+height)',0
L1451
	dc.b	'glCopyTexSubImage3DEXT(zoffset)',0
L1454
	dc.b	'glCopyTexSubImage3DEXT(zoffset+depth)',0

	END
