
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/logic.c
	mc68030
	mc68881
	XREF	_gl_read_rgba_span
	XREF	_gl_error
	XREF	_gl_problem
	XREF	_gl_read_alpha_pixels
	XREF	_CC

	SECTION "_gl_LogicOp:0",CODE


;void gl_LogicOp( GLcontext *ctx, GLenum opcode )
	XDEF	_gl_LogicOp
_gl_LogicOp
	move.l	$8(a7),d0
	move.l	4(a7),a0
L163
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d1
	cmp.l	#$1A00,d1
	beq.b	L165
L164
;      gl_error( ctx, GL_INVALID_OPERATION, "glLogicOp" );
	move.l	#L162,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	rts
L165
;   switch (opcode)
	move.l	d0,d1
	sub.l	#$1500,d1
	cmp.l	#$F,d1
	bhi.b	L167
	move.l	L168(pc,d1.l*4),a1
	jmp	(a1)
L168
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
	dc.l	L166
;      
L166
;         ctx->Color.LogicOp = opcode;
	move.l	d0,$220E(a0)
;         ctx->NewState |= NEW_RASTER_OPS;
	move.l	a0,a1
	add.l	#$E960,a1
	move.l	(a1),d0
	or.l	#2,d0
	add.l	#$E960,a0
	move.l	d0,(a0)
	rts
L167
;         gl_error( ctx, GL_INVALID_ENUM, "glLogicOp" );
	move.l	#L162,-(a7)
	pea	$500.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	rts

L162
	dc.b	'glLogicOp',0

	SECTION "_index_logicop:0",CODE

	rts

