
; Storm C Compiler
; TEMP:Mesa_2_5/amiga_stormc/src/gl/ADisp_Cyb.c
	mc68030
	mc68881
	XREF	_FreeCMap
	XREF	_AllocCMap
	XREF	_printf
	XREF	_malloc
	XREF	_free
	XREF	_DisposeTransTable
	XREF	_CreateTransTable
	XREF	_FindNearestPen
	XREF	_EvalPen_D
	XREF	_EvalPen
	XREF	_CC
	XREF	_std__in
	XREF	_std__out
	XREF	_std__err
	XREF	_pal
	XREF	_SysBase
	XREF	_IntuitionBase
	XREF	_GfxBase
	XREF	_UtilityBase
	XREF	_LastError
	XREF	_CyberGfxBase

	SECTION "_afinish:0",CODE


;static void afinish( void )
_afinish
L440
;static void afinish( void )
	rts

	SECTION "_aflush:0",CODE

	rts

;static void aflush( void )
_aflush
L441
;static void aflush( void )
	rts

	SECTION "_aclear_index:0",CODE


;static void aclear_index( GLcontext *ctx, GLuint index )
_aclear_index
	move.l	$8(a7),d0
	move.l	4(a7),a0
L442
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;   amesa->clearpixel = amesa->penconv[index];
	lea	$88(a1),a0
	add.l	d0,a0
	move.b	(a0),d0
	and.l	#$FF,d0
	move.l	d0,$18(a1)
	rts

	SECTION "_aclear_color:0",CODE


