
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/stencil.c
	mc68030
	mc68881
	XREF	_gl_error
	XREF	_gl_problem
	XREF	_q_memset
	XREF	_q_memcpy
	XREF	_malloc
	XREF	_free
	XREF	_CC

	SECTION "_gl_ClearStencil:0",CODE


;void gl_ClearStencil( GLcontext *ctx, GLint s )
	XDEF	_gl_ClearStencil
_gl_ClearStencil
	move.l	$8(a7),d1
	move.l	4(a7),a0
L296
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d0
	cmp.l	#$1A00,d0
	beq.b	L298
L297
;      gl_error( ctx, GL_INVALID_OPERATION, "glClearStencil" );
	move.l	#L295,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	rts
L298
;   ctx->Stencil.Clear = (GLstencil) s;
	add.l	#$DEB8,a0
	move.b	d1,(a0)
	rts

L295
	dc.b	'glClearStencil',0

	SECTION "_gl_StencilFunc:0",CODE

	rts

;void gl_StencilFunc( GLcontext *ctx, GLenum func, GLint ref, GLuint 
	XDEF	_gl_StencilFunc
_gl_StencilFunc
	movem.l	d2/d3,-(a7)
	movem.l	$14(a7),d0/d3
	move.l	$10(a7),d1
	move.l	$C(a7),a0
L300
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d2
	cmp.l	#$1A00,d2
	beq.b	L302
L301
;      gl_error( ctx, GL_INVALID_OPERATION, "glStencilFunc" );
	move.l	#L299,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/d3
	rts
L302
;   switch (func)
	move.l	d1,d2
	sub.l	#$200,d2
	cmp.l	#7,d2
	bhi.b	L304
	move.l	L312(pc,d2.l*4),a1
	jmp	(a1)
L312
	dc.l	L303
	dc.l	L303
	dc.l	L303
	dc.l	L303
	dc.l	L303
	dc.l	L303
	dc.l	L303
	dc.l	L303
;      
L303
;         ctx->Stencil.Function = func;
	move.l	a0,a1
	add.l	#$DEA6,a1
	move.l	d1,(a1)
;         
	bra.b	L305
L304
;         gl_error( ctx, GL_INVALID_ENUM, "glStencilFunc" );
	move.l	#L299,-(a7)
	pea	$500.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/d3
	rts
L305
;         return;
;   maxref = (1 << STENCIL_BITS) - 1;
	move.l	#$FF,d1
;   ctx->Stencil.Ref = CLAMP( ref, 0, maxref );
	tst.l	d0
	bpl.b	L307
L306
	moveq	#0,d0
	bra.b	L311
L307
	cmp.l	d1,d0
	ble.b	L309
L308
	move.l	d1,d0
L309
L310
L311
	move.l	a0,a1
	add.l	#$DEB6,a1
	move.b	d0,(a1)
;   ctx->Stencil.ValueMask = mask;
	add.l	#$DEB7,a0
	move.b	d3,(a0)
	movem.l	(a7)+,d2/d3
	rts

L299
	dc.b	'glStencilFunc',0

	SECTION "_gl_StencilMask:0",CODE


;void gl_StencilMask( GLcontext *ctx, GLuint mask )
	XDEF	_gl_StencilMask
_gl_StencilMask
	move.l	$8(a7),d1
	move.l	4(a7),a0
L314
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d0
	cmp.l	#$1A00,d0
	beq.b	L316
L315
;      gl_error( ctx, GL_INVALID_OPERATION, "glStencilMask" );
	move.l	#L313,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	rts
L316
;   ctx->Stencil.WriteMask = (GLstencil) mask;
	add.l	#$DEB9,a0
	move.b	d1,(a0)
	rts

L313
	dc.b	'glStencilMask',0

	SECTION "_gl_StencilOp:0",CODE


;void gl_StencilOp( GLcontext *ctx, GLenum fail, GLenum zfail, GLenum
	XDEF	_gl_StencilOp
_gl_StencilOp
	movem.l	d2/d3,-(a7)
	move.l	$18(a7),d0
	move.l	$14(a7),d1
	move.l	$10(a7),d2
	move.l	$C(a7),a0
L318
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d3
	cmp.l	#$1A00,d3
	beq.b	L320
L319
;      gl_error( ctx, GL_INVALID_OPERATION, "glStencilOp" );
	move.l	#L317,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/d3
	rts
L320
;   switch (fail)
	move.l	d2,d3
	cmp.l	#$1E01,d3
	beq.b	L321
	bgt.b	L330
	cmp.l	#$150A,d3
	beq.b	L321
	bgt.b	L331
	cmp.l	#0,d3
	beq.b	L321
	bra.b	L322
L331
	cmp.l	#$1E00,d3
	beq.b	L321
	bra.b	L322
L330
	cmp.l	#$1E02,d3
	beq.b	L321
	cmp.l	#$1E03,d3
	beq.b	L321
	bra.b	L322
;      
L321
;         ctx->Stencil.FailFunc = fail;
	move.l	a0,a1
	add.l	#$DEAA,a1
	move.l	d2,(a1)
;         
	bra.b	L323
L322
;         gl_error( ctx, GL_INVALID_ENUM, "glStencilOp" );
	move.l	#L317,-(a7)
	pea	$500.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/d3
	rts
L323
;         return;
;   switch (zfail)
	move.l	d1,d2
	cmp.l	#$1E01,d2
	beq.b	L324
	bgt.b	L332
	cmp.l	#$150A,d2
	beq.b	L324
	bgt.b	L333
	cmp.l	#0,d2
	beq.b	L324
	bra.b	L325
L333
	cmp.l	#$1E00,d2
	beq.b	L324
	bra.b	L325
L332
	cmp.l	#$1E02,d2
	beq.b	L324
	cmp.l	#$1E03,d2
	beq.b	L324
	bra.b	L325
;      
L324
;         ctx->Stencil.ZFailFunc = zfail;
	move.l	a0,a1
	add.l	#$DEB2,a1
	move.l	d1,(a1)
;         
	bra.b	L326
L325
;         gl_error( ctx, GL_INVALID_ENUM, "glStencilOp" );
	move.l	#L317,-(a7)
	pea	$500.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/d3
	rts
L326
;         return;
;   switch (zpass)
	move.l	d0,d1
	cmp.l	#$1E01,d1
	beq.b	L327
	bgt.b	L334
	cmp.l	#$150A,d1
	beq.b	L327
	bgt.b	L335
	cmp.l	#0,d1
	beq.b	L327
	bra.b	L328
L335
	cmp.l	#$1E00,d1
	beq.b	L327
	bra.b	L328
L334
	cmp.l	#$1E02,d1
	beq.b	L327
	cmp.l	#$1E03,d1
	beq.b	L327
	bra.b	L328
;      
L327
;         ctx->Stencil.ZPassFunc = zpass;
	add.l	#$DEAE,a0
	move.l	d0,(a0)
;         
	bra.b	L329
L328
;         gl_error( ctx, GL_INVALID_ENUM, "glStencilOp" );
	move.l	#L317,-(a7)
	pea	$500.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/d3
	rts
L329
;         return;
	movem.l	(a7)+,d2/d3
	rts

L317
	dc.b	'glStencilOp',0

	SECTION "_apply_stencil_op_to_span:0",CODE


;static void apply_stencil_op_to_span( GLcontext *ctx,
_apply_stencil_op_to_span
	movem.l	d2-d7/a2/a3,-(a7)
	movem.l	$34(a7),d1/a1
	movem.l	$28(a7),d2/d4/d6
	move.l	$24(a7),a2
L337
;   wrtmask = ctx->Stencil.WriteMask;
	move.l	a2,a0
	add.l	#$DEA4,a0
	move.b	$15(a0),d5
;   invmask = ~ctx->Stencil.WriteMask;
	move.l	a2,a0
	add.l	#$DEA4,a0
	moveq	#0,d0
	move.b	$15(a0),d0
	not.l	d0
	move.b	d0,d3
;   ref = ctx->Stencil.Ref;
	move.l	a2,a0
	add.l	#$DEA4,a0
	move.b	$12(a0),d7
;   stencil = STENCIL_ADDRESS( x, y );
	move.l	$8FC(a2),a0
	move.l	$10(a0),a3
	move.l	$8FC(a2),a0
	move.l	4(a0),d0
	muls.l	d6,d0
	lea	0(a3,d0.l),a0
	add.l	d4,a0
;   switch (oper)
	cmp.l	#$1E01,d1
	beq	L352
	bgt.b	L410
	cmp.l	#$150A,d1
	beq	L395
	bgt.b	L411
	cmp.l	#0,d1
	beq.b	L339
	bra	L408
L411
	cmp.l	#$1E00,d1
	beq.b	L338
	bra	L408
L410
	cmp.l	#$1E02,d1
	beq	L365
	cmp.l	#$1E03,d1
	beq	L380
	bra	L408
;      
L338
;         
	bra	L409
L339
;	 if (invmask==0) 
	tst.b	d3
	bne.b	L346
L340
;	    for (i=0;
	moveq	#0,d0
	bra.b	L344
L341
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L343
L342
;		  stencil[i] = 0;
	clr.b	0(a0,d0.l)
L343
	addq.l	#1,d0
L344
	cmp.l	d2,d0
	blo.b	L341
L345
	bra.b	L351
L346
;	    for (i=0;
	moveq	#0,d0
	bra.b	L350
L347
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L349
L348
;		  stencil[i] = stencil[i] & invmask;
	moveq	#0,d1
	move.b	0(a0,d0.l),d1
	moveq	#0,d4
	move.b	d3,d4
	and.l	d4,d1
	move.b	d1,0(a0,d0.l)
L349
	addq.l	#1,d0
L350
	cmp.l	d2,d0
	blo.b	L347
L351
;	 
	bra	L409
L352
;	 if (invmask==0) 
	tst.b	d3
	bne.b	L359
L353
;	    for (i=0;
	moveq	#0,d0
	bra.b	L357
L354
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L356
L355
;                  stencil[i] = ref;
	move.b	d7,0(a0,d0.l)
L356
	addq.l	#1,d0
L357
	cmp.l	d2,d0
	blo.b	L354
L358
	bra.b	L364
L359
;	    for (i=0;
	moveq	#0,d0
	bra.b	L363
L360
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L362
L361
;		  s = stencil[i];
;		  stencil[i] = (invmask & s ) | (wrtmask & ref);
	moveq	#0,d4
	move.b	d3,d4
	moveq	#0,d1
	move.b	0(a0,d0.l),d1
	and.l	d1,d4
	moveq	#0,d1
	move.b	d5,d1
	moveq	#0,d6
	move.b	d7,d6
	and.l	d6,d1
	or.l	d1,d4
	move.b	d4,0(a0,d0.l)
L362
	addq.l	#1,d0
L363
	cmp.l	d2,d0
	blo.b	L360
L364
;	 
	bra	L409
L365
;	 if (invmask==0) 
	tst.b	d3
	bne.b	L373
L366
;	    for (i=0;
	moveq	#0,d0
	bra.b	L371
L367
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L370
L368
;		  s = stencil[i];
	move.b	0(a0,d0.l),d1
;		  if (s<0xff) 
	cmp.b	#$FF,d1
	bhs.b	L370
L369
;		     stencil[i] = s+1;
	and.l	#$FF,d1
	addq.l	#1,d1
	move.b	d1,0(a0,d0.l)
L370
	addq.l	#1,d0
L371
	cmp.l	d2,d0
	blo.b	L367
L372
	bra.b	L379
L373
;	    for (i=0;
	moveq	#0,d0
	bra.b	L378
L374
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L377
L375
;		  s = stencil[i];
	move.b	0(a0,d0.l),d1
;		  if (s<0xff) 
	cmp.b	#$FF,d1
	bhs.b	L377
L376
;		     stencil[i] = (invmask & s) | (wrtmask & (s+1));
	moveq	#0,d4
	move.b	d3,d4
	moveq	#0,d6
	move.b	d1,d6
	and.l	d6,d4
	moveq	#0,d7
	move.b	d5,d7
	and.l	#$FF,d1
	addq.l	#1,d1
	move.l	d7,d6
	and.l	d1,d6
	or.l	d6,d4
	move.b	d4,0(a0,d0.l)
L377
	addq.l	#1,d0
L378
	cmp.l	d2,d0
	blo.b	L374
L379
;	 
	bra	L409
L380
;	 if (invmask==0) 
	tst.b	d3
	bne.b	L388
L381
;	    for (i=0;
	moveq	#0,d0
	bra.b	L386
L382
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L385
L383
;		  s = stencil[i];
	move.b	0(a0,d0.l),d1
;		  if (s>0) 
	beq.b	L385
L384
;		     stencil[i] = s-1;
	and.l	#$FF,d1
	subq.l	#1,d1
	move.b	d1,0(a0,d0.l)
L385
	addq.l	#1,d0
L386
	cmp.l	d2,d0
	blo.b	L382
L387
	bra.b	L394
L388
;	    for (i=0;
	moveq	#0,d0
	bra.b	L393
L389
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L392
L390
;		  s = stencil[i];
	move.b	0(a0,d0.l),d1
;		  if (s>0) 
	beq.b	L392
L391
;		     stencil[i] = (invmask & s) | (wrtmask & (s-1));
	moveq	#0,d4
	move.b	d3,d4
	moveq	#0,d6
	move.b	d1,d6
	and.l	d6,d4
	moveq	#0,d7
	move.b	d5,d7
	and.l	#$FF,d1
	subq.l	#1,d1
	move.l	d7,d6
	and.l	d1,d6
	or.l	d6,d4
	move.b	d4,0(a0,d0.l)
L392
	addq.l	#1,d0
L393
	cmp.l	d2,d0
	blo.b	L389
L394
;	 
	bra.b	L409
L395
;	 if (invmask==0) 
	tst.b	d3
	bne.b	L402
L396
;	    for (i=0;
	moveq	#0,d0
	bra.b	L400
L397
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L399
L398
;		  s = stencil[i];
;		  stencil[i] = ~s;
	moveq	#0,d1
	move.b	0(a0,d0.l),d1
	not.l	d1
	move.b	d1,0(a0,d0.l)
L399
	addq.l	#1,d0
L400
	cmp.l	d2,d0
	blo.b	L397
L401
	bra.b	L407
L402
;	    for (i=0;
	moveq	#0,d0
	bra.b	L406
L403
;	       if (mask[i]) 
	tst.b	0(a1,d0.l)
	beq.b	L405
L404
;		  s = stencil[i];
	move.b	0(a0,d0.l),d1
;		  stencil[i] = (invmask & s) | (wrtmask & ~s);
	moveq	#0,d4
	move.b	d3,d4
	moveq	#0,d6
	move.b	d1,d6
	and.l	d6,d4
	moveq	#0,d6
	move.b	d5,d6
	and.l	#$FF,d1
	not.l	d1
	and.l	d1,d6
	or.l	d6,d4
	move.b	d4,0(a0,d0.l)
L405
	addq.l	#1,d0
L406
	cmp.l	d2,d0
	blo.b	L403
L407
;	 
	bra.b	L409
L408
;         gl_problem(ctx, "Bad stencilop in apply_stencil_op
	move.l	#L336,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
L409
	movem.l	(a7)+,d2-d7/a2/a3
	rts

L336
	dc.b	'Bad stencilop in apply_stencil_op_to_span',0

	SECTION "_gl_stencil_span:0",CODE


;GLint gl_stencil_span( GLcontext *ctx,
	XDEF	_gl_stencil_span
_gl_stencil_span
L490	EQU	-$64E
	link	a5,#L490
	movem.l	d2-d7/a2/a3,-(a7)
	movem.l	$C(a5),d2/d7
	move.l	$18(a5),a0
	move.l	$8(a5),a1
L413
;   GLint allfail = 0;
	moveq	#0,d5
;   stencil = STENCIL_ADDRESS( x, y );
	move.l	$8FC(a1),a2
	move.l	$10(a2),a3
	move.l	$8FC(a1),a2
	move.l	4(a2),d0
	muls.l	$14(a5),d0
	lea	0(a3,d0.l),a2
	move.l	d7,d0
	add.l	d0,a2
;   switch (ctx->Stencil.Function)
	move.l	#$DEA4,d0
	add.l	a1,d0
	move.l	d0,a3
	move.l	2(a3),d0
	sub.l	#$200,d0
	cmp.l	#7,d0
	bhi	L485
	move.l	L491(pc,d0.l*4),a3
	jmp	(a3)
L491
	dc.l	L414
	dc.l	L421
	dc.l	L461
	dc.l	L431
	dc.l	L441
	dc.l	L471
	dc.l	L451
	dc.l	L481
;      
L414
;         for (i=0;
	moveq	#0,d0
	bra.b	L419
L415
;	    if (mask[i]) 
	tst.b	0(a0,d0.l)
	beq.b	L417
L416
;	       mask[i] = 0;
	clr.b	0(a0,d0.l)
;	       fail[i] = 1;
	lea	-$640(a5),a2
	move.b	#1,0(a2,d0.l)
	bra.b	L418
L417
;	       fail[i] = 0;
	lea	-$640(a5),a2
	clr.b	0(a2,d0.l)
L418
	addq.l	#1,d0
L419
	cmp.l	d2,d0
	blo.b	L415
L420
;	 allfail = 1;
	moveq	#1,d5
;	 
	bra	L486
L421
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a1,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a1,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra.b	L429
L422
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L427
L423
;	       s = stencil[i] & ctx->Stencil.ValueMask;
	move.l	d0,d1
	add.l	a2,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a1,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r < s) 
	cmp.b	d1,d3
	bhs.b	L425
L424
;		  fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L426
L425
;		  fail[i] = 1;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	clr.b	(a3)
L426
	bra.b	L428
L427
;	       fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L428
	addq.l	#1,d0
L429
	cmp.l	d2,d0
	blo.b	L422
L430
;	 
	bra	L486
L431
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a1,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a1,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra.b	L439
L432
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L437
L433
;	       s = stencil[i] & ctx->Stencil.ValueMask;
	move.l	d0,d1
	add.l	a2,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a1,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r <= s) 
	cmp.b	d1,d3
	bhi.b	L435
L434
;		  fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L436
L435
;		  fail[i] = 1;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	clr.b	(a3)
L436
	bra.b	L438
L437
;	       fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L438
	addq.l	#1,d0
L439
	cmp.l	d2,d0
	blo.b	L432
L440
;	 
	bra	L486
L441
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a1,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a1,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra.b	L449
L442
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L447
L443
;	       s = stencil[i] & ctx->Stencil.ValueMask;
	move.l	d0,d1
	add.l	a2,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a1,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r > s) 
	cmp.b	d1,d3
	bls.b	L445
L444
;		  fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L446
L445
;		  fail[i] = 1;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	clr.b	(a3)
L446
	bra.b	L448
L447
;	       fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L448
	addq.l	#1,d0
L449
	cmp.l	d2,d0
	blo.b	L442
L450
;	 
	bra	L486
L451
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a1,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a1,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra.b	L459
L452
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L457
L453
;	       s = stencil[i] & ctx->Stencil.ValueMask;
	move.l	d0,d1
	add.l	a2,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a1,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r >= s) 
	cmp.b	d1,d3
	blo.b	L455
L454
;		  fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L456
L455
;		  fail[i] = 1;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	clr.b	(a3)
L456
	bra.b	L458
L457
;	       fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L458
	addq.l	#1,d0
L459
	cmp.l	d2,d0
	blo.b	L452
L460
;	 
	bra	L486
L461
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a1,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a1,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra.b	L469
L462
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L467
L463
;	       s = stencil[i] & ctx->Stencil.ValueMask;
	move.l	d0,d1
	add.l	a2,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a1,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r == s) 
	cmp.b	d1,d3
	bne.b	L465
L464
;		  fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L466
L465
;		  fail[i] = 1;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	clr.b	(a3)
L466
	bra.b	L468
L467
;	       fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L468
	addq.l	#1,d0
L469
	cmp.l	d2,d0
	blo.b	L462
L470
;	 
	bra	L486
L471
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a1,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a1,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra.b	L479
L472
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L477
L473
;	       s = stencil[i] & ctx->Stencil.ValueMask;
	move.l	d0,d1
	add.l	a2,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a1,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r != s) 
	cmp.b	d1,d3
	beq.b	L475
L474
;		  fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L476
L475
;		  fail[i] = 1;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a0,d1
	move.l	d1,a3
	clr.b	(a3)
L476
	bra.b	L478
L477
;	       fail[i] = 0;
	lea	-$640(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L478
	addq.l	#1,d0
L479
	cmp.l	d2,d0
	blo.b	L472
L480
;	 
	bra.b	L486
L481
;	 for (i=0;
	moveq	#0,d0
	bra.b	L483
L482
;	    fail[i] = 0;
	lea	-$640(a5),a0
	clr.b	0(a0,d0.l)
	addq.l	#1,d0
L483
	cmp.l	d2,d0
	blo.b	L482
L484
;	 
	bra.b	L486
L485
;         gl_problem(ctx, "Bad stencil func in gl_stencil_sp
	move.l	#L412,-(a7)
	move.l	a1,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	movem.l	(a7)+,d2-d7/a2/a3
	unlk	a5
	rts
L486
;         return 
;   apply_stencil_op_to_span( ctx, n, x, y, ctx->Stencil.FailFunc,
	pea	-$640(a5)
	move.l	a1,a0
	add.l	#$DEA4,a0
	move.l	6(a0),-(a7)
	move.l	$14(a5),-(a7)
	move.l	d7,-(a7)
	move.l	d2,-(a7)
	move.l	a1,-(a7)
	jsr	_apply_stencil_op_to_span
	add.w	#$18,a7
	tst.l	d5
	beq.b	L488
L487
	moveq	#0,d0
	bra.b	L489
L488
	moveq	#1,d0
L489
	movem.l	(a7)+,d2-d7/a2/a3
	unlk	a5
	rts

L412
	dc.b	'Bad stencil func in gl_stencil_span',0

	SECTION "_gl_depth_stencil_span:0",CODE


;void gl_depth_stencil_span( GLcontext *ctx,
	XDEF	_gl_depth_stencil_span
_gl_depth_stencil_span
L508	EQU	-$12C4
	link	a5,#L508
	movem.l	d2-d4/a2-a4,-(a7)
	movem.l	$C(a5),d2-d4/a1/a2
	move.l	$8(a5),a4
L492
;   if (ctx->Depth.Test==GL_FALSE) 
	tst.b	$22A4(a4)
	bne.b	L494
L493
;      apply_stencil_op_to_span( ctx, n, x, y, ctx->Stencil.ZPa
	move.l	a2,-(a7)
	move.l	a4,a0
	add.l	#$DEA4,a0
	move.l	$A(a0),-(a7)
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	a4,-(a7)
	jsr	_apply_stencil_op_to_span
	add.w	#$18,a7
	bra	L507
L494
;      for (i=0;
	moveq	#0,d0
	bra.b	L496
L495
;	 passmask[i] = failmask[i] = 0;
	lea	-$C80(a5),a0
	clr.b	0(a0,d0.l)
	lea	-$640(a5),a0
	clr.b	0(a0,d0.l)
;         oldmask[i] = mask[i];
	lea	-$12C0(a5),a0
	move.b	0(a2,d0.l),0(a0,d0.l)
	addq.l	#1,d0
L496
	cmp.l	d2,d0
	blo.b	L495
L497
;      if (ctx->Driver.DepthTestSpan)
	tst.l	$988(a4)
	beq.b	L499
L498
;         (*ctx->Driver.DepthTestSpan)( ctx, n, x, y, z, mas
	move.l	a2,-(a7)
	move.l	a1,-(a7)
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	a4,-(a7)
	move.l	$988(a4),a0
	jsr	(a0)
	add.w	#$18,a7
L499
;      for (i=0;
	moveq	#0,d0
	bra.b	L505
L500
;         if (oldmask[i]) 
	lea	-$12C0(a5),a0
	tst.b	0(a0,d0.l)
	beq.b	L504
L501
;            if (mask[i]) 
	tst.b	0(a2,d0.l)
	beq.b	L503
L502
;               passmask[i] = 1;
	lea	-$640(a5),a0
	move.b	#1,0(a0,d0.l)
	bra.b	L504
L503
;               failmask[i] = 1;
	lea	-$C80(a5),a0
	move.b	#1,0(a0,d0.l)
L504
	addq.l	#1,d0
L505
	cmp.l	d2,d0
	blo.b	L500
L506
;      apply_stencil_op_to_span( ctx, n, x, y, ctx->Stencil.ZFa
	pea	-$C80(a5)
	move.l	a4,a0
	add.l	#$DEA4,a0
	move.l	$E(a0),-(a7)
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	a4,-(a7)
	jsr	_apply_stencil_op_to_span
	add.w	#$18,a7
;      apply_stencil_op_to_span( ctx, n, x, y, ctx->Stencil.ZPa
	pea	-$640(a5)
	move.l	a4,a0
	add.l	#$DEA4,a0
	move.l	$A(a0),-(a7)
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	d2,-(a7)
	move.l	a4,-(a7)
	jsr	_apply_stencil_op_to_span
	add.w	#$18,a7
L507
	movem.l	(a7)+,d2-d4/a2-a4
	unlk	a5
	rts

	SECTION "_apply_stencil_op_to_pixels:0",CODE


;                  GLstencil *
_apply_stencil_op_to_pixels
L583	EQU	-$8C
	link	a5,#L583
	movem.l	d2-d7/a2-a4,-(a7)
	movem.l	$C(a5),d1/a1/a2
	movem.l	$18(a5),d3/a4
	move.l	$8(a5),a0
L510
;   wrtmask = ctx->Stencil.WriteMask;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	move.b	$15(a3),d4
;   invmask = ~ctx->Stencil.WriteMask;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$15(a3),d0
	not.l	d0
	move.b	d0,d2
;   ref = ctx->Stencil.Ref;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	move.b	$12(a3),d7
;   switch (oper)
	cmp.l	#$1E01,d3
	beq	L525
	bgt.b	L584
	cmp.l	#$150A,d3
	beq	L568
	bgt.b	L585
	cmp.l	#0,d3
	beq.b	L512
	bra	L581
L585
	cmp.l	#$1E00,d3
	beq.b	L511
	bra	L581
L584
	cmp.l	#$1E02,d3
	beq	L538
	cmp.l	#$1E03,d3
	beq	L553
	bra	L581
;      
L511
;         
	bra	L582
L512
;	 if (invmask==0) 
	tst.b	d2
	bne.b	L519
L513
;	    for (i=0;
	moveq	#0,d0
	bra.b	L517
L514
;	       if (mask[i]) 
	move.l	d0,d2
	add.l	a4,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L516
L515
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$8C(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	muls.l	(a3),d2
	add.l	-$8C(a5),d2
	move.l	d2,-$88(a5)
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a1,d2
	move.l	d2,a3
	move.l	(a3),d2
	add.l	-$88(a5),d2
;                  *sptr = 0;
	move.l	d2,a3
	clr.b	(a3)
L516
	addq.l	#1,d0
L517
	cmp.l	d1,d0
	blo.b	L514
L518
	bra.b	L524
L519
;	    for (i=0;
	moveq	#0,d0
	bra.b	L523
L520
;	       if (mask[i]) 
	move.l	d0,d3
	add.l	a4,d3
	move.l	d3,a3
	tst.b	(a3)
	beq.b	L522
L521
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$84(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d3
	move.l	d0,d4
	asl.l	#2,d4
	add.l	a2,d4
	move.l	d4,a3
	muls.l	(a3),d3
	add.l	-$84(a5),d3
	move.l	d3,-$80(a5)
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a1,d3
	move.l	d3,a3
	move.l	(a3),d3
	add.l	-$80(a5),d3
	move.l	d3,-$C(a5)
;		  *sptr = invmask & *sptr;
	moveq	#0,d3
	move.b	d2,d3
	move.l	-$C(a5),a3
	moveq	#0,d4
	move.b	(a3),d4
	and.l	d4,d3
	move.l	-$C(a5),a3
	move.b	d3,(a3)
L522
	addq.l	#1,d0
L523
	cmp.l	d1,d0
	blo.b	L520
L524
;	 
	bra	L582
L525
;	 if (invmask==0) 
	tst.b	d2
	bne.b	L532
L526
;	    for (i=0;
	moveq	#0,d0
	bra.b	L530
L527
;	       if (mask[i]) 
	move.l	d0,d2
	add.l	a4,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L529
L528
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$78(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	muls.l	(a3),d2
	add.l	-$78(a5),d2
	move.l	d2,-$74(a5)
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a1,d2
	move.l	d2,a3
	move.l	(a3),d2
	add.l	-$74(a5),d2
;                  *sptr = ref;
	move.l	d2,a3
	move.b	d7,(a3)
L529
	addq.l	#1,d0
L530
	cmp.l	d1,d0
	blo.b	L527
L531
	bra.b	L537
L532
;	    for (i=0;
	moveq	#0,d0
	bra.b	L536
L533
;	       if (mask[i]) 
	move.l	d0,d3
	add.l	a4,d3
	move.l	d3,a3
	tst.b	(a3)
	beq.b	L535
L534
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$70(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d3
	move.l	d0,d5
	asl.l	#2,d5
	add.l	a2,d5
	move.l	d5,a3
	muls.l	(a3),d3
	add.l	-$70(a5),d3
	move.l	d3,-$6C(a5)
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a1,d3
	move.l	d3,a3
	move.l	(a3),d3
	add.l	-$6C(a5),d3
	move.l	d3,-$10(a5)
;		  *sptr = (invmask & *sptr ) | (wrtmask & ref);
	moveq	#0,d3
	move.b	d2,d3
	move.l	-$10(a5),a3
	moveq	#0,d5
	move.b	(a3),d5
	and.l	d5,d3
	moveq	#0,d5
	move.b	d4,d5
	moveq	#0,d6
	move.b	d7,d6
	and.l	d6,d5
	or.l	d5,d3
	move.l	-$10(a5),a3
	move.b	d3,(a3)
L535
	addq.l	#1,d0
L536
	cmp.l	d1,d0
	blo.b	L533
L537
;	 
	bra	L582
L538
;	 if (invmask==0) 
	tst.b	d2
	bne.b	L546
L539
;	    for (i=0;
	moveq	#0,d0
	bra.b	L544
L540
;	       if (mask[i]) 
	move.l	d0,d2
	add.l	a4,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L543
L541
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$64(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	muls.l	(a3),d2
	add.l	-$64(a5),d2
	move.l	d2,-$60(a5)
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a1,d2
	move.l	d2,a3
	move.l	(a3),d2
	add.l	-$60(a5),d2
	move.l	d2,-$14(a5)
;		  if (*sptr < 0xff) 
	move.l	-$14(a5),a3
	move.b	(a3),d2
	cmp.b	#$FF,d2
	bhs.b	L543
L542
;		     *sptr = *sptr + 1;
	move.l	-$14(a5),a3
	moveq	#0,d2
	move.b	(a3),d2
	addq.l	#1,d2
	move.l	-$14(a5),a3
	move.b	d2,(a3)
L543
	addq.l	#1,d0
L544
	cmp.l	d1,d0
	blo.b	L540
L545
	bra	L552
L546
;	    for (i=0;
	moveq	#0,d0
	bra	L551
L547
;	       if (mask[i]) 
	move.l	d0,d3
	add.l	a4,d3
	move.l	d3,a3
	tst.b	(a3)
	beq.b	L550
L548
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$58(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d3
	move.l	d0,d5
	asl.l	#2,d5
	add.l	a2,d5
	move.l	d5,a3
	muls.l	(a3),d3
	add.l	-$58(a5),d3
	move.l	d3,-$54(a5)
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a1,d3
	move.l	d3,a3
	move.l	(a3),d3
	add.l	-$54(a5),d3
	move.l	d3,-$14(a5)
;		  if (*sptr<0xff) 
	move.l	-$14(a5),a3
	move.b	(a3),d3
	cmp.b	#$FF,d3
	bhs.b	L550
L549
;		     *sptr = (invmask & *sptr) | (wrtmask & (*sptr+1));
	moveq	#0,d3
	move.b	d2,d3
	move.l	-$14(a5),a3
	moveq	#0,d5
	move.b	(a3),d5
	and.l	d5,d3
	moveq	#0,d5
	move.b	d4,d5
	move.l	-$14(a5),a3
	moveq	#0,d6
	move.b	(a3),d6
	addq.l	#1,d6
	and.l	d6,d5
	or.l	d5,d3
	move.l	-$14(a5),a3
	move.b	d3,(a3)
L550
	addq.l	#1,d0
L551
	cmp.l	d1,d0
	blo.b	L547
L552
;	 
	bra	L582
L553
;	 if (invmask==0) 
	tst.b	d2
	bne.b	L561
L554
;	    for (i=0;
	moveq	#0,d0
	bra.b	L559
L555
;	       if (mask[i]) 
	move.l	d0,d2
	add.l	a4,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L558
L556
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$4C(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	muls.l	(a3),d2
	add.l	-$4C(a5),d2
	move.l	d2,-$48(a5)
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a1,d2
	move.l	d2,a3
	move.l	(a3),d2
	add.l	-$48(a5),d2
	move.l	d2,-$18(a5)
;		  if (*sptr>0) 
	move.l	-$18(a5),a3
	tst.b	(a3)
	beq.b	L558
L557
;		     *sptr = *sptr - 1;
	move.l	-$18(a5),a3
	moveq	#0,d2
	move.b	(a3),d2
	subq.l	#1,d2
	move.l	-$18(a5),a3
	move.b	d2,(a3)
L558
	addq.l	#1,d0
L559
	cmp.l	d1,d0
	blo.b	L555
L560
	bra	L567
L561
;	    for (i=0;
	moveq	#0,d0
	bra	L566
L562
;	       if (mask[i]) 
	move.l	d0,d3
	add.l	a4,d3
	move.l	d3,a3
	tst.b	(a3)
	beq.b	L565
L563
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$40(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d3
	move.l	d0,d5
	asl.l	#2,d5
	add.l	a2,d5
	move.l	d5,a3
	muls.l	(a3),d3
	add.l	-$40(a5),d3
	move.l	d3,-$3C(a5)
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a1,d3
	move.l	d3,a3
	move.l	(a3),d3
	add.l	-$3C(a5),d3
	move.l	d3,-$18(a5)
;		  if (*sptr>0) 
	move.l	-$18(a5),a3
	tst.b	(a3)
	beq.b	L565
L564
;		     *sptr = (invmask & *sptr) | (wrtmask & (*sptr-1));
	moveq	#0,d3
	move.b	d2,d3
	move.l	-$18(a5),a3
	moveq	#0,d5
	move.b	(a3),d5
	and.l	d5,d3
	moveq	#0,d5
	move.b	d4,d5
	move.l	-$18(a5),a3
	moveq	#0,d6
	move.b	(a3),d6
	subq.l	#1,d6
	and.l	d6,d5
	or.l	d5,d3
	move.l	-$18(a5),a3
	move.b	d3,(a3)
L565
	addq.l	#1,d0
L566
	cmp.l	d1,d0
	blo.b	L562
L567
;	 
	bra	L582
L568
;	 if (invmask==0) 
	tst.b	d2
	bne.b	L575
L569
;	    for (i=0;
	moveq	#0,d0
	bra.b	L573
L570
;	       if (mask[i]) 
	move.l	d0,d2
	add.l	a4,d2
	move.l	d2,a3
	tst.b	(a3)
	beq.b	L572
L571
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$34(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d2
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a2,d3
	move.l	d3,a3
	muls.l	(a3),d2
	add.l	-$34(a5),d2
	move.l	d2,-$30(a5)
	move.l	d0,d2
	asl.l	#2,d2
	add.l	a1,d2
	move.l	d2,a3
	move.l	(a3),d2
	add.l	-$30(a5),d2
	move.l	d2,-$1C(a5)
;                  *sptr = ~*sptr;
	move.l	-$1C(a5),a3
	moveq	#0,d2
	move.b	(a3),d2
	not.l	d2
	move.l	-$1C(a5),a3
	move.b	d2,(a3)
L572
	addq.l	#1,d0
L573
	cmp.l	d1,d0
	blo.b	L570
L574
	bra	L580
L575
;	    for (i=0;
	moveq	#0,d0
	bra	L579
L576
;	       if (mask[i]) 
	move.l	d0,d3
	add.l	a4,d3
	move.l	d3,a3
	tst.b	(a3)
	beq.b	L578
L577
;                  GLstencil *sptr = STENCIL_ADDRES
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$28(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d3
	move.l	d0,d5
	asl.l	#2,d5
	add.l	a2,d5
	move.l	d5,a3
	muls.l	(a3),d3
	add.l	-$28(a5),d3
	move.l	d3,-$24(a5)
	move.l	d0,d3
	asl.l	#2,d3
	add.l	a1,d3
	move.l	d3,a3
	move.l	(a3),d3
	add.l	-$24(a5),d3
	move.l	d3,-$1C(a5)
;                  *sptr = (invmask & *sptr) | (wrt
	moveq	#0,d3
	move.b	d2,d3
	move.l	-$1C(a5),a3
	moveq	#0,d5
	move.b	(a3),d5
	and.l	d5,d3
	moveq	#0,d5
	move.b	d4,d5
	move.l	-$1C(a5),a3
	moveq	#0,d6
	move.b	(a3),d6
	not.l	d6
	and.l	d6,d5
	or.l	d5,d3
	move.l	-$1C(a5),a3
	move.b	d3,(a3)
L578
	addq.l	#1,d0
L579
	cmp.l	d1,d0
	blo.b	L576
L580
;	 
	bra.b	L582
L581
;         gl_problem(ctx, "Bad stencilop in apply_stencil_op
	move.l	#L509,-(a7)
	move.l	a0,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
L582
	movem.l	(a7)+,d2-d7/a2-a4
	unlk	a5
	rts

L509
	dc.b	'Bad stencilop in apply_stencil_op_to_pixels',0

	SECTION "_gl_stencil_pixels:0",CODE


;GLint gl_stencil_pixels( GLcontext *ctx,
	XDEF	_gl_stencil_pixels
_gl_stencil_pixels
L664	EQU	-$1308
	link	a5,#L664
	movem.l	d2-d6/a2-a4,-(a7)
	movem.l	$C(a5),d2/a2/a4
	move.l	$8(a5),a0
	move.l	$18(a5),a1
L587
;   GLint allfail = 0;
	moveq	#0,d5
;   switch (ctx->Stencil.Function)
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	move.l	2(a3),d0
	sub.l	#$200,d0
	cmp.l	#7,d0
	bhi	L659
	move.l	L665(pc,d0.l*4),a3
	jmp	(a3)
L665
	dc.l	L588
	dc.l	L595
	dc.l	L635
	dc.l	L605
	dc.l	L615
	dc.l	L645
	dc.l	L625
	dc.l	L655
;      
L588
;         for (i=0;
	moveq	#0,d0
	bra.b	L593
L589
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L591
L590
;	       mask[i] = 0;
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	clr.b	(a3)
;	       fail[i] = 1;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
	bra.b	L592
L591
;	       fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L592
	addq.l	#1,d0
L593
	cmp.l	d2,d0
	blo.b	L589
L594
;	 allfail = 1;
	moveq	#1,d5
;	 
	bra	L660
L595
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a0,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra	L603
L596
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L601
L597
;               GLstencil *sptr = STENCIL_ADDRESS(x[i]
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$1308(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d1
	move.l	d0,d4
	asl.l	#2,d4
	add.l	a4,d4
	move.l	d4,a3
	muls.l	(a3),d1
	add.l	-$1308(a5),d1
	move.l	d1,-$1304(a5)
	move.l	d0,d1
	asl.l	#2,d1
	add.l	a2,d1
	move.l	d1,a3
	move.l	(a3),d1
	add.l	-$1304(a5),d1
;	       s = *sptr & ctx->Stencil.ValueMask;
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a0,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r < s) 
	cmp.b	d1,d3
	bhs.b	L599
L598
;		  fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L600
L599
;		  fail[i] = 1;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	clr.b	(a3)
L600
	bra.b	L602
L601
;	       fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L602
	addq.l	#1,d0
L603
	cmp.l	d2,d0
	blo	L596
L604
;	 
	bra	L660
L605
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a0,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra	L613
L606
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	tst.b	(a3)
	beq.b	L611
L607
;               GLstencil *sptr = STENCIL_ADDRESS(x[i]
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$1300(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d1
	move.l	d0,d4
	asl.l	#2,d4
	add.l	a4,d4
	move.l	d4,a3
	muls.l	(a3),d1
	add.l	-$1300(a5),d1
	move.l	d1,-$12FC(a5)
	move.l	d0,d1
	asl.l	#2,d1
	add.l	a2,d1
	move.l	d1,a3
	move.l	(a3),d1
	add.l	-$12FC(a5),d1
;	       s = *sptr & ctx->Stencil.ValueMask;
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a0,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r <= s) 
	cmp.b	d1,d3
	bhi.b	L609
L608
;		  fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L610
L609
;		  fail[i] = 1;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	clr.b	(a3)
L610
	bra.b	L612
L611
;	       fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L612
	addq.l	#1,d0
L613
	cmp.l	d2,d0
	blo	L606
L614
;	 
	bra	L660
L615
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a0,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra	L623
L616
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	tst.b	(a3)
	beq	L621
L617
;               GLstencil *sptr = STENCIL_ADDRESS(x[i]
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$12F8(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d1
	move.l	d0,d4
	asl.l	#2,d4
	add.l	a4,d4
	move.l	d4,a3
	muls.l	(a3),d1
	add.l	-$12F8(a5),d1
	move.l	d1,-$12F4(a5)
	move.l	d0,d1
	asl.l	#2,d1
	add.l	a2,d1
	move.l	d1,a3
	move.l	(a3),d1
	add.l	-$12F4(a5),d1
;	       s = *sptr & ctx->Stencil.ValueMask;
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a0,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r > s) 
	cmp.b	d1,d3
	bls.b	L619
L618
;		  fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L620
L619
;		  fail[i] = 1;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	clr.b	(a3)
L620
	bra.b	L622
L621
;	       fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L622
	addq.l	#1,d0
L623
	cmp.l	d2,d0
	blo	L616
L624
;	 
	bra	L660
L625
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a0,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra	L633
L626
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	tst.b	(a3)
	beq	L631
L627
;               GLstencil *sptr = STENCIL_ADDRESS(x[i]
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$12F0(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d1
	move.l	d0,d4
	asl.l	#2,d4
	add.l	a4,d4
	move.l	d4,a3
	muls.l	(a3),d1
	add.l	-$12F0(a5),d1
	move.l	d1,-$12EC(a5)
	move.l	d0,d1
	asl.l	#2,d1
	add.l	a2,d1
	move.l	d1,a3
	move.l	(a3),d1
	add.l	-$12EC(a5),d1
;	       s = *sptr & ctx->Stencil.ValueMask;
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a0,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r >= s) 
	cmp.b	d1,d3
	blo.b	L629
L628
;		  fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L630
L629
;		  fail[i] = 1;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	clr.b	(a3)
L630
	bra.b	L632
L631
;	       fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L632
	addq.l	#1,d0
L633
	cmp.l	d2,d0
	blo	L626
L634
;	 
	bra	L660
L635
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a0,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra	L643
L636
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	tst.b	(a3)
	beq	L641
L637
;               GLstencil *sptr = STENCIL_ADDRESS(x[i]
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$12E8(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d1
	move.l	d0,d4
	asl.l	#2,d4
	add.l	a4,d4
	move.l	d4,a3
	muls.l	(a3),d1
	add.l	-$12E8(a5),d1
	move.l	d1,-$12E4(a5)
	move.l	d0,d1
	asl.l	#2,d1
	add.l	a2,d1
	move.l	d1,a3
	move.l	(a3),d1
	add.l	-$12E4(a5),d1
;	       s = *sptr & ctx->Stencil.ValueMask;
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a0,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r == s) 
	cmp.b	d1,d3
	bne.b	L639
L638
;		  fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L640
L639
;		  fail[i] = 1;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	clr.b	(a3)
L640
	bra.b	L642
L641
;	       fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L642
	addq.l	#1,d0
L643
	cmp.l	d2,d0
	blo	L636
L644
;	 
	bra	L660
L645
;	 r = ctx->Stencil.Ref & ctx->Stencil.ValueMask;
	move.l	#$DEA4,d0
	add.l	a0,d0
	move.l	d0,a3
	moveq	#0,d0
	move.b	$12(a3),d0
	move.l	#$DEA4,d1
	add.l	a0,d1
	move.l	d1,a3
	moveq	#0,d1
	move.b	$13(a3),d1
	and.l	d1,d0
	move.b	d0,d3
;	 for (i=0;
	moveq	#0,d0
	bra	L653
L646
;	    if (mask[i]) 
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	tst.b	(a3)
	beq	L651
L647
;               GLstencil *sptr = STENCIL_ADDRESS(x[i]
	move.l	$8FC(a0),a3
	move.l	$10(a3),-$12E0(a5)
	move.l	$8FC(a0),a3
	move.l	4(a3),d1
	move.l	d0,d4
	asl.l	#2,d4
	add.l	a4,d4
	move.l	d4,a3
	muls.l	(a3),d1
	add.l	-$12E0(a5),d1
	move.l	d1,-$12DC(a5)
	move.l	d0,d1
	asl.l	#2,d1
	add.l	a2,d1
	move.l	d1,a3
	move.l	(a3),d1
	add.l	-$12DC(a5),d1
;	       s = *sptr & ctx->Stencil.ValueMask;
	move.l	d1,a3
	moveq	#0,d1
	move.b	(a3),d1
	move.l	#$DEA4,d4
	add.l	a0,d4
	move.l	d4,a3
	moveq	#0,d4
	move.b	$13(a3),d4
	and.l	d4,d1
;	       if (r != s) 
	cmp.b	d1,d3
	beq.b	L649
L648
;		  fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
	bra.b	L650
L649
;		  fail[i] = 1;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	move.b	#1,(a3)
;		  mask[i] = 0;
	move.l	d0,d1
	add.l	a1,d1
	move.l	d1,a3
	clr.b	(a3)
L650
	bra.b	L652
L651
;	       fail[i] = 0;
	lea	-$12C0(a5),a3
	move.l	d0,d1
	add.l	a3,d1
	move.l	d1,a3
	clr.b	(a3)
L652
	addq.l	#1,d0
L653
	cmp.l	d2,d0
	blo	L646
L654
;	 
	bra.b	L660
L655
;	 for (i=0;
	moveq	#0,d0
	bra.b	L657
L656
;	    fail[i] = 0;
	lea	-$12C0(a5),a1
	clr.b	0(a1,d0.l)
	addq.l	#1,d0
L657
	cmp.l	d2,d0
	blo.b	L656
L658
;	 
	bra.b	L660
L659
;         gl_problem(ctx, "Bad stencil func in gl_stencil_pi
	move.l	#L586,-(a7)
	move.l	a0,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	movem.l	(a7)+,d2-d6/a2-a4
	unlk	a5
	rts
L660
;         return 
;   apply_stencil_op_to_pixels( ctx, n, x, y, ctx->Stencil.FailFun
	pea	-$12C0(a5)
	move.l	a0,a1
	add.l	#$DEA4,a1
	move.l	6(a1),-(a7)
	move.l	a4,-(a7)
	move.l	a2,-(a7)
	move.l	d2,-(a7)
	move.l	a0,-(a7)
	jsr	_apply_stencil_op_to_pixels
	add.w	#$18,a7
	tst.l	d5
	beq.b	L662
L661
	moveq	#0,d0
	bra.b	L663
L662
	moveq	#1,d0
L663
	movem.l	(a7)+,d2-d6/a2-a4
	unlk	a5
	rts

L586
	dc.b	'Bad stencil func in gl_stencil_pixels',0

	SECTION "_gl_depth_stencil_pixels:0",CODE


;void gl_depth_stencil_pixels( GLcontext *ctx,
	XDEF	_gl_depth_stencil_pixels
_gl_depth_stencil_pixels
L682	EQU	-$3844
	link	a5,#L682
	movem.l	d2/a2-a4,-(a7)
	move.l	$C(a5),d2
	move.l	$18(a5),a1
	move.l	$1C(a5),a2
	move.l	$8(a5),a4
L666
;   if (ctx->Depth.Test==GL_FALSE) 
	tst.b	$22A4(a4)
	bne.b	L668
L667
;      apply_stencil_op_to_pixels( ctx, n, x, y, ctx->Stencil.Z
	move.l	a2,-(a7)
	move.l	a4,a0
	add.l	#$DEA4,a0
	move.l	$A(a0),-(a7)
	move.l	$14(a5),-(a7)
	move.l	$10(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a4,-(a7)
	jsr	_apply_stencil_op_to_pixels
	add.w	#$18,a7
	bra	L681
L668
;      for (i=0;
	moveq	#0,d0
	bra.b	L670
L669
;	 passmask[i] = failmask[i] = 0;
	lea	-$2580(a5),a0
	clr.b	0(a0,d0.l)
	lea	-$12C0(a5),a0
	clr.b	0(a0,d0.l)
;         oldmask[i] = mask[i];
	lea	-$3840(a5),a0
	move.b	0(a2,d0.l),0(a0,d0.l)
	addq.l	#1,d0
L670
	cmp.l	d2,d0
	blo.b	L669
L671
;      if (ctx->Driver.DepthTestPixels)
	tst.l	$98C(a4)
	beq.b	L673
L672
;         (*ctx->Driver.DepthTestPixels)( ctx, n, x, y, z, m
	move.l	a2,-(a7)
	move.l	a1,-(a7)
	move.l	$14(a5),-(a7)
	move.l	$10(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a4,-(a7)
	move.l	$98C(a4),a0
	jsr	(a0)
	add.w	#$18,a7
L673
;      for (i=0;
	moveq	#0,d0
	bra.b	L679
L674
;         if (oldmask[i]) 
	lea	-$3840(a5),a0
	tst.b	0(a0,d0.l)
	beq.b	L678
L675
;            if (mask[i]) 
	tst.b	0(a2,d0.l)
	beq.b	L677
L676
;               passmask[i] = 1;
	lea	-$12C0(a5),a0
	move.b	#1,0(a0,d0.l)
	bra.b	L678
L677
;               failmask[i] = 1;
	lea	-$2580(a5),a0
	move.b	#1,0(a0,d0.l)
L678
	addq.l	#1,d0
L679
	cmp.l	d2,d0
	blo.b	L674
L680
;      apply_stencil_op_to_pixels( ctx, n, x, y,
	pea	-$2580(a5)
	move.l	a4,a0
	add.l	#$DEA4,a0
	move.l	$E(a0),-(a7)
	move.l	$14(a5),-(a7)
	move.l	$10(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a4,-(a7)
	jsr	_apply_stencil_op_to_pixels
	add.w	#$18,a7
;      apply_stencil_op_to_pixels( ctx, n, x, y,
	pea	-$12C0(a5)
	move.l	a4,a0
	add.l	#$DEA4,a0
	move.l	$A(a0),-(a7)
	move.l	$14(a5),-(a7)
	move.l	$10(a5),-(a7)
	move.l	d2,-(a7)
	move.l	a4,-(a7)
	jsr	_apply_stencil_op_to_pixels
	add.w	#$18,a7
L681
	movem.l	(a7)+,d2/a2-a4
	unlk	a5
	rts

	SECTION "_gl_read_stencil_span:0",CODE


;void gl_read_stencil_span( GLcontext *ctx,
	XDEF	_gl_read_stencil_span
_gl_read_stencil_span
	movem.l	d2/d3/a2,-(a7)
	movem.l	$14(a7),d1-d3/a2
	move.l	$10(a7),a0
L683
;   if (ctx->Buffer->Stencil) 
	move.l	$8FC(a0),a1
	tst.l	$10(a1)
	beq.b	L685
L684
;      s = STENCIL_ADDRESS( x, y );
	move.l	$8FC(a0),a1
	move.l	$8FC(a0),a0
	move.l	4(a0),d0
	muls.l	d3,d0
	move.l	$10(a1),a1
	lea	0(a1,d0.l),a0
;      MEMCPY( stencil,
	move.l	d1,-(a7)
	pea	0(a0,d2.l)
	move.l	a2,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
L685
	movem.l	(a7)+,d2/d3/a2
	rts

	SECTION "_gl_write_stencil_span:0",CODE


;void gl_write_stencil_span( GLcontext *ctx,
	XDEF	_gl_write_stencil_span
_gl_write_stencil_span
	movem.l	d2/d3/a2,-(a7)
	movem.l	$14(a7),d1-d3/a2
	move.l	$10(a7),a0
L686
;   if (ctx->Buffer->Stencil) 
	move.l	$8FC(a0),a1
	tst.l	$10(a1)
	beq.b	L688
L687
;      s = STENCIL_ADDRESS( x, y );
	move.l	$8FC(a0),a1
	move.l	$8FC(a0),a0
	move.l	4(a0),d0
	muls.l	d3,d0
	move.l	$10(a1),a1
	lea	0(a1,d0.l),a0
;      MEMCPY( s, stenc
	move.l	d1,-(a7)
	move.l	a2,-(a7)
	pea	0(a0,d2.l)
	jsr	_q_memcpy
	add.w	#$C,a7
L688
	movem.l	(a7)+,d2/d3/a2
	rts

	SECTION "_gl_alloc_stencil_buffer:0",CODE


;void gl_alloc_stencil_buffer( GLcontext *ctx )
	XDEF	_gl_alloc_stencil_buffer
_gl_alloc_stencil_buffer
	movem.l	d2/a2,-(a7)
	move.l	$C(a7),a2
L690
;   GLuint buffersize = ctx->Buffer->Width * ctx->Buffer->Height;
	move.l	$8FC(a2),a0
	move.l	4(a0),d2
	move.l	$8FC(a2),a0
	muls.l	$8(a0),d2
;   if (ctx->Buffer->Stencil) 
	move.l	$8FC(a2),a0
	tst.l	$10(a0)
	beq.b	L692
L691
;      free(ctx->Buffer->Stencil);
	move.l	$8FC(a2),a0
	move.l	$10(a0),-(a7)
	jsr	_free
	addq.w	#4,a7
;      ctx->Buffer->Stencil = NULL;
	move.l	$8FC(a2),a0
	clr.l	$10(a0)
L692
;   ctx->Buffer->Stencil = (GLstencil *) malloc(buffersize * sizeo
	move.l	d2,-(a7)
	jsr	_malloc
	addq.w	#4,a7
	move.l	$8FC(a2),a0
	move.l	d0,$10(a0)
;   if (!ctx->Buffer->Stencil) 
	move.l	$8FC(a2),a0
	tst.l	$10(a0)
	bne.b	L694
L693
;      ctx->Stencil.Enabled = GL_FALSE;
	move.l	a2,a0
	add.l	#$DEA4,a0
	clr.b	(a0)
;      gl_error( ctx, GL_OUT_OF_MEMORY, "gl_alloc_stencil_buffe
	move.l	#L689,-(a7)
	pea	$505.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L694
	movem.l	(a7)+,d2/a2
	rts

L689
	dc.b	'gl_alloc_stencil_buffer',0

	SECTION "_gl_clear_stencil_buffer:0",CODE


;void gl_clear_stencil_buffer( GLcontext *ctx )
	XDEF	_gl_clear_stencil_buffer
_gl_clear_stencil_buffer
	movem.l	d2/d3/a2,-(a7)
	move.l	$10(a7),a2
L695
;   if (ctx->Visual->StencilBits==0 || !ctx->Buffer->Stencil) 
	move.l	$8F8(a2),a0
	tst.l	$20(a0)
	beq.b	L697
L696
	move.l	$8FC(a2),a0
	tst.l	$10(a0)
	bne.b	L698
L697
	movem.l	(a7)+,d2/d3/a2
	rts
L698
;   if (ctx->Scissor.Enabled) 
	move.l	a2,a0
	add.l	#$DE92,a0
	tst.b	(a0)
	beq.b	L703
L699
;      GLint width = ctx->Buffer->Xmax - ctx->Buffer->Xmin + 1;
	move.l	$8FC(a2),a0
	move.l	$28(a0),d3
	move.l	$8FC(a2),a0
	sub.l	$24(a0),d3
	addq.l	#1,d3
;      for (y=ctx->Buffer->Ymin;
	move.l	$8FC(a2),a0
	move.l	$2C(a0),d2
	bra.b	L701
L700
;         GLstencil *ptr = STENCIL_ADDRESS( ctx->Buffer->Xmi
	move.l	$8FC(a2),a0
	move.l	$10(a0),a1
	move.l	$8FC(a2),a0
	move.l	4(a0),d0
	muls.l	d2,d0
	add.l	d0,a1
	move.l	$8FC(a2),a0
	move.l	$24(a0),d0
	add.l	d0,a1
;ptr, ctx->Stencil
	move.l	d3,-(a7)
	move.l	a2,a0
	add.l	#$DEA4,a0
	moveq	#0,d0
	move.b	$14(a0),d0
	move.l	d0,-(a7)
	move.l	a1,-(a7)
	jsr	_q_memset
	add.w	#$C,a7
	addq.l	#1,d2
L701
	move.l	$8FC(a2),a0
	cmp.l	$30(a0),d2
	ble.b	L700
L702
	bra.b	L704
L703
;r->Width * ctx->B
	move.l	$8FC(a2),a0
	move.l	4(a0),d0
	move.l	$8FC(a2),a0
	muls.l	$8(a0),d0
	move.l	d0,-(a7)
	move.l	a2,a0
	add.l	#$DEA4,a0
	moveq	#0,d0
	move.b	$14(a0),d0
	move.l	d0,-(a7)
	move.l	$8FC(a2),a0
	move.l	$10(a0),-(a7)
	jsr	_q_memset
	add.w	#$C,a7
L704
	movem.l	(a7)+,d2/d3/a2
	rts

	END
