
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/copypix.c
	mc68030
	mc68881
	XREF	_gl_write_zoomed_stencil_span
	XREF	_gl_write_zoomed_index_span
	XREF	_gl_write_zoomed_rgba_span
	XREF	_gl_write_stencil_span
	XREF	_gl_read_stencil_span
	XREF	_gl_read_index_span
	XREF	_gl_read_rgba_span
	XREF	_gl_write_rgba_span
	XREF	_gl_write_index_span
	XREF	_gl_map_stencil
	XREF	_gl_shift_and_offset_stencil
	XREF	_gl_map_ci
	XREF	_gl_shift_and_offset_ci
	XREF	_gl_map_rgba
	XREF	_gl_scale_and_bias_rgba
	XREF	_gl_update_hitflag
	XREF	_gl_feedback_vertex
	XREF	_gl_update_state
	XREF	_gl_error
	XREF	_CC

	SECTION "_copy_rgb_pixels:0",CODE


;static void copy_rgb_pixels( GLcontext* ctx,
_copy_rgb_pixels
L121	EQU	-$259E
	link	a5,#L121
	movem.l	d2-d7/a2,-(a7)
	movem.l	$10(a5),d0/d3
	move.l	$1C(a5),d5
	move.l	$8(a5),a2
L86
;   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0F || ctx->Pixel.Zo
	moveq	#1,d1
	move.l	a2,a0
	add.l	#$B168,a0
	fmove.s	$38(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L89
L87
	move.l	a2,a0
	add.l	#$B168,a0
	fmove.s	$3C(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L89
L88
	moveq	#0,d1
L89
	move.b	d1,-$2598(a5)
;   if (srcy<desty) 
	cmp.l	$20(a5),d0
	bge.b	L91
L90
;      sy = srcy + height - 1;
	move.l	d0,d4
	add.l	$18(a5),d4
	subq.l	#1,d4
;      dy = desty + height - 1;
	move.l	$20(a5),d2
	add.l	$18(a5),d2
	subq.l	#1,d2
;      stepy = -1;
	moveq	#-1,d7
	bra.b	L92
L91
;      sy = srcy;
	move.l	d0,d4
;      dy = desty;
	move.l	$20(a5),d2
;      stepy = 1;
	moveq	#1,d7
L92
;   if (ctx->Depth.Test) 
	tst.b	$22A4(a2)
	beq.b	L96
L93
;      GLint z = (GLint) (ctx->Current.RasterPos[2] * DEPTH_SCA
	lea	$224E(a2),a0
	fmove.s	$8(a0),fp0
	fmul.s	#$.477FFF00,fp0
	fmove.l	fp0,d0
	move.l	d0,d6
;      for (i=0;
	moveq	#0,d0
	bra.b	L95
L94
;	 zspan[i] = z;
	lea	-$C80(a5),a0
	move.w	d6,0(a0,d0.l*2)
	addq.l	#1,d0
L95
	cmp.l	d3,d0
	blt.b	L94
L96
;   if (ctx->RasterMask==0 && !zoom
	move.l	a2,a0
	add.l	#$E974,a0
	tst.l	(a0)
	bne.b	L101
L97
	tst.b	-$2598(a5)
	bne.b	L101
L98
	tst.l	d5
	bmi.b	L101
L99
	move.l	d5,d1
	add.l	d3,d1
	move.l	$8FC(a2),a0
	cmp.l	4(a0),d1
	bgt.b	L101
L100
;      quick_draw = GL_TRUE;
	move.b	#1,-$2581(a5)
	bra.b	L102
L101
;      quick_draw = GL_FALSE;
	clr.b	-$2581(a5)
L102
;   setbuffer = ctx->Pixel.ReadBuffer!=ctx->Color.DrawBuffer;
	move.l	a2,a0
	add.l	#$B168,a0
	move.l	(a0),d0
	cmp.l	$21E2(a2),d0
	sne	d0
	and.l	#1,d0
	move.b	d0,-$2597(a5)
;   for (j=0;
	moveq	#0,d6
	bra	L119
L103
;      if (setbuffer) 
	tst.b	-$2597(a5)
	beq.b	L105
L104
;	 (*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
L105
;      gl_read_rgba_span( ctx, width, srcx, sy, rgba );
	pea	-$2580(a5)
	move.l	d4,-(a7)
	move.l	$C(a5),-(a7)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_read_rgba_span
	add.w	#$14,a7
;      if (ctx->Pixel.ScaleOrBiasRGBA) 
	move.l	a2,a0
	add.l	#$B168,a0
	tst.b	$24(a0)
	beq.b	L107
L106
;	 gl_scale_and_bias_rgba( ctx, width, rgba );
	pea	-$2580(a5)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_scale_and_bias_rgba
	add.w	#$C,a7
L107
;      if (ctx->Pixel.MapColorFlag) 
	move.l	a2,a0
	add.l	#$B168,a0
	tst.b	$36(a0)
	beq.b	L109
L108
;	 gl_map_rgba( ctx, width, rgba );
	pea	-$2580(a5)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_map_rgba
	add.w	#$C,a7
L109
;      if (setbuffer) 
	tst.b	-$2597(a5)
	beq.b	L111
L110
;	 (*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
L111
;      if (quick_draw && dy>=0 && dy<ctx->Buffer->Height) 
	tst.b	-$2581(a5)
	beq.b	L115
L112
	tst.l	d2
	bmi.b	L115
L113
	move.l	$8FC(a2),a0
	cmp.l	$8(a0),d2
	bge.b	L115
L114
;	 (*ctx->Driver.WriteRGBASpan)( ctx, width, destx, dy, (CONST GLub
	clr.l	-(a7)
	pea	-$2580(a5)
	move.l	d2,-(a7)
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	move.l	$924(a2),a0
	jsr	(a0)
	add.w	#$18,a7
	bra.b	L118
L115
;      else if (zoom) 
	tst.b	-$2598(a5)
	beq.b	L117
L116
;	 gl_write_zoomed_rgba_span( ctx, width, destx, dy, zspan, (CONST 
	move.l	$20(a5),-(a7)
	pea	-$2580(a5)
	pea	-$C80(a5)
	move.l	d2,-(a7)
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_zoomed_rgba_span
	add.w	#$1C,a7
	bra.b	L118
L117
;	 gl_write_rgba_span( ctx, width, destx, dy, zspan, rgba, GL_BITMA
	pea	$1A00.w
	pea	-$2580(a5)
	pea	-$C80(a5)
	move.l	d2,-(a7)
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_rgba_span
	add.w	#$1C,a7
L118
	move.l	d6,d0
	addq.l	#1,d0
	move.l	d0,d6
	add.l	d7,d4
	add.l	d7,d2
L119
	move.l	d6,d0
	cmp.l	$18(a5),d0
	blt	L103
L120
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

	SECTION "_copy_ci_pixels:0",CODE

	rts

;static void copy_ci_pixels( GLcontext* ctx,
_copy_ci_pixels
L150	EQU	-$259A
	link	a5,#L150
	movem.l	d2-d7/a2,-(a7)
	movem.l	$10(a5),d0/d2
	move.l	$8(a5),a2
L122
;   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0F || ctx->Pixel.Zo
	moveq	#1,d1
	move.l	a2,a0
	add.l	#$B168,a0
	fmove.s	$38(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L125
L123
	move.l	a2,a0
	add.l	#$B168,a0
	fmove.s	$3C(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L125
L124
	moveq	#0,d1
L125
	move.b	d1,-$C96(a5)
;   const GLboolean shift_or_offset = ctx->Pixel.IndexShift || ctx
	moveq	#1,d1
	move.l	a2,a0
	add.l	#$B168,a0
	tst.l	$2E(a0)
	bne.b	L128
L126
	move.l	a2,a0
	add.l	#$B168,a0
	tst.l	$32(a0)
	bne.b	L128
L127
	moveq	#0,d1
L128
	move.b	d1,-$C97(a5)
;   if (srcy<desty) 
	cmp.l	$20(a5),d0
	bge.b	L130
L129
;      sy = srcy + height - 1;
	move.l	d0,d4
	add.l	$18(a5),d4
	subq.l	#1,d4
;      dy = desty + height - 1;
	move.l	$20(a5),d3
	add.l	$18(a5),d3
	subq.l	#1,d3
;      stepy = -1;
	moveq	#-1,d6
	bra.b	L131
L130
;      sy = srcy;
	move.l	d0,d4
;      dy = desty;
	move.l	$20(a5),d3
;      stepy = 1;
	moveq	#1,d6
L131
;   if (ctx->Depth.Test) 
	tst.b	$22A4(a2)
	beq.b	L135
L132
;      GLint z = (GLint) (ctx->Current.RasterPos[2] * DEPTH_SCA
	lea	$224E(a2),a0
	fmove.s	$8(a0),fp0
	fmul.s	#$.477FFF00,fp0
	fmove.l	fp0,d5
;      for (i=0;
	moveq	#0,d0
	bra.b	L134
L133
;	 zspan[i] = z;
	lea	-$C80(a5),a0
	move.w	d5,0(a0,d0.l*2)
	addq.l	#1,d0
L134
	cmp.l	d2,d0
	blt.b	L133
L135
;   setbuffer = ctx->Pixel.ReadBuffer!=ctx->Color.DrawBuffer;
	move.l	a2,a0
	add.l	#$B168,a0
	move.l	(a0),d0
	cmp.l	$21E2(a2),d0
	sne	d0
	and.l	#1,d0
	move.b	d0,d7
;   for (j=0;
	moveq	#0,d5
	bra	L148
L136
;      if (setbuffer) 
	tst.b	d7
	beq.b	L138
L137
;	 (*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
L138
;      gl_read_index_span( ctx, width, srcx, sy, indexes );
	pea	-$2598(a5)
	move.l	d4,-(a7)
	move.l	$C(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_read_index_span
	add.w	#$14,a7
;      if (shift_or_offset) 
	tst.b	-$C97(a5)
	beq.b	L140
L139
;	 gl_shift_and_offset_ci( ctx, width, indexes );
	pea	-$2598(a5)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_shift_and_offset_ci
	add.w	#$C,a7
L140
;      if (ctx->Pixel.MapColorFlag) 
	move.l	a2,a0
	add.l	#$B168,a0
	tst.b	$36(a0)
	beq.b	L142
L141
;	 gl_map_ci( ctx, width, indexes );
	pea	-$2598(a5)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_map_ci
	add.w	#$C,a7
L142
;      if (setbuffer) 
	tst.b	d7
	beq.b	L144
L143
;	 (*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
L144
;      if (zoom) 
	tst.b	-$C96(a5)
	beq.b	L146
L145
;	 gl_write_zoomed_index_span( ctx, width, destx, dy, zspan, indexe
	move.l	$20(a5),-(a7)
	pea	-$2598(a5)
	pea	-$C80(a5)
	move.l	d3,-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_zoomed_index_span
	add.w	#$1C,a7
	bra.b	L147
L146
;	 gl_write_index_span( ctx, width, destx, dy, zspan, indexes, GL_B
	pea	$1A00.w
	pea	-$2598(a5)
	pea	-$C80(a5)
	move.l	d3,-(a7)
	move.l	$1C(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_index_span
	add.w	#$1C,a7
L147
	addq.l	#1,d5
	add.l	d6,d4
	add.l	d6,d3
L148
	cmp.l	$18(a5),d5
	blt	L136
L149
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

	SECTION "_copy_depth_pixels:0",CODE


;static void copy_depth_pixels( GLcontext* ctx, GLint srcx, GLint src
_copy_depth_pixels
L189	EQU	-$57A4
	link	a5,#L189
	movem.l	d2-d7/a2,-(a7)
	movem.l	$10(a5),d0/d2
	movem.l	$1C(a5),d4/d7
	move.l	$8(a5),a2
L152
;   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0F || ctx->Pixel.Zo
	moveq	#1,d1
	move.l	a2,a0
	add.l	#$B168,a0
	fmove.s	$38(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L155
L153
	move.l	a2,a0
	add.l	#$B168,a0
	fmove.s	$3C(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L155
L154
	moveq	#0,d1
L155
	move.b	d1,-$5795(a5)
;   if (!ctx->Buffer->Depth) 
	move.l	$8FC(a2),a0
	tst.l	$C(a0)
	bne.b	L157
L156
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyPixels" );
	move.l	#L151,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L157
;   if (srcy<desty) 
	cmp.l	d7,d0
	bge.b	L159
L158
;      sy = srcy + height - 1;
	move.l	d0,d5
	add.l	$18(a5),d5
	subq.l	#1,d5
;      dy = desty + height - 1;
	move.l	d7,d3
	add.l	$18(a5),d3
	subq.l	#1,d3
;      stepy = -1;
	move.l	#-1,-$578C(a5)
	bra.b	L160
L159
;      sy = srcy;
	move.l	d0,d5
;      dy = desty;
	move.l	d7,d3
;      stepy = 1;
	move.l	#1,-$578C(a5)
L160
;   if (ctx->Visual->RGBAflag) 
	move.l	$8F8(a2),a0
	tst.b	(a0)
	beq.b	L165
L161
;      GLuint *rgba32 = (GLuint *) rgba;
	lea	-$5780(a5),a1
;      GLuint color = *((GLuint *) ctx->Current.ByteColor);
	move.l	$2216(a2),d1
;      for (i=0;
	moveq	#0,d0
	bra.b	L163
L162
;	 rgba32[i] = color;
	move.l	d1,0(a1,d0.l*4)
	addq.l	#1,d0
L163
	cmp.l	d2,d0
	blt.b	L162
L164
	bra.b	L168
L165
;      for (i=0;
	moveq	#0,d0
	bra.b	L167
L166
;	 indexes[i] = ctx->Current.Index;
	lea	-$3E80(a5),a0
	move.l	$221A(a2),0(a0,d0.l*4)
	addq.l	#1,d0
L167
	cmp.l	d2,d0
	blt.b	L166
L168
;   for (j=0;
	moveq	#0,d6
	bra	L187
L169
;      (*ctx->Driver.ReadDepthSpanFloat)( ctx, width, srcx, sy,
	pea	-$1900(a5)
	move.l	d5,-(a7)
	move.l	$C(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	move.l	$990(a2),a0
	jsr	(a0)
	add.w	#$14,a7
;      for (i=0;
	moveq	#0,d0
	bra.b	L177
L170
;	 GLfloat d = depth[i] * ctx->Pixel.DepthScale + ctx->Pixel.DepthB
	lea	-$1900(a5),a0
	fmove.s	0(a0,d0.l*4),fp0
	move.l	a2,a0
	add.l	#$B168,a0
	fmul.s	$2A(a0),fp0
	move.l	a2,a0
	add.l	#$B168,a0
	fadd.s	$26(a0),fp0
;	 zspan[i] = (GLint) (CLAMP( d, 0.0F, 1.0F ) * DEPTH_SCALE);
	fcmp.s	#$.00000000,fp0
	fboge.b	L172
L171
	fmove.s	#$.00000000,fp0
	bra.b	L176
L172
	fcmp.s	#$.3F800000,fp0
	fbole.b	L174
L173
	fmove.s	#$.3F800000,fp0
L174
L175
L176
	fmul.s	#$.477FFF00,fp0
	fmove.l	fp0,d1
	lea	-$2580(a5),a0
	move.w	d1,0(a0,d0.l*2)
	addq.l	#1,d0
L177
	cmp.l	d2,d0
	blt.b	L170
L178
;      if (ctx->Visual->RGBAflag) 
	move.l	$8F8(a2),a0
	tst.b	(a0)
	beq.b	L183
L179
;	 if (zoom) 
	tst.b	-$5795(a5)
	beq.b	L181
L180
;	    gl_write_zoomed_rgba_span( ctx, width, destx, dy, zspan, (
	move.l	d7,-(a7)
	pea	-$5780(a5)
	pea	-$2580(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_zoomed_rgba_span
	add.w	#$1C,a7
	bra.b	L182
L181
;	    gl_write_rgba_span( ctx, width, destx, dy, zspan, rgba, GL
	pea	$1A00.w
	pea	-$5780(a5)
	pea	-$2580(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_rgba_span
	add.w	#$1C,a7
L182
	bra.b	L186
L183
;	 if (zoom) 
	tst.b	-$5795(a5)
	beq.b	L185
L184
;	    gl_write_zoomed_index_span( ctx, width, destx, dy,
	move.l	d7,-(a7)
	pea	-$3E80(a5)
	pea	-$2580(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_zoomed_index_span
	add.w	#$1C,a7
	bra.b	L186
L185
;	    gl_write_index_span( ctx, width, destx, dy,
	pea	$1A00.w
	pea	-$3E80(a5)
	pea	-$2580(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_index_span
	add.w	#$1C,a7
L186
	move.l	d6,d0
	addq.l	#1,d0
	move.l	d0,d6
	add.l	-$578C(a5),d5
	add.l	-$578C(a5),d3
L187
	move.l	d6,d0
	cmp.l	$18(a5),d0
	blt	L169
L188
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

L151
	dc.b	'glCopyPixels',0

	SECTION "_copy_stencil_pixels:0",CODE


;static void copy_stencil_pixels( GLcontext* ctx, GLint srcx, GLint s
_copy_stencil_pixels
L213	EQU	-$654
	link	a5,#L213
	movem.l	d2-d7/a2,-(a7)
	movem.l	$10(a5),d0/d2
	move.l	$1C(a5),d7
	move.l	$8(a5),a2
L191
;   const GLboolean zoom = (ctx->Pixel.ZoomX!=1.0F || ctx->Pixel.Z
	moveq	#1,d1
	move.l	a2,a0
	add.l	#$B168,a0
	fmove.s	$38(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L194
L192
	move.l	a2,a0
	add.l	#$B168,a0
	fmove.s	$3C(a0),fp0
	fcmp.s	#$.3F800000,fp0
	fbne.b	L194
L193
	moveq	#0,d1
L194
	move.b	d1,-$651(a5)
;   const GLboolean shift_or_offset = ctx->Pixel.IndexShift!=0 || 
	moveq	#1,d1
	move.l	a2,a0
	add.l	#$B168,a0
	tst.l	$2E(a0)
	bne.b	L197
L195
	move.l	a2,a0
	add.l	#$B168,a0
	tst.l	$32(a0)
	bne.b	L197
L196
	moveq	#0,d1
L197
	move.b	d1,-$652(a5)
;   if (!ctx->Buffer->Stencil) 
	move.l	$8FC(a2),a0
	tst.l	$10(a0)
	bne.b	L199
L198
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyPixels" );
	move.l	#L190,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L199
;   if (srcy<desty) 
	cmp.l	$20(a5),d0
	bge.b	L201
L200
;      sy = srcy + height - 1;
	move.l	d0,d4
	add.l	$18(a5),d4
	subq.l	#1,d4
;      dy = desty + height - 1;
	move.l	$20(a5),d3
	add.l	$18(a5),d3
	subq.l	#1,d3
;      stepy = -1;
	moveq	#-1,d6
	bra.b	L202
L201
;      sy = srcy;
	move.l	d0,d4
;      dy = desty;
	move.l	$20(a5),d3
;      stepy = 1;
	moveq	#1,d6
L202
;   for (j=0;
	moveq	#0,d5
	bra	L211
L203
;      gl_read_stencil_span( ctx, width, srcx, sy, stencil );
	pea	-$640(a5)
	move.l	d4,-(a7)
	move.l	$C(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_read_stencil_span
	add.w	#$14,a7
;      if (shift_or_offset) 
	tst.b	-$652(a5)
	beq.b	L205
L204
;	 gl_shift_and_offset_stencil( ctx, width, stencil );
	pea	-$640(a5)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_shift_and_offset_stencil
	add.w	#$C,a7
L205
;      if (ctx->Pixel.MapStencilFlag) 
	move.l	a2,a0
	add.l	#$B168,a0
	tst.b	$37(a0)
	beq.b	L207
L206
;	 gl_map_stencil( ctx, width, stencil );
	pea	-$640(a5)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_map_stencil
	add.w	#$C,a7
L207
;      if (zoom) 
	tst.b	-$651(a5)
	beq.b	L209
L208
;	 gl_write_zoomed_stencil_span( ctx, width, destx, dy, stencil, de
	move.l	$20(a5),-(a7)
	pea	-$640(a5)
	move.l	d3,-(a7)
	move.l	d7,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_zoomed_stencil_span
	add.w	#$18,a7
	bra.b	L210
L209
;	 gl_write_stencil_span( ctx, width, destx, dy, stencil );
	pea	-$640(a5)
	move.l	d3,-(a7)
	move.l	d7,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_stencil_span
	add.w	#$14,a7
L210
	addq.l	#1,d5
	add.l	d6,d4
	add.l	d6,d3
L211
	cmp.l	$18(a5),d5
	blt	L203
L212
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

L190
	dc.b	'glCopyPixels',0

	SECTION "_gl_CopyPixels:0",CODE


;void gl_CopyPixels( GLcontext* ctx, GLint srcx, GLint srcy, GLsizei 
	XDEF	_gl_CopyPixels
_gl_CopyPixels
L244	EQU	-$18
	link	a5,#L244
	movem.l	d2-d7/a2,-(a7)
	movem.l	$18(a5),d2/d7
	move.l	$14(a5),d3
	move.l	$C(a5),d4
	move.l	$10(a5),d5
	move.l	$8(a5),a2
L215
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L217
L216
;      gl_error( ctx, GL_INVALID_OPERATION, "glCopyPixels" );
	move.l	#L214,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L217
;   if (width<0 || height<0) 
	tst.l	d3
	bmi.b	L219
L218
	tst.l	d2
	bpl.b	L220
L219
;      gl_error( ctx, GL_INVALID_VALUE, "glCopyPixels" );
	move.l	#L214,-(a7)
	pea	$501.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L220
;   if (ctx->NewState) 
	move.l	a2,a0
	add.l	#$E960,a0
	tst.l	(a0)
	beq.b	L222
L221
;      gl_update_state(ctx);
	move.l	a2,-(a7)
	jsr	_gl_update_state
	addq.w	#4,a7
L222
;   if (ctx->RenderMode==GL_RENDER) 
	move.l	a2,a0
	add.l	#$E964,a0
	move.l	(a0),d0
	cmp.l	#$1C00,d0
	bne	L237
L223
;      if (!ctx->Current.RasterPosValid) 
	tst.b	$229A(a2)
	bne.b	L225
L224
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts
L225
;      destx = (GLint) (ctx->Current.RasterPos[0] + 0.5F);
	fmove.s	$224E(a2),fp0
	fadd.s	#$.3F000000,fp0
	fmove.l	fp0,d1
;      desty = (GLint) (ctx->Current.RasterPos[1] + 0.5F);
	lea	$224E(a2),a0
	fmove.s	4(a0),fp0
	fadd.s	#$.3F000000,fp0
	fmove.l	fp0,d0
;      if (type==GL_COLOR && ctx->Visual->RGBAflag) 
	move.l	d7,d6
	cmp.l	#$1800,d6
	bne.b	L228
L226
	move.l	$8F8(a2),a0
	tst.b	(a0)
	beq.b	L228
L227
;	 copy_rgb_pixels( ctx, srcx, srcy, width, height, destx, desty );
	move.l	d0,-(a7)
	move.l	d1,-(a7)
	move.l	d2,-(a7)
	move.l	d3,-(a7)
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	move.l	a2,-(a7)
	jsr	_copy_rgb_pixels
	add.w	#$1C,a7
	bra	L236
L228
;      else if (type==GL_COLOR && !ctx->Visual->RGBAflag) 
	move.l	d7,d6
	cmp.l	#$1800,d6
	bne.b	L231
L229
	move.l	$8F8(a2),a0
	tst.b	(a0)
	bne.b	L231
L230
;	 copy_ci_pixels( ctx, srcx, srcy, width, height, destx, desty );
	move.l	d0,-(a7)
	move.l	d1,-(a7)
	move.l	d2,-(a7)
	move.l	d3,-(a7)
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	move.l	a2,-(a7)
	jsr	_copy_ci_pixels
	add.w	#$1C,a7
	bra.b	L236
L231
;      else if (type==GL_DEPTH) 
	move.l	d7,d6
	cmp.l	#$1801,d6
	bne.b	L233
L232
;	 copy_depth_pixels( ctx, srcx, srcy, width, height, destx, desty )
	move.l	d0,-(a7)
	move.l	d1,-(a7)
	move.l	d2,-(a7)
	move.l	d3,-(a7)
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	move.l	a2,-(a7)
	jsr	_copy_depth_pixels
	add.w	#$1C,a7
	bra.b	L236
L233
;      else if (type==GL_STENCIL) 
	move.l	d7,d6
	cmp.l	#$1802,d6
	bne.b	L235
L234
;	 copy_stencil_pixels( ctx, srcx, srcy, width, height, destx, dest
	move.l	d0,-(a7)
	move.l	d1,-(a7)
	move.l	d2,-(a7)
	move.l	d3,-(a7)
	move.l	d5,-(a7)
	move.l	d4,-(a7)
	move.l	a2,-(a7)
	jsr	_copy_stencil_pixels
	add.w	#$1C,a7
	bra.b	L236
L235
;	 gl_error( ctx, GL_INVALID_ENUM, "glCopyPixels" );
	move.l	#L214,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L236
	bra	L243
L237
;   else if (ctx->RenderMode==GL_FEEDBACK) 
	move.l	a2,a0
	add.l	#$E964,a0
	move.l	(a0),d0
	cmp.l	#$1C01,d0
	bne	L241
L238
;      color[0] = (GLfloat) ctx->Current.ByteColor[0] / 255.0;
	moveq	#0,d0
	move.b	$2216(a2),d0
	fmove.l	d0,fp0
	fdiv.d	#$.406FE000.00000000,fp0
	fmove.s	fp0,-$18(a5)
;      color[1] = (GLfloat) ctx->Current.ByteColor[1] / 255.0;
	lea	$2216(a2),a0
	moveq	#0,d0
	move.b	1(a0),d0
	fmove.l	d0,fp0
	fdiv.d	#$.406FE000.00000000,fp0
	lea	-$18(a5),a0
	fmove.s	fp0,4(a0)
;      color[2] = (GLfloat) ctx->Current.ByteColor[2] / 255.0;
	lea	$2216(a2),a0
	moveq	#0,d0
	move.b	2(a0),d0
	fmove.l	d0,fp0
	fdiv.d	#$.406FE000.00000000,fp0
	lea	-$18(a5),a0
	fmove.s	fp0,$8(a0)
;      color[3] = (GLfloat) ctx->Current.ByteColor[3] / 255.0;
	lea	$2216(a2),a0
	moveq	#0,d0
	move.b	3(a0),d0
	fmove.l	d0,fp0
	fdiv.d	#$.406FE000.00000000,fp0
	lea	-$18(a5),a0
	fmove.s	fp0,$C(a0)
;_TOKEN( ctx, (GLf
	move.l	a2,a0
	add.l	#$E828,a0
	move.l	$10(a0),d1
	move.l	a2,a0
	add.l	#$E828,a0
	cmp.l	$C(a0),d1
	bhs.b	L240
L239
;_TOKEN( ctx, (GLf
	move.l	a2,a0
	add.l	#$E828,a0
	move.l	$8(a0),a1
	move.l	a2,a0
	add.l	#$E828,a0
	move.l	$10(a0),d0
	move.l	#$44E0C000,0(a1,d0.l*4)
L240
;_TOKEN( ctx, (GLf
	move.l	a2,a0
	add.l	#$E838,a0
	move.l	(a0),d0
	addq.l	#1,d0
	move.l	a2,a0
	add.l	#$E838,a0
	move.l	d0,(a0)
;      gl_feedback_vertex( ctx, ctx->Current.RasterPos[0],
	move.l	$222A(a2),-(a7)
	fmove.l	$221A(a2),fp0
	fmove.s	fp0,-(a7)
	pea	-$18(a5)
	lea	$224E(a2),a0
	move.l	$C(a0),-(a7)
	lea	$224E(a2),a0
	move.l	$8(a0),-(a7)
	lea	$224E(a2),a0
	move.l	4(a0),-(a7)
	move.l	$224E(a2),-(a7)
	move.l	a2,-(a7)
	jsr	_gl_feedback_vertex
	add.w	#$20,a7
	bra.b	L243
L241
;   else if (ctx->RenderMode==GL_SELECT) 
	move.l	a2,a0
	add.l	#$E964,a0
	move.l	(a0),d0
	cmp.l	#$1C02,d0
	bne.b	L243
L242
;      gl_update_hitflag( ctx, ctx->Current.RasterPos[2] );
	lea	$224E(a2),a0
	move.l	$8(a0),-(a7)
	move.l	a2,-(a7)
	jsr	_gl_update_hitflag
	addq.w	#$8,a7
L243
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

L214
	dc.b	'glCopyPixels',0

	END