;static void aclear_color( GLcontext *ctx,
_aclear_color
	movem.l	d2/a2,-(a7)
	move.b	$10(a7),d0
	move.b	$12(a7),d1
	move.b	$14(a7),d2
	move.l	$C(a7),a0
L443
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a2
;   amesa->clearpixel=EvalPen(amesa,r,g,b);
	move.b	d2,-(a7)
	move.b	d1,-(a7)
	move.b	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_EvalPen
	add.w	#$A,a7
	move.l	d0,$18(a2)
	movem.l	(a7)+,d2/a2
	rts

	SECTION "_aclear:0",CODE


;e 0x%x\n",&(amesa
_aclear
L452	EQU	-$50
	link	a5,#L452
	movem.l	d2-d5/a6,-(a7)
	move.l	$16(a5),d2
	move.b	$C(a5),d3
	move.l	$12(a5),d4
	move.l	$E(a5),d5
L445
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$8(a5),a0
	move.l	$974(a0),-4(a5)
;	SetAPen(amesa->rp,amesa->clearpixel);
	move.l	-4(a5),a0
	move.l	$18(a0),d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;	if(all)
	tst.b	d3
	beq	L448
L446
;		RectFill(amesa->rp,FIXx(ctx->Viewport.X),FIXy(ctx->Viewport.Y)-c
	move.l	-4(a5),a0
	move.l	$74(a0),d3
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d3
	move.l	$8(a5),a1
	move.l	a1,a0
	add.l	#$DCA8,a0
	lea	(a0),a0
	move.l	4(a0),d0
	sub.l	d0,d3
	move.l	-4(a5),a0
	move.l	$60(a0),d2
	move.l	$8(a5),a1
	move.l	a1,a0
	add.l	#$DCA8,a0
	lea	(a0),a0
	move.l	(a0),d0
	add.l	d0,d2
	move.l	$8(a5),a1
	move.l	a1,a0
	add.l	#$DCA8,a0
	lea	(a0),a0
	move.l	$8(a0),d0
	add.l	d0,d2
	subq.l	#1,d2
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$8(a5),a1
	move.l	a1,a0
	add.l	#$DCA8,a0
	lea	(a0),a0
	move.l	4(a0),d0
	sub.l	d0,d1
	move.l	$8(a5),a1
	move.l	a1,a0
	add.l	#$DCA8,a0
	lea	(a0),a0
	move.l	$C(a0),d0
	sub.l	d0,d1
	addq.l	#1,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$8(a5),a1
	move.l	a1,a0
	add.l	#$DCA8,a0
	lea	(a0),a0
	move.l	(a0),d4
	add.l	d4,d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_GfxBase,a6
	jsr	-$132(a6)
;		if (amesa->visual->rgb_flag)
L447
	bra.b	L451
L448
;		if(amesa->rp!=0)
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	cmp.w	#0,a0
	beq.b	L450
L449
;			RectFill(amesa->rp,FIXx(x),FIXy(y)-height,width,FIXy(y));
	move.l	-4(a5),a0
	move.l	$74(a0),d3
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d3
	sub.l	d4,d3
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	sub.l	d4,d1
	sub.l	$1A(a5),d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d5,d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_GfxBase,a6
	jsr	-$132(a6)
	bra.b	L451
L450
;			printf("Serius error amesa->rp=0 detected in aclear() in file 
	move.l	#L444,-(a7)
	jsr	_printf
	addq.w	#4,a7
L451
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

L444
	dc.b	'Serius error amesa->rp=0 detected in aclear() in file amigamesa.'
	dc.b	'c',$A,0

	SECTION "_aclear_db:0",CODE


;static void aclear_db(GLcontext *ctx, GLboolean all, GLint x, GLint 
_aclear_db
L468	EQU	-$14
	link	a5,#L468
	movem.l	d2-d6,-(a7)
	movem.l	$12(a5),d1/d2
	move.b	$C(a5),d4
	move.l	$8(a5),a0
L453
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;	register UBYTE col=amesa->clearpixel;
	move.l	$18(a1),d0
	move.b	d0,d3
;	if(all)
	tst.b	d4
	beq.b	L461
L454
;		x1=0;
;		y1=0;
;		x2=amesa->RealWidth;
	move.l	$70(a1),d1
;		y2=amesa->RealHeight;
	move.l	$74(a1),d4
;		db=amesa->BackArray;
	move.l	$30(a1),a0
;		for(y1=0;
	moveq	#0,d2
	bra.b	L459
L455
;			for(x1=0;
	moveq	#0,d0
	bra.b	L457
L456
;				*db=col;
	move.b	d3,(a0)
;				db++;
	addq.w	#1,a0
	addq.l	#1,d0
L457
	cmp.l	d1,d0
	blt.b	L456
L458
	addq.l	#1,d2
L459
	cmp.l	d4,d2
	blt.b	L455
L460
	bra.b	L467
L461
;		x2=FIXx(x+width);
	move.l	$60(a1),d4
	move.l	$E(a5),d0
	add.l	d2,d0
	add.l	d0,d4
;		y2=FIXy(y);
	move.l	$74(a1),d5
	move.l	$64(a1),d0
	sub.l	d0,d5
	sub.l	d1,d5
;		for(y1=FIXy(y)-height;
	move.l	$74(a1),d2
	move.l	$64(a1),d0
	sub.l	d0,d2
	sub.l	d1,d2
	sub.l	$1A(a5),d2
	bra.b	L466
L462
;			for(x1=FIXx(x);
	move.l	$60(a1),d1
	add.l	$E(a5),d1
	bra.b	L464
L463
;				amesa->BackArray[x1+y1*amesa->RealWidth]=col;
	move.l	$30(a1),a0
	move.l	$70(a1),d0
	muls.l	d2,d0
	add.l	d1,d0
	add.l	d0,a0
	move.b	d3,(a0)
	addq.l	#1,d1
L464
	cmp.l	d4,d1
	blt.b	L463
L465
	addq.l	#1,d2
L466
	cmp.l	d5,d2
	blt.b	L462
L467
	movem.l	(a7)+,d2-d6
	unlk	a5
	rts

	SECTION "_aset_index:0",CODE


;static void aset_index( GLcontext *ctx,GLuint index )
_aset_index
	move.l	$8(a7),d0
	move.l	4(a7),a0
L469
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;	amesa->pixel = amesa->penconv[index];
	lea	$88(a1),a0
	add.l	d0,a0
	move.b	(a0),d0
	and.l	#$FF,d0
	move.l	d0,$14(a1)
	rts

	SECTION "_aset_color:0",CODE


;static void aset_color( GLcontext *ctx,GLubyte r, GLubyte g, GLubyte
_aset_color
	movem.l	d2/a2,-(a7)
	move.b	$10(a7),d0
	move.b	$12(a7),d1
	move.b	$14(a7),d2
	move.l	$C(a7),a0
L470
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a2
;	amesa->pixel = EvalPen(amesa,r,g,b);
	move.b	d2,-(a7)
	move.b	d1,-(a7)
	move.b	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_EvalPen
	add.w	#$A,a7
	move.l	d0,$14(a2)
	movem.l	(a7)+,d2/a2
	rts

	SECTION "_aindex_mask:0",CODE


;static GLboolean aindex_mask( GLcontext *ctx,GLuint mask )
_aindex_mask
	move.l	$8(a7),d0
	move.l	4(a7),a0
L471
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;	amesa->rp->Mask = (UBYTE) mask;
	move.l	$34(a0),a0
	move.b	d0,$18(a0)
	moveq	#1,d0
	rts

	SECTION "_acolor_mask:0",CODE


;static GLboolean acolor_mask( GLcontext *ctx,GLboolean rmask, GLbool
_acolor_mask
L472
	moveq	#0,d0
	rts

	SECTION "_afast_points_function:0",CODE


;static void afast_points_function(GLcontext *ctx,GLuint first, GLuin
_afast_points_function
L482	EQU	-$50
	link	a5,#L482
	movem.l	d2-d5/a6,-(a7)
	movem.l	$C(a5),d2/d5
	move.l	$8(a5),a0
L473
;	AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	struct vertex_buffer *VB = ctx->VB;
	add.l	#$E120,a0
	move.l	(a0),-$8(a5)
;	register struct RastPort * rp=amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$48(a5)
;		if (VB->MonoColor) 
	move.l	-$8(a5),a0
	add.l	#$D0D0,a0
	move.b	(a0),d0
	beq	L478
L474
;		SetAPen(rp,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d0
	move.l	-$48(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;		for (i=first;
	move.l	d2,d4
	bra.b	L476
L475
;				x =FIXx((GLint) (VB->Win[i][0]));
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d4,d1
	muls.l	#$C,d1
	add.l	d1,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d1
	add.l	d1,d0
;				y =FIXy((GLint) (VB->Win[i][1]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d2
	sub.l	d2,d1
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d4,d2
	muls.l	#$C,d2
	add.l	d2,a0
	addq.w	#4,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d2
	sub.l	d2,d1
;			WritePixel(rp,x,y);
	move.l	-$48(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
	addq.l	#1,d4
L476
	cmp.l	d5,d4
	bls.b	L475
L477
	bra	L481
L478
;		for (i=first;
	move.l	d2,d4
	bra	L480
L479
;				x =FIXx((GLint) (VB->Win[i][0]));
	move.l	-4(a5),a0
	move.l	$60(a0),d2
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d4,d0
	muls.l	#$C,d0
	add.l	d0,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d0
	add.l	d0,d2
;				y =FIXy((GLint) (VB->Win[i][1]));
	move.l	-4(a5),a0
	move.l	$74(a0),d3
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d3
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d4,d0
	muls.l	#$C,d0
	add.l	d0,a0
	addq.w	#4,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d0
	sub.l	d0,d3
;				col=*VB->Color[i];
	move.l	-$8(a5),a1
	add.l	#$9D80,a1
	move.l	(a1),a0
	lea	0(a0,d4.l*4),a0
	move.b	(a0),d0
	and.l	#$FF,d0
;				SetAPen(rp,amesa->penconv[col]);
	move.l	-4(a5),a1
	lea	$88(a1),a0
	add.l	d0,a0
	move.b	(a0),d0
	and.l	#$FF,d0
	move.l	-$48(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;			WritePixel(rp,x,y);
	move.l	d2,d0
	move.l	d3,d1
	move.l	-$48(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
	addq.l	#1,d4
L480
	cmp.l	d5,d4
	bls	L479
L481
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_achoose_points_function:0",CODE


;static points_func achoose_points_function( GLcontext *ctx )
_achoose_points_function
	move.l	4(a7),a0
L483
;   if (ctx->Point.Size==1.0 && !ctx->Point.SmoothFlag && ctx->Ras
	move.l	a0,a1
	add.l	#$D674,a1
	lea	(a1),a1
	fmove.s	4(a1),fp0
	fcmp.d	#$.3FF00000.00000000,fp0
	fbne.b	L488
L484
	move.l	a0,a1
	add.l	#$D674,a1
	lea	(a1),a1
	move.b	(a1),d0
	bne.b	L488
L485
	move.l	a0,a1
	add.l	#$E0F6,a1
	move.l	(a1),d0
	bne.b	L488
L486
	add.l	#$D764,a0
	lea	(a0),a0
	move.l	(a0),d0
	bne.b	L488
L487
	move.l	#_afast_points_function,d0
	rts
L488
	moveq	#0,d0
	rts

	SECTION "_achoose_points_function_db:0",CODE


;static points_func achoose_points_function_db( GLcontext *ctx )
_achoose_points_function_db
L489
	moveq	#0,d0
	rts

	SECTION "_afast_line_function:0",CODE


;static void afast_line_function( GLcontext *ctx,GLuint v0, GLuint v1
_afast_line_function
L494	EQU	-$54
	link	a5,#L494
	movem.l	d2-d5/a2/a6,-(a7)
	move.l	$14(a5),d1
	move.l	$C(a5),d3
	move.l	$10(a5),d5
	move.l	$8(a5),a0
L490
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;   struct vertex_buffer *VB = ctx->VB;
	add.l	#$E120,a0
	move.l	(a0),-$8(a5)
;	if (VB->MonoColor)
	move.l	-$8(a5),a0
	add.l	#$D0D0,a0
	move.b	(a0),d0
	beq.b	L492
L491
;		SetAPen(amesa->rp,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
	bra.b	L493
L492
;		SetAPen(amesa->rp,amesa->penconv[*VB->Color[pv]]);
	move.l	-4(a5),a0
	lea	$88(a0),a1
	move.l	-$8(a5),a2
	add.l	#$9D80,a2
	move.l	(a2),a0
	lea	0(a0,d1.l*4),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	add.l	d0,a1
	move.b	(a1),d0
	and.l	#$FF,d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
L493
;	x0 = FIXx((int) (VB->Win[v0][0]));
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d3,d1
	muls.l	#$C,d1
	add.l	d1,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d1
	add.l	d1,d0
;	y0 = FIXy((int) (VB->Win[v0][1]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d2
	sub.l	d2,d1
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	muls.l	#$C,d3
	add.l	d3,a0
	addq.w	#4,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d2
	sub.l	d2,d1
;	x1 = FIXx((int) (VB->Win[v1][0]));
	move.l	-4(a5),a0
	move.l	$60(a0),d2
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d5,d3
	muls.l	#$C,d3
	add.l	d3,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d3
	add.l	d3,d2
;	y1 = FIXy((int) (VB->Win[v1][1]));
	move.l	-4(a5),a0
	move.l	$74(a0),d3
	move.l	-4(a5),a0
	move.l	$64(a0),d4
	sub.l	d4,d3
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	muls.l	#$C,d5
	add.l	d5,a0
	addq.w	#4,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d4
	sub.l	d4,d3
;	Move(amesa->rp,x0,y0);
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_GfxBase,a6
	jsr	-$F0(a6)
;	Draw(amesa->rp,x1,y1);
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	d2,d0
	move.l	d3,d1
	move.l	_GfxBase,a6
	jsr	-$F6(a6)
	movem.l	(a7)+,d2-d5/a2/a6
	unlk	a5
	rts

	SECTION "_achoose_line_function:0",CODE


;static line_func achoose_line_function( GLcontext *ctx)
_achoose_line_function
	move.l	4(a7),a0
L495
;   if (ctx->Line.Width==1.0 && !ctx->Line.SmoothFlag && !ctx->Lin
	move.l	a0,a1
	add.l	#$ADFC,a1
	lea	(a1),a1
	fmove.s	$8(a1),fp0
	fcmp.d	#$.3FF00000.00000000,fp0
	fbne.b	L502
L496
	move.l	a0,a1
	add.l	#$ADFC,a1
	lea	(a1),a1
	move.b	(a1),d0
	bne.b	L502
L497
	move.l	a0,a1
	add.l	#$ADFC,a1
	lea	(a1),a1
	move.b	1(a1),d0
	bne.b	L502
L498
	lea	$1FA8(a0),a1
	add.l	#$8E18,a1
	move.l	(a1),d0
	cmp.l	#$1D00,d0
	bne.b	L502
L499
	move.l	a0,a1
	add.l	#$E0F6,a1
	move.l	(a1),d0
	bne.b	L502
L500
	add.l	#$D764,a0
	lea	(a0),a0
	move.l	(a0),d0
	bne.b	L502
L501
	move.l	#_afast_line_function,d0
	rts
L502
	moveq	#0,d0
	rts

	SECTION "_achoose_line_function_db:0",CODE


;static line_func achoose_line_function_db( GLcontext *ctx)
_achoose_line_function_db
L503
	moveq	#0,d0
	rts

	SECTION "_afast_polygon_function:0",CODE


;static void afast_polygon_function( GLcontext *ctx,GLuint n, GLuint 
_afast_polygon_function
L511	EQU	-$48
	link	a5,#L511
	movem.l	d2-d5/a2/a6,-(a7)
	move.l	$14(a5),d1
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L504
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	struct vertex_buffer *VB = ctx->VB;
	add.l	#$E120,a0
	move.l	(a0),-$8(a5)
;	struct RastPort * rp=amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$14(a5)
;	if (VB->MonoColor)
	move.l	-$8(a5),a0
	add.l	#$D0D0,a0
	move.b	(a0),d0
	beq.b	L506
L505
;		SetAPen(rp,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d0
	move.l	-$14(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
	bra.b	L507
L506
;		SetAPen(rp,amesa->penconv[*VB->Color[pv]]);
	move.l	-4(a5),a0
	lea	$88(a0),a1
	move.l	-$8(a5),a2
	add.l	#$9D80,a2
	move.l	(a2),a0
	lea	0(a0,d1.l*4),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	add.l	d0,a1
	move.b	(a1),d0
	and.l	#$FF,d0
	move.l	-$14(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
L507
;	AreaMove(rp, FIXx((int) VB->Win[0][0]), FIXy( (int) VB->Win[0][1]))
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	addq.w	#4,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d2
	add.l	d2,d0
	move.l	-$14(a5),a1
	move.l	_GfxBase,a6
	jsr	-$FC(a6)
;	for (i=1;
	moveq	#1,d2
	bra.b	L509
L508
;		j=vlist[i];
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d3
;		AreaDraw(rp, FIXx((int) VB->Win[j][0]), FIXy( (int) VB->Win[j][1
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d3,d0
	muls.l	#$C,d0
	add.l	d0,a0
	addq.w	#4,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	muls.l	#$C,d3
	add.l	d3,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d3
	add.l	d3,d0
	move.l	-$14(a5),a1
	move.l	_GfxBase,a6
	jsr	-$102(a6)
	addq.l	#1,d2
L509
	cmp.l	d4,d2
	blo.b	L508
L510
;	AreaEnd(rp );
	move.l	-$14(a5),a1
	move.l	_GfxBase,a6
	jsr	-$108(a6)
	movem.l	(a7)+,d2-d5/a2/a6
	unlk	a5
	rts

	SECTION "_awrite_index_span_db:0",CODE


;/*printf("awrite_index_span(%d,%d,%d)\n",n,x,y);
_awrite_index_span_db
L523	EQU	-$8
	link	a5,#L523
	movem.l	d2-d5/a2-a4,-(a7)
	movem.l	$C(a5),d2/d4/d5/a3
	move.l	$8(a5),a0
L512
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a2
;	register unsigned long * penconv=(unsigned long *)amesa->penconv;
	lea	$88(a2),a1
;db=amesa->BackArray+FIXxy(x,y);
	move.l	$30(a2),a0
	move.l	$70(a2),d1
	move.l	$74(a2),d0
	move.l	$64(a2),d3
	sub.l	d3,d0
	sub.l	d5,d0
	muls.l	d0,d1
	move.l	$60(a2),d0
	add.l	d4,d0
	add.l	d0,d1
	add.l	d1,a0
;	if(mask)
	tst.l	$1C(a5)
	beq.b	L519
L513
;		for (i=0;
	moveq	#0,d0
	bra.b	L517
L514
;			if(mask[i])
	move.l	$1C(a5),a4
	lea	0(a4,d0.l),a2
	move.b	(a2),d1
	beq.b	L516
L515
;				*db=penconv[index[i]];
	lea	0(a3,d0.l*4),a2
	move.l	(a2),d1
	lea	0(a1,d1.l*4),a2
	move.l	(a2),d1
	move.b	d1,(a0)
L516
;				db++;
	addq.w	#1,a0
	addq.l	#1,d0
L517
	cmp.l	d2,d0
	blo.b	L514
L518
	bra.b	L522
L519
;		for (i=0;
	moveq	#0,d0
	bra.b	L521
L520
;			*db=penconv[index[i]];
	lea	0(a3,d0.l*4),a2
	move.l	(a2),d1
	lea	0(a1,d1.l*4),a2
	move.l	(a2),d1
	move.b	d1,(a0)
;			db++;
	addq.w	#1,a0
	addq.l	#1,d0
L521
	cmp.l	d2,d0
	blo.b	L520
L522
	movem.l	(a7)+,d2-d5/a2-a4
	unlk	a5
	rts

	SECTION "_awrite_color_span_db:0",CODE


;static void awrite_color_span_db(GLcontext *ctx, GLuint n, GLint x, 
_awrite_color_span_db
L535	EQU	-$20
	link	a5,#L535
	movem.l	d2-d5/a2,-(a7)
	movem.l	$C(a5),d3-d5
	move.l	$8(a5),a0
L524
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;db=amesa->BackArray+FIXxy(x,y);
	move.l	-4(a5),a0
	move.l	$30(a0),a2
	move.l	-4(a5),a0
	move.l	$70(a0),d1
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d2
	sub.l	d2,d0
	sub.l	d5,d0
	muls.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d4,d0
	add.l	d0,d1
	add.l	d1,a2
;	if (mask)
	tst.l	$28(a5)
	beq.b	L531
L525
;		for (i=0;
	moveq	#0,d2
	bra.b	L529
L526
;			if (mask[i])
	move.l	$28(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq.b	L528
L527
;				*db=EvalPen(amesa,red[i],green[i],blue[i]);
	move.l	$20(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_EvalPen
	add.w	#$A,a7
	move.b	d0,(a2)
L528
;			db++;
	addq.w	#1,a2
	addq.l	#1,d2
L529
	cmp.l	d3,d2
	blo.b	L526
L530
	bra.b	L534
L531
;		for (i=0;
	moveq	#0,d2
	bra.b	L533
L532
;			*db=EvalPen(amesa,red[i],green[i],blue[i]);
	move.l	$20(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_EvalPen
	add.w	#$A,a7
	move.b	d0,(a2)
;			db++;
	addq.w	#1,a2
	addq.l	#1,d2
L533
	cmp.l	d3,d2
	blo.b	L532
L534
	movem.l	(a7)+,d2-d5/a2
	unlk	a5
	rts

	SECTION "_awrite_monoindex_span_db:0",CODE


;static void awrite_monoindex_span_db( GLcontext *ctx,GLuint n, GLint
_awrite_monoindex_span_db
	movem.l	d2-d5/a2/a3,-(a7)
	movem.l	$20(a7),d2/d4/d5/a3
	move.l	$1C(a7),a0
L536
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;db=amesa->BackArray+FIXxy(x,y);
	move.l	$30(a1),a0
	move.l	$70(a1),d1
	move.l	$74(a1),d0
	move.l	$64(a1),d3
	sub.l	d3,d0
	sub.l	d5,d0
	muls.l	d0,d1
	move.l	$60(a1),d0
	add.l	d4,d0
	add.l	d0,d1
	add.l	d1,a0
;if(mask)
	cmp.w	#0,a3
	beq.b	L543
L537
;	for (i=0;
	moveq	#0,d0
	bra.b	L541
L538
;		if (mask[i])
	lea	0(a3,d0.l),a2
	move.b	(a2),d1
	beq.b	L540
L539
;			*db=amesa->pixel;
	move.l	$14(a1),d1
	move.b	d1,(a0)
L540
;		db++;
	addq.w	#1,a0
	addq.l	#1,d0
L541
	cmp.l	d2,d0
	blo.b	L538
L542
	bra.b	L546
L543
;	for (i=0;
	moveq	#0,d0
	bra.b	L545
L544
;		*db=amesa->pixel;
	move.l	$14(a1),d1
	move.b	d1,(a0)
;		db++;
	addq.w	#1,a0
	addq.l	#1,d0
L545
	cmp.l	d2,d0
	blo.b	L544
L546
	movem.l	(a7)+,d2-d5/a2/a3
	rts

	SECTION "_awrite_index_span:0",CODE


;static void awrite_index_span(GLcontext *ctx, GLuint n, GLint x, GLi
_awrite_index_span
L566	EQU	-$50
	link	a5,#L566
	movem.l	d2-d5/a2/a6,-(a7)
	movem.l	$10(a5),d4/d5
	move.l	$8(a5),a0
L547
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	UBYTE *penconv = amesa->penconv;
	move.l	#$88,d0
	add.l	-4(a5),d0
	move.l	d0,-$14(a5)
;	register struct RastPort * rp=amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$48(a5)
;	y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	d5,d0
	move.l	d0,d5
;	x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,d4
;	if((dp = amesa->imageline) && amesa->temprp)
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq	L560
L548
	move.l	-4(a5),a2
	move.l	$40(a2),a1
	cmp.w	#0,a1
	beq	L560
L549
;		ant=0;
	moveq	#0,d2
;			for (i=0;
	moveq	#0,d3
	bra.b	L556
L550
;				if (mask[i]) 
	move.l	$1C(a5),a2
	lea	0(a2,d3.l),a1
	move.b	(a1),d0
	beq.b	L552
L551
;					ant++;
	addq.l	#1,d2
;				*dp = penconv[index[i]];
	move.l	$18(a5),a2
	lea	0(a2,d3.l*4),a1
	move.l	(a1),d0
	move.l	-$14(a5),a2
	lea	0(a2,d0.l),a1
	move.b	(a1),d0
	move.b	d0,(a0)
;				dp++;
	addq.w	#1,a0
	bra.b	L555
L552
;				if(ant)
	tst.l	d2
	beq.b	L554
L553
;					WritePixelLine8(rp,x,y,ant,amesa->imageline,amesa->temprp);
	move.l	-4(a5),a0
	move.l	$40(a0),a1
	move.l	-4(a5),a0
	move.l	$488(a0),a6
	move.l	d4,d0
	move.l	d5,d1
	move.l	-$48(a5),a0
	move.l	a6,a2
	move.l	_GfxBase,a6
	jsr	-$306(a6)
;				dp=amesa->imageline;
	move.l	-4(a5),a1
	move.l	$488(a1),a0
;				x = x + ant;
	add.l	d2,d4
;				ant=0;
	moveq	#0,d2
L554
;			    x++;
	addq.l	#1,d4
L555
	addq.l	#1,d3
L556
	cmp.l	$C(a5),d3
	blo.b	L550
L557
;		if(ant)
	tst.l	d2
	beq.b	L559
L558
;			WritePixelLine8(rp,x,y,ant,amesa->imageline,amesa->temprp);
	move.l	-4(a5),a0
	move.l	$40(a0),a1
	move.l	-4(a5),a0
	move.l	$488(a0),a6
	move.l	d4,d0
	move.l	d5,d1
	move.l	-$48(a5),a0
	move.l	a6,a2
	move.l	_GfxBase,a6
	jsr	-$306(a6)
L559
	bra.b	L565
L560
;			for (i=0;
	moveq	#0,d3
	bra.b	L564
L561
;				if (mask[i]) 
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	beq.b	L563
L562
;				SetAPen(rp,penconv[index[i]]);
	move.l	$18(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d0
	move.l	-$14(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	move.l	-$48(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;				WritePixel(rp,x,y);
	move.l	d4,d0
	move.l	d5,d1
	move.l	-$48(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
L563
	addq.l	#1,d3
	addq.l	#1,d4
L564
	cmp.l	$C(a5),d3
	blo.b	L561
L565
	movem.l	(a7)+,d2-d5/a2/a6
	unlk	a5
	rts

	SECTION "_awrite_color_span:0",CODE


;static void awrite_color_span( GLcontext *ctx,GLuint n, GLint x, GLi
_awrite_color_span
L597	EQU	-$58
	link	a5,#L597
	movem.l	d2-d5/a2/a6,-(a7)
	move.l	$10(a5),d4
	move.l	$8(a5),a0
L567
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	int xd = x;
	move.l	d4,d5
;	int yd = y;
	move.l	$14(a5),-$18(a5)
;	register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$54(a5)
;	y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	$14(a5),d0
	move.l	d0,$14(a5)
;	x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,d4
;	if((dp = amesa->imageline) && amesa->temprp)
	move.l	-4(a5),a0
	move.l	$488(a0),a6
	cmp.w	#0,a6
	beq	L586
L568
	move.l	-4(a5),a1
	move.l	$40(a1),a0
	cmp.w	#0,a0
	beq	L586
L569
;		if (mask)
	tst.l	$28(a5)
	beq	L581
L570
;			ant=0;
	moveq	#0,d2
;			for (i=0;
	moveq	#0,d3
	bra	L577
L571
;				xd++;
	addq.l	#1,d5
;				if (mask[i])
	move.l	$28(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	beq.b	L573
L572
;					ant++;
	addq.l	#1,d2
;					*dp = EvalPen_D(amesa,red[i],green[i],blue[i],xd,yd);
	move.l	-$18(a5),-(a7)
	move.l	d5,-(a7)
	move.l	$20(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_EvalPen_D
	add.w	#$12,a7
	move.b	d0,(a6)
;					dp++;
	addq.w	#1,a6
	bra.b	L576
L573
;					if(ant)
	tst.l	d2
	beq.b	L575
L574
;						WritePixelLine8(rp,x,y,ant,amesa->imageline,amesa->tempr
	move.l	-4(a5),a0
	move.l	$40(a0),a1
	move.l	-4(a5),a0
	move.l	$488(a0),a6
	move.l	d4,d0
	move.l	$14(a5),d1
	move.l	-$54(a5),a0
	move.l	a6,a2
	move.l	_GfxBase,a6
	jsr	-$306(a6)
;						dp=amesa->imageline;
	move.l	-4(a5),a0
	move.l	$488(a0),a6
;						x=x+ant;
	add.l	d2,d4
;						ant=0;
	moveq	#0,d2
L575
;					x++;
	addq.l	#1,d4
L576
	addq.l	#1,d3
L577
	cmp.l	$C(a5),d3
	blo	L571
L578
;			if(ant)
	tst.l	d2
	beq.b	L580
L579
;				WritePixelLine8(rp,x,y,ant,amesa->imageline,amesa->temprp);
	move.l	-4(a5),a0
	move.l	$40(a0),a1
	move.l	-4(a5),a0
	move.l	$488(a0),a6
	move.l	d4,d0
	move.l	$14(a5),d1
	move.l	-$54(a5),a0
	move.l	a6,a2
	move.l	_GfxBase,a6
	jsr	-$306(a6)
L580
	bra.b	L585
L581
;			for (i=0;
	moveq	#0,d3
	bra.b	L583
L582
;				xd++;
	addq.l	#1,d5
;				*dp = EvalPen_D(amesa,red[i],green[i],blue[i],xd,yd);
	move.l	-$18(a5),-(a7)
	move.l	d5,-(a7)
	move.l	$20(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_EvalPen_D
	add.w	#$12,a7
	move.b	d0,(a6)
;				dp++;
	addq.w	#1,a6
	addq.l	#1,d3
L583
	cmp.l	$C(a5),d3
	blo.b	L582
L584
;			WritePixelLine8(rp,x,y,n,amesa->imageline,amesa->temprp);
	move.l	-4(a5),a0
	move.l	$40(a0),a1
	move.l	-4(a5),a0
	move.l	$488(a0),a6
	move.l	d4,d0
	move.l	$14(a5),d1
	move.l	$C(a5),d2
	move.l	-$54(a5),a0
	move.l	a6,a2
	move.l	_GfxBase,a6
	jsr	-$306(a6)
L585
	bra	L596
L586
;		if (mask)
	tst.l	$28(a5)
	beq	L593
L587
;			for (i=0;
	moveq	#0,d3
	bra.b	L591
L588
;				xd++;
	addq.l	#1,d5
;				if (mask[i])
	move.l	$28(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	beq.b	L590
L589
;					SetAPen(rp,EvalPen_D(amesa,red[i],green[i],blue[i],xd,yd));
	move.l	-$18(a5),-(a7)
	move.l	d5,-(a7)
	move.l	$20(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_EvalPen_D
	add.w	#$12,a7
	move.l	-$54(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;					WritePixel(rp,x,y);
	move.l	d4,d0
	move.l	$14(a5),d1
	move.l	-$54(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
L590
	addq.l	#1,d3
	addq.l	#1,d4
L591
	cmp.l	$C(a5),d3
	blo.b	L588
L592
	bra.b	L596
L593
;			for (i=0;
	moveq	#0,d3
	bra.b	L595
L594
;				xd++;
	addq.l	#1,d5
;				SetAPen(rp,EvalPen_D(amesa,red[i],green[i],blue[i],xd,yd));
	move.l	-$18(a5),-(a7)
	move.l	d5,-(a7)
	move.l	$20(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_EvalPen_D
	add.w	#$12,a7
	move.l	-$54(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;				WritePixel(rp,x,y);
	move.l	d4,d0
	move.l	$14(a5),d1
	move.l	-$54(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
	addq.l	#1,d3
	addq.l	#1,d4
L595
	cmp.l	$C(a5),d3
	blo.b	L594
L596
	movem.l	(a7)+,d2-d5/a2/a6
	unlk	a5
	rts

	SECTION "_awrite_monoindex_span:0",CODE


;static void awrite_monoindex_span(GLcontext *ctx,GLuint n,GLint x,GL
_awrite_monoindex_span
L611	EQU	-$28
	link	a5,#L611
	movem.l	d2-d5/a6,-(a7)
	movem.l	$10(a5),d3/d5
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L598
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	d5,d0
	move.l	d0,d5
;	x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,d3
;	SetAPen(amesa->rp,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;	i=0;
	moveq	#0,d2
;	while(i<n)
	bra.b	L609
L599
;		while(!mask[i] && i<n)
	bra.b	L601
L600
;			i++;
	addq.l	#1,d2
;x++;
	addq.l	#1,d3
L601
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	bne.b	L603
L602
	cmp.l	d4,d2
	blo.b	L600
L603
;		if(i<n)
	cmp.l	d4,d2
	bhs.b	L609
L604
;			Move(amesa->rp,x,y);
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	d3,d0
	move.l	d5,d1
	move.l	_GfxBase,a6
	jsr	-$F0(a6)
;			while(mask[i] && i<n)
	bra.b	L606
L605
;				i++;
	addq.l	#1,d2
;x++;
	addq.l	#1,d3
L606
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq.b	L608
L607
	cmp.l	d4,d2
	blo.b	L605
L608
;			Draw(amesa->rp,x-1,y);
	move.l	d3,d0
	subq.l	#1,d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	d5,d1
	move.l	_GfxBase,a6
	jsr	-$F6(a6)
L609
	cmp.l	d4,d2
	blo.b	L599
L610
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_awrite_monocolor_span:0",CODE


;static void awrite_monocolor_span( GLcontext *ctx,GLuint n, GLint x,
_awrite_monocolor_span
L625	EQU	-$10
	link	a5,#L625
	movem.l	d2-d5/a6,-(a7)
	movem.l	$10(a5),d3/d5
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L612
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;	register struct RastPort * rp = amesa->rp;
	move.l	$34(a0),-$10(a5)
;	y=FIXy(y);
	move.l	$74(a0),d0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	d5,d0
	move.l	d0,d5
;	x=FIXx(x);
	move.l	$60(a0),d0
	add.l	d0,d3
;	SetAPen(rp,amesa->pixel);
	move.l	$14(a0),d0
	move.l	-$10(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;	i=0;
	moveq	#0,d2
;	while(i<n)
	bra.b	L623
L613
;		while(!mask[i] && i<n)
	bra.b	L615
L614
;			i++;
	addq.l	#1,d2
;			x++;
	addq.l	#1,d3
L615
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	bne.b	L617
L616
	cmp.l	d4,d2
	blo.b	L614
L617
;		if(i<n)
	cmp.l	d4,d2
	bhs.b	L623
L618
;			Move(rp,x,y);
	move.l	d3,d0
	move.l	d5,d1
	move.l	-$10(a5),a1
	move.l	_GfxBase,a6
	jsr	-$F0(a6)
;			while(mask[i] && i<n)
	bra.b	L620
L619
;				i++;
	addq.l	#1,d2
;				x++;
	addq.l	#1,d3
L620
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq.b	L622
L621
	cmp.l	d4,d2
	blo.b	L619
L622
;			Draw(rp,x-1,y);
	move.l	d3,d0
	subq.l	#1,d0
	move.l	d5,d1
	move.l	-$10(a5),a1
	move.l	_GfxBase,a6
	jsr	-$F6(a6)
L623
	cmp.l	d4,d2
	blo.b	L613
L624
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_aread_index_span:0",CODE


;static void aread_index_span( GLcontext *ctx,GLuint n, GLint x, GLin
_aread_index_span
L636	EQU	-$38
	link	a5,#L636
	movem.l	d2-d5/a2/a6,-(a7)
	movem.l	$C(a5),d2/d4/d5
	move.l	$8(a5),a0
L626
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	d5,d0
	move.l	d0,d5
;	x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,d4
;	if(amesa->temprp && amesa->imageline) 
	move.l	-4(a5),a1
	move.l	$40(a1),a0
	cmp.w	#0,a0
	beq.b	L632
L627
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq.b	L632
L628
;		ReadPixelLine8(amesa->rp,x,y,n,amesa->imageline,amesa->temprp);
	move.l	-4(a5),a0
	move.l	$40(a0),a1
	move.l	-4(a5),a0
	move.l	$488(a0),a6
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	d4,d0
	move.l	d5,d1
	move.l	a6,a2
	move.l	_GfxBase,a6
	jsr	-$300(a6)
;		for(i=0;
	moveq	#0,d3
	bra.b	L630
L629
;			index[i]=amesa->penconvinv[amesa->imageline[i]];
	move.l	-4(a5),a0
	lea	$188(a0),a1
	move.l	-4(a5),a2
	move.l	$488(a2),a0
	add.l	d3,a0
	move.b	(a0),d0
	and.l	#$FF,d0
	add.l	d0,a1
	move.b	(a1),d0
	and.l	#$FF,d0
	move.l	$18(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	d0,(a0)
	addq.l	#1,d3
L630
	cmp.l	d2,d3
	blo.b	L629
L631
	bra.b	L635
L632
;		for (i=0;
	moveq	#0,d3
	bra.b	L634
L633
;			index[i] = amesa->penconvinv[ReadPixel(amesa->rp,x,y)];
	move.l	#$188,d0
	add.l	-4(a5),d0
	move.l	d0,-$10(a5)
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	d4,d0
	move.l	d5,d1
	move.l	_GfxBase,a6
	jsr	-$13E(a6)
	add.l	d0,-$10(a5)
	move.l	-$10(a5),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	move.l	$18(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	d0,(a0)
	addq.l	#1,d3
	addq.l	#1,d4
L634
	cmp.l	d2,d3
	blo.b	L633
L635
	movem.l	(a7)+,d2-d5/a2/a6
	unlk	a5
	rts

	SECTION "_aread_color_span:0",CODE


;static void aread_color_span( GLcontext *ctx,GLuint n, GLint x, GLin
_aread_color_span
L647	EQU	-$50
	link	a5,#L647
	movem.l	d2-d5/a2/a6,-(a7)
	movem.l	$C(a5),d2/d4/d5
	move.l	$8(a5),a0
L637
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	struct ColorMap * cm=amesa->Screen->ViewPort.ColorMap;
	move.l	-4(a5),a1
	move.l	$38(a1),a0
	add.w	#$2C,a0
	move.l	4(a0),-$1C(a5)
;	y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	d5,d0
	move.l	d0,d5
;	x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,d4
;	if(amesa->imageline && amesa->temprp) 
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq	L643
L638
	move.l	-4(a5),a1
	move.l	$40(a1),a0
	cmp.w	#0,a0
	beq	L643
L639
;		ReadPixelLine8(amesa->rp,x,y,n,amesa->imageline,amesa->temprp);
	move.l	-4(a5),a0
	move.l	$40(a0),a1
	move.l	-4(a5),a0
	move.l	$488(a0),a6
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	d4,d0
	move.l	d5,d1
	move.l	a6,a2
	move.l	_GfxBase,a6
	jsr	-$300(a6)
;		for(i=0;
	moveq	#0,d3
	bra.b	L641
L640
;			GetRGB32(cm,amesa->imageline[i],1,ColTab);
	lea	-$18(a5),a1
	move.l	-4(a5),a2
	move.l	$488(a2),a0
	add.l	d3,a0
	move.b	(a0),d0
	and.l	#$FF,d0
	moveq	#1,d1
	move.l	-$1C(a5),a0
	move.l	_GfxBase,a6
	jsr	-$384(a6)
;			red[i]  = ColTab[0]>>24;
	lea	-$18(a5),a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	d0,(a0)
;			green[i] = ColTab[1]>>24;
	lea	-$18(a5),a0
	addq.w	#4,a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	d0,(a0)
;			blue[i] = ColTab[2]>>24;
	lea	-$18(a5),a0
	addq.w	#$8,a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$20(a5),a1
	lea	0(a1,d3.l),a0
	move.b	d0,(a0)
;			alpha[i]=255;
	move.l	$24(a5),a1
	lea	0(a1,d3.l),a0
	move.b	#$FF,(a0)
	addq.l	#1,d3
L641
	cmp.l	d2,d3
	blo.b	L640
L642
	bra	L646
L643
;		for (i=0;
	moveq	#0,d3
	bra	L645
L644
;			col=ReadPixel(amesa->rp,x,y);
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	d4,d0
	move.l	d5,d1
	move.l	_GfxBase,a6
	jsr	-$13E(a6)
;			GetRGB32(cm,col,1,ColTab);
	lea	-$18(a5),a1
	moveq	#1,d1
	move.l	-$1C(a5),a0
	move.l	_GfxBase,a6
	jsr	-$384(a6)
;			red[i]  = ColTab[0]>>24;
	lea	-$18(a5),a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	d0,(a0)
;			green[i] = ColTab[1]>>24;
	lea	-$18(a5),a0
	addq.w	#4,a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	d0,(a0)
;			blue[i] = ColTab[2]>>24;
	lea	-$18(a5),a0
	addq.w	#$8,a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$20(a5),a1
	lea	0(a1,d3.l),a0
	move.b	d0,(a0)
;			alpha[i]=255;
	move.l	$24(a5),a1
	lea	0(a1,d3.l),a0
	move.b	#$FF,(a0)
	addq.l	#1,d3
	addq.l	#1,d4
L645
	cmp.l	d2,d3
	blo	L644
L646
	movem.l	(a7)+,d2-d5/a2/a6
	unlk	a5
	rts

	SECTION "_awrite_index_pixels_db:0",CODE


;static void awrite_index_pixels_db( GLcontext *ctx,GLuint n, const G
_awrite_index_pixels_db
L654	EQU	-$8
	link	a5,#L654
	movem.l	d2-d5/a2-a4,-(a7)
	movem.l	$C(a5),d5/a3
	move.l	$8(a5),a0
L648
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;	for (i=0;
	moveq	#0,d0
	bra.b	L652
L649
;		if (mask[i])
	move.l	$1C(a5),a2
	lea	0(a2,d0.l),a1
	move.b	(a1),d1
	beq.b	L651
L650
;			amesa->BackArray[FIXxy(x[i],y[i])]=amesa->penconv[index[i]];
	lea	$88(a0),a1
	move.l	$18(a5),a4
	lea	0(a4,d0.l*4),a2
	move.l	(a2),d1
	add.l	d1,a1
	move.b	(a1),d4
	move.l	$30(a0),a1
	move.l	$70(a0),d2
	move.l	$74(a0),d1
	move.l	$64(a0),d3
	sub.l	d3,d1
	move.l	$14(a5),a4
	lea	0(a4,d0.l*4),a2
	move.l	(a2),d3
	sub.l	d3,d1
	muls.l	d1,d2
	move.l	$60(a0),d1
	lea	0(a3,d0.l*4),a2
	move.l	(a2),d3
	add.l	d3,d1
	add.l	d1,d2
	add.l	d2,a1
	move.b	d4,(a1)
L651
	addq.l	#1,d0
L652
	cmp.l	d5,d0
	blo.b	L649
L653
	movem.l	(a7)+,d2-d5/a2-a4
	unlk	a5
	rts

	SECTION "_awrite_monoindex_pixels_db:0",CODE


;static void awrite_monoindex_pixels_db( GLcontext *ctx,GLuint n,
_awrite_monoindex_pixels_db
L661	EQU	-$8
	link	a5,#L661
	movem.l	d2-d5/a2-a4,-(a7)
	movem.l	$C(a5),d5/a3
	move.l	$8(a5),a0
L655
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;	for (i=0;
	moveq	#0,d0
	bra.b	L659
L656
;		if (mask[i])
	move.l	$18(a5),a2
	lea	0(a2,d0.l),a1
	move.b	(a1),d1
	beq.b	L658
L657
;			amesa->BackArray[FIXxy(x[i],y[i])]=amesa->pixel;
	move.l	$14(a0),d1
	move.b	d1,d4
	move.l	$30(a0),a1
	move.l	$70(a0),d2
	move.l	$74(a0),d1
	move.l	$64(a0),d3
	sub.l	d3,d1
	move.l	$14(a5),a4
	lea	0(a4,d0.l*4),a2
	move.l	(a2),d3
	sub.l	d3,d1
	muls.l	d1,d2
	move.l	$60(a0),d1
	lea	0(a3,d0.l*4),a2
	move.l	(a2),d3
	add.l	d3,d1
	add.l	d1,d2
	add.l	d2,a1
	move.b	d4,(a1)
L658
	addq.l	#1,d0
L659
	cmp.l	d5,d0
	blo.b	L656
L660
	movem.l	(a7)+,d2-d5/a2-a4
	unlk	a5
	rts

	SECTION "_awrite_color_pixels_db:0",CODE


;/*        write pixel x[i], y[i] using curren
_awrite_color_pixels_db
L668	EQU	-$8
	link	a5,#L668
	movem.l	d2-d5/a2/a3,-(a7)
	move.l	$C(a5),d5
	move.l	$8(a5),a0
L662
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a2
;	for (i=0;
	moveq	#0,d2
	bra.b	L666
L663
;		if (mask[i])
	move.l	$28(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq.b	L665
L664
;			amesa->BackArray[FIXxy(x[i],y[i])]=EvalPen(amesa,r[i],g[i],b[i
	move.l	$20(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	a2,-(a7)
	jsr	_EvalPen
	add.w	#$A,a7
	move.l	$30(a2),a0
	move.l	$70(a2),d3
	move.l	$74(a2),d1
	move.l	$64(a2),d4
	sub.l	d4,d1
	move.l	$14(a5),a3
	lea	0(a3,d2.l*4),a1
	move.l	(a1),d4
	sub.l	d4,d1
	muls.l	d1,d3
	move.l	$60(a2),d1
	move.l	$10(a5),a3
	lea	0(a3,d2.l*4),a1
	move.l	(a1),d4
	add.l	d4,d1
	add.l	d1,d3
	add.l	d3,a0
	move.b	d0,(a0)
L665
	addq.l	#1,d2
L666
	cmp.l	d5,d2
	blo.b	L663
L667
	movem.l	(a7)+,d2-d5/a2/a3
	unlk	a5
	rts

	SECTION "_awrite_index_pixels:0",CODE


;static void awrite_index_pixels(GLcontext *ctx, GLuint n, const GLin
_awrite_index_pixels
L675	EQU	-$24
	link	a5,#L675
	movem.l	d2-d4/a2/a6,-(a7)
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L669
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$20(a5)
;	for (i=0;
	moveq	#0,d2
	bra.b	L673
L670
;		if (mask[i])
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq.b	L672
L671
;			SetAPen(rp,amesa->penconv[index[i]]);
	move.l	-4(a5),a1
	lea	$88(a1),a0
	move.l	$18(a5),a2
	lea	0(a2,d2.l*4),a1
	move.l	(a1),d0
	add.l	d0,a0
	move.b	(a0),d0
	and.l	#$FF,d0
	move.l	-$20(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;			WritePixel(rp,FIXx(x[i]),FIXy(y[i]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d3
	add.l	d3,d0
	move.l	-$20(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
L672
	addq.l	#1,d2
L673
	cmp.l	d4,d2
	blo	L670
L674
	movem.l	(a7)+,d2-d4/a2/a6
	unlk	a5
	rts

	SECTION "_awrite_monoindex_pixels:0",CODE


;static void awrite_monoindex_pixels(GLcontext *ctx, GLuint n,
_awrite_monoindex_pixels
L682	EQU	-$28
	link	a5,#L682
	movem.l	d2-d4/a6,-(a7)
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L676
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$24(a5)
;		SetAPen(rp,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d0
	move.l	-$24(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;	for (i=0;
	moveq	#0,d2
	bra.b	L680
L677
;		if (mask[i]) 
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq.b	L679
L678
;		WritePixel(rp,FIXx(x[i]),FIXy(y[i]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d3
	add.l	d3,d0
	move.l	-$24(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
L679
	addq.l	#1,d2
L680
	cmp.l	d4,d2
	blo.b	L677
L681
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts

	SECTION "_awrite_color_pixels:0",CODE


;static void awrite_color_pixels( GLcontext *ctx,GLuint n, const GLin
_awrite_color_pixels
L689	EQU	-$2C
	link	a5,#L689
	movem.l	d2-d5/a6,-(a7)
	move.l	$8(a5),a0
L683
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$28(a5)
;	int xd = (int)x;
	move.l	$10(a5),d3
;	int yd = (int)y;
	move.l	$14(a5),d5
;	for (i=0;
	moveq	#0,d2
	bra	L687
L684
;		xd++;
	addq.l	#1,d3
;		if (mask[i]) 
	move.l	$28(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq	L686
L685
;		SetAPen(rp,EvalPen_D(amesa,r[i],g[i],b[i],xd,yd));
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	$20(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_EvalPen_D
	add.w	#$12,a7
	move.l	-$28(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;		WritePixel(rp,FIXx(x[i]),FIXy(y[i]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d4
	add.l	d4,d0
	move.l	-$28(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
L686
	addq.l	#1,d2
L687
	cmp.l	$C(a5),d2
	blo	L684
L688
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_awrite_monocolor_pixels:0",CODE


;static void awrite_monocolor_pixels(GLcontext *ctx, GLuint n,
_awrite_monocolor_pixels
L696	EQU	-$28
	link	a5,#L696
	movem.l	d2-d4/a6,-(a7)
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L690
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$24(a5)
;		SetAPen(rp,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d0
	move.l	-$24(a5),a1
	move.l	_GfxBase,a6
	jsr	-$156(a6)
;	for (i=0;
	moveq	#0,d2
	bra.b	L694
L691
;		if (mask[i]) 
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq.b	L693
L692
;		WritePixel(rp,FIXx(x[i]),FIXy(y[i]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d3
	add.l	d3,d0
	move.l	-$24(a5),a1
	move.l	_GfxBase,a6
	jsr	-$144(a6)
L693
	addq.l	#1,d2
L694
	cmp.l	d4,d2
	blo.b	L691
L695
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts

	SECTION "_aread_index_pixels:0",CODE


;static void aread_index_pixels( GLcontext *ctx,GLuint n, const GLint
_aread_index_pixels
L703	EQU	-$24
	link	a5,#L703
	movem.l	d2-d4/a6,-(a7)
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L697
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$20(a5)
;  for (i=0;
	moveq	#0,d2
	bra.b	L701
L698
;	  if (mask[i]) 
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq.b	L700
L699
;		index[i] = ReadPixel(rp,FIXx(x[i]),FIXy(y[i]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d3
	add.l	d3,d0
	move.l	-$20(a5),a1
	move.l	_GfxBase,a6
	jsr	-$13E(a6)
	move.l	$18(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	d0,(a0)
L700
	addq.l	#1,d2
L701
	cmp.l	d4,d2
	blo.b	L698
L702
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts

	SECTION "_aread_color_pixels:0",CODE


;static void aread_color_pixels( GLcontext *ctx,GLuint n, const GLint
_aread_color_pixels
L710	EQU	-$38
	link	a5,#L710
	movem.l	d2-d4/a2/a6,-(a7)
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L704
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$34(a5)
;	for (i=0;
	moveq	#0,d2
	bra	L708
L705
;		if (mask[i])
	move.l	$28(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq	L707
L706
;			col=ReadPixel(rp,FIXx(x[i]),FIXy(y[i]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d3
	add.l	d3,d0
	move.l	-$34(a5),a1
	move.l	_GfxBase,a6
	jsr	-$13E(a6)
;			GetRGB32(amesa->Screen->ViewPort.ColorMap,col,1,ColTab);
	lea	-$18(a5),a1
	move.l	-4(a5),a2
	move.l	$38(a2),a0
	add.w	#$2C,a0
	move.l	4(a0),a0
	moveq	#1,d1
	move.l	_GfxBase,a6
	jsr	-$384(a6)
;			red[i]  = ColTab[0]>>24;
	lea	-$18(a5),a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d0,(a0)
;			green[i] = ColTab[1]>>24;
	lea	-$18(a5),a0
	addq.w	#4,a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d0,(a0)
;			blue[i] = ColTab[2]>>24;
	lea	-$18(a5),a0
	addq.w	#$8,a0
	move.l	(a0),d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$20(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d0,(a0)
;			alpha[i]=255;
	move.l	$24(a5),a1
	lea	0(a1,d2.l),a0
	move.b	#$FF,(a0)
L707
	addq.l	#1,d2
L708
	cmp.l	d4,d2
	blo	L705
L709
	movem.l	(a7)+,d2-d4/a2/a6
	unlk	a5
	rts

	SECTION "_aset_buffer:0",CODE


;static GLboolean aset_buffer( GLcontext *ctx,GLenum mode )
_aset_buffer
	move.l	$8(a7),d0
L711
;	if (mode==GL_FRONT)
	cmp.l	#$404,d0
	bne.b	L713
L712
	moveq	#1,d0
	rts
L713
;	else if (mode==GL_BACK)
	cmp.l	#$405,d0
	bne.b	L715
L714
	moveq	#1,d0
	rts
L715
	moveq	#0,d0
	rts

	SECTION "_amiga_standard_DD_pointers:0",CODE


;void amiga_standard_DD_pointers( GLcontext *ctx )
	XDEF	_amiga_standard_DD_pointers
_amiga_standard_DD_pointers
	move.l	4(a7),a0
L716
;   ctx->Driver.UpdateState = amiga_standard_DD_pointers;
	move.l	#_amiga_standard_DD_pointers,$8A4(a0)
;   ctx->Driver.ClearIndex = aclear_index;
	move.l	#_aclear_index,$8A8(a0)
;   ctx->Driver.ClearColor = aclear_color;
	move.l	#_aclear_color,$8AC(a0)
;   ctx->Driver.Clear = aclear;
	move.l	#_aclear,$8B0(a0)
;   ctx->Driver.Index = aset_index;
	move.l	#_aset_index,$8B4(a0)
;   ctx->Driver.Color = aset_color;
	move.l	#_aset_color,$8B8(a0)
;   ctx->Driver.IndexMask = aindex_mask;
	move.l	#_aindex_mask,$8FC(a0)
;   ctx->Driver.ColorMask = acolor_mask;
	move.l	#_acolor_mask,$900(a0)
;   ctx->Driver.SetBuffer = aset_buffer;
	move.l	#_aset_buffer,$8BC(a0)
;   ctx->Driver.GetBufferSize = Amiga_Standard_resize;
	move.l	#_Amiga_Standard_resize,$8C0(a0)
;   ctx->Driver.WriteColorSpan       = awrite_color_span;
	move.l	#_awrite_color_span,$8C4(a0)
;   ctx->Driver.WriteMonocolorSpan   = awrite_monocolor_span;
	move.l	#_awrite_monocolor_span,$8C8(a0)
;   ctx->Driver.WriteColorPixels     = awrite_color_pixels;
	move.l	#_awrite_color_pixels,$8CC(a0)
;   ctx->Driver.WriteMonocolorPixels = awrite_monocolor_pixels;
	move.l	#_awrite_monocolor_pixels,$8D0(a0)
;   ctx->Driver.WriteIndexSpan       = awrite_index_span;
	move.l	#_awrite_index_span,$8D4(a0)
;   ctx->Driver.WriteMonoindexSpan   = awrite_monoindex_span;
	move.l	#_awrite_monoindex_span,$8D8(a0)
;   ctx->Driver.WriteIndexPixels     = awrite_index_pixels;
	move.l	#_awrite_index_pixels,$8DC(a0)
;   ctx->Driver.WriteMonoindexPixels = awrite_monoindex_pixels;
	move.l	#_awrite_monoindex_pixels,$8E0(a0)
;   ctx->Driver.ReadIndexSpan = aread_index_span;
	move.l	#_aread_index_span,$8E4(a0)
;   ctx->Driver.ReadColorSpan = aread_color_span;
	move.l	#_aread_color_span,$8E8(a0)
;   ctx->Driver.ReadIndexPixels = aread_index_pixels;
	move.l	#_aread_index_pixels,$8EC(a0)
;   ctx->Driver.ReadColorPixels = aread_color_pixels;
	move.l	#_aread_color_pixels,$8F0(a0)
	rts

	SECTION "_amiga_Faster_DD_pointers:0",CODE


;void amiga_Faster_DD_pointers( GLcontext *ctx )
	XDEF	_amiga_Faster_DD_pointers
_amiga_Faster_DD_pointers
	move.l	4(a7),a0
L717
;   ctx->Driver.UpdateState = amiga_Faster_DD_pointers;
	move.l	#_amiga_Faster_DD_pointers,$8A4(a0)
;   ctx->Driver.ClearIndex = aclear_index;
	move.l	#_aclear_index,$8A8(a0)
;   ctx->Driver.ClearColor = aclear_color;
	move.l	#_aclear_color,$8AC(a0)
;   ctx->Driver.Clear = aclear_db;
	move.l	#_aclear_db,$8B0(a0)
;   ctx->Driver.Index = aset_index;
	move.l	#_aset_index,$8B4(a0)
;   ctx->Driver.Color = aset_color;
	move.l	#_aset_color,$8B8(a0)
;   ctx->Driver.IndexMask = aindex_mask;
	move.l	#_aindex_mask,$8FC(a0)
;   ctx->Driver.ColorMask = acolor_mask;
	move.l	#_acolor_mask,$900(a0)
;   ctx->Driver.SetBuffer = aset_buffer;
	move.l	#_aset_buffer,$8BC(a0)
;   ctx->Driver.GetBufferSize = Amiga_Standard_resize_db;
	move.l	#_Amiga_Standard_resize_db,$8C0(a0)
;   ctx->Driver.WriteColorSpan       = awrite_color_span_db;
	move.l	#_awrite_color_span_db,$8C4(a0)
;   ctx->Driver.WriteMonocolorSpan   = awrite_monoindex_span_db;
	move.l	#_awrite_monoindex_span_db,$8C8(a0)
;   ctx->Driver.WriteColorPixels     = awrite_color_pixels_db;
	move.l	#_awrite_color_pixels_db,$8CC(a0)
;   ctx->Driver.WriteMonocolorPixels = awrite_monoindex_pixels_db;
	move.l	#_awrite_monoindex_pixels_db,$8D0(a0)
;   ctx->Driver.WriteIndexSpan       = awrite_index_span_db;
	move.l	#_awrite_index_span_db,$8D4(a0)
;   ctx->Driver.WriteMonoindexSpan   = awrite_monoindex_span_db;
	move.l	#_awrite_monoindex_span_db,$8D8(a0)
;   ctx->Driver.WriteIndexPixels     = awrite_index_pixels_db;
	move.l	#_awrite_index_pixels_db,$8DC(a0)
;   ctx->Driver.WriteMonoindexPixels = awrite_monoindex_pixels_db;
	move.l	#_awrite_monoindex_pixels_db,$8E0(a0)
;   ctx->Driver.ReadIndexSpan = aread_index_span;
	move.l	#_aread_index_span,$8E4(a0)
;   ctx->Driver.ReadColorSpan = aread_color_span;
	move.l	#_aread_color_span,$8E8(a0)
;   ctx->Driver.ReadIndexPixels = aread_index_pixels;
	move.l	#_aread_index_pixels,$8EC(a0)
;   ctx->Driver.ReadColorPixels = aread_color_pixels;
	move.l	#_aread_color_pixels,$8F0(a0)
	rts

	SECTION "_alloc_temp_rastport:0",CODE


;BOOL alloc_temp_rastport(struct amigamesa_context * c) 
	XDEF	_alloc_temp_rastport
_alloc_temp_rastport
L724	EQU	-$14
	link	a5,#L724
	movem.l	d2/d3/a2/a6,-(a7)
L719
;	if(temprp= AllocVec(sizeof(struct RastPort), 0)) 
	moveq	#$64,d0
	moveq	#0,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	d0,-4(a5)
	tst.l	-4(a5)
	beq	L723
L720
;		CopyMem(c->rp, temprp, sizeof(struct RastPort));
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	moveq	#$64,d0
	move.l	-4(a5),a1
	move.l	_SysBase,a6
	jsr	-$270(a6)
;		temprp->Layer = NULL;
	move.l	-4(a5),a1
	clr.l	(a1)
;		if(temprp->BitMap= AllocBitMap(c->FixedWidth, 1,
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	$8(a5),a2
	move.l	$34(a2),a1
	move.l	4(a1),a1
	move.b	5(a1),d2
	and.l	#$FF,d2
	move.l	$8(a5),a1
	move.l	$78(a1),d0
	moveq	#1,d1
	moveq	#0,d3
	move.l	_GfxBase,a6
	jsr	-$396(a6)
	move.l	-4(a5),a1
	move.l	d0,4(a1)
	beq.b	L722
L721
;			c->temprp=temprp;
	move.l	$8(a5),a1
	move.l	-4(a5),$40(a1)
	moveq	#1,d0
	movem.l	(a7)+,d2/d3/a2/a6
	unlk	a5
	rts
L722
;		FreeVec(temprp);
	move.l	-4(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L723
;	printf("Error allocating temporary rastport");
	move.l	#L718,-(a7)
	jsr	_printf
	addq.w	#4,a7
	moveq	#0,d0
	movem.l	(a7)+,d2/d3/a2/a6
	unlk	a5
	rts

L718
	dc.b	'Error allocating temporary rastport',0

	SECTION "_free_temp_rastport:0",CODE


; void free_temp_rastport(struct amigamesa_context * c) 
	XDEF	_free_temp_rastport
_free_temp_rastport
L728	EQU	-$C
	link	a5,#L728
	move.l	a6,-(a7)
L725
;	if(c->temprp) 
	move.l	$8(a5),a1
	move.l	$40(a1),a0
	cmp.w	#0,a0
	beq.b	L727
L726
;		FreeBitMap(c->temprp->BitMap);
	move.l	$8(a5),a1
	move.l	$40(a1),a0
	move.l	4(a0),a0
	move.l	_GfxBase,a6
	jsr	-$39C(a6)
;		FreeVec(c->temprp);
	move.l	$8(a5),a0
	move.l	$40(a0),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L727
;	c->temprp=NULL;
	move.l	$8(a5),a1
	clr.l	$40(a1)
	move.l	(a7)+,a6
	unlk	a5
	rts

	SECTION "_make_rastport:0",CODE


;struct RastPort *make_rastport( int width, int height, int depth, st
	XDEF	_make_rastport
_make_rastport
L734	EQU	-$8
	link	a5,#L734
	movem.l	d2/d3/a6,-(a7)
	movem.l	$8(a5),d0-d2/a0
L729
;	if (bm=AllocBitMap(width,height,depth,BMF_CLEAR|BMF_INTERLEAVED,fr
	moveq	#5,d3
	move.l	_GfxBase,a6
	jsr	-$396(a6)
	move.l	d0,-$8(a5)
	tst.l	-$8(a5)
	beq.b	L733
L730
;		if (rp = (struct RastPort *) malloc( sizeof(struct RastPort)))
	pea	$64.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,-4(a5)
	tst.l	-4(a5)
	beq.b	L732
L731
;			InitRastPort( rp );
	move.l	-4(a5),a1
	move.l	_GfxBase,a6
	jsr	-$C6(a6)
;			rp->BitMap = bm;
	move.l	-4(a5),a1
	move.l	-$8(a5),4(a1)
	move.l	-4(a5),d0
	movem.l	(a7)+,d2/d3/a6
	unlk	a5
	rts
L732
;			FreeBitMap(bm);
	move.l	-$8(a5),a0
	move.l	_GfxBase,a6
	jsr	-$39C(a6)
	moveq	#0,d0
	movem.l	(a7)+,d2/d3/a6
	unlk	a5
	rts
L733
	moveq	#0,d0
	movem.l	(a7)+,d2/d3/a6
	unlk	a5
	rts

	SECTION "_destroy_rastport:0",CODE


;void destroy_rastport( struct RastPort *rp )
	XDEF	_destroy_rastport
_destroy_rastport
L736	EQU	-4
	link	a5,#L736
	move.l	a6,-(a7)
L735
;	WaitBlit();
	move.l	_GfxBase,a6
	jsr	-$E4(a6)
;	FreeBitMap( rp->BitMap );
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.l	_GfxBase,a6
	jsr	-$39C(a6)
;	free( rp );
	move.l	$8(a5),-(a7)
	jsr	_free
	addq.w	#4,a7
	move.l	(a7)+,a6
	unlk	a5
	rts

	SECTION "_alloc_penbackarray:0",CODE


;UBYTE* alloc_penbackarray( int width, int height, int bytes)
	XDEF	_alloc_penbackarray
_alloc_penbackarray
	movem.l	d2/a6,-(a7)
	movem.l	$C(a7),d0/d2
	move.l	$14(a7),d1
L737
	muls.l	d2,d0
	muls.l	d1,d0
	move.l	#$10001,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	movem.l	(a7)+,d2/a6
	rts

	SECTION "_destroy_penbackarray:0",CODE


;void destroy_penbackarray(UBYTE *buf)
	XDEF	_destroy_penbackarray
_destroy_penbackarray
	move.l	a6,-(a7)
	move.l	$8(a7),a1
L738
;	FreeVec(buf);
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	move.l	(a7)+,a6
	rts

	SECTION "_make_temp_raster:0",CODE


;BOOL make_temp_raster( struct RastPort *rp ) 
	XDEF	_make_temp_raster
_make_temp_raster
L759	EQU	-$1C
	link	a5,#L759
	movem.l	d2-d4/a6,-(a7)
L741
;	BOOL    OK=TRUE;
	moveq	#1,d4
;	if(rp==0) 
	move.l	$8(a5),a0
	cmp.w	#0,a0
	bne.b	L743
L742
;		printf("Zero rp\n");
	move.l	#L739,-(a7)
	jsr	_printf
	addq.w	#4,a7
	moveq	#0,d0
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts
L743
;		width = rp->BitMap->BytesPerRow*8;
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.w	(a0),d0
	moveq	#0,d3
	move.w	d0,d3
	moveq	#3,d0
	asl.l	d0,d3
;		height = rp->BitMap->Rows;
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.w	2(a0),d0
	moveq	#0,d2
	move.w	d0,d2
;		if(p = AllocRaster( width, height )) 
	move.l	d3,d0
	move.l	d2,d1
	move.l	_GfxBase,a6
	jsr	-$1EC(a6)
	move.l	d0,-$E(a5)
	tst.l	-$E(a5)
	beq.b	L751
L744
;			if(tmpras = (struct TmpRas *) AllocVec( sizeof(struct TmpRas),
	moveq	#$8,d0
	moveq	#0,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	d0,-$12(a5)
	tst.l	-$12(a5)
	beq.b	L749
L745
;			if(InitTmpRas( tmpras, p, ((width+15)>>4)*height )) 
	move.l	d3,d0
	add.l	#$F,d0
	moveq	#4,d1
	lsr.l	d1,d0
	mulu.l	d2,d0
	move.l	-$12(a5),a0
	move.l	-$E(a5),a1
	move.l	_GfxBase,a6
	jsr	-$1D4(a6)
	tst.l	d0
	beq.b	L747
L746
;				rp->TmpRas = tmpras;
	move.l	$8(a5),a1
	move.l	-$12(a5),$C(a1)
	bra.b	L748
L747
;					OK=FALSE;
	moveq	#0,d4
L748
	bra.b	L750
L749
;			OK=FALSE;
	moveq	#0,d4
L750
	bra.b	L752
L751
	moveq	#0,d0
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts
L752
;	if (OK)
	tst.w	d4
	beq.b	L754
L753
	moveq	#1,d0
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts
L754
;		printf("Error when allocationg TmpRas\n");
	move.l	#L740,-(a7)
	jsr	_printf
	addq.w	#4,a7
;		if (tmpras)
	tst.l	-$12(a5)
	beq.b	L756
L755
;			FreeVec(tmpras);
	move.l	-$12(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L756
;		if (p)
	tst.l	-$E(a5)
	beq.b	L758
L757
;			FreeRaster(p,width, height);
	move.l	d3,d0
	move.l	d2,d1
	move.l	-$E(a5),a0
	move.l	_GfxBase,a6
	jsr	-$1F2(a6)
L758
	moveq	#0,d0
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts

L740
	dc.b	'Error when allocationg TmpRas',$A,0
L739
	dc.b	'Zero rp',$A,0

	SECTION "_allocarea:0",CODE


;static BOOL allocarea(struct RastPort *rp ) 
_allocarea
L779	EQU	-$E
	link	a5,#L779
	movem.l	d2/a6,-(a7)
L761
;	BOOL    OK=TRUE;
	moveq	#1,d2
;	areainfo = (struct AreaInfo *) AllocVec( sizeof(struct AreaInfo),M
	moveq	#$18,d0
	moveq	#0,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	d0,-6(a5)
;	if(areainfo!=0) 
	move.l	-6(a5),a0
	cmp.w	#0,a0
	beq	L769
L762
;		pattern = (UWORD *) AllocVec( sizeof(UWORD),MEMF_ANY);
	moveq	#2,d0
	moveq	#0,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	d0,-$A(a5)
;		if(pattern!=0) 
	move.l	-$A(a5),a0
	cmp.w	#0,a0
	beq.b	L767
L763
;			*pattern = 0xffff;
	move.l	-$A(a5),a0
	move.w	#$FFFF,(a0)
;			vbuffer = (APTR) AllocVec( MAX_POLYGON * 5 * sizeof(WORD),MEMF
	move.l	#$BB8,d0
	moveq	#0,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	d0,-$E(a5)
;			if(vbuffer!=0) 
	move.l	-$E(a5),a0
	cmp.w	#0,a0
	beq.b	L765
L764
;				InitArea( areainfo, vbuffer, MAX_POLYGON );
	move.l	#$12C,d0
	move.l	-6(a5),a0
	move.l	-$E(a5),a1
	move.l	_GfxBase,a6
	jsr	-$11A(a6)
;				rp->AreaPtrn = pattern;
	move.l	$8(a5),a1
	move.l	-$A(a5),$8(a1)
;				rp->AreaInfo = areainfo;
	move.l	$8(a5),a1
	move.l	-6(a5),$10(a1)
;				rp->AreaPtSz = 0;
	move.l	$8(a5),a0
	clr.b	$1D(a0)
	bra.b	L766
L765
;				OK=FALSE;
	moveq	#0,d2
L766
	bra.b	L768
L767
;				OK=FALSE;
	moveq	#0,d2
L768
	bra.b	L770
L769
;			OK=FALSE;
	moveq	#0,d2
L770
;	if (OK)
	tst.w	d2
	beq.b	L772
L771
	move.w	d2,d0
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts
L772
;		printf("Error when allocationg AreaBuffers\n");
	move.l	#L760,-(a7)
	jsr	_printf
	addq.w	#4,a7
;		if (vbuffer)
	tst.l	-$E(a5)
	beq.b	L774
L773
;			FreeVec(vbuffer);
	move.l	-$E(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L774
;		if (pattern)
	tst.l	-$A(a5)
	beq.b	L776
L775
;			FreeVec(pattern);
	move.l	-$A(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L776
;		if (areainfo)
	tst.l	-6(a5)
	beq.b	L778
L777
;			FreeVec(areainfo);
	move.l	-6(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L778
	move.w	d2,d0
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts

L760
	dc.b	'Error when allocationg AreaBuffers',$A,0

	SECTION "_freearea:0",CODE


;void freearea(struct RastPort *rp) 
	XDEF	_freearea
_freearea
L787	EQU	-$18
	link	a5,#L787
	move.l	a6,-(a7)
L780
;	if (rp->AreaInfo) 
	move.l	$8(a5),a1
	move.l	$10(a1),a0
	cmp.w	#0,a0
	beq.b	L786
L781
;		if (rp->AreaInfo->VctrTbl)
	move.l	$8(a5),a1
	move.l	$10(a1),a0
	move.l	(a0),a0
	cmp.w	#0,a0
	beq.b	L783
L782
;			FreeVec(rp->AreaInfo->VctrTbl);
	move.l	$8(a5),a1
	move.l	$10(a1),a0
	move.l	(a0),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L783
;		if (rp->AreaPtrn) 
	move.l	$8(a5),a1
	move.l	$8(a1),a0
	cmp.w	#0,a0
	beq.b	L785
L784
;			FreeVec(rp->AreaPtrn);
	move.l	$8(a5),a0
	move.l	$8(a0),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
;			rp->AreaPtrn=NULL;
	move.l	$8(a5),a1
	clr.l	$8(a1)
L785
;		FreeVec(rp->AreaInfo);
	move.l	$8(a5),a0
	move.l	$10(a0),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
;		rp->AreaInfo=NULL;
	move.l	$8(a5),a1
	clr.l	$10(a1)
L786
	move.l	(a7)+,a6
	unlk	a5
	rts

	SECTION "_destroy_temp_raster:0",CODE


;void destroy_temp_raster( struct RastPort *rp )
	XDEF	_destroy_temp_raster
_destroy_temp_raster
L793	EQU	-$20
	link	a5,#L793
	movem.l	d2/a6,-(a7)
L788
;	width = rp->BitMap->BytesPerRow*8;
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.w	(a0),d0
	and.l	#$FFFF,d0
	moveq	#3,d1
	asl.l	d1,d0
;	height = rp->BitMap->Rows;
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.w	2(a0),d1
	and.l	#$FFFF,d1
;	if (rp->TmpRas)
	move.l	$8(a5),a1
	move.l	$C(a1),a0
	cmp.w	#0,a0
	beq.b	L792
L789
;		if(rp->TmpRas->RasPtr)
	move.l	$8(a5),a1
	move.l	$C(a1),a0
	move.l	(a0),a0
	cmp.w	#0,a0
	beq.b	L791
L790
;			FreeRaster( rp->TmpRas->RasPtr,width,height );
	move.l	$8(a5),a1
	move.l	$C(a1),a0
	move.l	(a0),a0
	move.l	_GfxBase,a6
	jsr	-$1F2(a6)
L791
;		FreeVec( rp->TmpRas );
	move.l	$8(a5),a0
	move.l	$C(a0),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
;		rp->TmpRas=NULL;
	move.l	$8(a5),a1
	clr.l	$C(a1)
L792
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts

	SECTION "_AllocOneLine:0",CODE


;void AllocOneLine( struct amigamesa_context *c) 
	XDEF	_AllocOneLine
_AllocOneLine
L800	EQU	-$14
	link	a5,#L800
	move.l	a6,-(a7)
L794
;	if(c->imageline)
	move.l	$8(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq.b	L796
L795
;		FreeVec(c->imageline);
	move.l	$8(a5),a0
	move.l	$488(a0),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L796
;	if (c->depth<=8) 
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L798
L797
;		c->imageline = AllocVec((c->width+15) & 0xfffffff0,MEMF_ANY);
	move.l	$8(a5),a0
	move.l	$58(a0),d0
	add.l	#$F,d0
	and.l	#-$10,d0
	moveq	#0,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	$8(a5),a1
	move.l	d0,$488(a1)
	bra.b	L799
L798
;		c->imageline = AllocVec(((c->width+3) & 0xfffffffc)*4,MEMF_ANY);
	move.l	$8(a5),a0
	move.l	$58(a0),d0
	addq.l	#3,d0
	and.l	#-4,d0
	moveq	#2,d1
	asl.l	d1,d0
	moveq	#0,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	$8(a5),a1
	move.l	d0,$488(a1)
L799
	move.l	(a7)+,a6
	unlk	a5
	rts

	SECTION "_FreeOneLine:0",CODE


;void FreeOneLine( struct amigamesa_context *c) 
	XDEF	_FreeOneLine
_FreeOneLine
L804	EQU	-$8
	link	a5,#L804
	move.l	a6,-(a7)
L801
;	if(c->imageline) 
	move.l	$8(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq.b	L803
L802
;		FreeVec(c->imageline);
	move.l	$8(a5),a0
	move.l	$488(a0),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
;		c->imageline=NULL;
	move.l	$8(a5),a1
	clr.l	$488(a1)
L803
	move.l	(a7)+,a6
	unlk	a5
	rts

	SECTION "_Amiga_Standard_resize:0",CODE


;static void
_Amiga_Standard_resize
L818	EQU	-$8C
	link	a5,#L818
	movem.l	d2/a6,-(a7)
	move.l	$8(a5),a0
	move.l	$10(a5),a6
L806
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	*width=amesa->width;
	move.l	-4(a5),a0
	move.l	$58(a0),d0
	move.l	$C(a5),a0
	move.l	d0,(a0)
;	*height=amesa->height;
	move.l	-4(a5),a0
	move.l	$5C(a0),d0
	move.l	d0,(a6)
;	if (amesa->rp == NULL)
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	cmp.w	#0,a0
	bne.b	L808
L807
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts
L808
;	if(!((  amesa->width  == (amesa->front_rp->Layer->bounds.MaxX-ames
	move.l	-4(a5),a0
	move.l	$58(a0),d2
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$68(a0),d1
	sub.l	d1,d0
	cmp.l	d0,d2
	bne.b	L810
L809
	move.l	-4(a5),a0
	move.l	$5C(a0),d2
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$6C(a0),d1
	sub.l	d1,d0
	cmp.l	d0,d2
	beq	L817
L810
;		FreeOneLine(amesa);
	move.l	-4(a5),-(a7)
	jsr	_FreeOneLine
	addq.w	#4,a7
;		amesa->FixedWidth =amesa->RealWidth =amesa->front_rp->Layer->bou
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$70(a0)
	move.l	-4(a5),a0
	move.l	d0,$78(a0)
;		amesa->FixedHeight=amesa->RealHeight=amesa->front_rp->Layer->bou
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$74(a0)
	move.l	-4(a5),a0
	move.l	d0,$7C(a0)
;		*width=amesa->width = amesa->RealWidth-amesa->left-amesa->right;
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	move.l	-4(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$68(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$58(a0)
	move.l	$C(a5),a0
	move.l	d0,(a0)
;		*height=amesa->height = amesa->RealHeight-amesa->bottom-amesa->t
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$6C(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$5C(a0)
	move.l	d0,(a6)
;		amesa->depth = GetBitMapAttr(amesa->front_rp->BitMap,BMA_DEPTH);
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	4(a0),a0
	moveq	#4,d1
	move.l	_GfxBase,a6
	jsr	-$3C0(a6)
	move.l	-4(a5),a0
	move.l	d0,$48(a0)
;		free_temp_rastport(amesa);
	move.l	-4(a5),-(a7)
	jsr	_free_temp_rastport
	addq.w	#4,a7
;		if (amesa->visual->db_flag) 
	move.l	-4(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	beq	L816
L811
;			if (amesa->back_rp) 
	move.l	-4(a5),a1
	move.l	$24(a1),a0
	cmp.w	#0,a0
	beq.b	L813
L812
;				destroy_rastport(amesa->back_rp);
	move.l	-4(a5),a1
	move.l	$24(a1),a0
	move.l	a0,-(a7)
	jsr	_destroy_rastport
	addq.w	#4,a7
L813
;			if((amesa->back_rp = make_rastport(amesa->RealWidth,amesa->Rea
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	a0,-(a7)
	move.l	-4(a5),a0
	move.l	$48(a0),d0
	move.l	d0,-(a7)
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	d0,-(a7)
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	move.l	d0,-(a7)
	jsr	_make_rastport
	add.w	#$10,a7
	move.l	-4(a5),a1
	move.l	d0,$24(a1)
	move.l	d0,a0
	cmp.w	#0,a0
	bne.b	L815
L814
;				amesa->rp = amesa->front_rp;
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	-4(a5),a1
	move.l	a0,$34(a1)
;				printf("To little mem free. Couldn't allocate Dubblebuffer i
	move.l	#L805,-(a7)
	jsr	_printf
	addq.w	#4,a7
	bra.b	L816
L815
;				amesa->rp=amesa->back_rp;
	move.l	-4(a5),a1
	move.l	$24(a1),a0
	move.l	-4(a5),a1
	move.l	a0,$34(a1)
L816
;		alloc_temp_rastport(amesa);
	move.l	-4(a5),-(a7)
	jsr	_alloc_temp_rastport
	addq.w	#4,a7
;		AllocOneLine(amesa);
	move.l	-4(a5),-(a7)
	jsr	_AllocOneLine
	addq.w	#4,a7
L817
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts

L805
	dc.b	'To little mem free. Couldn't allocate Dubblebuffer in this size.'
	dc.b	$A,0

	SECTION "_Amiga_Standard_Dispose:0",CODE


;void
	XDEF	_Amiga_Standard_Dispose
_Amiga_Standard_Dispose
	move.l	a6,-(a7)
	move.l	$8(a7),a6
L820
;	FreeOneLine(c);
	move.l	a6,-(a7)
	jsr	_FreeOneLine
	addq.w	#4,a7
;	if (c->depth<=8) 
	move.l	$48(a6),d0
	cmp.l	#$8,d0
	bhi.b	L822
L821
;		DisposeTransTable(c);
	move.l	a6,-(a7)
	jsr	_DisposeTransTable
	addq.w	#4,a7
;		free_temp_rastport(c);
	move.l	a6,-(a7)
	jsr	_free_temp_rastport
	addq.w	#4,a7
L822
;	if (c->visual->rgb_flag)
	move.l	4(a6),a0
	move.b	5(a0),d0
	beq.b	L825
L823
;		if (c->rgb_buffer)
	move.l	$48C(a6),a0
	cmp.w	#0,a0
	beq.b	L825
L824
;			printf("free(c->rgb_buffer)\n");
	move.l	#L819,-(a7)
	jsr	_printf
	addq.w	#4,a7
;			free( c->rgb_buffer );
	move.l	$48C(a6),a0
	move.l	a0,-(a7)
	jsr	_free
	addq.w	#4,a7
L825
;	if (c->back_rp)
	move.l	$24(a6),a0
	cmp.w	#0,a0
	beq.b	L827
L826
;		destroy_rastport( c->back_rp );
	move.l	$24(a6),a0
	move.l	a0,-(a7)
	jsr	_destroy_rastport
	addq.w	#4,a7
;		c->back_rp=NULL;
	clr.l	$24(a6)
L827
;    if ((c->depth > 8) && (!(c->visual->rgb_flag)) && (c->visual
	move.l	$48(a6),d0
	cmp.l	#$8,d0
	bls.b	L832
L828
	move.l	4(a6),a0
	move.b	5(a0),d0
	bne.b	L832
L829
	move.l	4(a6),a0
	move.b	4(a0),d0
	bne.b	L832
L830
;	if (c->ColorTable2)
	move.l	$84(a6),a0
	cmp.w	#0,a0
	beq.b	L832
L831
;		FreeVec(c->ColorTable2);
	move.l	$84(a6),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
L832
	move.l	(a7)+,a6
	rts

L819
	dc.b	'free(c->rgb_buffer)',$A,0

	SECTION "_Amiga_Standard_SwapBuffer:0",CODE


;void
	XDEF	_Amiga_Standard_SwapBuffer
_Amiga_Standard_SwapBuffer
L838	EQU	-$C
	link	a5,#L838
	movem.l	d2-d6/a6,-(a7)
	move.l	$8(a5),a0
L833
;	if (amesa->rp == NULL)
	move.l	$34(a0),a1
	cmp.w	#0,a1
	bne.b	L835
L834
	movem.l	(a7)+,d2-d6/a6
	unlk	a5
	rts
L835
;		if (amesa->back_rp)
	move.l	$24(a0),a1
	cmp.w	#0,a1
	beq	L837
L836
;			UBYTE minterm = 0xc0;
	move.b	#$C0,d0
;			ClipBlit( amesa->back_rp, FIXx(amesa->gl_ctx->Viewport.X), FIX
	and.l	#$FF,d0
	move.l	d0,-$C(a5)
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$C(a1),d5
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$8(a1),d4
	move.l	$74(a0),d3
	move.l	$64(a0),d0
	sub.l	d0,d3
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	4(a1),d0
	sub.l	d0,d3
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$C(a1),d0
	sub.l	d0,d3
	addq.l	#1,d3
	move.l	$60(a0),d2
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	(a1),d0
	add.l	d0,d2
	move.l	$20(a0),a1
	move.l	$74(a0),d1
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	(a0),a6
	add.l	#$DCA8,a6
	lea	(a6),a6
	move.l	4(a6),d0
	sub.l	d0,d1
	move.l	(a0),a6
	add.l	#$DCA8,a6
	lea	(a6),a6
	move.l	$C(a6),d0
	sub.l	d0,d1
	addq.l	#1,d1
	move.l	$60(a0),d0
	move.l	(a0),a6
	add.l	#$DCA8,a6
	lea	(a6),a6
	move.l	(a6),-$8(a5)
	add.l	-$8(a5),d0
	move.l	$24(a0),a0
	move.l	-$C(a5),d6
	move.l	_GfxBase,a6
	jsr	-$228(a6)
L837
	movem.l	(a7)+,d2-d6/a6
	unlk	a5
	rts

	SECTION "_Amiga_Standard_resize_db:0",CODE


;static void
_Amiga_Standard_resize_db
L853	EQU	-$88
	link	a5,#L853
	movem.l	d2/a6,-(a7)
	move.l	$8(a5),a0
	move.l	$10(a5),a6
L840
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;	*width=amesa->width;
	move.l	-4(a5),a0
	move.l	$58(a0),d0
	move.l	$C(a5),a0
	move.l	d0,(a0)
;	*height=amesa->height;
	move.l	-4(a5),a0
	move.l	$5C(a0),d0
	move.l	d0,(a6)
;	if (amesa->rp == NULL)
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	cmp.w	#0,a0
	bne.b	L842
L841
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts
L842
;	if(!((  amesa->width  == (amesa->rp->Layer->bounds.MaxX-amesa->rp-
	move.l	-4(a5),a0
	move.l	$58(a0),d2
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$68(a0),d1
	sub.l	d1,d0
	cmp.l	d0,d2
	bne.b	L844
L843
	move.l	-4(a5),a0
	move.l	$5C(a0),d2
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$6C(a0),d1
	sub.l	d1,d0
	cmp.l	d0,d2
	beq	L852
L844
;		free_temp_rastport(amesa);
	move.l	-4(a5),-(a7)
	jsr	_free_temp_rastport
	addq.w	#4,a7
;		amesa->RealWidth =amesa->rp->Layer->bounds.MaxX-amesa->rp->Layer
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$70(a0)
;		amesa->RealHeight=amesa->rp->Layer->bounds.MaxY-amesa->rp->Layer
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$74(a0)
;		amesa->FixedWidth =((amesa->RealWidth+15)>>4)<<4;
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	add.l	#$F,d0
	moveq	#4,d1
	asr.l	d1,d0
	moveq	#4,d1
	asl.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$78(a0)
;		amesa->FixedHeight=amesa->RealHeight+1;
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	addq.l	#1,d0
	move.l	-4(a5),a0
	move.l	d0,$7C(a0)
;		*width=amesa->width = amesa->RealWidth-amesa->left-amesa->right;
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	move.l	-4(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$68(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$58(a0)
	move.l	$C(a5),a0
	move.l	d0,(a0)
;		*height=amesa->height = amesa->RealHeight-amesa->bottom-amesa->t
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$6C(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$5C(a0)
	move.l	d0,(a6)
;		amesa->depth = GetBitMapAttr(amesa->rp->BitMap,BMA_DEPTH);
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	moveq	#4,d1
	move.l	_GfxBase,a6
	jsr	-$3C0(a6)
	move.l	-4(a5),a0
	move.l	d0,$48(a0)
;		if (amesa->visual->db_flag && amesa->BackArray)
	move.l	-4(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	beq.b	L851
L845
	move.l	-4(a5),a1
	move.l	$30(a1),a0
	cmp.w	#0,a0
	beq.b	L851
L846
;			destroy_penbackarray(amesa->BackArray);
	move.l	-4(a5),a1
	move.l	$30(a1),a0
	move.l	a0,-(a7)
	jsr	_destroy_penbackarray
	addq.w	#4,a7
;			if(!(amesa->BackArray=alloc_penbackarray(amesa->RealWidth,ames
	move.l	-4(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L848
L847
	moveq	#1,d0
	bra.b	L849
L848
	moveq	#4,d0
L849
	move.l	d0,-(a7)
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	d0,-(a7)
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	move.l	d0,-(a7)
	jsr	_alloc_penbackarray
	add.w	#$C,a7
	move.l	-4(a5),a1
	move.l	d0,$30(a1)
	bne.b	L851
L850
;				printf("AmigaMesa Error Can't allocate new PenArray in that 
	move.l	#L839,-(a7)
	jsr	_printf
	addq.w	#4,a7
L851
;		alloc_temp_rastport(amesa);
	move.l	-4(a5),-(a7)
	jsr	_alloc_temp_rastport
	addq.w	#4,a7
L852
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts

L839
	dc.b	'AmigaMesa Error Can't allocate new PenArray in that size.',$A,0

	SECTION "_Amiga_Standard_Dispose_db:0",CODE


;void
	XDEF	_Amiga_Standard_Dispose_db
_Amiga_Standard_Dispose_db
	move.l	a2,-(a7)
	move.l	$8(a7),a2
L854
;	if (c->depth<=8) 
	move.l	$48(a2),d0
	cmp.l	#$8,d0
	bhi.b	L856
L855
;		FreeCMap(c->Screen);
	move.l	$38(a2),a0
	move.l	a0,-(a7)
	jsr	_FreeCMap
	addq.w	#4,a7
;		free_temp_rastport(c);
	move.l	a2,-(a7)
	jsr	_free_temp_rastport
	addq.w	#4,a7
L856
;	if (c->BackArray)
	move.l	$30(a2),a0
	cmp.w	#0,a0
	beq.b	L858
L857
;		destroy_penbackarray(c->BackArray);
	move.l	$30(a2),a0
	move.l	a0,-(a7)
	jsr	_destroy_penbackarray
	addq.w	#4,a7
L858
	move.l	(a7)+,a2
	rts

	SECTION "_Amiga_Standard_SwapBuffer_db:0",CODE


;static void
_Amiga_Standard_SwapBuffer_db
L862	EQU	-$18
	link	a5,#L862
	movem.l	d2-d5/a2/a3/a6,-(a7)
	move.l	$8(a5),a0
L859
;	if (amesa->rp == NULL)
	move.l	$34(a0),a1
	cmp.w	#0,a1
	bne.b	L861
L860
	movem.l	(a7)+,d2-d5/a2/a3/a6
	unlk	a5
	rts
L861
;		WritePixelArray8(amesa->rp,amesa->left+amesa->gl_ctx->Viewport.X
	move.l	$40(a0),a1
	move.l	$30(a0),a2
	move.l	$74(a0),d3
	move.l	$64(a0),d0
	sub.l	d0,d3
	move.l	(a0),-$18(a5)
	move.l	#$DCA8,d0
	add.l	d0,-$18(a5)
	move.l	-$18(a5),a3
	move.l	4(a3),d0
	sub.l	d0,d3
	move.l	$60(a0),d2
	move.l	(a0),-$14(a5)
	move.l	#$DCA8,d0
	add.l	d0,-$14(a5)
	move.l	-$14(a5),a3
	move.l	(a3),d0
	add.l	d0,d2
	move.l	(a0),-$10(a5)
	move.l	#$DCA8,d0
	add.l	d0,-$10(a5)
	move.l	-$10(a5),a3
	move.l	$8(a3),d0
	add.l	d0,d2
	move.l	$74(a0),d1
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	(a0),-$C(a5)
	move.l	#$DCA8,d0
	add.l	d0,-$C(a5)
	move.l	-$C(a5),a3
	move.l	$C(a3),d0
	sub.l	d0,d1
	move.l	(a0),-$8(a5)
	move.l	#$DCA8,d0
	add.l	d0,-$8(a5)
	move.l	-$8(a5),a3
	move.l	4(a3),d0
	sub.l	d0,d1
	move.l	$60(a0),d0
	move.l	(a0),-4(a5)
	move.l	#$DCA8,d4
	add.l	d4,-4(a5)
	move.l	-4(a5),a3
	move.l	(a3),d4
	add.l	d4,d0
	move.l	$34(a0),a0
	move.l	_GfxBase,a6
	jsr	-$312(a6)
	movem.l	(a7)+,d2-d5/a2/a3/a6
	unlk	a5
	rts

	SECTION "_Amiga_Standard_init_db:0",CODE


;BOOL
	XDEF	_Amiga_Standard_init_db
_Amiga_Standard_init_db
L877	EQU	-$74
	link	a5,#L877
	move.l	a6,-(a7)
L863
;	c->window=(struct Window *)GetTagData(AMA_Window,0,tagList);
	move.l	#$80000027,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a1
	move.l	d0,$1C(a1)
;	if (!c->window)
	move.l	$8(a5),a1
	move.l	$1C(a1),a0
	cmp.w	#0,a0
	bne	L869
L864
;		c->rp=(struct RastPort *)GetTagData(AMA_RastPort,0,tagList);
	move.l	#$80000028,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a1
	move.l	d0,$34(a1)
;		if (!c->rp)
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	cmp.w	#0,a0
	bne.b	L866
L865
;			LastError=AMESA_RASTPORT_TAG_MISSING;
	move.l	#1,_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L866
;		c->Screen=(struct Screen *)GetTagData(AMA_Screen,0,tagList);
	move.l	#$80000026,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a1
	move.l	d0,$38(a1)
;		if (!c->Screen)
	move.l	$8(a5),a1
	move.l	$38(a1),a0
	cmp.w	#0,a0
	bne.b	L868
L867
;			LastError=AMESA_SCREEN_TAG_MISSING;
	move.l	#2,_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L868
;			return
	bra.b	L870
L869
;		c->rp =c->window->RPort;
	move.l	$8(a5),a1
	move.l	$1C(a1),a0
	move.l	$32(a0),a0
	move.l	$8(a5),a1
	move.l	a0,$34(a1)
;		c->Screen=c->window->WScreen;
	move.l	$8(a5),a1
	move.l	$1C(a1),a0
	move.l	$2E(a0),a0
	move.l	$8(a5),a1
	move.l	a0,$38(a1)
L870
;	c->RealWidth =c->rp->Layer->bounds.MaxX-c->rp->Layer->bounds.MinX;
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$70(a0)
;	c->RealHeight=c->rp->Layer->bounds.MaxY-c->rp->Layer->bounds.MinY;
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$74(a0)
;	c->FixedWidth =((c->RealWidth+15)>>4)<<4;
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	add.l	#$F,d0
	moveq	#4,d1
	asr.l	d1,d0
	moveq	#4,d1
	asl.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$78(a0)
;	c->FixedHeight=c->RealHeight+1;
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	addq.l	#1,d0
	move.l	$8(a5),a0
	move.l	d0,$7C(a0)
;	c->left = GetTagData(AMA_Left,0,tagList);
	move.l	#$80000021,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$60(a0)
;	c->bottom = GetTagData(AMA_Bottom,0,tagList);
	move.l	#$80000022,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$64(a0)
;	c->width = GetTagData(AMA_Width,c->RealWidth-c->left,tagList);
	move.l	$8(a5),a0
	move.l	$70(a0),d1
	move.l	$8(a5),a0
	move.l	$60(a0),d0
	sub.l	d0,d1
	move.l	#$80000023,d0
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$58(a0)
;	c->height= GetTagData(AMA_Height,c->RealHeight-c->bottom,tagList);
	move.l	$8(a5),a0
	move.l	$74(a0),d1
	move.l	$8(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	#$80000024,d0
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$5C(a0)
;	c->depth = GetBitMapAttr(c->rp->BitMap,BMA_DEPTH);
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	moveq	#4,d1
	move.l	_GfxBase,a6
	jsr	-$3C0(a6)
	move.l	$8(a5),a0
	move.l	d0,$48(a0)
;	c->right = c->RealWidth - c->width - c->left;
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	move.l	$8(a5),a0
	move.l	$58(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$68(a0)
;	c->top = c->RealHeight - c->height - c->bottom;
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	move.l	$8(a5),a0
	move.l	$5C(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$6C(a0)
;	AllocCMap(c->Screen);
	move.l	$8(a5),a1
	move.l	$38(a1),a0
	move.l	a0,-(a7)
	jsr	_AllocCMap
	addq.w	#4,a7
;	alloc_temp_rastport(c);
	move.l	$8(a5),-(a7)
	jsr	_alloc_temp_rastport
	addq.w	#4,a7
;	if (c->visual->db_flag)
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	beq.b	L875
L871
;		c->BackArray=alloc_penbackarray(c->FixedWidth,c->FixedHeight,c->
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L873
L872
	moveq	#1,d0
	bra.b	L874
L873
	moveq	#4,d0
L874
	move.l	d0,-(a7)
	move.l	$8(a5),a0
	move.l	$7C(a0),d0
	move.l	d0,-(a7)
	move.l	$8(a5),a0
	move.l	$78(a0),d0
	move.l	d0,-(a7)
	jsr	_alloc_penbackarray
	add.w	#$C,a7
	move.l	$8(a5),a1
	move.l	d0,$30(a1)
;		c->gl_ctx->Color.DrawBuffer = GL_BACK;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$405,$1E92(a0)
;		c->InitDD=amiga_Faster_DD_pointers;
	move.l	$8(a5),a1
	move.l	#_amiga_Faster_DD_pointers,$490(a1)
;		c->Dispose=Amiga_Standard_Dispose_db;
	move.l	$8(a5),a1
	move.l	#_Amiga_Standard_Dispose_db,$494(a1)
;		c->SwapBuffer=Amiga_Standard_SwapBuffer_db;
	move.l	$8(a5),a1
	move.l	#_Amiga_Standard_SwapBuffer_db,$498(a1)
	bra.b	L876
L875
;		c->gl_ctx->Color.DrawBuffer = GL_FRONT;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$404,$1E92(a0)
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L876
	moveq	#1,d0
	move.l	(a7)+,a6
	unlk	a5
	rts

	SECTION "_Amiga_Standard_init:0",CODE


;BOOL
	XDEF	_Amiga_Standard_init
_Amiga_Standard_init
L886	EQU	-$64
	link	a5,#L886
	move.l	a6,-(a7)
L879
;	c->FixedWidth =c->RealWidth =c->rp->Layer->bounds.MaxX-c->rp->Laye
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$70(a0)
	move.l	$8(a5),a0
	move.l	d0,$78(a0)
;	c->FixedHeight=c->RealHeight=c->rp->Layer->bounds.MaxY-c->rp->Laye
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$74(a0)
	move.l	$8(a5),a0
	move.l	d0,$7C(a0)
;	c->left = GetTagData(AMA_Left,0,tagList);
	move.l	#$80000021,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$60(a0)
;	c->bottom= GetTagData(AMA_Bottom,0,tagList);
	move.l	#$80000022,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$64(a0)
;	c->front_rp =c->rp;
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	$8(a5),a1
	move.l	a0,$20(a1)
;	c->back_rp=NULL;
	move.l	$8(a5),a1
	clr.l	$24(a1)
;	c->width = GetTagData(AMA_Width,c->RealWidth-c->left,tagList);
	move.l	$8(a5),a0
	move.l	$70(a0),d1
	move.l	$8(a5),a0
	move.l	$60(a0),d0
	sub.l	d0,d1
	move.l	#$80000023,d0
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$58(a0)
;	c->height= GetTagData(AMA_Height,c->RealHeight-c->bottom,tagList);
	move.l	$8(a5),a0
	move.l	$74(a0),d1
	move.l	$8(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	#$80000024,d0
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$5C(a0)
;	c->depth = GetBitMapAttr(c->rp->BitMap,BMA_DEPTH);
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	moveq	#4,d1
	move.l	_GfxBase,a6
	jsr	-$3C0(a6)
	move.l	$8(a5),a0
	move.l	d0,$48(a0)
;	c->right = c->RealWidth - c->width - c->left;
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	move.l	$8(a5),a0
	move.l	$58(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$68(a0)
;	c->top = c->RealHeight - c->height - c->bottom;
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	move.l	$8(a5),a0
	move.l	$5C(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$6C(a0)
;	c->pixel = 0;
	move.l	$8(a5),a0
	clr.l	$14(a0)
;	CreateTransTable(c);
	move.l	$8(a5),-(a7)
	jsr	_CreateTransTable
	addq.w	#4,a7
;	if (c->visual->db_flag==GL_TRUE)
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	cmp.b	#1,d0
	bne	L884
L880
;		if((c->back_rp = make_rastport(c->RealWidth,c->RealHeight,c->dep
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	a0,-(a7)
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	move.l	d0,-(a7)
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	move.l	d0,-(a7)
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	move.l	d0,-(a7)
	jsr	_make_rastport
	add.w	#$10,a7
	move.l	$8(a5),a1
	move.l	d0,$24(a1)
	move.l	d0,a0
	cmp.w	#0,a0
	beq.b	L882
L881
;			c->gl_ctx->Color.DrawBuffer = GL_BACK;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$405,$1E92(a0)
;			c->rp = c->back_rp;
	move.l	$8(a5),a1
	move.l	$24(a1),a0
	move.l	$8(a5),a1
	move.l	a0,$34(a1)
	bra.b	L883
L882
;			printf("make_rastport Faild\n");
	move.l	#L878,-(a7)
	jsr	_printf
	addq.w	#4,a7
;			c->gl_ctx->Color.DrawBuffer = GL_FRONT;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$404,$1E92(a0)
L883
	bra.b	L885
L884
;		c->gl_ctx->Color.DrawBuffer = GL_FRONT;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$404,$1E92(a0)
L885
;	AllocOneLine(c);
	move.l	$8(a5),-(a7)
	jsr	_AllocOneLine
	addq.w	#4,a7
;	alloc_temp_rastport(c);
	move.l	$8(a5),-(a7)
	jsr	_alloc_temp_rastport
	addq.w	#4,a7
;	c->InitDD=amiga_standard_DD_pointers;
	move.l	$8(a5),a1
	move.l	#_amiga_standard_DD_pointers,$490(a1)
;	c->Dispose=Amiga_Standard_Dispose;
	move.l	$8(a5),a1
	move.l	#_Amiga_Standard_Dispose,$494(a1)
;	c->SwapBuffer=Amiga_Standard_SwapBuffer;
	move.l	$8(a5),a1
	move.l	#_Amiga_Standard_SwapBuffer,$498(a1)
	moveq	#1,d0
	move.l	(a7)+,a6
	unlk	a5
	rts

L878
	dc.b	'make_rastport Faild',$A,0

	SECTION "_cyb_finish:0",CODE


;static void cyb_finish( void )
_cyb_finish
L887
;static void cyb_finish( void )
	rts

	SECTION "_cyb_flush:0",CODE


;static void cyb_flush( void )
_cyb_flush
L888
;static void cyb_flush( void )
	rts

	SECTION "_cyb_clear_index:0",CODE


;static void cyb_clear_index( GLcontext *ctx, GLuint index )
_cyb_clear_index
	move.l	$8(a7),d0
	move.l	4(a7),a0
L889
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;   amesa->clearpixel = ((unsigned long*)amesa->penconv)[index];
	lea	$88(a1),a0
	lea	0(a0,d0.l*4),a0
	move.l	(a0),d0
	move.l	d0,$18(a1)
	rts

	SECTION "_cyb_clear_color:0",CODE


;//      RectFill(amesa->r
_cyb_clear_color
	movem.l	d2-d4,-(a7)
	move.b	$1A(a7),d0
	move.b	$14(a7),d1
	move.b	$18(a7),d2
	move.b	$16(a7),d3
	move.l	$10(a7),a0
L890
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;   amesa->clearpixel=TC_RGBA(r,g,b,a);
	and.l	#$FF,d0
	moveq	#$8,d4
	asl.l	d4,d0
	and.l	#$FF,d1
	or.l	d1,d0
	moveq	#$8,d1
	asl.l	d1,d0
	moveq	#0,d1
	move.b	d3,d1
	or.l	d1,d0
	moveq	#$8,d1
	asl.l	d1,d0
	moveq	#0,d1
	move.b	d2,d1
	or.l	d1,d0
	move.l	d0,$18(a0)
	movem.l	(a7)+,d2-d4
	rts

	SECTION "_cyb_clear:0",CODE


;static void cyb_clear( GLcontext *ctx,GLboolean all, GLint x, GLint 
_cyb_clear
L898	EQU	-4
	link	a5,#L898
	movem.l	d2-d5/a6,-(a7)
	movem.l	$16(a5),d2/d5
	move.b	$C(a5),d0
	move.l	$8(a5),a1
L892
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a1),a0
;    if(all)
	tst.b	d0
	beq.b	L894
L893
;	FillPixelArray (amesa->rp,FIXx(ctx->Viewport.X),
	move.l	$18(a0),d4
	move.l	a1,a6
	add.l	#$DCA8,a6
	lea	(a6),a6
	move.l	$C(a6),d3
	move.l	a1,a6
	add.l	#$DCA8,a6
	lea	(a6),a6
	move.l	$8(a6),d2
	move.l	$74(a0),d1
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	a1,a6
	add.l	#$DCA8,a6
	lea	(a6),a6
	move.l	4(a6),d0
	sub.l	d0,d1
	move.l	a1,a6
	add.l	#$DCA8,a6
	lea	(a6),a6
	move.l	$C(a6),d0
	sub.l	d0,d1
	addq.l	#1,d1
	move.l	$60(a0),d0
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	(a1),d5
	add.l	d5,d0
	move.l	$34(a0),a1
	move.l	_CyberGfxBase,a6
	jsr	-$96(a6)
	bra.b	L897
L894
;	if(amesa->rp!=0)
	move.l	$34(a0),a1
	cmp.w	#0,a1
	beq.b	L896
L895
;	    FillPixelArray (amesa->rp,FIXx(x),FIXy(y)-height+1,width,h
	move.l	$18(a0),d4
	move.w	d5,d3
	move.l	$74(a0),d1
	move.l	$64(a0),d0
	sub.l	d0,d1
	sub.l	$12(a5),d1
	sub.l	d5,d1
	addq.l	#1,d1
	move.l	$60(a0),d0
	add.l	$E(a5),d0
	move.l	$34(a0),a1
	move.l	_CyberGfxBase,a6
	jsr	-$96(a6)
	bra.b	L897
L896
;	    printf("Serius error amesa->rp=0 detected in cyb_clear() i
	move.l	#L891,-(a7)
	jsr	_printf
	addq.w	#4,a7
L897
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

L891
	dc.b	'Serius error amesa->rp=0 detected in cyb_clear() in file cybmesa'
	dc.b	'.c',$A,0

	SECTION "_cyb_clear_db:0",CODE


;static void cyb_clear_db(GLcontext *ctx, GLboolean all, GLint x, GLi
_cyb_clear_db
L914	EQU	-$18
	link	a5,#L914
	movem.l	d2-d6,-(a7)
	move.l	$16(a5),d0
	move.l	$12(a5),d1
	move.b	$C(a5),d2
	move.l	$8(a5),a0
L899
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;    register ULONG col=amesa->clearpixel;
	move.l	$18(a1),d3
;    if(all)
	tst.b	d2
	beq.b	L907
L900
;	x1=0;
;	y1=0;
;	x2=amesa->RealWidth;
	move.l	$70(a1),d1
;	y2=amesa->RealHeight;
	move.l	$74(a1),d4
;	db=(ULONG *)amesa->BackArray;
	move.l	$30(a1),a0
;	for(y1=0;
	moveq	#0,d2
	bra.b	L905
L901
;	    for(x1=0;
	moveq	#0,d0
	bra.b	L903
L902
;		*db=col;
	move.l	d3,(a0)
;db++;
	addq.w	#4,a0
	addq.l	#1,d0
L903
	cmp.l	d1,d0
	blt.b	L902
L904
	addq.l	#1,d2
L905
	cmp.l	d4,d2
	blt.b	L901
L906
	bra.b	L913
L907
;	x2=FIXx(x+width);
	move.l	$60(a1),d4
	add.l	$E(a5),d0
	add.l	d0,d4
;	y2=FIXy(y);
	move.l	$74(a1),d5
	move.l	$64(a1),d0
	sub.l	d0,d5
	sub.l	d1,d5
;	for(y1=FIXy(y)-height;
	move.l	$74(a1),d2
	move.l	$64(a1),d0
	sub.l	d0,d2
	sub.l	d1,d2
	sub.l	$1A(a5),d2
	bra.b	L912
L908
;	    for(x1=FIXx(x);
	move.l	$60(a1),d1
	add.l	$E(a5),d1
	bra.b	L910
L909
;		((ULONG*)amesa->BackArray)[x1+y1*amesa->RealWidth]=col;
	move.l	$30(a1),a0
	move.l	$70(a1),d0
	muls.l	d2,d0
	add.l	d1,d0
	lea	0(a0,d0.l*4),a0
	move.l	d3,(a0)
	addq.l	#1,d1
L910
	cmp.l	d4,d1
	blt.b	L909
L911
	addq.l	#1,d2
L912
	cmp.l	d5,d2
	blt.b	L908
L913
	movem.l	(a7)+,d2-d6
	unlk	a5
	rts

	SECTION "_cyb_set_index:0",CODE


;static void cyb_set_index( GLcontext *ctx,GLuint index )
_cyb_set_index
	move.l	$8(a7),d0
	move.l	4(a7),a0
L915
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;    amesa->pixel = ((unsigned long*)amesa->penconv)[index];
	lea	$88(a1),a0
	lea	0(a0,d0.l*4),a0
	move.l	(a0),d0
	move.l	d0,$14(a1)
	rts

	SECTION "_cyb_set_color:0",CODE


;static void cyb_set_color( GLcontext *ctx,GLubyte r, GLubyte g, GLub
_cyb_set_color
	movem.l	d2-d4,-(a7)
	move.b	$1A(a7),d0
	move.b	$14(a7),d1
	move.b	$18(a7),d2
	move.b	$16(a7),d3
	move.l	$10(a7),a0
L916
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;    amesa->pixel = TC_RGBA(r,g,b,a);
	and.l	#$FF,d0
	moveq	#$8,d4
	asl.l	d4,d0
	and.l	#$FF,d1
	or.l	d1,d0
	moveq	#$8,d1
	asl.l	d1,d0
	moveq	#0,d1
	move.b	d3,d1
	or.l	d1,d0
	moveq	#$8,d1
	asl.l	d1,d0
	moveq	#0,d1
	move.b	d2,d1
	or.l	d1,d0
	move.l	d0,$14(a0)
	movem.l	(a7)+,d2-d4
	rts

	SECTION "_cyb_index_mask:0",CODE


;static GLboolean cyb_index_mask( GLcontext *ctx,GLuint mask )
_cyb_index_mask
	move.l	$8(a7),d0
	move.l	4(a7),a0
L917
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;    amesa->rp->Mask = (UBYTE) mask;
	move.l	$34(a0),a0
	move.b	d0,$18(a0)
	moveq	#1,d0
	rts

	SECTION "_cyb_color_mask:0",CODE


;static GLboolean cyb_color_mask( GLcontext *ctx,GLboolean rmask, GLb
_cyb_color_mask
L918
	moveq	#0,d0
	rts

	SECTION "_cyb_fast_points_function:0",CODE


;static void cyb_fast_points_function(GLcontext *ctx,GLuint first, GL
_cyb_fast_points_function
L928	EQU	-$50
	link	a5,#L928
	movem.l	d2-d5/a6,-(a7)
	movem.l	$C(a5),d0/d4
	move.l	$8(a5),a0
L919
;    AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    struct vertex_buffer *VB = ctx->VB;
	add.l	#$E120,a0
	move.l	(a0),-$8(a5)
;    register struct RastPort * rp=amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$48(a5)
;	if (VB->MonoColor) 
	move.l	-$8(a5),a0
	add.l	#$D0D0,a0
	move.b	(a0),d1
	beq	L924
L920
;	for (i=first;
	move.l	d0,d3
	bra.b	L922
L921
;		x =FIXx((GLint) (VB->Win[i][0]));
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d3,d1
	muls.l	#$C,d1
	add.l	d1,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d1
	add.l	d1,d0
;		y =FIXy((GLint) (VB->Win[i][1]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d2
	sub.l	d2,d1
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d3,d2
	muls.l	#$C,d2
	add.l	d2,a0
	addq.w	#4,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d2
	sub.l	d2,d1
;	    WriteRGBPixel(rp,x,y,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d2
	move.l	-$48(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
	addq.l	#1,d3
L922
	cmp.l	d4,d3
	bls.b	L921
L923
	bra	L927
L924
;	for (i=first;
	move.l	d0,d3
	bra	L926
L925
;		x =FIXx((GLint) (VB->Win[i][0]));
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d3,d1
	muls.l	#$C,d1
	add.l	d1,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d1
	add.l	d1,d0
;		y =FIXy((GLint) (VB->Win[i][1]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d2
	sub.l	d2,d1
	move.l	-$8(a5),a1
	lea	$5E80(a1),a0
	move.l	d3,d2
	muls.l	#$C,d2
	add.l	d2,a0
	addq.w	#4,a0
	fmove.s	(a0),fp0
	fmove.l	fp0,d2
	sub.l	d2,d1
;		col=*VB->Color[i];
	move.l	-$8(a5),a1
	add.l	#$9D80,a1
	move.l	(a1),a0
	lea	0(a0,d3.l*4),a0
	move.b	(a0),d2
	and.l	#$FF,d2
;	    WriteRGBPixel(rp,x,y,amesa->penconv[col]);
	move.l	-4(a5),a1
	lea	$88(a1),a0
	add.l	d2,a0
	move.b	(a0),d2
	and.l	#$FF,d2
	move.l	-$48(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
	addq.l	#1,d3
L926
	cmp.l	d4,d3
	bls	L925
L927
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_cyb_choose_points_function:0",CODE


;static points_func cyb_choose_points_function( GLcontext *ctx )
_cyb_choose_points_function
	move.l	4(a7),a0
L929
;   if (ctx->Point.Size==1.0 && !ctx->Point.SmoothFlag && ctx->Ras
	move.l	a0,a1
	add.l	#$D674,a1
	lea	(a1),a1
	fmove.s	4(a1),fp0
	fcmp.d	#$.3FF00000.00000000,fp0
	fbne.b	L934
L930
	move.l	a0,a1
	add.l	#$D674,a1
	lea	(a1),a1
	move.b	(a1),d0
	bne.b	L934
L931
	move.l	a0,a1
	add.l	#$E0F6,a1
	move.l	(a1),d0
	bne.b	L934
L932
	add.l	#$D764,a0
	lea	(a0),a0
	move.l	(a0),d0
	bne.b	L934
L933
	move.l	#_cyb_fast_points_function,d0
	rts
L934
	moveq	#0,d0
	rts

	SECTION "_cyb_choose_points_function_db:0",CODE


;static points_func cyb_choose_points_function_db( GLcontext *ctx )
_cyb_choose_points_function_db
L935
	moveq	#0,d0
	rts

	SECTION "_cyb_choose_line_function:0",CODE


;static line_func cyb_choose_line_function( GLcontext *ctx)
_cyb_choose_line_function
L936
	moveq	#0,d0
	rts

	SECTION "_cyb_choose_line_function_db:0",CODE


;static line_func cyb_choose_line_function_db( GLcontext *ctx)
_cyb_choose_line_function_db
L937
	moveq	#0,d0
	rts

	SECTION "_cyb_write_index_span_db:0",CODE


;static void cyb_write_index_span_db(GLcontext *ctx, GLuint n, GLint 
_cyb_write_index_span_db
L949	EQU	-$8
	link	a5,#L949
	movem.l	d2-d5/a2-a4,-(a7)
	movem.l	$C(a5),d2/d4/d5/a3
	move.l	$8(a5),a0
L938
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a2
;    register unsigned long * penconv=(unsigned long *)amesa->pen
	lea	$88(a2),a1
;    db=&((ULONG*)amesa->BackArray)[FIXxy(x,y)];
	move.l	$30(a2),a0
	move.l	$70(a2),d1
	move.l	$74(a2),d0
	move.l	$64(a2),d3
	sub.l	d3,d0
	sub.l	d5,d0
	muls.l	d0,d1
	move.l	$60(a2),d0
	add.l	d4,d0
	add.l	d0,d1
	lea	0(a0,d1.l*4),a0
;    if(mask)
	tst.l	$1C(a5)
	beq.b	L945
L939
;	for (i=0;
	moveq	#0,d0
	bra.b	L943
L940
;	    if(mask[i])
	move.l	$1C(a5),a4
	lea	0(a4,d0.l),a2
	move.b	(a2),d1
	beq.b	L942
L941
;		*db=penconv[index[i]];
	lea	0(a3,d0.l*4),a2
	move.l	(a2),d1
	lea	0(a1,d1.l*4),a2
	move.l	(a2),d1
	move.l	d1,(a0)
L942
;		db++;
	addq.w	#4,a0
	addq.l	#1,d0
L943
	cmp.l	d2,d0
	blo.b	L940
L944
	bra.b	L948
L945
;	for (i=0;
	moveq	#0,d0
	bra.b	L947
L946
;	    *db=penconv[index[i]];
	lea	0(a3,d0.l*4),a2
	move.l	(a2),d1
	lea	0(a1,d1.l*4),a2
	move.l	(a2),d1
	move.l	d1,(a0)
;db++;
	addq.w	#4,a0
	addq.l	#1,d0
L947
	cmp.l	d2,d0
	blo.b	L946
L948
	movem.l	(a7)+,d2-d5/a2-a4
	unlk	a5
	rts

	SECTION "_cyb_write_color_span_db:0",CODE


;static void cyb_write_color_span_db(GLcontext *ctx, GLuint n, GLint 
_cyb_write_color_span_db
L961	EQU	-$8
	link	a5,#L961
	movem.l	d2-d5/a2-a4,-(a7)
	movem.l	$C(a5),d3-d5
	move.l	$8(a5),a0
	move.l	$20(a5),a2
	move.l	$1C(a5),a3
L950
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;    db=&((ULONG*)amesa->BackArray)[FIXxy(x,y)];
	move.l	$30(a1),a0
	move.l	$70(a1),d1
	move.l	$74(a1),d0
	move.l	$64(a1),d2
	sub.l	d2,d0
	sub.l	d5,d0
	muls.l	d0,d1
	move.l	$60(a1),d0
	add.l	d4,d0
	add.l	d0,d1
	lea	0(a0,d1.l*4),a0
;    if (mask)
	tst.l	$28(a5)
	beq.b	L957
L951
;	for (i=0;
	moveq	#0,d0
	bra.b	L955
L952
;	    if (mask[i])
	move.l	$28(a5),a4
	lea	0(a4,d0.l),a1
	move.b	(a1),d1
	beq.b	L954
L953
;		*db=TC_RGBA(red[i],green[i],blue[i],alpha[i]);
	move.l	$24(a5),a4
	lea	0(a4,d0.l),a1
	move.b	(a1),d1
	and.l	#$FF,d1
	moveq	#$8,d2
	asl.l	d2,d1
	move.l	$18(a5),a4
	lea	0(a4,d0.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d1
	moveq	#$8,d2
	asl.l	d2,d1
	lea	0(a3,d0.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d1
	moveq	#$8,d2
	asl.l	d2,d1
	lea	0(a2,d0.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d1
	move.l	d1,(a0)
L954
;		db++;
	addq.w	#4,a0
	addq.l	#1,d0
L955
	cmp.l	d3,d0
	blo.b	L952
L956
	bra.b	L960
L957
;	for (i=0;
	moveq	#0,d0
	bra.b	L959
L958
;	    *db=TC_RGBA(red[i],green[i],blue[i],alpha[i]);
	move.l	$24(a5),a4
	lea	0(a4,d0.l),a1
	move.b	(a1),d1
	and.l	#$FF,d1
	moveq	#$8,d2
	asl.l	d2,d1
	move.l	$18(a5),a4
	lea	0(a4,d0.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d1
	moveq	#$8,d2
	asl.l	d2,d1
	lea	0(a3,d0.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d1
	moveq	#$8,d2
	asl.l	d2,d1
	lea	0(a2,d0.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d1
	move.l	d1,(a0)
;db++;
	addq.w	#4,a0
	addq.l	#1,d0
L959
	cmp.l	d3,d0
	blo.b	L958
L960
	movem.l	(a7)+,d2-d5/a2-a4
	unlk	a5
	rts

	SECTION "_cyb_write_monoindex_span_db:0",CODE


;static void cyb_write_monoindex_span_db( GLcontext *ctx,GLuint n, GL
_cyb_write_monoindex_span_db
	movem.l	d2-d5/a2/a3,-(a7)
	movem.l	$20(a7),d2/d4/d5/a3
	move.l	$1C(a7),a0
L962
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a1
;db=&((ULONG*)amesa->BackArray)[FIXxy(x,y)];
	move.l	$30(a1),a0
	move.l	$70(a1),d1
	move.l	$74(a1),d0
	move.l	$64(a1),d3
	sub.l	d3,d0
	sub.l	d5,d0
	muls.l	d0,d1
	move.l	$60(a1),d0
	add.l	d4,d0
	add.l	d0,d1
	lea	0(a0,d1.l*4),a0
;if(mask)
	cmp.w	#0,a3
	beq.b	L969
L963
;    for (i=0;
	moveq	#0,d0
	bra.b	L967
L964
;	if (mask[i])
	lea	0(a3,d0.l),a2
	move.b	(a2),d1
	beq.b	L966
L965
;	    *db=amesa->pixel;
	move.l	$14(a1),d1
	move.l	d1,(a0)
L966
;	    db++;
	addq.w	#4,a0
	addq.l	#1,d0
L967
	cmp.l	d2,d0
	blo.b	L964
L968
	bra.b	L972
L969
;    for (i=0;
	moveq	#0,d0
	bra.b	L971
L970
;	*db=amesa->pixel;
	move.l	$14(a1),d1
	move.l	d1,(a0)
;db++;
	addq.w	#4,a0
	addq.l	#1,d0
L971
	cmp.l	d2,d0
	blo.b	L970
L972
	movem.l	(a7)+,d2-d5/a2/a3
	rts

	SECTION "_cyb_write_index_span:0",CODE


;static void cyb_write_index_span(GLcontext *ctx, GLuint n, GLint x, 
_cyb_write_index_span
L991	EQU	-$54
	link	a5,#L991
	movem.l	d2-d7/a2/a6,-(a7)
	move.l	$8(a5),a0
L973
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    unsigned long * penconv=(unsigned long*)amesa->penconv;
	move.l	#$88,d0
	add.l	-4(a5),d0
	move.l	d0,-$14(a5)
;    register struct RastPort * rp=amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$4C(a5)
;    y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	$14(a5),d0
	move.l	d0,$14(a5)
;    x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,$10(a5)
; i++, x++)
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq	L985
L974
;	ant=0;
	moveq	#0,d0
;	    for (i=0;
	clr.l	-$8(a5)
	bra.b	L981
L975
;		if (mask[i]) 
	move.l	-$8(a5),d1
	move.l	$1C(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d1
	beq.b	L977
L976
;		    ant++;
	addq.l	#1,d0
;		*dp = penconv[index[i]];
	move.l	-$8(a5),d1
	move.l	$18(a5),a2
	lea	0(a2,d1.l*4),a1
	move.l	(a1),d1
	move.l	-$14(a5),a2
	lea	0(a2,d1.l*4),a1
	move.l	(a1),d1
	move.l	d1,(a0)
;dp++;
	addq.w	#4,a0
	bra.b	L980
L977
;		if(ant)
	tst.l	d0
	beq.b	L979
L978
;		    WritePixelArray(amesa->imageline,0,0,4*ant,rp,x,y,ant,1,
	move.w	d0,d5
	move.w	$16(a5),d4
	move.w	$12(a5),d3
	move.l	d0,d2
	moveq	#2,d0
	asl.l	d0,d2
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	moveq	#0,d0
	moveq	#0,d1
	moveq	#1,d6
	moveq	#2,d7
	move.l	-$4C(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$7E(a6)
L979
;		dp=(ULONG*)amesa->imageline;
	move.l	-4(a5),a1
	move.l	$488(a1),a0
;		ant=0;
	moveq	#0,d0
;		x++;
	addq.l	#1,$10(a5)
L980
	addq.l	#1,-$8(a5)
L981
	move.l	-$8(a5),d1
	cmp.l	$C(a5),d1
	blo	L975
L982
;	if(ant)
	tst.l	d0
	beq.b	L984
L983
;	    WritePixelArray(amesa->imageline,0,0,4*ant,rp,x,y,ant,1,RE
	move.w	d0,d5
	move.w	$16(a5),d4
	move.w	$12(a5),d3
	move.l	d0,d2
	moveq	#2,d0
	asl.l	d0,d2
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	moveq	#0,d0
	moveq	#0,d1
	moveq	#1,d6
	moveq	#2,d7
	move.l	-$4C(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$7E(a6)
L984
	bra.b	L990
L985
;	    for (i=0;
	clr.l	-$8(a5)
	bra.b	L989
L986
;		if (mask[i]) 
	move.l	-$8(a5),d0
	move.l	$1C(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	beq.b	L988
L987
;		WriteRGBPixel(rp,x,y,penconv[index[i]]);
	move.l	-$8(a5),d0
	move.l	$18(a5),a1
	lea	0(a1,d0.l*4),a0
	move.l	(a0),d0
	move.l	-$14(a5),a1
	lea	0(a1,d0.l*4),a0
	move.l	(a0),d2
	move.w	$16(a5),d1
	move.w	$12(a5),d0
	move.l	-$4C(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
L988
	addq.l	#1,-$8(a5)
	addq.l	#1,$10(a5)
L989
	move.l	-$8(a5),d0
	cmp.l	$C(a5),d0
	blo.b	L986
L990
	movem.l	(a7)+,d2-d7/a2/a6
	unlk	a5
	rts

	SECTION "_cyb_write_color_span:0",CODE


;static void cyb_write_color_span( GLcontext *ctx,GLuint n, GLint x, 
_cyb_write_color_span
L1021	EQU	-$64
	link	a5,#L1021
	movem.l	d2-d7/a2/a6,-(a7)
	move.l	$8(a5),a0
L992
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$60(a5)
;    y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	$14(a5),d0
	move.l	d0,$14(a5)
;    x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,$10(a5)
;    if(dp = (ULONG*)amesa->imageline)
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq	L1010
L993
;	if (mask)
	tst.l	$28(a5)
	beq	L1005
L994
;	    ant=0;
	clr.l	-$C(a5)
;	    for (i=0;
	clr.l	-$8(a5)
	bra	L1001
L995
;		if (mask[i])
	move.l	-$8(a5),d0
	move.l	$28(a5),a2
	lea	0(a2,d0.l),a1
	move.b	(a1),d0
	beq.b	L997
L996
;		    ant++;
	addq.l	#1,-$C(a5)
;		    *dp = TC_RGBA(red[i],green[i],blue[i],alpha[i]);
	move.l	-$8(a5),d0
	move.l	$24(a5),a2
	lea	0(a2,d0.l),a1
	move.b	(a1),d0
	and.l	#$FF,d0
	moveq	#$8,d1
	asl.l	d1,d0
	move.l	-$8(a5),d1
	move.l	$18(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d1
	and.l	#$FF,d1
	or.l	d1,d0
	moveq	#$8,d1
	asl.l	d1,d0
	move.l	-$8(a5),d1
	move.l	$1C(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d1
	and.l	#$FF,d1
	or.l	d1,d0
	moveq	#$8,d1
	asl.l	d1,d0
	move.l	-$8(a5),d1
	move.l	$20(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d1
	and.l	#$FF,d1
	or.l	d1,d0
	move.l	d0,(a0)
;dp++;
	addq.w	#4,a0
	bra.b	L1000
L997
;		    if(ant)
	tst.l	-$C(a5)
	beq.b	L999
L998
;			WritePixelArray(amesa->imageline,0,0,4*ant,rp,x,y,ant,1,RECTFM
	move.w	-$A(a5),d5
	move.w	$16(a5),d4
	move.w	$12(a5),d3
	move.l	-$C(a5),d2
	moveq	#2,d0
	asl.l	d0,d2
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	moveq	#0,d0
	moveq	#0,d1
	moveq	#1,d6
	moveq	#2,d7
	move.l	-$60(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$7E(a6)
;			dp=(ULONG*)amesa->imageline;
	move.l	-4(a5),a1
	move.l	$488(a1),a0
;			x=x+ant;
	move.l	$10(a5),d0
	add.l	-$C(a5),d0
	move.l	d0,$10(a5)
;			ant=0;
	clr.l	-$C(a5)
L999
;		    x++;
	addq.l	#1,$10(a5)
L1000
	addq.l	#1,-$8(a5)
L1001
	move.l	-$8(a5),d0
	cmp.l	$C(a5),d0
	blo	L995
L1002
;	    if(ant)
	tst.l	-$C(a5)
	beq.b	L1004
L1003
;		WritePixelArray(amesa->imageline,0,0,4*ant,rp,x,y,ant,1,RECTFMT_
	move.w	-$A(a5),d5
	move.w	$16(a5),d4
	move.w	$12(a5),d3
	move.l	-$C(a5),d2
	moveq	#2,d0
	asl.l	d0,d2
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	moveq	#0,d0
	moveq	#0,d1
	moveq	#1,d6
	moveq	#2,d7
	move.l	-$60(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$7E(a6)
L1004
	bra	L1009
L1005
;	    for (i=0;
	clr.l	-$8(a5)
	bra.b	L1007
L1006
;		*dp = TC_RGBA(red[i],green[i],blue[i],alpha[i]);
	move.l	-$8(a5),d0
	move.l	$24(a5),a2
	lea	0(a2,d0.l),a1
	move.b	(a1),d0
	and.l	#$FF,d0
	moveq	#$8,d1
	asl.l	d1,d0
	move.l	-$8(a5),d1
	move.l	$18(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d1
	and.l	#$FF,d1
	or.l	d1,d0
	moveq	#$8,d1
	asl.l	d1,d0
	move.l	-$8(a5),d1
	move.l	$1C(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d1
	and.l	#$FF,d1
	or.l	d1,d0
	moveq	#$8,d1
	asl.l	d1,d0
	move.l	-$8(a5),d1
	move.l	$20(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d1
	and.l	#$FF,d1
	or.l	d1,d0
	move.l	d0,(a0)
;dp++;
	addq.w	#4,a0
	addq.l	#1,-$8(a5)
L1007
	move.l	-$8(a5),d0
	cmp.l	$C(a5),d0
	blo.b	L1006
L1008
;	    WritePixelArray(amesa->imageline,0,0,4*n,rp,x,y,n,1,RECTFM
	move.w	$E(a5),d5
	move.w	$16(a5),d4
	move.w	$12(a5),d3
	move.l	$C(a5),d2
	moveq	#2,d0
	asl.l	d0,d2
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	moveq	#0,d0
	moveq	#0,d1
	moveq	#1,d6
	moveq	#2,d7
	move.l	-$60(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$7E(a6)
L1009
	bra	L1020
L1010
;	if (mask)
	tst.l	$28(a5)
	beq	L1017
L1011
;	    for (i=0;
	clr.l	-$8(a5)
	bra	L1015
L1012
;		if (mask[i])
	move.l	-$8(a5),d0
	move.l	$28(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	beq.b	L1014
L1013
;		    WriteRGBPixel(rp,x,y,TC_RGBA(red[i],green[i],blue[i],alp
	move.l	-$8(a5),d0
	move.l	$24(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d2
	and.l	#$FF,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	-$8(a5),d0
	move.l	$18(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	-$8(a5),d0
	move.l	$1C(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	-$8(a5),d0
	move.l	$20(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	move.w	$16(a5),d1
	move.w	$12(a5),d0
	move.l	-$60(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
L1014
	addq.l	#1,-$8(a5)
	addq.l	#1,$10(a5)
L1015
	move.l	-$8(a5),d0
	cmp.l	$C(a5),d0
	blo	L1012
L1016
	bra	L1020
L1017
;	    for (i=0;
	clr.l	-$8(a5)
	bra	L1019
L1018
;		WriteRGBPixel(rp,x,y,TC_RGBA(red[i],green[i],blue[i],alpha[i]));
	move.l	-$8(a5),d0
	move.l	$24(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d2
	and.l	#$FF,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	-$8(a5),d0
	move.l	$18(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	-$8(a5),d0
	move.l	$1C(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	-$8(a5),d0
	move.l	$20(a5),a1
	lea	0(a1,d0.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	move.w	$16(a5),d1
	move.w	$12(a5),d0
	move.l	-$60(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
	addq.l	#1,-$8(a5)
	addq.l	#1,$10(a5)
L1019
	move.l	-$8(a5),d0
	cmp.l	$C(a5),d0
	blo	L1018
L1020
	movem.l	(a7)+,d2-d7/a2/a6
	unlk	a5
	rts

	SECTION "_cyb_write_monoindex_span:0",CODE


;static void cyb_write_monoindex_span(GLcontext *ctx,GLuint n,GLint x
_cyb_write_monoindex_span
L1035	EQU	-$2C
	link	a5,#L1035
	movem.l	d2-d5/a6,-(a7)
	move.l	$8(a5),a0
L1022
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	$14(a5),d0
	move.l	d0,$14(a5)
;    x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,$10(a5)
;    i=0;
	moveq	#0,d5
;    while(i<n)
	bra.b	L1033
L1023
;	while(!mask[i] && i<n)
	bra.b	L1025
L1024
;	    i++;
	addq.l	#1,d5
;x++;
	addq.l	#1,$10(a5)
L1025
	move.l	$18(a5),a1
	lea	0(a1,d5.l),a0
	move.b	(a0),d0
	bne.b	L1027
L1026
	cmp.l	$C(a5),d5
	blo.b	L1024
L1027
;	if(i<n)
	cmp.l	$C(a5),d5
	bhs.b	L1033
L1028
;	    j=0;
	clr.l	-$C(a5)
;	    while(mask[i] && i<n)
	bra.b	L1030
L1029
;		i++;
	addq.l	#1,d5
;j++;
	addq.l	#1,-$C(a5)
L1030
	move.l	$18(a5),a1
	lea	0(a1,d5.l),a0
	move.b	(a0),d0
	beq.b	L1032
L1031
	cmp.l	$C(a5),d5
	blo.b	L1029
L1032
;	    FillPixelArray (amesa->rp,x,y,j,1,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d4
	move.w	-$A(a5),d2
	move.w	$16(a5),d1
	move.w	$12(a5),d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	moveq	#1,d3
	move.l	_CyberGfxBase,a6
	jsr	-$96(a6)
;	    x+=j;
	move.l	$10(a5),d0
	add.l	-$C(a5),d0
	move.l	d0,$10(a5)
L1033
	cmp.l	$C(a5),d5
	blo.b	L1023
L1034
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_cyb_write_monocolor_span:0",CODE


;static void cyb_write_monocolor_span( GLcontext *ctx,GLuint n, GLint
_cyb_write_monocolor_span
L1049	EQU	-$34
	link	a5,#L1049
	movem.l	d2-d5/a6,-(a7)
	move.l	$8(a5),a0
L1036
;    AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$30(a5)
;    y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	$14(a5),d0
	move.l	d0,$14(a5)
;    x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,$10(a5)
;    i=0;
	moveq	#0,d5
;    while(i<n)
	bra.b	L1047
L1037
;	while(!mask[i] && i<n)
	bra.b	L1039
L1038
;	    i++;
	addq.l	#1,d5
;	    x++;
	addq.l	#1,$10(a5)
L1039
	move.l	$18(a5),a1
	lea	0(a1,d5.l),a0
	move.b	(a0),d0
	bne.b	L1041
L1040
	cmp.l	$C(a5),d5
	blo.b	L1038
L1041
;	if(i<n)
	cmp.l	$C(a5),d5
	bhs.b	L1047
L1042
;	    j = 0;
	clr.l	-$C(a5)
;	    while(mask[i] && i<n)
	bra.b	L1044
L1043
;		i++;
	addq.l	#1,d5
;		j++;
	addq.l	#1,-$C(a5)
L1044
	move.l	$18(a5),a1
	lea	0(a1,d5.l),a0
	move.b	(a0),d0
	beq.b	L1046
L1045
	cmp.l	$C(a5),d5
	blo.b	L1043
L1046
;	    FillPixelArray(rp,x,y,j,1,amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d4
	move.w	-$A(a5),d2
	move.w	$16(a5),d1
	move.w	$12(a5),d0
	moveq	#1,d3
	move.l	-$30(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$96(a6)
;	    x += j;
	move.l	$10(a5),d0
	add.l	-$C(a5),d0
	move.l	d0,$10(a5)
L1047
	cmp.l	$C(a5),d5
	blo.b	L1037
L1048
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_cyb_read_index_span:0",CODE


;static void cyb_read_index_span( GLcontext *ctx,GLuint n, GLint x, G
_cyb_read_index_span
L1059	EQU	-$38
	link	a5,#L1059
	movem.l	d2-d7/a2/a6,-(a7)
	movem.l	$10(a5),d3/d4
	move.l	$8(a5),a0
L1050
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	d4,d0
	move.l	d0,d4
;    x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,d3
;    if(amesa->imageline) 
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq	L1055
L1051
;	ReadPixelArray(amesa->imageline,0,0,4*n,amesa->rp,x,y,n,1,RECTFMT_
	move.w	$E(a5),d5
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	$C(a5),d2
	moveq	#2,d0
	asl.l	d0,d2
	move.l	-4(a5),a2
	move.l	$488(a2),a0
	moveq	#0,d0
	moveq	#0,d1
	moveq	#1,d6
	moveq	#2,d7
	move.l	_CyberGfxBase,a6
	jsr	-$78(a6)
;	for(i=0;
	moveq	#0,d2
	bra.b	L1053
L1052
;	    color=((ULONG*)amesa->imageline)[i];
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	lea	0(a0,d2.l*4),a0
	move.l	(a0),d0
;	    index[i]= FindNearestPen(amesa,
	move.l	-4(a5),a1
	move.l	$84(a1),a0
	move.l	a0,-(a7)
	move.l	d0,d1
	and.l	#$FF,d1
	and.l	#$FF,d1
	move.l	d1,-(a7)
	move.l	d0,d1
	moveq	#$8,d3
	lsr.l	d3,d1
	and.l	#$FF,d1
	and.l	#$FF,d1
	move.l	d1,-(a7)
	moveq	#$10,d1
	lsr.l	d1,d0
	and.l	#$FF,d0
	and.l	#$FF,d0
	move.l	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_FindNearestPen
	add.w	#$14,a7
	move.l	$18(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	d0,(a0)
	addq.l	#1,d2
L1053
	cmp.l	$C(a5),d2
	blo.b	L1052
L1054
	bra	L1058
L1055
;	for (i=0;
	moveq	#0,d2
	bra.b	L1057
L1056
;	    color = ReadRGBPixel(amesa->rp,x,y);
	move.w	d4,d1
	move.w	d3,d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_CyberGfxBase,a6
	jsr	-$6C(a6)
;	    index[i]= FindNearestPen(amesa,
	move.l	-4(a5),a1
	move.l	$84(a1),a0
	move.l	a0,-(a7)
	move.l	d0,d1
	and.l	#$FF,d1
	and.l	#$FF,d1
	move.l	d1,-(a7)
	move.l	d0,d1
	moveq	#$8,d5
	lsr.l	d5,d1
	and.l	#$FF,d1
	and.l	#$FF,d1
	move.l	d1,-(a7)
	moveq	#$10,d1
	lsr.l	d1,d0
	and.l	#$FF,d0
	and.l	#$FF,d0
	move.l	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_FindNearestPen
	add.w	#$14,a7
	move.l	$18(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	d0,(a0)
	addq.l	#1,d2
	addq.l	#1,d3
L1057
	cmp.l	$C(a5),d2
	blo.b	L1056
L1058
	movem.l	(a7)+,d2-d7/a2/a6
	unlk	a5
	rts

	SECTION "_MyReadPixelArray:0",CODE


;static void MyReadPixelArray(UBYTE *a, ULONG b, ULONG c, ULONG d, st
_MyReadPixelArray
L1061	EQU	-4
	link	a5,#L1061
	movem.l	d2-d7/a6,-(a7)
	movem.l	$C(a5),d0-d2/a1
	movem.l	$1C(a5),d3-d5
	move.l	$8(a5),a0
L1060
;    ReadPixelArray(a,b,c,d,e,f,g,h,i,j);
	move.b	$2F(a5),-3(a5)
	move.w	$2A(a5),-2(a5)
	move.w	-2(a5),d6
	move.b	-3(a5),d7
	move.l	_CyberGfxBase,a6
	jsr	-$78(a6)
	movem.l	(a7)+,d2-d7/a6
	unlk	a5
	rts

	SECTION "_cyb_read_color_span:0",CODE


;static void cyb_read_color_span( GLcontext *ctx,GLuint n, GLint x, G
_cyb_read_color_span
L1071	EQU	-$30
	link	a5,#L1071
	movem.l	d2-d6/a6,-(a7)
	movem.l	$10(a5),d3/d5
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L1062
;    AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    y=FIXy(y);
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	sub.l	d5,d0
	move.l	d0,d5
;    x=FIXx(x);
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	add.l	d0,d3
;    if(amesa->imageline) 
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	cmp.w	#0,a0
	beq	L1067
L1063
;	MyReadPixelArray(amesa->imageline,0,0,n*4,amesa->rp,x,y,n,1,RECTFM
	pea	2.w
	pea	1.w
	move.l	d4,-(a7)
	move.l	d5,-(a7)
	move.l	d3,-(a7)
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	a0,-(a7)
	move.l	d4,d0
	moveq	#2,d1
	asl.l	d1,d0
	move.l	d0,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	move.l	a0,-(a7)
	jsr	_MyReadPixelArray
	add.w	#$28,a7
;	for(i=0;
	moveq	#0,d2
	bra.b	L1065
L1064
;	    col = ((ULONG*)amesa->imageline)[i];
	move.l	-4(a5),a1
	move.l	$488(a1),a0
	lea	0(a0,d2.l*4),a0
	move.l	(a0),d0
;	    red[i] = (col & 0xff0000)>>16;
	move.l	d0,d1
	and.l	#$FF0000,d1
	moveq	#$10,d3
	lsr.l	d3,d1
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    green[i] = (col & 0xff00)>>8;
	move.l	d0,d1
	and.l	#$FF00,d1
	moveq	#$8,d3
	lsr.l	d3,d1
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    blue[i] = col & 0xff;
	move.l	d0,d1
	and.l	#$FF,d1
	move.l	$20(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    alpha[i]= (col & 0xff000000)>>24;
	and.l	#-$1000000,d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$24(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d0,(a0)
	addq.l	#1,d2
L1065
	cmp.l	d4,d2
	blo.b	L1064
L1066
	bra.b	L1070
L1067
;	for (i=0;
	moveq	#0,d2
	bra.b	L1069
L1068
;	    col=ReadRGBPixel(amesa->rp,x,y);
	move.w	d5,d1
	move.w	d3,d0
	move.l	-4(a5),a0
	move.l	$34(a0),a1
	move.l	_CyberGfxBase,a6
	jsr	-$6C(a6)
;	    red[i] = (col & 0xff0000)>>16;
	move.l	d0,d1
	and.l	#$FF0000,d1
	moveq	#$10,d6
	lsr.l	d6,d1
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    green[i] = (col & 0xff00)>>8;
	move.l	d0,d1
	and.l	#$FF00,d1
	moveq	#$8,d6
	lsr.l	d6,d1
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    blue[i] = col & 0xff;
	move.l	d0,d1
	and.l	#$FF,d1
	move.l	$20(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    alpha[i]= (col & 0xff000000)>>24;
	and.l	#-$1000000,d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$24(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d0,(a0)
	addq.l	#1,d2
	addq.l	#1,d3
L1069
	cmp.l	d4,d2
	blo.b	L1068
L1070
	movem.l	(a7)+,d2-d6/a6
	unlk	a5
	rts

	SECTION "_cyb_write_index_pixels_db:0",CODE


;static void cyb_write_index_pixels_db( GLcontext *ctx,GLuint n, cons
_cyb_write_index_pixels_db
L1078	EQU	-$8
	link	a5,#L1078
	movem.l	d2-d5/a2-a4,-(a7)
	movem.l	$C(a5),d5/a3
	move.l	$8(a5),a0
L1072
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;    for (i=0;
	moveq	#0,d0
	bra.b	L1076
L1073
;	if (mask[i])
	move.l	$1C(a5),a2
	lea	0(a2,d0.l),a1
	move.b	(a1),d1
	beq.b	L1075
L1074
;	    ((ULONG*)amesa->BackArray)[FIXxy(x[i],y[i])]=amesa->pencon
	lea	$88(a0),a1
	move.l	$18(a5),a4
	lea	0(a4,d0.l*4),a2
	move.l	(a2),d1
	add.l	d1,a1
	move.b	(a1),d1
	moveq	#0,d4
	move.b	d1,d4
	move.l	$30(a0),a1
	move.l	$70(a0),d2
	move.l	$74(a0),d1
	move.l	$64(a0),d3
	sub.l	d3,d1
	move.l	$14(a5),a4
	lea	0(a4,d0.l*4),a2
	move.l	(a2),d3
	sub.l	d3,d1
	muls.l	d1,d2
	move.l	$60(a0),d1
	lea	0(a3,d0.l*4),a2
	move.l	(a2),d3
	add.l	d3,d1
	add.l	d1,d2
	lea	0(a1,d2.l*4),a1
	move.l	d4,(a1)
L1075
	addq.l	#1,d0
L1076
	cmp.l	d5,d0
	blo.b	L1073
L1077
	movem.l	(a7)+,d2-d5/a2-a4
	unlk	a5
	rts

	SECTION "_cyb_write_monoindex_pixels_db:0",CODE


;static void cyb_write_monoindex_pixels_db( GLcontext *ctx,GLuint n,
_cyb_write_monoindex_pixels_db
L1085	EQU	-$8
	link	a5,#L1085
	movem.l	d2-d5/a2-a4,-(a7)
	movem.l	$C(a5),d5/a3
	move.l	$8(a5),a0
L1079
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;    for (i=0;
	moveq	#0,d0
	bra.b	L1083
L1080
;	if (mask[i])
	move.l	$18(a5),a2
	lea	0(a2,d0.l),a1
	move.b	(a1),d1
	beq.b	L1082
L1081
;	    ((ULONG*)amesa->BackArray)[FIXxy(x[i],y[i])]=amesa->pixel;
	move.l	$14(a0),d4
	move.l	$30(a0),a1
	move.l	$70(a0),d2
	move.l	$74(a0),d1
	move.l	$64(a0),d3
	sub.l	d3,d1
	move.l	$14(a5),a4
	lea	0(a4,d0.l*4),a2
	move.l	(a2),d3
	sub.l	d3,d1
	muls.l	d1,d2
	move.l	$60(a0),d1
	lea	0(a3,d0.l*4),a2
	move.l	(a2),d3
	add.l	d3,d1
	add.l	d1,d2
	lea	0(a1,d2.l*4),a1
	move.l	d4,(a1)
L1082
	addq.l	#1,d0
L1083
	cmp.l	d5,d0
	blo.b	L1080
L1084
	movem.l	(a7)+,d2-d5/a2-a4
	unlk	a5
	rts

	SECTION "_cyb_write_color_pixels_db:0",CODE


;    }
_cyb_write_color_pixels_db
L1092	EQU	-$8
	link	a5,#L1092
	movem.l	d2-d5/a2-a4,-(a7)
	movem.l	$C(a5),d5/a3
	move.l	$8(a5),a0
L1086
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),a0
;    for (i=0;
	moveq	#0,d1
	bra	L1090
L1087
;	if (mask[i])
	move.l	$28(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d0
	beq	L1089
L1088
;	    ((ULONG*)amesa->BackArray)[FIXxy(x[i],y[i])]=TC_RGBA(r[i],
	move.l	$24(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d0
	and.l	#$FF,d0
	moveq	#$8,d2
	asl.l	d2,d0
	move.l	$18(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d0
	moveq	#$8,d2
	asl.l	d2,d0
	move.l	$1C(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d0
	moveq	#$8,d2
	asl.l	d2,d0
	move.l	$20(a5),a2
	lea	0(a2,d1.l),a1
	move.b	(a1),d2
	and.l	#$FF,d2
	or.l	d2,d0
	move.l	$30(a0),a1
	move.l	$70(a0),d3
	move.l	$74(a0),d2
	move.l	$64(a0),d4
	sub.l	d4,d2
	move.l	$14(a5),a4
	lea	0(a4,d1.l*4),a2
	move.l	(a2),d4
	sub.l	d4,d2
	muls.l	d2,d3
	move.l	$60(a0),d2
	lea	0(a3,d1.l*4),a2
	move.l	(a2),d4
	add.l	d4,d2
	add.l	d2,d3
	lea	0(a1,d3.l*4),a1
	move.l	d0,(a1)
L1089
	addq.l	#1,d1
L1090
	cmp.l	d5,d1
	blo	L1087
L1091
	movem.l	(a7)+,d2-d5/a2-a4
	unlk	a5
	rts

	SECTION "_cyb_write_index_pixels:0",CODE


;static void cyb_write_index_pixels(GLcontext *ctx, GLuint n, const G
_cyb_write_index_pixels
L1099	EQU	-$24
	link	a5,#L1099
	movem.l	d2-d5/a2/a6,-(a7)
	move.l	$C(a5),d5
	move.l	$8(a5),a0
L1093
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$20(a5)
;    for (i=0;
	moveq	#0,d3
	bra.b	L1097
L1094
;	if (mask[i])
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	beq.b	L1096
L1095
;	    WriteRGBPixel(rp,FIXx(x[i]),FIXy(y[i]),((unsigned long*)am
	move.l	-4(a5),a1
	lea	$88(a1),a0
	move.l	$18(a5),a2
	lea	0(a2,d3.l*4),a1
	move.l	(a1),d0
	lea	0(a0,d0.l*4),a0
	move.l	(a0),d2
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d4
	add.l	d4,d0
	move.l	-$20(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
L1096
	addq.l	#1,d3
L1097
	cmp.l	d5,d3
	blo.b	L1094
L1098
	movem.l	(a7)+,d2-d5/a2/a6
	unlk	a5
	rts

	SECTION "_cyb_write_monoindex_pixels:0",CODE


;static void cyb_write_monoindex_pixels(GLcontext *ctx, GLuint n,
_cyb_write_monoindex_pixels
L1106	EQU	-$28
	link	a5,#L1106
	movem.l	d2-d5/a6,-(a7)
	move.l	$C(a5),d5
	move.l	$8(a5),a0
L1100
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$24(a5)
;    for (i=0;
	moveq	#0,d3
	bra.b	L1104
L1101
;	if (mask[i]) 
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	beq.b	L1103
L1102
;	WriteRGBPixel(rp,FIXx(x[i]),FIXy(y[i]),amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d2
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d4
	add.l	d4,d0
	move.l	-$24(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
L1103
	addq.l	#1,d3
L1104
	cmp.l	d5,d3
	blo.b	L1101
L1105
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_cyb_write_color_pixels:0",CODE


;static void cyb_write_color_pixels( GLcontext *ctx,GLuint n, const G
_cyb_write_color_pixels
L1113	EQU	-$24
	link	a5,#L1113
	movem.l	d2-d5/a6,-(a7)
	move.l	$C(a5),d5
	move.l	$8(a5),a0
L1107
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$20(a5)
;    for (i=0;
	moveq	#0,d3
	bra	L1111
L1108
;	if (mask[i]) 
	move.l	$28(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	beq	L1110
L1109
;	WriteRGBPixel(rp,FIXx(x[i]),FIXy(y[i]),TC_RGBA(r[i],g[i],b[i],a[i])
	move.l	$24(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d2
	and.l	#$FF,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	$1C(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	moveq	#$8,d0
	asl.l	d0,d2
	move.l	$20(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	and.l	#$FF,d0
	or.l	d0,d2
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d4
	add.l	d4,d0
	move.l	-$20(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
L1110
	addq.l	#1,d3
L1111
	cmp.l	d5,d3
	blo	L1108
L1112
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_cyb_write_monocolor_pixels:0",CODE


;static void cyb_write_monocolor_pixels(GLcontext *ctx, GLuint n,
_cyb_write_monocolor_pixels
L1120	EQU	-$28
	link	a5,#L1120
	movem.l	d2-d5/a6,-(a7)
	move.l	$C(a5),d5
	move.l	$8(a5),a0
L1114
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$24(a5)
;    for (i=0;
	moveq	#0,d3
	bra.b	L1118
L1115
;	if (mask[i]) 
	move.l	$18(a5),a1
	lea	0(a1,d3.l),a0
	move.b	(a0),d0
	beq.b	L1117
L1116
;	WriteRGBPixel(rp,FIXx(x[i]),FIXy(y[i]),amesa->pixel);
	move.l	-4(a5),a0
	move.l	$14(a0),d2
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d3.l*4),a0
	move.l	(a0),d4
	add.l	d4,d0
	move.l	-$24(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$72(a6)
L1117
	addq.l	#1,d3
L1118
	cmp.l	d5,d3
	blo.b	L1115
L1119
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_cyb_read_index_pixels:0",CODE


;static void cyb_read_index_pixels( GLcontext *ctx,GLuint n, const GL
_cyb_read_index_pixels
L1127	EQU	-$2C
	link	a5,#L1127
	movem.l	d2-d4/a6,-(a7)
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L1121
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$28(a5)
;  for (i=0;
	moveq	#0,d2
	bra	L1125
L1122
;      if (mask[i]) 
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq	L1124
L1123
;	color = ReadRGBPixel(rp,FIXx(x[i]),FIXy(y[i]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d3
	add.l	d3,d0
	move.l	-$28(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$6C(a6)
;	index[i]= FindNearestPen(amesa,
	move.l	-4(a5),a1
	move.l	$84(a1),a0
	move.l	a0,-(a7)
	move.l	d0,d1
	and.l	#$FF,d1
	and.l	#$FF,d1
	move.l	d1,-(a7)
	move.l	d0,d1
	moveq	#$8,d3
	lsr.l	d3,d1
	and.l	#$FF,d1
	and.l	#$FF,d1
	move.l	d1,-(a7)
	moveq	#$10,d1
	lsr.l	d1,d0
	and.l	#$FF,d0
	and.l	#$FF,d0
	move.l	d0,-(a7)
	move.l	-4(a5),-(a7)
	jsr	_FindNearestPen
	add.w	#$14,a7
	move.l	$18(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	d0,(a0)
L1124
	addq.l	#1,d2
L1125
	cmp.l	d4,d2
	blo	L1122
L1126
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts

	SECTION "_cyb_read_color_pixels:0",CODE


;static void cyb_read_color_pixels( GLcontext *ctx,GLuint n, const GL
_cyb_read_color_pixels
L1134	EQU	-$28
	link	a5,#L1134
	movem.l	d2-d4/a6,-(a7)
	move.l	$C(a5),d4
	move.l	$8(a5),a0
L1128
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    register struct RastPort * rp = amesa->rp;
	move.l	-4(a5),a0
	move.l	$34(a0),-$24(a5)
;    for (i=0;
	moveq	#0,d2
	bra	L1132
L1129
;	if (mask[i])
	move.l	$28(a5),a1
	lea	0(a1,d2.l),a0
	move.b	(a0),d0
	beq	L1131
L1130
;	    col=ReadRGBPixel(rp,FIXx(x[i]),FIXy(y[i]));
	move.l	-4(a5),a0
	move.l	$74(a0),d1
	move.l	-4(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	$14(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d0
	sub.l	d0,d1
	move.l	-4(a5),a0
	move.l	$60(a0),d0
	move.l	$10(a5),a1
	lea	0(a1,d2.l*4),a0
	move.l	(a0),d3
	add.l	d3,d0
	move.l	-$24(a5),a1
	move.l	_CyberGfxBase,a6
	jsr	-$6C(a6)
;	    red[i]  = (col&0xff0000)>>16;
	move.l	d0,d1
	and.l	#$FF0000,d1
	moveq	#$10,d3
	asr.l	d3,d1
	move.l	$18(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    green[i] = (col&0xff00)>>8;
	move.l	d0,d1
	and.l	#$FF00,d1
	moveq	#$8,d3
	asr.l	d3,d1
	move.l	$1C(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    blue[i] = col&0xff;
	move.l	d0,d1
	and.l	#$FF,d1
	move.l	$20(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d1,(a0)
;	    alpha[i]= (col&0xff000000)>>24;
	and.l	#-$1000000,d0
	moveq	#$18,d1
	lsr.l	d1,d0
	move.l	$24(a5),a1
	lea	0(a1,d2.l),a0
	move.b	d0,(a0)
L1131
	addq.l	#1,d2
L1132
	cmp.l	d4,d2
	blo	L1129
L1133
	movem.l	(a7)+,d2-d4/a6
	unlk	a5
	rts

	SECTION "_cyb_set_buffer:0",CODE


;static GLboolean cyb_set_buffer( GLcontext *ctx,GLenum mode )
_cyb_set_buffer
	move.l	$8(a7),d0
L1135
;    if (mode==GL_FRONT)
	cmp.l	#$404,d0
	bne.b	L1137
L1136
	moveq	#1,d0
	rts
L1137
;    else if (mode==GL_BACK)
	cmp.l	#$405,d0
	bne.b	L1139
L1138
	moveq	#1,d0
	rts
L1139
	moveq	#0,d0
	rts

	SECTION "_cyb_standard_DD_pointers:0",CODE


;void cyb_standard_DD_pointers( GLcontext *ctx )
	XDEF	_cyb_standard_DD_pointers
_cyb_standard_DD_pointers
	move.l	4(a7),a0
L1140
;   ctx->Driver.UpdateState = cyb_standard_DD_pointers;
	move.l	#_cyb_standard_DD_pointers,$8A4(a0)
;   ctx->Driver.ClearIndex = cyb_clear_index;
	move.l	#_cyb_clear_index,$8A8(a0)
;   ctx->Driver.ClearColor = cyb_clear_color;
	move.l	#_cyb_clear_color,$8AC(a0)
;   ctx->Driver.Clear = cyb_clear;
	move.l	#_cyb_clear,$8B0(a0)
;   ctx->Driver.Index = cyb_set_index;
	move.l	#_cyb_set_index,$8B4(a0)
;   ctx->Driver.Color = cyb_set_color;
	move.l	#_cyb_set_color,$8B8(a0)
;   ctx->Driver.IndexMask = cyb_index_mask;
	move.l	#_cyb_index_mask,$8FC(a0)
;   ctx->Driver.ColorMask = cyb_color_mask;
	move.l	#_cyb_color_mask,$900(a0)
;   ctx->Driver.SetBuffer = cyb_set_buffer;
	move.l	#_cyb_set_buffer,$8BC(a0)
;   ctx->Driver.GetBufferSize = Cyb_Standard_resize;
	move.l	#_Cyb_Standard_resize,$8C0(a0)
;   ctx->Driver.WriteColorSpan       = cyb_write_color_span;
	move.l	#_cyb_write_color_span,$8C4(a0)
;   ctx->Driver.WriteMonocolorSpan   = cyb_write_monocolor_span;
	move.l	#_cyb_write_monocolor_span,$8C8(a0)
;   ctx->Driver.WriteColorPixels     = cyb_write_color_pixels;
	move.l	#_cyb_write_color_pixels,$8CC(a0)
;   ctx->Driver.WriteMonocolorPixels = cyb_write_monocolor_pixels;
	move.l	#_cyb_write_monocolor_pixels,$8D0(a0)
;   ctx->Driver.WriteIndexSpan       = cyb_write_index_span;
	move.l	#_cyb_write_index_span,$8D4(a0)
;   ctx->Driver.WriteMonoindexSpan   = cyb_write_monoindex_span;
	move.l	#_cyb_write_monoindex_span,$8D8(a0)
;   ctx->Driver.WriteIndexPixels     = cyb_write_index_pixels;
	move.l	#_cyb_write_index_pixels,$8DC(a0)
;   ctx->Driver.WriteMonoindexPixels = cyb_write_monoindex_pixels;
	move.l	#_cyb_write_monoindex_pixels,$8E0(a0)
;   ctx->Driver.ReadIndexSpan = cyb_read_index_span;
	move.l	#_cyb_read_index_span,$8E4(a0)
;   ctx->Driver.ReadColorSpan = cyb_read_color_span;
	move.l	#_cyb_read_color_span,$8E8(a0)
;   ctx->Driver.ReadIndexPixels = cyb_read_index_pixels;
	move.l	#_cyb_read_index_pixels,$8EC(a0)
;   ctx->Driver.ReadColorPixels = cyb_read_color_pixels;
	move.l	#_cyb_read_color_pixels,$8F0(a0)
	rts

	SECTION "_cyb_Faster_DD_pointers:0",CODE


;void cyb_Faster_DD_pointers( GLcontext *ctx )
	XDEF	_cyb_Faster_DD_pointers
_cyb_Faster_DD_pointers
	move.l	4(a7),a0
L1141
;    ctx=CC;
	move.l	_CC,a0
;   ctx->Driver.UpdateState = cyb_Faster_DD_pointers;
	move.l	#_cyb_Faster_DD_pointers,$8A4(a0)
;   ctx->Driver.ClearIndex = cyb_clear_index;
	move.l	#_cyb_clear_index,$8A8(a0)
;   ctx->Driver.ClearColor = cyb_clear_color;
	move.l	#_cyb_clear_color,$8AC(a0)
;   ctx->Driver.Clear = cyb_clear_db;
	move.l	#_cyb_clear_db,$8B0(a0)
;   ctx->Driver.Index = cyb_set_index;
	move.l	#_cyb_set_index,$8B4(a0)
;   ctx->Driver.Color = cyb_set_color;
	move.l	#_cyb_set_color,$8B8(a0)
;   ctx->Driver.IndexMask = cyb_index_mask;
	move.l	#_cyb_index_mask,$8FC(a0)
;   ctx->Driver.ColorMask = cyb_color_mask;
	move.l	#_cyb_color_mask,$900(a0)
;   ctx->Driver.SetBuffer = cyb_set_buffer;
	move.l	#_cyb_set_buffer,$8BC(a0)
;   ctx->Driver.GetBufferSize = Cyb_Standard_resize_db;
	move.l	#_Cyb_Standard_resize_db,$8C0(a0)
;   ctx->Driver.WriteColorSpan       = cyb_write_color_span_db;
	move.l	#_cyb_write_color_span_db,$8C4(a0)
;   ctx->Driver.WriteMonocolorSpan   = cyb_write_monoindex_span_db;
	move.l	#_cyb_write_monoindex_span_db,$8C8(a0)
;   ctx->Driver.WriteColorPixels     = cyb_write_color_pixels_db;
	move.l	#_cyb_write_color_pixels_db,$8CC(a0)
;   ctx->Driver.WriteMonocolorPixels = cyb_write_monoindex_pixels_
	move.l	#_cyb_write_monoindex_pixels_db,$8D0(a0)
;   ctx->Driver.WriteIndexSpan       = cyb_write_index_span_db;
	move.l	#_cyb_write_index_span_db,$8D4(a0)
;   ctx->Driver.WriteMonoindexSpan   = cyb_write_monoindex_span_db;
	move.l	#_cyb_write_monoindex_span_db,$8D8(a0)
;   ctx->Driver.WriteIndexPixels     = cyb_write_index_pixels_db;
	move.l	#_cyb_write_index_pixels_db,$8DC(a0)
;   ctx->Driver.WriteMonoindexPixels = cyb_write_monoindex_pixels_
	move.l	#_cyb_write_monoindex_pixels_db,$8E0(a0)
;   ctx->Driver.ReadIndexSpan = cyb_read_index_span;
	move.l	#_cyb_read_index_span,$8E4(a0)
;   ctx->Driver.ReadColorSpan = cyb_read_color_span;
	move.l	#_cyb_read_color_span,$8E8(a0)
;   ctx->Driver.ReadIndexPixels = cyb_read_index_pixels;
	move.l	#_cyb_read_index_pixels,$8EC(a0)
;   ctx->Driver.ReadColorPixels = cyb_read_color_pixels;
	move.l	#_cyb_read_color_pixels,$8F0(a0)
	rts

	SECTION "_MyWritePixelArray:0",CODE


;static void MyWritePixelArray(void *a,int b,int c,int d,struct RastP
_MyWritePixelArray
L1143	EQU	-4
	link	a5,#L1143
	movem.l	d2-d7/a6,-(a7)
	movem.l	$C(a5),d0-d2/a1
	movem.l	$1C(a5),d3-d5
	move.l	$8(a5),a0
L1142
;    WritePixelArray(a,b,c,d,e,f,g,h,i,j);
	move.b	$2F(a5),-3(a5)
	move.w	$2A(a5),-2(a5)
	move.w	-2(a5),d6
	move.b	-3(a5),d7
	move.l	_CyberGfxBase,a6
	jsr	-$7E(a6)
	movem.l	(a7)+,d2-d7/a6
	unlk	a5
	rts

	SECTION "_Cyb_Standard_resize:0",CODE


;static void
_Cyb_Standard_resize
L1157	EQU	-$8C
	link	a5,#L1157
	movem.l	d2/a6,-(a7)
	move.l	$8(a5),a0
	move.l	$10(a5),a6
L1145
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    *width=amesa->width;
	move.l	-4(a5),a0
	move.l	$58(a0),d0
	move.l	$C(a5),a0
	move.l	d0,(a0)
;    *height=amesa->height;
	move.l	-4(a5),a0
	move.l	$5C(a0),d0
	move.l	d0,(a6)
;	if (amesa->rp == NULL)
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	cmp.w	#0,a0
	bne.b	L1147
L1146
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts
L1147
;    if(!((  amesa->width  == (amesa->front_rp->Layer->bounds.Max
	move.l	-4(a5),a0
	move.l	$58(a0),d2
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$68(a0),d1
	sub.l	d1,d0
	cmp.l	d0,d2
	bne.b	L1149
L1148
	move.l	-4(a5),a0
	move.l	$5C(a0),d2
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$6C(a0),d1
	sub.l	d1,d0
	cmp.l	d0,d2
	beq	L1156
L1149
;	FreeOneLine(amesa);
	move.l	-4(a5),-(a7)
	jsr	_FreeOneLine
	addq.w	#4,a7
;	amesa->FixedWidth =amesa->RealWidth =amesa->front_rp->Layer->bound
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$70(a0)
	move.l	-4(a5),a0
	move.l	d0,$78(a0)
;	amesa->FixedHeight=amesa->RealHeight=amesa->front_rp->Layer->bound
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$74(a0)
	move.l	-4(a5),a0
	move.l	d0,$7C(a0)
;	*width=amesa->width = amesa->RealWidth-amesa->left-amesa->right;
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	move.l	-4(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$68(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$58(a0)
	move.l	$C(a5),a0
	move.l	d0,(a0)
;	*height=amesa->height = amesa->RealHeight-amesa->bottom-amesa->top;
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$6C(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$5C(a0)
	move.l	d0,(a6)
;	amesa->depth = GetCyberMapAttr(amesa->front_rp->BitMap,CYBRMATTR_D
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	4(a0),a0
	move.l	#$80000007,d0
	move.l	_CyberGfxBase,a6
	jsr	-$60(a6)
	move.l	-4(a5),a0
	move.l	d0,$48(a0)
;	if (amesa->visual->db_flag) 
	move.l	-4(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	beq	L1155
L1150
;	    if (amesa->back_rp) 
	move.l	-4(a5),a1
	move.l	$24(a1),a0
	cmp.w	#0,a0
	beq.b	L1152
L1151
;		destroy_rastport(amesa->back_rp);
	move.l	-4(a5),a1
	move.l	$24(a1),a0
	move.l	a0,-(a7)
	jsr	_destroy_rastport
	addq.w	#4,a7
L1152
;	    if((amesa->back_rp = make_rastport(amesa->RealWidth,amesa-
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	a0,-(a7)
	move.l	-4(a5),a0
	move.l	$48(a0),d0
	move.l	d0,-(a7)
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	d0,-(a7)
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	move.l	d0,-(a7)
	jsr	_make_rastport
	add.w	#$10,a7
	move.l	-4(a5),a1
	move.l	d0,$24(a1)
	move.l	d0,a0
	cmp.w	#0,a0
	bne.b	L1154
L1153
;		amesa->rp = amesa->front_rp;
	move.l	-4(a5),a1
	move.l	$20(a1),a0
	move.l	-4(a5),a1
	move.l	a0,$34(a1)
;		printf("To little mem free. Couldn't allocate Dubblebuffer in th
	move.l	#L1144,-(a7)
	jsr	_printf
	addq.w	#4,a7
	bra.b	L1155
L1154
;		amesa->rp=amesa->back_rp;
	move.l	-4(a5),a1
	move.l	$24(a1),a0
	move.l	-4(a5),a1
	move.l	a0,$34(a1)
L1155
;	AllocOneLine(amesa);
	move.l	-4(a5),-(a7)
	jsr	_AllocOneLine
	addq.w	#4,a7
L1156
	movem.l	(a7)+,d2/a6
	unlk	a5
	rts

L1144
	dc.b	'To little mem free. Couldn't allocate Dubblebuffer in this size.'
	dc.b	$A,0

	SECTION "_Cyb_Standard_resize_db:0",CODE


;static void
_Cyb_Standard_resize_db
L1168	EQU	-$84
	link	a5,#L1168
	movem.l	d2/a2/a6,-(a7)
	movem.l	$8(a5),a0/a6
	move.l	$10(a5),a1
L1159
;   AmigaMesaContext amesa = (AmigaMesaContext) ctx->DriverCtx;
	move.l	$974(a0),-4(a5)
;    *width=amesa->width;
	move.l	-4(a5),a0
	move.l	$58(a0),d0
	move.l	d0,(a6)
;    *height=amesa->height;
	move.l	-4(a5),a0
	move.l	$5C(a0),d0
	move.l	d0,(a1)
;	if (amesa->rp == NULL)
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	cmp.w	#0,a0
	bne.b	L1161
L1160
	movem.l	(a7)+,d2/a2/a6
	unlk	a5
	rts
L1161
;    if(!((  amesa->width  == (amesa->rp->Layer->bounds.MaxX-ames
	move.l	-4(a5),a0
	move.l	$58(a0),d2
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$68(a0),d1
	sub.l	d1,d0
	cmp.l	d0,d2
	bne.b	L1163
L1162
	move.l	-4(a5),a0
	move.l	$5C(a0),d2
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$6C(a0),d1
	sub.l	d1,d0
	cmp.l	d0,d2
	beq	L1167
L1163
;	amesa->RealWidth =amesa->rp->Layer->bounds.MaxX-amesa->rp->Layer->
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$70(a0)
;	amesa->RealHeight=amesa->rp->Layer->bounds.MaxY-amesa->rp->Layer->
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	-4(a5),a2
	move.l	$34(a2),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$74(a0)
;	amesa->FixedWidth =(amesa->RealWidth+3)&0xfffffffc;
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	addq.l	#3,d0
	and.l	#-4,d0
	move.l	-4(a5),a0
	move.l	d0,$78(a0)
;	amesa->FixedHeight=amesa->RealHeight+1;
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	addq.l	#1,d0
	move.l	-4(a5),a0
	move.l	d0,$7C(a0)
;	*width=amesa->width = amesa->RealWidth-amesa->left-amesa->right;
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	move.l	-4(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$68(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$58(a0)
	move.l	d0,(a6)
;	*height=amesa->height = amesa->RealHeight-amesa->bottom-amesa->top;
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	-4(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	$6C(a0),d1
	sub.l	d1,d0
	move.l	-4(a5),a0
	move.l	d0,$5C(a0)
	move.l	d0,(a1)
;	amesa->depth = GetCyberMapAttr(amesa->rp->BitMap,CYBRMATTR_DEPTH);
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	#$80000007,d0
	move.l	_CyberGfxBase,a6
	jsr	-$60(a6)
	move.l	-4(a5),a0
	move.l	d0,$48(a0)
;	if (amesa->visual->db_flag && amesa->BackArray)
	move.l	-4(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	beq.b	L1167
L1164
	move.l	-4(a5),a1
	move.l	$30(a1),a0
	cmp.w	#0,a0
	beq.b	L1167
L1165
;	    destroy_penbackarray(amesa->BackArray);
	move.l	-4(a5),a1
	move.l	$30(a1),a0
	move.l	a0,-(a7)
	jsr	_destroy_penbackarray
	addq.w	#4,a7
;	    if(!(amesa->BackArray=alloc_penbackarray(amesa->RealWidth,
	pea	4.w
	move.l	-4(a5),a0
	move.l	$74(a0),d0
	move.l	d0,-(a7)
	move.l	-4(a5),a0
	move.l	$70(a0),d0
	move.l	d0,-(a7)
	jsr	_alloc_penbackarray
	add.w	#$C,a7
	move.l	-4(a5),a1
	move.l	d0,$30(a1)
	bne.b	L1167
L1166
;		printf("AmigaMesa Error Can't allocate new PenArray in that size
	move.l	#L1158,-(a7)
	jsr	_printf
	addq.w	#4,a7
L1167
	movem.l	(a7)+,d2/a2/a6
	unlk	a5
	rts

L1158
	dc.b	'AmigaMesa Error Can't allocate new PenArray in that size.',$A,0

	SECTION "_Cyb_Standard_SwapBuffer_db:0",CODE


;static void
_Cyb_Standard_SwapBuffer_db
	movem.l	d2-d5/a2/a6,-(a7)
	move.l	$1C(a7),a0
L1169
;	if (amesa->rp == NULL)
	move.l	$34(a0),a1
	cmp.w	#0,a1
	bne.b	L1171
L1170
	movem.l	(a7)+,d2-d5/a2/a6
	rts
L1171
;    if (amesa->depth>8) 
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bls	L1173
L1172
;	MyWritePixelArray(amesa->BackArray,amesa->gl_ctx->Viewport.X,amesa
	pea	2.w
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$C(a1),d0
	move.l	d0,-(a7)
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$8(a1),d0
	move.l	d0,-(a7)
	move.l	$74(a0),d0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$C(a1),d1
	sub.l	d1,d0
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	4(a1),d1
	sub.l	d1,d0
	move.l	d0,-(a7)
	move.l	$60(a0),d0
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	(a1),d1
	add.l	d1,d0
	move.l	d0,-(a7)
	move.l	$34(a0),a1
	move.l	a1,-(a7)
	move.l	$70(a0),d0
	moveq	#2,d1
	asl.l	d1,d0
	move.l	d0,-(a7)
	move.l	$74(a0),d0
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$C(a1),d1
	sub.l	d1,d0
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	4(a1),d1
	sub.l	d1,d0
	move.l	d0,-(a7)
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	(a1),d0
	move.l	d0,-(a7)
	move.l	$30(a0),a0
	move.l	a0,-(a7)
	jsr	_MyWritePixelArray
	add.w	#$28,a7
	bra	L1174
L1173
;	WriteChunkyPixels/*WritePixelArray8*/(amesa->rp,amesa->left+amesa-
	move.l	$70(a0),d4
	move.l	$30(a0),a2
	move.l	$74(a0),d0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$C(a1),d1
	sub.l	d1,d0
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	4(a1),d1
	sub.l	d1,d0
	move.l	$70(a0),d1
	muls.l	d1,d0
	add.l	d0,a2
	move.l	$60(a0),d0
	add.l	d0,a2
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	(a1),d0
	add.l	d0,a2
	move.l	$74(a0),d3
	move.l	$64(a0),d0
	sub.l	d0,d3
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	4(a1),d0
	sub.l	d0,d3
	subq.l	#1,d3
	move.l	$60(a0),d2
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	(a1),d0
	add.l	d0,d2
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$8(a1),d0
	add.l	d0,d2
	subq.l	#1,d2
	move.l	$74(a0),d1
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	$C(a1),d0
	sub.l	d0,d1
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	4(a1),d0
	sub.l	d0,d1
	move.l	$60(a0),d0
	move.l	(a0),a1
	add.l	#$DCA8,a1
	lea	(a1),a1
	move.l	(a1),d5
	add.l	d5,d0
	move.l	$34(a0),a0
	move.l	_GfxBase,a6
	jsr	-$420(a6)
L1174
	movem.l	(a7)+,d2-d5/a2/a6
	rts

	SECTION "_Cyb_Standard_init:0",CODE


;BOOL
	XDEF	_Cyb_Standard_init
_Cyb_Standard_init
L1201	EQU	-$88
	link	a5,#L1201
	move.l	a6,-(a7)
L1176
;    c->FixedWidth =c->RealWidth =c->rp->Layer->bounds.MaxX-c->rp
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$70(a0)
	move.l	$8(a5),a0
	move.l	d0,$78(a0)
;    c->FixedHeight=c->RealHeight=c->rp->Layer->bounds.MaxY-c->rp
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$74(a0)
	move.l	$8(a5),a0
	move.l	d0,$7C(a0)
;    c->left = GetTagData(AMA_Left,0,tagList);
	move.l	#$80000021,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$60(a0)
;    c->bottom= GetTagData(AMA_Bottom,0,tagList);
	move.l	#$80000022,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$64(a0)
;    c->front_rp =c->rp;
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	$8(a5),a1
	move.l	a0,$20(a1)
;    c->back_rp=NULL;
	move.l	$8(a5),a1
	clr.l	$24(a1)
;    c->width = GetTagData(AMA_Width,c->RealWidth-c->left,tagList)
	move.l	$8(a5),a0
	move.l	$70(a0),d1
	move.l	$8(a5),a0
	move.l	$60(a0),d0
	sub.l	d0,d1
	move.l	#$80000023,d0
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$58(a0)
;    c->height= GetTagData(AMA_Height,c->RealHeight-c->bottom,tag
	move.l	$8(a5),a0
	move.l	$74(a0),d1
	move.l	$8(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	#$80000024,d0
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$5C(a0)
;    c->right = c->RealWidth - c->width - c->left;
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	move.l	$8(a5),a0
	move.l	$58(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$68(a0)
;    c->top = c->RealHeight - c->height - c->bottom;
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	move.l	$8(a5),a0
	move.l	$5C(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$6C(a0)
;    if ((CyberGfxBase) && IsCyberModeID(GetVPModeID(&c->Screen->
	tst.l	_CyberGfxBase
	beq.b	L1179
L1177
	move.l	$8(a5),a1
	move.l	$38(a1),a0
	add.w	#$2C,a0
	move.l	_GfxBase,a6
	jsr	-$318(a6)
	move.l	_CyberGfxBase,a6
	jsr	-$36(a6)
	tst.w	d0
	beq.b	L1179
L1178
;	c->depth = GetCyberMapAttr(c->rp->BitMap,CYBRMATTR_DEPTH);
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	#$80000007,d0
	move.l	_CyberGfxBase,a6
	jsr	-$60(a6)
	move.l	$8(a5),a0
	move.l	d0,$48(a0)
	bra.b	L1180
L1179
;	c->depth = GetBitMapAttr(c->rp->BitMap,BMA_DEPTH);
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	moveq	#4,d1
	move.l	_GfxBase,a6
	jsr	-$3C0(a6)
	move.l	$8(a5),a0
	move.l	d0,$48(a0)
L1180
;    c->pixel = 0;
	move.l	$8(a5),a0
	clr.l	$14(a0)
;    if (c->depth<=8)
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L1182
L1181
;	CreateTransTable(c);
	move.l	$8(a5),-(a7)
	jsr	_CreateTransTable
	addq.w	#4,a7
L1182
;    if (c->visual->db_flag==GL_TRUE)
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	cmp.b	#1,d0
	bne	L1187
L1183
;	if((c->back_rp = make_rastport(c->RealWidth,c->RealHeight,c->depth
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	a0,-(a7)
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	move.l	d0,-(a7)
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	move.l	d0,-(a7)
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	move.l	d0,-(a7)
	jsr	_make_rastport
	add.w	#$10,a7
	move.l	$8(a5),a1
	move.l	d0,$24(a1)
	move.l	d0,a0
	cmp.w	#0,a0
	beq.b	L1185
L1184
;	    c->gl_ctx->Color.DrawBuffer = GL_BACK;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$405,$1E92(a0)
;	    c->rp = c->back_rp;
	move.l	$8(a5),a1
	move.l	$24(a1),a0
	move.l	$8(a5),a1
	move.l	a0,$34(a1)
	bra.b	L1186
L1185
;	    printf("make_rastport Faild\n");
	move.l	#L1175,-(a7)
	jsr	_printf
	addq.w	#4,a7
;	    c->gl_ctx->Color.DrawBuffer = GL_FRONT;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$404,$1E92(a0)
L1186
	bra.b	L1188
L1187
;	c->gl_ctx->Color.DrawBuffer = GL_FRONT;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$404,$1E92(a0)
L1188
;    AllocOneLine(c);
	move.l	$8(a5),-(a7)
	jsr	_AllocOneLine
	addq.w	#4,a7
;    if (c->depth<=8) 
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L1190
L1189
;	alloc_temp_rastport(c);
	move.l	$8(a5),-(a7)
	jsr	_alloc_temp_rastport
	addq.w	#4,a7
L1190
;    c->InitDD=c->depth<=8 ? (void(*)(GLcontext *))amiga_standard
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L1192
L1191
	move.l	#_amiga_standard_DD_pointers,a0
	bra.b	L1193
L1192
	move.l	#_cyb_standard_DD_pointers,a0
L1193
	move.l	$8(a5),a1
	move.l	a0,$490(a1)
;    c->Dispose=Amiga_Standard_Dispose;
	move.l	$8(a5),a1
	move.l	#_Amiga_Standard_Dispose,$494(a1)
;    c->SwapBuffer=Amiga_Standard_SwapBuffer;
	move.l	$8(a5),a1
	move.l	#_Amiga_Standard_SwapBuffer,$498(a1)
;    if (c->depth > 8)
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bls.b	L1200
L1194
;      if (!(c->visual->rgb_flag))
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.b	5(a0),d0
	bne.b	L1200
L1195
;printf("byte array at -------->0x%x ends at 0x%x si
	move.l	#$400,d0
	move.l	#$10001,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	$8(a5),a1
	move.l	d0,$84(a1)
	bne.b	L1197
L1196
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L1197
;	for (i=0;
	moveq	#0,d0
	bra.b	L1199
L1198
;	    c->ColorTable2[i] = -1;
	move.l	$8(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d0.l*4),a0
	move.l	#-1,(a0)
	addq.l	#1,d0
L1199
	cmp.l	#$100,d0
	ble.b	L1198
L1200
	moveq	#1,d0
	move.l	(a7)+,a6
	unlk	a5
	rts

L1175
	dc.b	'make_rastport Faild',$A,0

	SECTION "_Cyb_Standard_init_db:0",CODE


;BOOL
	XDEF	_Cyb_Standard_init_db
_Cyb_Standard_init_db
L1228	EQU	-$8C
	link	a5,#L1228
	move.l	a6,-(a7)
L1202
;    c->window=(struct Window *)GetTagData(AMA_Window,0,tagList);
	move.l	#$80000027,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a1
	move.l	d0,$1C(a1)
;    if (!c->window)
	move.l	$8(a5),a1
	move.l	$1C(a1),a0
	cmp.w	#0,a0
	bne	L1208
L1203
;	c->rp=(struct RastPort *)GetTagData(AMA_RastPort,0,tagList);
	move.l	#$80000028,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a1
	move.l	d0,$34(a1)
;	if (!c->rp)
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	cmp.w	#0,a0
	bne.b	L1205
L1204
;	    LastError=AMESA_RASTPORT_TAG_MISSING;
	move.l	#1,_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L1205
;	c->Screen=(struct Screen *)GetTagData(AMA_Screen,0,tagList);
	move.l	#$80000026,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a1
	move.l	d0,$38(a1)
;	if (!c->Screen)
	move.l	$8(a5),a1
	move.l	$38(a1),a0
	cmp.w	#0,a0
	bne.b	L1207
L1206
;	    LastError=AMESA_SCREEN_TAG_MISSING;
	move.l	#2,_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L1207
;	    return
	bra.b	L1209
L1208
;	c->rp =c->window->RPort;
	move.l	$8(a5),a1
	move.l	$1C(a1),a0
	move.l	$32(a0),a0
	move.l	$8(a5),a1
	move.l	a0,$34(a1)
;	c->Screen=c->window->WScreen;
	move.l	$8(a5),a1
	move.l	$1C(a1),a0
	move.l	$2E(a0),a0
	move.l	$8(a5),a1
	move.l	a0,$38(a1)
L1209
;    if ((CyberGfxBase) && IsCyberModeID(GetVPModeID(&c->Screen->
	tst.l	_CyberGfxBase
	beq.b	L1212
L1210
	move.l	$8(a5),a1
	move.l	$38(a1),a0
	add.w	#$2C,a0
	move.l	_GfxBase,a6
	jsr	-$318(a6)
	move.l	_CyberGfxBase,a6
	jsr	-$36(a6)
	tst.w	d0
	beq.b	L1212
L1211
;	c->depth = GetCyberMapAttr(c->rp->BitMap,CYBRMATTR_DEPTH);
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	#$80000007,d0
	move.l	_CyberGfxBase,a6
	jsr	-$60(a6)
	move.l	$8(a5),a0
	move.l	d0,$48(a0)
	bra.b	L1213
L1212
;	c->depth = GetBitMapAttr(c->rp->BitMap,BMA_DEPTH);
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	moveq	#4,d1
	move.l	_GfxBase,a6
	jsr	-$3C0(a6)
	move.l	$8(a5),a0
	move.l	d0,$48(a0)
L1213
;    c->RealWidth =c->rp->Layer->bounds.MaxX-c->rp->Layer->bounds
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	4(a0),d0
	ext.l	d0
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$70(a0)
;    c->RealHeight=c->rp->Layer->bounds.MaxY-c->rp->Layer->bounds
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	6(a0),d0
	ext.l	d0
	move.l	$8(a5),a1
	move.l	$34(a1),a0
	move.l	(a0),a0
	add.w	#$10,a0
	move.w	2(a0),d1
	ext.l	d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$74(a0)
;    if (c->depth<=8)
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L1215
L1214
;	c->FixedWidth =((c->RealWidth+15)>>4)<<4;
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	add.l	#$F,d0
	moveq	#4,d1
	asr.l	d1,d0
	moveq	#4,d1
	asl.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$78(a0)
	bra.b	L1216
L1215
;	c->FixedWidth =(c->RealWidth+3)&0xfffffffc;
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	addq.l	#3,d0
	and.l	#-4,d0
	move.l	$8(a5),a0
	move.l	d0,$78(a0)
L1216
;    c->FixedHeight=c->RealHeight+1;
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	addq.l	#1,d0
	move.l	$8(a5),a0
	move.l	d0,$7C(a0)
;    c->left = GetTagData(AMA_Left,0,tagList);
	move.l	#$80000021,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$60(a0)
;    c->bottom = GetTagData(AMA_Bottom,0,tagList);
	move.l	#$80000022,d0
	moveq	#0,d1
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$64(a0)
;    c->width = GetTagData(AMA_Width,c->RealWidth-c->left,tagList)
	move.l	$8(a5),a0
	move.l	$70(a0),d1
	move.l	$8(a5),a0
	move.l	$60(a0),d0
	sub.l	d0,d1
	move.l	#$80000023,d0
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$58(a0)
;    c->height= GetTagData(AMA_Height,c->RealHeight-c->bottom,tag
	move.l	$8(a5),a0
	move.l	$74(a0),d1
	move.l	$8(a5),a0
	move.l	$64(a0),d0
	sub.l	d0,d1
	move.l	#$80000024,d0
	move.l	$C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	$8(a5),a0
	move.l	d0,$5C(a0)
;    c->right = c->RealWidth - c->width - c->left;
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	move.l	$8(a5),a0
	move.l	$58(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	$60(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$68(a0)
;    c->top = c->RealHeight - c->height - c->bottom;
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	move.l	$8(a5),a0
	move.l	$5C(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	$64(a0),d1
	sub.l	d1,d0
	move.l	$8(a5),a0
	move.l	d0,$6C(a0)
;    if (c->depth<=8) 
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L1218
L1217
;	AllocCMap(c->Screen);
	move.l	$8(a5),a1
	move.l	$38(a1),a0
	move.l	a0,-(a7)
	jsr	_AllocCMap
	addq.w	#4,a7
;	alloc_temp_rastport(c);
	move.l	$8(a5),-(a7)
	jsr	_alloc_temp_rastport
	addq.w	#4,a7
L1218
;    if (c->visual->db_flag)
	move.l	$8(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	beq	L1226
L1219
;	c->BackArray=alloc_penbackarray(c->RealWidth,c->RealHeight,c->dept
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L1221
L1220
	moveq	#1,d0
	bra.b	L1222
L1221
	moveq	#4,d0
L1222
	move.l	d0,-(a7)
	move.l	$8(a5),a0
	move.l	$74(a0),d0
	move.l	d0,-(a7)
	move.l	$8(a5),a0
	move.l	$70(a0),d0
	move.l	d0,-(a7)
	jsr	_alloc_penbackarray
	add.w	#$C,a7
	move.l	$8(a5),a1
	move.l	d0,$30(a1)
;	c->gl_ctx->Color.DrawBuffer = GL_BACK;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$405,$1E92(a0)
;	c->InitDD=c->depth<=8 ? (void(*)(GLcontext *))amiga_Faster_DD_poin
	move.l	$8(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi.b	L1224
L1223
	move.l	#_amiga_Faster_DD_pointers,a0
	bra.b	L1225
L1224
	move.l	#_cyb_Faster_DD_pointers,a0
L1225
	move.l	$8(a5),a1
	move.l	a0,$490(a1)
;	c->Dispose=Amiga_Standard_Dispose_db;
	move.l	$8(a5),a1
	move.l	#_Amiga_Standard_Dispose_db,$494(a1)
;	c->SwapBuffer=Cyb_Standard_SwapBuffer_db;
	move.l	$8(a5),a1
	move.l	#_Cyb_Standard_SwapBuffer_db,$498(a1)
	bra.b	L1227
L1226
;	c->gl_ctx->Color.DrawBuffer = GL_FRONT;
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	#$404,$1E92(a0)
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L1227
	moveq	#1,d0
	move.l	(a7)+,a6
	unlk	a5
	rts

	END