;static void index_logicop( GLcontext *ctx, GLuint n,
_index_logicop
	movem.l	d2-d4/a2-a4,-(a7)
	movem.l	$20(a7),d1/a0/a2
	move.l	$2C(a7),a1
	move.l	$1C(a7),a4
L170
;   switch (ctx->Color.LogicOp)
	move.l	#$21C4,d0
	add.l	a4,d0
	move.l	d0,a3
	move.l	$4A(a3),d0
	sub.l	#$1500,d0
	cmp.l	#$F,d0
	bhi	L262
	move.l	L264(pc,d0.l*4),a3
	jmp	(a3)
L264
	dc.l	L171
	dc.l	L202
	dc.l	L238
	dc.l	L183
	dc.l	L244
	dc.l	L190
	dc.l	L226
	dc.l	L214
	dc.l	L220
	dc.l	L232
	dc.l	L196
	dc.l	L250
	dc.l	L184
	dc.l	L256
	dc.l	L208
	dc.l	L177
;      
L171
;         for (i=0;
	moveq	#0,d0
	bra.b	L175
L172
;	    if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L174
L173
;	       index[i] = 0;
	clr.l	0(a0,d0.l*4)
L174
	addq.l	#1,d0
L175
	cmp.l	d1,d0
	blo.b	L172
L176
;	 
	bra	L263
L177
;         for (i=0;
	moveq	#0,d0
	bra.b	L181
L178
;	    if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L180
L179
;	       index[i] = 1;
	move.l	#1,0(a0,d0.l*4)
L180
	addq.l	#1,d0
L181
	cmp.l	d1,d0
	blo.b	L178
L182
;	 
	bra	L263
L183
;	 
	bra	L263
L184
;         for (i=0;
	moveq	#0,d0
	bra.b	L188
L185
;	    if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L187
L186
;	       index[i] = ~index[i];
	move.l	0(a0,d0.l*4),d2
	not.l	d2
	move.l	d2,0(a0,d0.l*4)
L187
	addq.l	#1,d0
L188
	cmp.l	d1,d0
	blo.b	L185
L189
;	 
	bra	L263
L190
;         for (i=0;
	moveq	#0,d0
	bra.b	L194
L191
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L193
L192
;	       index[i] = dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L193
	addq.l	#1,d0
L194
	cmp.l	d1,d0
	blo.b	L191
L195
;	 
	bra	L263
L196
;         for (i=0;
	moveq	#0,d0
	bra.b	L200
L197
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L199
L198
;	       index[i] = ~dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L199
	addq.l	#1,d0
L200
	cmp.l	d1,d0
	blo.b	L197
L201
;	 
	bra	L263
L202
;         for (i=0;
	moveq	#0,d0
	bra.b	L206
L203
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L205
L204
;	       index[i] &= dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d3
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a4
	move.l	a4,a3
	move.l	(a3),d2
	and.l	d3,d2
	move.l	a4,a3
	move.l	d2,(a3)
L205
	addq.l	#1,d0
L206
	cmp.l	d1,d0
	blo.b	L203
L207
;	 
	bra	L263
L208
;         for (i=0;
	moveq	#0,d0
	bra.b	L212
L209
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L211
L210
;	       index[i] = ~(index[i] & dest[i]);
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	and.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L211
	addq.l	#1,d0
L212
	cmp.l	d1,d0
	blo.b	L209
L213
;	 
	bra	L263
L214
;         for (i=0;
	moveq	#0,d0
	bra.b	L218
L215
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L217
L216
;	       index[i] |= dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d3
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a4
	move.l	a4,a3
	move.l	(a3),d2
	or.l	d3,d2
	move.l	a4,a3
	move.l	d2,(a3)
L217
	addq.l	#1,d0
L218
	cmp.l	d1,d0
	blo.b	L215
L219
;	 
	bra	L263
L220
;         for (i=0;
	moveq	#0,d0
	bra.b	L224
L221
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L223
L222
;	       index[i] = ~(index[i] | dest[i]);
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	or.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L223
	addq.l	#1,d0
L224
	cmp.l	d1,d0
	blo.b	L221
L225
;	 
	bra	L263
L226
;         for (i=0;
	moveq	#0,d0
	bra.b	L230
L227
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L229
L228
;	       index[i] ^= dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d3
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a4
	move.l	a4,a3
	move.l	(a3),d2
	eor.l	d3,d2
	move.l	a4,a3
	move.l	d2,(a3)
L229
	addq.l	#1,d0
L230
	cmp.l	d1,d0
	blo.b	L227
L231
;	 
	bra	L263
L232
;         for (i=0;
	moveq	#0,d0
	bra.b	L236
L233
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L235
L234
;	       index[i] = ~(index[i] ^ dest[i]);
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	move.l	(a3),d3
	eor.l	d3,d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L235
	addq.l	#1,d0
L236
	cmp.l	d1,d0
	blo.b	L233
L237
;	 
	bra	L263
L238
;         for (i=0;
	moveq	#0,d0
	bra.b	L242
L239
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L241
L240
;	       index[i] = index[i] & ~dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	move.l	(a3),d3
	not.l	d3
	and.l	d3,d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L241
	addq.l	#1,d0
L242
	cmp.l	d1,d0
	blo.b	L239
L243
;	 
	bra	L263
L244
;         for (i=0;
	moveq	#0,d0
	bra.b	L248
L245
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L247
L246
;	       index[i] = ~index[i] & dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	and.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L247
	addq.l	#1,d0
L248
	cmp.l	d1,d0
	blo.b	L245
L249
;	 
	bra	L263
L250
;         for (i=0;
	moveq	#0,d0
	bra.b	L254
L251
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L253
L252
;	       index[i] = index[i] | ~dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	move.l	(a3),d3
	not.l	d3
	or.l	d3,d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L253
	addq.l	#1,d0
L254
	cmp.l	d1,d0
	blo.b	L251
L255
;	 
	bra.b	L263
L256
;         for (i=0;
	moveq	#0,d0
	bra.b	L260
L257
;	    if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L259
L258
;	       index[i] = ~index[i] | dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	or.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L259
	addq.l	#1,d0
L260
	cmp.l	d1,d0
	blo.b	L257
L261
;	 
	bra.b	L263
L262
;	 gl_error( ctx, GL_INVALID_ENUM, "gl_logic error" );
	move.l	#L169,-(a7)
	pea	$500.w
	move.l	a4,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L263
	movem.l	(a7)+,d2-d4/a2-a4
	rts

L169
	dc.b	'gl_logic error',0

	SECTION "_gl_logicop_ci_span:0",CODE


;void gl_logicop_ci_span( GLcontext *ctx, GLuint n, GLint x, GLint y,
	XDEF	_gl_logicop_ci_span
_gl_logicop_ci_span
L266	EQU	-$1900
	link	a5,#L266
	movem.l	d2/a2-a4,-(a7)
	movem.l	$10(a5),d0/d1/a3/a4
	move.l	$C(a5),d2
	move.l	$8(a5),a2
L265
;   (*ctx->Driver.ReadCI32Span)( ctx, n, x, y, dest );
	pea	-$1900(a5)
	move.l	d1,-(a7)
	move.l	d0,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	move.l	$94C(a2),a0
	jsr	(a0)
	add.w	#$14,a7
;   index_logicop( ctx, n, index, dest, mask );
	move.l	a4,-(a7)
	pea	-$1900(a5)
	move.l	a3,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_index_logicop
	add.w	#$14,a7
	movem.l	(a7)+,d2/a2-a4
	unlk	a5
	rts

	SECTION "_gl_logicop_ci_pixels:0",CODE


;void gl_logicop_ci_pixels( GLcontext *ctx,
	XDEF	_gl_logicop_ci_pixels
_gl_logicop_ci_pixels
L268	EQU	-$4B00
	link	a5,#L268
	movem.l	d2/a2-a4,-(a7)
	movem.l	$C(a5),d2/a1
	move.l	$8(a5),a2
	move.l	$1C(a5),a3
	move.l	$18(a5),a4
L267
;   (*ctx->Driver.ReadCI32Pixels)( ctx, n, x, y, dest, mask );
	move.l	a3,-(a7)
	pea	-$4B00(a5)
	move.l	$14(a5),-(a7)
	move.l	a1,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	move.l	$954(a2),a0
	jsr	(a0)
	add.w	#$18,a7
;   index_logicop( ctx, n, index, dest, mask );
	move.l	a3,-(a7)
	pea	-$4B00(a5)
	move.l	a4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_index_logicop
	add.w	#$14,a7
	movem.l	(a7)+,d2/a2-a4
	unlk	a5
	rts

	SECTION "_rgba_logicop:0",CODE


;static void rgba_logicop( const GLcontext *ctx, GLuint n,
_rgba_logicop
	movem.l	d2-d4/a2-a4,-(a7)
	movem.l	$20(a7),d1/a1
	movem.l	$28(a7),a0/a2
	move.l	$1C(a7),a4
L270
;   switch (ctx->Color.LogicOp)
	move.l	#$21C4,d0
	add.l	a4,d0
	move.l	d0,a3
	move.l	$4A(a3),d0
	sub.l	#$1500,d0
	cmp.l	#$F,d0
	bhi	L362
	move.l	L364(pc,d0.l*4),a3
	jmp	(a3)
L364
	dc.l	L271
	dc.l	L302
	dc.l	L338
	dc.l	L283
	dc.l	L344
	dc.l	L290
	dc.l	L326
	dc.l	L314
	dc.l	L320
	dc.l	L332
	dc.l	L296
	dc.l	L350
	dc.l	L284
	dc.l	L356
	dc.l	L308
	dc.l	L277
;      
L271
;         for (i=0;
	moveq	#0,d0
	bra.b	L275
L272
;            if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L274
L273
;               src[i] = 0;
	clr.l	0(a0,d0.l*4)
L274
	addq.l	#1,d0
L275
	cmp.l	d1,d0
	blo.b	L272
L276
;         
	bra	L363
L277
;         for (i=0;
	moveq	#0,d0
	bra.b	L281
L278
;            if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L280
L279
;               src[i] = 0xffffffff;
	move.l	#-1,0(a0,d0.l*4)
L280
	addq.l	#1,d0
L281
	cmp.l	d1,d0
	blo.b	L278
L282
;         
	bra	L363
L283
;         
	bra	L363
L284
;         for (i=0;
	moveq	#0,d0
	bra.b	L288
L285
;            if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L287
L286
;               src[i] = ~src[i];
	move.l	0(a0,d0.l*4),d2
	not.l	d2
	move.l	d2,0(a0,d0.l*4)
L287
	addq.l	#1,d0
L288
	cmp.l	d1,d0
	blo.b	L285
L289
;         
	bra	L363
L290
;         for (i=0;
	moveq	#0,d0
	bra.b	L294
L291
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L293
L292
;               src[i] = dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L293
	addq.l	#1,d0
L294
	cmp.l	d1,d0
	blo.b	L291
L295
;         
	bra	L363
L296
;         for (i=0;
	moveq	#0,d0
	bra.b	L300
L297
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L299
L298
;               src[i] = ~dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L299
	addq.l	#1,d0
L300
	cmp.l	d1,d0
	blo.b	L297
L301
;         
	bra	L363
L302
;         for (i=0;
	moveq	#0,d0
	bra.b	L306
L303
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L305
L304
;               src[i] &= dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d3
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a4
	move.l	a4,a3
	move.l	(a3),d2
	and.l	d3,d2
	move.l	a4,a3
	move.l	d2,(a3)
L305
	addq.l	#1,d0
L306
	cmp.l	d1,d0
	blo.b	L303
L307
;         
	bra	L363
L308
;         for (i=0;
	moveq	#0,d0
	bra.b	L312
L309
;            if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L311
L310
;               src[i] = ~(src[i] & src[i]);
	move.l	0(a0,d0.l*4),d2
	and.l	0(a0,d0.l*4),d2
	not.l	d2
	move.l	d2,0(a0,d0.l*4)
L311
	addq.l	#1,d0
L312
	cmp.l	d1,d0
	blo.b	L309
L313
;         
	bra	L363
L314
;         for (i=0;
	moveq	#0,d0
	bra.b	L318
L315
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L317
L316
;               src[i]|= dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d3
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a4
	move.l	a4,a3
	move.l	(a3),d2
	or.l	d3,d2
	move.l	a4,a3
	move.l	d2,(a3)
L317
	addq.l	#1,d0
L318
	cmp.l	d1,d0
	blo.b	L315
L319
;         
	bra	L363
L320
;         for (i=0;
	moveq	#0,d0
	bra.b	L324
L321
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L323
L322
;               src[i] = ~(src[i] | dest[i]);
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	or.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L323
	addq.l	#1,d0
L324
	cmp.l	d1,d0
	blo.b	L321
L325
;         
	bra	L363
L326
;         for (i=0;
	moveq	#0,d0
	bra.b	L330
L327
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L329
L328
;               src[i] ^= dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a2,d2
	move.l	d2,a3
	move.l	(a3),d3
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a4
	move.l	a4,a3
	move.l	(a3),d2
	eor.l	d3,d2
	move.l	a4,a3
	move.l	d2,(a3)
L329
	addq.l	#1,d0
L330
	cmp.l	d1,d0
	blo.b	L327
L331
;         
	bra	L363
L332
;         for (i=0;
	moveq	#0,d0
	bra.b	L336
L333
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L335
L334
;               src[i] = ~(src[i] ^ dest[i]);
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	move.l	(a3),d3
	eor.l	d3,d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L335
	addq.l	#1,d0
L336
	cmp.l	d1,d0
	blo.b	L333
L337
;         
	bra	L363
L338
;         for (i=0;
	moveq	#0,d0
	bra.b	L342
L339
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L341
L340
;               src[i] = src[i] & ~dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	move.l	(a3),d3
	not.l	d3
	and.l	d3,d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L341
	addq.l	#1,d0
L342
	cmp.l	d1,d0
	blo.b	L339
L343
;         
	bra	L363
L344
;         for (i=0;
	moveq	#0,d0
	bra.b	L348
L345
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L347
L346
;               src[i] = ~src[i] & dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	and.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L347
	addq.l	#1,d0
L348
	cmp.l	d1,d0
	blo.b	L345
L349
;         
	bra	L363
L350
;         for (i=0;
	moveq	#0,d0
	bra.b	L354
L351
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L353
L352
;               src[i] = src[i] | ~dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	move.l	(a3),d3
	not.l	d3
	or.l	d3,d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L353
	addq.l	#1,d0
L354
	cmp.l	d1,d0
	blo.b	L351
L355
;         
	bra.b	L363
L356
;         for (i=0;
	moveq	#0,d0
	bra.b	L360
L357
;            if (mask[i]) 
	move.l	d0,d2
	add.l	a1,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L359
L358
;               src[i] = ~src[i] | dest[i];
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a0,d2
	move.l	d2,a3
	move.l	(a3),d2
	not.l	d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	or.l	(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a0,d3
	move.l	d3,a3
	move.l	d2,(a3)
L359
	addq.l	#1,d0
L360
	cmp.l	d1,d0
	blo.b	L357
L361
;         
	bra.b	L363
L362
;         gl_problem(ctx, "Bad function in rgba_logicop");
	move.l	#L269,-(a7)
	move.l	a4,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
L363
	movem.l	(a7)+,d2-d4/a2-a4
	rts

L269
	dc.b	'Bad function in rgba_logicop',0

	SECTION "_gl_logicop_rgba_span:0",CODE


;void gl_logicop_rgba_span( GLcontext *ctx,
	XDEF	_gl_logicop_rgba_span
_gl_logicop_rgba_span
L366	EQU	-$1900
	link	a5,#L366
	movem.l	d2/a2-a4,-(a7)
	movem.l	$10(a5),d0/d1/a4
	move.l	$C(a5),d2
	move.l	$8(a5),a2
	move.l	$1C(a5),a3
L365
;   gl_read_rgba_span( ctx, n, x, y, dest );
	pea	-$1900(a5)
	move.l	d1,-(a7)
	move.l	d0,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_read_rgba_span
	add.w	#$14,a7
;   rgba_logicop( ctx, n, mask, (GLuint *) rgba, (const GLuint *) 
	pea	-$1900(a5)
	move.l	a4,-(a7)
	move.l	a3,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_rgba_logicop
	add.w	#$14,a7
	movem.l	(a7)+,d2/a2-a4
	unlk	a5
	rts

	SECTION "_gl_logicop_rgba_pixels:0",CODE


;void gl_logicop_rgba_pixels( GLcontext *ctx,
	XDEF	_gl_logicop_rgba_pixels
_gl_logicop_rgba_pixels
L370	EQU	-$4B00
	link	a5,#L370
	movem.l	d2/a2-a4,-(a7)
	movem.l	$C(a5),d2/a4
	move.l	$8(a5),a2
	move.l	$1C(a5),a3
L367
;   (*ctx->Driver.ReadRGBAPixels)( ctx, n, x, y, dest, mask );
	move.l	a3,-(a7)
	pea	-$4B00(a5)
	move.l	$14(a5),-(a7)
	move.l	a4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	move.l	$958(a2),a0
	jsr	(a0)
	add.w	#$18,a7
;   if (ctx->RasterMask & ALPHABUF_BIT) 
	move.l	a2,a0
	add.l	#$E974,a0
	move.l	(a0),d0
	and.l	#$100,d0
	beq.b	L369
L368
;      gl_read_alpha_pixels( ctx, n, x, y, dest, mask );
	move.l	a3,-(a7)
	pea	-$4B00(a5)
	move.l	$14(a5),-(a7)
	move.l	a4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_read_alpha_pixels
	add.w	#$18,a7
L369
;   rgba_logicop( ctx, n, mask, (GLuint *) rgba, (const GLuint *) 
	pea	-$4B00(a5)
	move.l	$18(a5),-(a7)
	move.l	a3,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_rgba_logicop
	add.w	#$14,a7
	movem.l	(a7)+,d2/a2-a4
	unlk	a5
	rts

	END
