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

	SECTION "_new_attrib_node:0",CODE


;static struct gl_attrib_node *new_attrib_node( GLbitfield kind )
_new_attrib_node
	move.l	d2,-(a7)
	move.l	$8(a7),d2
L97
;   an = (struct gl_attrib_node *) malloc( sizeof(struct gl_attrib
	pea	$C.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a0
;   if (an) 
	cmp.w	#0,a0
	beq.b	L99
L98
;      an->kind = kind;
	move.l	d2,(a0)
L99
	move.l	a0,d0
	move.l	(a7)+,d2
	rts

	SECTION "_gl_PushAttrib:0",CODE

	rts

;void gl_PushAttrib( GLcontext* ctx, GLbitfield mask )
	XDEF	_gl_PushAttrib
_gl_PushAttrib
L164	EQU	-$40
	link	a5,#L164
	movem.l	d2-d4/a2-a4,-(a7)
	move.l	$C(a5),d2
	move.l	$8(a5),a2
L101
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L103
L102
;      gl_error( ctx, GL_INVALID_OPERATION, "glPushAttrib" );
	move.l	#L100,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d4/a2-a4
	unlk	a5
	rts
L103
;   if (ctx->AttribStackDepth>=MAX_ATTRIB_STACK_DEPTH) 
	move.l	$2170(a2),d0
	cmp.l	#$10,d0
	blo.b	L105
L104
;      gl_error( ctx, GL_STACK_OVERFLOW, "glPushAttrib" );
	move.l	#L100,-(a7)
	pea	$503.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d4/a2-a4
	unlk	a5
	rts
L105
;   head = NULL;
	clr.l	-$8(a5)
;   if (mask & GL_ACCUM_BUFFER_BIT) 
	move.l	d2,d0
	and.l	#$200,d0
	beq.b	L107
L106
;      attr = MALLOC_STRUCT( gl_accum_attrib );
	pea	$10.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
; attr, &ctx->Accu
	pea	$10.w
	pea	$21B4(a2)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_ACCUM_BUFFER_BIT );
	pea	$200.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L107
;   if (mask & GL_COLOR_BUFFER_BIT) 
	move.l	d2,d0
	and.l	#$4000,d0
	beq.b	L109
L108
;      attr = MALLOC_STRUCT( gl_colorbuffer_attrib );
	pea	$52.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
; &ctx->Color, siz
	pea	$52.w
	pea	$21C4(a2)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_COLOR_BUFFER_BIT );
	pea	$4000.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L109
;   if (mask & GL_CURRENT_BIT) 
	move.l	d2,d0
	and.l	#1,d0
	beq.b	L111
L110
;      attr = MALLOC_STRUCT( gl_current_attrib );
	pea	$86.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;r, &ctx->Current,
	pea	$86.w
	pea	$2216(a2)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_CURRENT_BIT );
	pea	1.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L111
;   if (mask & GL_DEPTH_BUFFER_BIT) 
	move.l	d2,d0
	and.l	#$100,d0
	beq.b	L113
L112
;      attr = MALLOC_STRUCT( gl_depthbuffer_attrib );
	pea	$A.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
; &ctx->Depth, siz
	pea	$A.w
	pea	$229C(a2)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_DEPTH_BUFFER_BIT );
	pea	$100.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L113
;   if (mask & GL_ENABLE_BIT) 
	move.l	d2,d0
	and.l	#$2000,d0
	beq	L124
L114
;      attr = MALLOC_STRUCT( gl_enable_attrib );
	pea	$44.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;      attr->AlphaTest = ctx->Color.AlphaEnabled;
	move.l	a3,a0
	move.b	$21E6(a2),(a0)
;      attr->AutoNormal = ctx->Eval.AutoNormal;
	move.l	a3,a0
	move.b	$22B8(a2),1(a0)
;      attr->Blend = ctx->Color.BlendEnabled;
	move.l	a3,a0
	move.b	$21ED(a2),2(a0)
;      for (i=0;
	moveq	#0,d0
	bra.b	L116
L115
;         attr->ClipPlane[i] = ctx->Transform.ClipEnabled[i];
	move.l	a2,a0
	add.l	#$E536,a0
	move.b	0(a0,d0.l),d1
	lea	3(a3),a0
	move.b	d1,0(a0,d0.l)
	addq.l	#1,d0
L116
	cmp.l	#6,d0
	blo.b	L115
L117
;      attr->ColorMaterial = ctx->Light.ColorMaterialEnabled;
	lea	$2318(a2),a0
	add.l	#$8E18,a0
	move.b	(a0),d0
	move.l	a3,a0
	move.b	d0,$9(a0)
;      attr->CullFace = ctx->Polygon.CullFlag;
	move.l	a2,a0
	add.l	#$DDEE,a0
	move.b	$D(a0),d0
	move.l	a3,a0
	move.b	d0,$A(a0)
;      attr->DepthTest = ctx->Depth.Test;
	move.l	a3,a0
	move.b	$22A4(a2),$B(a0)
;      attr->Dither = ctx->Color.DitherFlag;
	move.l	a3,a0
	move.b	$2215(a2),$C(a0)
;      attr->Fog = ctx->Fog.Enabled;
	move.l	a3,a0
	move.b	$22DE(a2),$D(a0)
;      for (i=0;
	moveq	#0,d0
	bra.b	L119
L118
;         attr->Light[i] = ctx->Light.Light[i].Enabled;
	lea	$2318(a2),a0
	move.l	d0,d1
	muls.l	#$10E2,d1
	move.b	$68(a0,d1.l),d1
	lea	$E(a3),a0
	move.b	d1,0(a0,d0.l)
	addq.l	#1,d0
L119
	cmp.l	#$8,d0
	blo.b	L118
L120
;      attr->Lighting = ctx->Light.Enabled;
	lea	$2318(a2),a0
	add.l	#$8E06,a0
	move.b	(a0),d0
	move.l	a3,a0
	move.b	d0,$16(a0)
;      attr->LineSmooth = ctx->Line.SmoothFlag;
	move.l	a2,a0
	add.l	#$B158,a0
	move.b	(a0),d0
	move.l	a3,a0
	move.b	d0,$17(a0)
;      attr->LineStipple = ctx->Line.StippleFlag;
	move.l	a2,a0
	add.l	#$B158,a0
	move.b	1(a0),d0
	move.l	a3,a0
	move.b	d0,$18(a0)
;      attr->IndexLogicOp = ctx->Color.IndexLogicOpEnabled;
	move.l	a3,a0
	move.b	$2212(a2),$19(a0)
;      attr->ColorLogicOp = ctx->Color.ColorLogicOpEnabled;
	move.l	a3,a0
	move.b	$2213(a2),$1A(a0)
;      attr->Map1Color4 = ctx->Eval.Map1Color4;
	move.l	a3,a0
	move.b	$22A6(a2),$1B(a0)
;      attr->Map1Index = ctx->Eval.Map1Index;
	move.l	a3,a0
	move.b	$22A7(a2),$1C(a0)
;      attr->Map1Normal = ctx->Eval.Map1Normal;
	move.l	a3,a0
	move.b	$22A8(a2),$1D(a0)
;      attr->Map1TextureCoord1 = ctx->Eval.Map1TextureCoord1;
	move.l	a3,a0
	move.b	$22A9(a2),$1E(a0)
;      attr->Map1TextureCoord2 = ctx->Eval.Map1TextureCoord2;
	move.l	a3,a0
	move.b	$22AA(a2),$1F(a0)
;      attr->Map1TextureCoord3 = ctx->Eval.Map1TextureCoord3;
	move.l	a3,a0
	move.b	$22AB(a2),$20(a0)
;      attr->Map1TextureCoord4 = ctx->Eval.Map1TextureCoord4;
	move.l	a3,a0
	move.b	$22AC(a2),$21(a0)
;      attr->Map1Vertex3 = ctx->Eval.Map1Vertex3;
	move.l	a3,a0
	move.b	$22AD(a2),$22(a0)
;      attr->Map1Vertex4 = ctx->Eval.Map1Vertex4;
	move.l	a3,a0
	move.b	$22AE(a2),$23(a0)
;      attr->Map2Color4 = ctx->Eval.Map2Color4;
	move.l	a3,a0
	move.b	$22AF(a2),$24(a0)
;      attr->Map2Index = ctx->Eval.Map2Index;
	move.l	a3,a0
	move.b	$22B0(a2),$25(a0)
;      attr->Map2Normal = ctx->Eval.Map2Normal;
	move.l	a3,a0
	move.b	$22B1(a2),$26(a0)
;      attr->Map2TextureCoord1 = ctx->Eval.Map2TextureCoord1;
	move.l	a3,a0
	move.b	$22B2(a2),$27(a0)
;      attr->Map2TextureCoord2 = ctx->Eval.Map2TextureCoord2;
	move.l	a3,a0
	move.b	$22B3(a2),$28(a0)
;      attr->Map2TextureCoord3 = ctx->Eval.Map2TextureCoord3;
	move.l	a3,a0
	move.b	$22B4(a2),$29(a0)
;      attr->Map2TextureCoord4 = ctx->Eval.Map2TextureCoord4;
	move.l	a3,a0
	move.b	$22B5(a2),$2A(a0)
;      attr->Map2Vertex3 = ctx->Eval.Map2Vertex3;
	move.l	a3,a0
	move.b	$22B6(a2),$2B(a0)
;      attr->Map2Vertex4 = ctx->Eval.Map2Vertex4;
	move.l	a3,a0
	move.b	$22B7(a2),$2C(a0)
;      attr->Normalize = ctx->Transform.Normalize;
	move.l	a2,a0
	add.l	#$E4D2,a0
	move.b	$6B(a0),d0
	move.l	a3,a0
	move.b	d0,$2D(a0)
;      attr->PointSmooth = ctx->Point.SmoothFlag;
	move.l	a2,a0
	add.l	#$DDD0,a0
	move.b	(a0),d0
	move.l	a3,a0
	move.b	d0,$2E(a0)
;      attr->PolygonOffsetPoint = ctx->Polygon.OffsetPoint;
	move.l	a2,a0
	add.l	#$DDEE,a0
	move.b	$20(a0),d0
	move.l	a3,a0
	move.b	d0,$2F(a0)
;      attr->PolygonOffsetLine = ctx->Polygon.OffsetLine;
	move.l	a2,a0
	add.l	#$DDEE,a0
	move.b	$21(a0),d0
	move.l	a3,a0
	move.b	d0,$30(a0)
;      attr->PolygonOffsetFill = ctx->Polygon.OffsetFill;
	move.l	a2,a0
	add.l	#$DDEE,a0
	move.b	$22(a0),d0
	move.l	a3,a0
	move.b	d0,$31(a0)
;      attr->PolygonSmooth = ctx->Polygon.SmoothFlag;
	move.l	a2,a0
	add.l	#$DDEE,a0
	move.b	$16(a0),d0
	move.l	a3,a0
	move.b	d0,$32(a0)
;      attr->PolygonStipple = ctx->Polygon.StippleFlag;
	move.l	a2,a0
	add.l	#$DDEE,a0
	move.b	$17(a0),d0
	move.l	a3,a0
	move.b	d0,$33(a0)
;      attr->RescaleNormals = ctx->Transform.RescaleNormals;
	move.l	a2,a0
	add.l	#$E4D2,a0
	move.b	$6C(a0),d0
	move.l	a3,a0
	move.b	d0,$34(a0)
;      attr->Scissor = ctx->Scissor.Enabled;
	move.l	a2,a0
	add.l	#$DE92,a0
	move.b	(a0),d0
	move.l	a3,a0
	move.b	d0,$35(a0)
;      attr->Stencil = ctx->Stencil.Enabled;
	move.l	a2,a0
	add.l	#$DEA4,a0
	move.b	(a0),d0
	move.l	a3,a0
	move.b	d0,$36(a0)
;      attr->Texture = ctx->Texture.Enabled;
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	$8(a0),d0
	move.l	a3,a0
	move.l	d0,$38(a0)
;      for (i=0;
	moveq	#0,d0
	bra.b	L122
L121
;         attr->TexGen[i] = ctx->Texture.Set[i].TexGenEnable
	move.l	a2,a0
	add.l	#$DEC6,a0
	move.l	d0,d1
	muls.l	#$BC,d1
	move.l	$14(a0,d1.l),d1
	lea	$3C(a3),a0
	move.l	d1,0(a0,d0.l*4)
	addq.l	#1,d0
L122
	cmp.l	#2,d0
	blo.b	L121
L123
;      newnode = new_attrib_node( GL_ENABLE_BIT );
	pea	$2000.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L124
;   if (mask & GL_EVAL_BIT) 
	move.l	d2,d0
	and.l	#$10000,d0
	beq.b	L126
L125
;      attr = MALLOC_STRUCT( gl_eval_attrib );
	pea	$38.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;Y( attr, &ctx->Ev
	pea	$38.w
	pea	$22A6(a2)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_EVAL_BIT );
	move.l	#$10000,-(a7)
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L126
;   if (mask & GL_FOG_BIT) 
	move.l	d2,d0
	and.l	#$80,d0
	beq.b	L128
L127
;      attr = MALLOC_STRUCT( gl_fog_attrib );
	pea	$26.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;CPY( attr, &ctx->
	pea	$26.w
	pea	$22DE(a2)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_FOG_BIT );
	pea	$80.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L128
;   if (mask & GL_HINT_BIT) 
	move.l	d2,d0
	and.l	#$8000,d0
	beq.b	L130
L129
;      attr = MALLOC_STRUCT( gl_hint_attrib );
	pea	$14.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;Y( attr, &ctx->Hi
	pea	$14.w
	pea	$2304(a2)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_HINT_BIT );
	move.l	#$8000,-(a7)
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L130
;   if (mask & GL_LIGHTING_BIT) 
	move.l	d2,d0
	and.l	#$40,d0
	beq.b	L132
L131
;      attr = MALLOC_STRUCT( gl_light_attrib );
	move.l	#$8E40,-(a7)
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
; attr, &ctx->Ligh
	move.l	#$8E40,-(a7)
	pea	$2318(a2)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_LIGHTING_BIT );
	pea	$40.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L132
;   if (mask & GL_LINE_BIT) 
	move.l	d2,d0
	and.l	#4,d0
	beq.b	L134
L133
;      attr = MALLOC_STRUCT( gl_line_attrib );
	pea	$C.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;Y( attr, &ctx->Li
	pea	$C.w
	move.l	a2,a0
	add.l	#$B158,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_LINE_BIT );
	pea	4.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L134
;   if (mask & GL_LIST_BIT) 
	move.l	d2,d0
	and.l	#$20000,d0
	beq.b	L136
L135
;      attr = MALLOC_STRUCT( gl_list_attrib );
	pea	4.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;Y( attr, &ctx->Li
	pea	4.w
	move.l	a2,a0
	add.l	#$B164,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_LIST_BIT );
	move.l	#$20000,-(a7)
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L136
;   if (mask & GL_PIXEL_MODE_BIT) 
	move.l	d2,d0
	and.l	#$20,d0
	beq.b	L138
L137
;      attr = MALLOC_STRUCT( gl_pixel_attrib );
	pea	$2C68.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
; attr, &ctx->Pixe
	pea	$2C68.w
	move.l	a2,a0
	add.l	#$B168,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_PIXEL_MODE_BIT );
	pea	$20.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L138
;   if (mask & GL_POINT_BIT) 
	move.l	d2,d0
	and.l	#2,d0
	beq.b	L140
L139
;      attr = MALLOC_STRUCT( gl_point_attrib );
	pea	$1E.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
; attr, &ctx->Poin
	pea	$1E.w
	move.l	a2,a0
	add.l	#$DDD0,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_POINT_BIT );
	pea	2.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L140
;   if (mask & GL_POLYGON_BIT) 
	move.l	d2,d0
	and.l	#$8,d0
	beq.b	L142
L141
;      attr = MALLOC_STRUCT( gl_polygon_attrib );
	pea	$24.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;r, &ctx->Polygon,
	pea	$24.w
	move.l	a2,a0
	add.l	#$DDEE,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_POLYGON_BIT );
	pea	$8.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L142
;   if (mask & GL_POLYGON_STIPPLE_BIT) 
	move.l	d2,d0
	and.l	#$10,d0
	beq.b	L144
L143
;      stipple = (GLuint *) malloc( 32*sizeof(GLuint) );
	pea	$80.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;Y( stipple, ctx->
	pea	$80.w
	move.l	a2,a0
	add.l	#$DE12,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_POLYGON_STIPPLE_BIT );
	pea	$10.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = stipple;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L144
;   if (mask & GL_SCISSOR_BIT) 
	move.l	d2,d0
	and.l	#$80000,d0
	beq.b	L146
L145
;      attr = MALLOC_STRUCT( gl_scissor_attrib );
	pea	$12.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;r, &ctx->Scissor,
	pea	$12.w
	move.l	a2,a0
	add.l	#$DE92,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_SCISSOR_BIT );
	move.l	#$80000,-(a7)
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L146
;   if (mask & GL_STENCIL_BUFFER_BIT) 
	move.l	d2,d0
	and.l	#$400,d0
	beq.b	L148
L147
;      attr = MALLOC_STRUCT( gl_stencil_attrib );
	pea	$16.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;r, &ctx->Stencil,
	pea	$16.w
	move.l	a2,a0
	add.l	#$DEA4,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_STENCIL_BUFFER_BIT );
	pea	$400.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L148
;   if (mask & GL_TEXTURE_BIT) 
	move.l	d2,d0
	and.l	#$40000,d0
	beq	L159
L149
;      int texSet = ctx->Texture.CurrentSet;
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d1
;      for (dim = 0;
	moveq	#0,d0
	bra	L157
L150
;         if (dim == 0)
	tst.l	d0
	bne.b	L152
L151
;            obj = ctx->Texture.Set[texSet].Current1D;
	move.l	a2,a0
	add.l	#$DEC6,a0
	move.l	d1,d3
	muls.l	#$BC,d3
	add.l	d3,a0
	move.l	$A8(a0),a4
	bra.b	L156
L152
;         else if (dim == 1)
	cmp.l	#1,d0
	bne.b	L154
L153
;            obj = ctx->Texture.Set[texSet].Current2D;
	move.l	a2,a0
	add.l	#$DEC6,a0
	move.l	d1,d3
	muls.l	#$BC,d3
	add.l	d3,a0
	move.l	$AC(a0),a4
	bra.b	L156
L154
;         else if (dim == 2)
	cmp.l	#2,d0
	bne.b	L156
L155
;            obj = ctx->Texture.Set[texSet].Current3D;
	move.l	a2,a0
	add.l	#$DEC6,a0
	move.l	d1,d3
	muls.l	#$BC,d3
	add.l	d3,a0
	move.l	$B0(a0),a4
L156
;         ctx->Texture.Priority[dim] = obj->Priority;
	move.l	a4,a0
	fmove.s	$C(a0),fp0
	move.l	a2,a0
	add.l	#$E45A,a0
	fmove.s	fp0,0(a0,d0.l*4)
;         ctx->Texture.BorderColor[dim][0] = obj->BorderColo
	move.l	a2,a0
	add.l	#$E466,a0
	move.l	d0,d4
	asl.l	#4,d4
	move.l	$10(a4),0(a0,d4.l)
;         ctx->Texture.BorderColor[dim][1] = obj->BorderColo
	lea	$10(a4),a0
	move.l	4(a0),d3
	move.l	a2,a0
	add.l	#$E466,a0
	move.l	d0,d4
	asl.l	#4,d4
	lea	0(a0,d4.l),a0
	move.l	d3,4(a0)
;         ctx->Texture.BorderColor[dim][2] = obj->BorderColo
	lea	$10(a4),a0
	move.l	$8(a0),d3
	move.l	a2,a0
	add.l	#$E466,a0
	move.l	d0,d4
	asl.l	#4,d4
	lea	0(a0,d4.l),a0
	move.l	d3,$8(a0)
;         ctx->Texture.BorderColor[dim][3] = obj->BorderColo
	lea	$10(a4),a0
	move.l	$C(a0),d3
	move.l	a2,a0
	add.l	#$E466,a0
	move.l	d0,d4
	asl.l	#4,d4
	lea	0(a0,d4.l),a0
	move.l	d3,$C(a0)
;         ctx->Texture.WrapS[dim] = obj->WrapS;
	move.l	a4,a0
	move.l	$20(a0),d3
	move.l	a2,a0
	add.l	#$E496,a0
	move.l	d3,0(a0,d0.l*4)
;         ctx->Texture.WrapT[dim] = obj->WrapT;
	move.l	a4,a0
	move.l	$24(a0),d3
	move.l	a2,a0
	add.l	#$E4A2,a0
	move.l	d3,0(a0,d0.l*4)
;         ctx->Texture.WrapR[dim] = obj->WrapR;
	move.l	a4,a0
	move.l	$28(a0),d3
	move.l	a2,a0
	add.l	#$E4AE,a0
	move.l	d3,0(a0,d0.l*4)
;         ctx->Texture.MinFilter[dim] = obj->MinFilter;
	move.l	a4,a0
	move.l	$2C(a0),d3
	move.l	a2,a0
	add.l	#$E4BA,a0
	move.l	d3,0(a0,d0.l*4)
;         ctx->Texture.MagFilter[dim] = obj->MagFilter;
	move.l	a4,a0
	move.l	$30(a0),d3
	move.l	a2,a0
	add.l	#$E4C6,a0
	move.l	d3,0(a0,d0.l*4)
	addq.l	#1,d0
L157
	cmp.l	#3,d0
	blt	L150
L158
;      attr = MALLOC_STRUCT( gl_texture_attrib );
	pea	$618.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;r, &ctx->Texture,
	pea	$618.w
	move.l	a2,a0
	add.l	#$DEBA,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_TEXTURE_BIT );
	move.l	#$40000,-(a7)
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L159
;   if (mask & GL_TRANSFORM_BIT) 
	move.l	d2,d0
	and.l	#$1000,d0
	beq.b	L161
L160
;      attr = MALLOC_STRUCT( gl_transform_attrib );
	pea	$6E.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
;ctx->Transform, s
	pea	$6E.w
	move.l	a2,a0
	add.l	#$E4D2,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_TRANSFORM_BIT );
	pea	$1000.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L161
;   if (mask & GL_VIEWPORT_BIT) 
	and.l	#$800,d2
	beq.b	L163
L162
;      attr = MALLOC_STRUCT( gl_viewport_attrib );
	pea	$30.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a3
; &ctx->Viewport, 
	pea	$30.w
	move.l	a2,a0
	add.l	#$E540,a0
	pea	(a0)
	move.l	a3,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_VIEWPORT_BIT );
	pea	$800.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a3,4(a0)
;      newnode->next = head;
	move.l	-$8(a5),$8(a0)
;      head = newnode;
	move.l	a0,-$8(a5)
L163
;   ctx->AttribStack[ctx->AttribStackDepth] = head;
	lea	$2174(a2),a0
	move.l	$2170(a2),d0
	move.l	-$8(a5),0(a0,d0.l*4)
;   ctx->AttribStackDepth++;
	addq.l	#1,$2170(a2)
	movem.l	(a7)+,d2-d4/a2-a4
	unlk	a5
	rts

L100
	dc.b	'glPushAttrib',0

	SECTION "_gl_PopAttrib:0",CODE


;void gl_PopAttrib( GLcontext* ctx )
	XDEF	_gl_PopAttrib
_gl_PopAttrib
L222	EQU	-$24
	link	a5,#L222
	movem.l	d2/d3/a2-a4,-(a7)
	move.l	$8(a5),a2
L167
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L169
L168
;      gl_error( ctx, GL_INVALID_OPERATION, "glPopAttrib" );
	move.l	#L165,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/d3/a2-a4
	unlk	a5
	rts
L169
;   if (ctx->AttribStackDepth==0) 
	tst.l	$2170(a2)
	bne.b	L171
L170
;      gl_error( ctx, GL_STACK_UNDERFLOW, "glPopAttrib" );
	move.l	#L165,-(a7)
	pea	$504.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/d3/a2-a4
	unlk	a5
	rts
L171
;   ctx->AttribStackDepth--;
	subq.l	#1,$2170(a2)
;   attr = ctx->AttribStack[ctx->AttribStackDepth];
	lea	$2174(a2),a0
	move.l	$2170(a2),d0
	move.l	0(a0,d0.l*4),a4
;   while (attr) 
	bra	L220
L172
;      switch (attr->kind)
	move.l	a4,a0
	move.l	(a0),d0
	cmp.l	#$400,d0
	beq	L201
	bhi	L223
	cmp.l	#$20,d0
	beq	L196
	bhi.b	L224
	cmp.l	#4,d0
	beq	L194
	bhi.b	L225
	cmp.l	#1,d0
	beq	L177
	cmp.l	#2,d0
	beq	L197
	bra	L218
L225
	cmp.l	#$8,d0
	beq	L198
	cmp.l	#$10,d0
	beq	L199
	bra	L218
L224
	cmp.l	#$100,d0
	beq	L178
	bhi.b	L226
	cmp.l	#$40,d0
	beq	L193
	cmp.l	#$80,d0
	beq	L191
	bra	L218
L226
	cmp.l	#$200,d0
	beq.b	L173
	bra	L218
L223
	cmp.l	#$8000,d0
	beq	L192
	bhi.b	L227
	cmp.l	#$2000,d0
	beq	L179
	bhi.b	L228
	cmp.l	#$800,d0
	beq	L213
	cmp.l	#$1000,d0
	beq	L202
	bra	L218
L228
	cmp.l	#$4000,d0
	beq.b	L174
	bra	L218
L227
	cmp.l	#$40000,d0
	beq	L203
	bhi.b	L229
	cmp.l	#$10000,d0
	beq	L190
	cmp.l	#$20000,d0
	beq	L195
	bra	L218
L229
	cmp.l	#$80000,d0
	beq	L200
	bra	L218
;         
L173
;>Accum, attr->dat
	pea	$10.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	pea	$21B4(a2)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L174
;	    oldDrawBuffer = ctx->Color.DrawBuffer;
	move.l	$21E2(a2),d2
;		    sizeof(struct gl_co
	pea	$52.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	pea	$21C4(a2)
	jsr	_q_memcpy
	add.w	#$C,a7
;	    if (ctx->Color.DrawBuffer != oldDrawBuffer) 
	move.l	$21E2(a2),d0
	cmp.l	d2,d0
	beq.b	L176
L175
;	       gl_DrawBuffer(ctx, ctx->Color.DrawBuffer);
	move.l	$21E2(a2),-(a7)
	move.l	a2,-(a7)
	jsr	_gl_DrawBuffer
	addq.w	#$8,a7
L176
;            
	bra	L219
L177
;		    sizeof(struct gl_curren
	pea	$86.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	pea	$2216(a2)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L178
;		    sizeof(struct gl_de
	pea	$A.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	pea	$229C(a2)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L179
;            enable = (struct gl_enable_attrib *) attr->d
	move.l	a4,a1
	move.l	4(a1),a0
;            ctx->Color.AlphaEnabled = enable->AlphaTest;
	move.b	(a0),$21E6(a2)
;            ctx->Transform.Normalize = enable->AutoNorma
	move.l	a2,a1
	add.l	#$E53D,a1
	move.b	1(a0),(a1)
;            ctx->Color.BlendEnabled = enable->Blend;
	move.b	2(a0),$21ED(a2)
;	    for (i=0;
	moveq	#0,d0
	bra.b	L181
L180
;               ctx->Transform.ClipEnabled[i] = enable
	lea	3(a0),a1
	move.b	0(a1,d0.l),d1
	move.l	a2,a1
	add.l	#$E536,a1
	move.b	d1,0(a1,d0.l)
	addq.l	#1,d0
L181
	cmp.l	#6,d0
	blo.b	L180
L182
;	    ctx->Light.ColorMaterialEnabled = enable->ColorMaterial;
	move.l	a2,a1
	add.l	#$B130,a1
	move.b	$9(a0),(a1)
;	    ctx->Polygon.CullFlag = enable->CullFace;
	move.l	a2,a1
	add.l	#$DDFB,a1
	move.b	$A(a0),(a1)
;	    ctx->Depth.Test = enable->DepthTest;
	move.b	$B(a0),$22A4(a2)
;	    ctx->Color.DitherFlag = enable->Dither;
	move.b	$C(a0),$2215(a2)
;	    ctx->Fog.Enabled = enable->Fog;
	move.b	$D(a0),$22DE(a2)
;	    ctx->Light.Enabled = enable->Lighting;
	move.l	a2,a1
	add.l	#$B11E,a1
	move.b	$16(a0),(a1)
;	    ctx->Line.SmoothFlag = enable->LineSmooth;
	move.l	a2,a1
	add.l	#$B158,a1
	move.b	$17(a0),(a1)
;	    ctx->Line.StippleFlag = enable->LineStipple;
	move.l	a2,a1
	add.l	#$B159,a1
	move.b	$18(a0),(a1)
;	    ctx->Color.IndexLogicOpEnabled = enable->IndexLogicOp;
	move.b	$19(a0),$2212(a2)
;	    ctx->Color.ColorLogicOpEnabled = enable->ColorLogicOp;
	move.b	$1A(a0),$2213(a2)
;	    ctx->Eval.Map1Color4 = enable->Map1Color4;
	move.b	$1B(a0),$22A6(a2)
;	    ctx->Eval.Map1Index = enable->Map1Index;
	move.b	$1C(a0),$22A7(a2)
;	    ctx->Eval.Map1Normal = enable->Map1Normal;
	move.b	$1D(a0),$22A8(a2)
;	    ctx->Eval.Map1TextureCoord1 = enable->Map1TextureCoord1;
	move.b	$1E(a0),$22A9(a2)
;	    ctx->Eval.Map1TextureCoord2 = enable->Map1TextureCoord2;
	move.b	$1F(a0),$22AA(a2)
;	    ctx->Eval.Map1TextureCoord3 = enable->Map1TextureCoord3;
	move.b	$20(a0),$22AB(a2)
;	    ctx->Eval.Map1TextureCoord4 = enable->Map1TextureCoord4;
	move.b	$21(a0),$22AC(a2)
;	    ctx->Eval.Map1Vertex3 = enable->Map1Vertex3;
	move.b	$22(a0),$22AD(a2)
;	    ctx->Eval.Map1Vertex4 = enable->Map1Vertex4;
	move.b	$23(a0),$22AE(a2)
;	    ctx->Eval.Map2Color4 = enable->Map2Color4;
	move.b	$24(a0),$22AF(a2)
;	    ctx->Eval.Map2Index = enable->Map2Index;
	move.b	$25(a0),$22B0(a2)
;	    ctx->Eval.Map2Normal = enable->Map2Normal;
	move.b	$26(a0),$22B1(a2)
;	    ctx->Eval.Map2TextureCoord1 = enable->Map2TextureCoord1;
	move.b	$27(a0),$22B2(a2)
;	    ctx->Eval.Map2TextureCoord2 = enable->Map2TextureCoord2;
	move.b	$28(a0),$22B3(a2)
;	    ctx->Eval.Map2TextureCoord3 = enable->Map2TextureCoord3;
	move.b	$29(a0),$22B4(a2)
;	    ctx->Eval.Map2TextureCoord4 = enable->Map2TextureCoord4;
	move.b	$2A(a0),$22B5(a2)
;	    ctx->Eval.Map2Vertex3 = enable->Map2Vertex3;
	move.b	$2B(a0),$22B6(a2)
;	    ctx->Eval.Map2Vertex4 = enable->Map2Vertex4;
	move.b	$2C(a0),$22B7(a2)
;	    ctx->Transform.Normalize = enable->Normalize;
	move.l	a2,a1
	add.l	#$E53D,a1
	move.b	$2D(a0),(a1)
;	    ctx->Transform.RescaleNormals = enable->RescaleNormals;
	move.l	a2,a1
	add.l	#$E53E,a1
	move.b	$34(a0),(a1)
;	    ctx->Point.SmoothFlag = enable->PointSmooth;
	move.l	a2,a1
	add.l	#$DDD0,a1
	move.b	$2E(a0),(a1)
;	    ctx->Polygon.OffsetPoint = enable->PolygonOffsetPoint;
	move.l	a2,a1
	add.l	#$DE0E,a1
	move.b	$2F(a0),(a1)
;	    ctx->Polygon.OffsetLine = enable->PolygonOffsetLine;
	move.l	a2,a1
	add.l	#$DE0F,a1
	move.b	$30(a0),(a1)
;	    ctx->Polygon.OffsetFill = enable->PolygonOffsetFill;
	move.l	a2,a1
	add.l	#$DE10,a1
	move.b	$31(a0),(a1)
;            ctx->Polygon.OffsetAny = ctx->Polygon.Offset
	moveq	#1,d0
	move.l	a2,a1
	add.l	#$DDEE,a1
	tst.b	$20(a1)
	bne.b	L186
L183
	move.l	a2,a1
	add.l	#$DDEE,a1
	tst.b	$21(a1)
	bne.b	L186
L184
	move.l	a2,a1
	add.l	#$DDEE,a1
	tst.b	$22(a1)
	bne.b	L186
L185
	moveq	#0,d0
L186
	move.l	a2,a1
	add.l	#$DE11,a1
	move.b	d0,(a1)
;	    ctx->Polygon.SmoothFlag = enable->PolygonSmooth;
	move.l	a2,a1
	add.l	#$DE04,a1
	move.b	$32(a0),(a1)
;	    ctx->Polygon.StippleFlag = enable->PolygonStipple;
	move.l	a2,a1
	add.l	#$DE05,a1
	move.b	$33(a0),(a1)
;	    ctx->Scissor.Enabled = enable->Scissor;
	move.l	a2,a1
	add.l	#$DE92,a1
	move.b	$35(a0),(a1)
;	    ctx->Stencil.Enabled = enable->Stencil;
	move.l	a2,a1
	add.l	#$DEA4,a1
	move.b	$36(a0),(a1)
;            ctx->Texture.Enabled = enable->Texture;
	move.l	a2,a1
	add.l	#$DEC2,a1
	move.l	$38(a0),(a1)
;            for (i=0;
	moveq	#0,d0
	bra.b	L188
L187
;               ctx->Texture.Set[i].TexGenEnabled = en
	lea	$3C(a0),a1
	move.l	0(a1,d0.l*4),d1
	move.l	a2,a1
	add.l	#$DEC6,a1
	move.l	d0,d2
	muls.l	#$BC,d2
	move.l	d1,$14(a1,d2.l)
	addq.l	#1,d0
L188
	cmp.l	#2,d0
	blo.b	L187
L189
;            
	bra	L219
L190
;x->Eval, attr->da
	pea	$38.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	pea	$22A6(a2)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L191
;ctx->Fog, attr->d
	pea	$26.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	pea	$22DE(a2)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L192
;x->Hint, attr->da
	pea	$14.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	pea	$2304(a2)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L193
;>Light, attr->dat
	move.l	#$8E40,-(a7)
	move.l	a4,a1
	move.l	4(a1),-(a7)
	pea	$2318(a2)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L194
;x->Line, attr->da
	pea	$C.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$B158,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L195
;x->List, attr->da
	pea	4.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$B164,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L196
;>Pixel, attr->dat
	pea	$2C68.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$B168,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L197
;>Point, attr->dat
	pea	$1E.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$DDD0,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L198
;		    sizeof(struct gl_polygo
	pea	$24.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$DDEE,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L199
;ctx->PolygonStipp
	pea	$80.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$DE12,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;	    
	bra	L219
L200
;		    sizeof(struct gl_scisso
	pea	$12.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$DE92,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L201
;		    sizeof(struct gl_stenci
	pea	$16.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$DEA4,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L202
;		    sizeof(struct gl_tran
	pea	$6E.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$E4D2,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra	L219
L203
;		    sizeof(struct gl_textur
	pea	$618.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$DEBA,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;               int texSet = ctx->Texture.CurrentSet;
	move.l	a2,a0
	add.l	#$DEBA,a0
	move.l	(a0),d1
;               for (dim = 0;
	moveq	#0,d0
	bra	L211
L204
;                  if (dim == 0)
	tst.l	d0
	bne.b	L206
L205
;                     obj = ctx->Texture.Set[tex
	move.l	a2,a0
	add.l	#$DEC6,a0
	move.l	d1,d2
	muls.l	#$BC,d2
	add.l	d2,a0
	move.l	$A8(a0),a3
	bra.b	L210
L206
;                  else if (dim == 1)
	cmp.l	#1,d0
	bne.b	L208
L207
;                     obj = ctx->Texture.Set[tex
	move.l	a2,a0
	add.l	#$DEC6,a0
	move.l	d1,d2
	muls.l	#$BC,d2
	add.l	d2,a0
	move.l	$AC(a0),a3
	bra.b	L210
L208
;                  else if (dim == 2)
	cmp.l	#2,d0
	bne.b	L210
L209
;                     obj = ctx->Texture.Set[tex
	move.l	a2,a0
	add.l	#$DEC6,a0
	move.l	d1,d2
	muls.l	#$BC,d2
	add.l	d2,a0
	move.l	$B0(a0),a3
L210
;                  obj->Priority = ctx->Texture.Pri
	move.l	a2,a0
	add.l	#$E45A,a0
	fmove.s	0(a0,d0.l*4),fp0
	move.l	a3,a0
	fmove.s	fp0,$C(a0)
;                  obj->BorderColor[0] = ctx->Textu
	move.l	a2,a0
	add.l	#$E466,a0
	move.l	d0,d2
	asl.l	#4,d2
	move.l	0(a0,d2.l),d2
	move.l	d2,$10(a3)
;                  obj->BorderColor[1] = ctx->Textu
	move.l	a2,a0
	add.l	#$E466,a0
	move.l	d0,d2
	asl.l	#4,d2
	lea	0(a0,d2.l),a0
	move.l	4(a0),d2
	lea	$10(a3),a0
	move.l	d2,4(a0)
;                  obj->BorderColor[2] = ctx->Textu
	move.l	a2,a0
	add.l	#$E466,a0
	move.l	d0,d2
	asl.l	#4,d2
	lea	0(a0,d2.l),a0
	move.l	$8(a0),d2
	lea	$10(a3),a0
	move.l	d2,$8(a0)
;                  obj->BorderColor[3] = ctx->Textu
	move.l	a2,a0
	add.l	#$E466,a0
	move.l	d0,d2
	asl.l	#4,d2
	lea	0(a0,d2.l),a0
	move.l	$C(a0),d2
	lea	$10(a3),a0
	move.l	d2,$C(a0)
;                  obj->WrapS = ctx->Texture.WrapS[
	move.l	a2,a0
	add.l	#$E496,a0
	move.l	0(a0,d0.l*4),d2
	move.l	a3,a0
	move.l	d2,$20(a0)
;                  obj->WrapT = ctx->Texture.WrapT[
	move.l	a2,a0
	add.l	#$E4A2,a0
	move.l	0(a0,d0.l*4),d2
	move.l	a3,a0
	move.l	d2,$24(a0)
;                  obj->WrapR = ctx->Texture.WrapR[
	move.l	a2,a0
	add.l	#$E4AE,a0
	move.l	0(a0,d0.l*4),d2
	move.l	a3,a0
	move.l	d2,$28(a0)
;                  obj->MinFilter = ctx->Texture.Mi
	move.l	a2,a0
	add.l	#$E4BA,a0
	move.l	0(a0,d0.l*4),d2
	move.l	a3,a0
	move.l	d2,$2C(a0)
;                  obj->MagFilter = ctx->Texture.Ma
	move.l	a2,a0
	add.l	#$E4C6,a0
	move.l	0(a0,d0.l*4),d2
	move.l	a3,a0
	move.l	d2,$30(a0)
	addq.l	#1,d0
L211
	cmp.l	#3,d0
	blt	L204
L212
;            
	bra	L219
L213
;		    sizeof(struct gl_viewp
	pea	$30.w
	move.l	a4,a1
	move.l	4(a1),-(a7)
	move.l	a2,a0
	add.l	#$E540,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            if (ctx->Driver.Viewport) 
	tst.l	$9E4(a2)
	beq.b	L215
L214
;               (*ctx->Driver.Viewport)( ctx, ctx->Vie
	move.l	a2,a0
	add.l	#$E540,a0
	move.l	$C(a0),-(a7)
	move.l	a2,a0
	add.l	#$E540,a0
	move.l	$8(a0),-(a7)
	move.l	a2,a0
	add.l	#$E540,a0
	move.l	4(a0),-(a7)
	move.l	a2,a0
	add.l	#$E540,a0
	move.l	(a0),-(a7)
	move.l	a2,-(a7)
	move.l	$9E4(a2),a0
	jsr	(a0)
	add.w	#$14,a7
L215
;            if (ctx->Driver.DepthRange) 
	tst.l	$9E8(a2)
	beq.b	L217
L216
;               (*ctx->Driver.DepthRange)( ctx, ctx->V
	move.l	a2,a0
	add.l	#$E540,a0
	fmove.s	$14(a0),fp0
	fmove.d	fp0,-(a7)
	move.l	a2,a0
	add.l	#$E540,a0
	fmove.s	$10(a0),fp0
	fmove.d	fp0,-(a7)
	move.l	a2,-(a7)
	move.l	$9E8(a2),a0
	jsr	(a0)
	add.w	#$14,a7
L217
;            
	bra.b	L219
L218
;            gl_problem( ctx, "Bad attrib flag in PopAttr
	move.l	#L166,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
;            
L219
;      next = attr->next;
	move.l	a4,a0
	move.l	$8(a0),-$8(a5)
;      free( (void *) attr->data );
	move.l	a4,a1
	move.l	4(a1),-(a7)
	jsr	_free
	addq.w	#4,a7
;      free( (void *) attr );
	move.l	a4,-(a7)
	jsr	_free
	addq.w	#4,a7
;      attr = next;
	move.l	-$8(a5),a4
L220
	cmp.w	#0,a4
	bne	L172
L221
;   ctx->NewState = NEW_ALL;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	#$FF,(a0)
	movem.l	(a7)+,d2/d3/a2-a4
	unlk	a5
	rts

L166
	dc.b	'Bad attrib flag in PopAttrib',0
L165
	dc.b	'glPopAttrib',0

	SECTION "_gl_PushClientAttrib:0",CODE


;void gl_PushClientAttrib( GLcontext *ctx, GLbitfield mask )
	XDEF	_gl_PushClientAttrib
_gl_PushClientAttrib
	movem.l	d2/a2-a4,-(a7)
	move.l	$18(a7),d2
	move.l	$14(a7),a2
L231
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L233
L232
;      gl_error( ctx, GL_INVALID_OPERATION, "glPushClientAttrib
	move.l	#L230,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2-a4
	rts
L233
;   if (ctx->ClientAttribStackDepth>=MAX_CLIENT_ATTRIB_STACK_DEPTH)
	move.l	a2,a0
	add.l	#$E574,a0
	move.l	(a0),d0
	cmp.l	#$10,d0
	blo.b	L235
L234
;      gl_error( ctx, GL_STACK_OVERFLOW, "glPushClientAttrib" );
	move.l	#L230,-(a7)
	pea	$503.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2-a4
	rts
L235
;   head = NULL;
	sub.l	a3,a3
;   if (mask & GL_CLIENT_PIXEL_STORE_BIT) 
	move.l	d2,d0
	and.l	#1,d0
	beq	L237
L236
;      attr = MALLOC_STRUCT( gl_pixelstore_attrib );
	pea	$1A.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a4
;r, &ctx->Pack, si
	pea	$1A.w
	move.l	a2,a0
	add.l	#$E644,a0
	pea	(a0)
	move.l	a4,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_CLIENT_PACK_BIT );
	move.l	#$100000,-(a7)
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a4,4(a0)
;      newnode->next = head;
	move.l	a3,$8(a0)
;      head = newnode;
	move.l	a0,a3
;      attr = MALLOC_STRUCT( gl_pixelstore_attrib );
	pea	$1A.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a4
; &ctx->Unpack, si
	pea	$1A.w
	move.l	a2,a0
	add.l	#$E65E,a0
	pea	(a0)
	move.l	a4,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_CLIENT_UNPACK_BIT );
	move.l	#$200000,-(a7)
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a4,4(a0)
;      newnode->next = head;
	move.l	a3,$8(a0)
;      head = newnode;
	move.l	a0,a3
L237
;   if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) 
	and.l	#2,d2
	beq.b	L239
L238
;      attr = MALLOC_STRUCT( gl_array_attrib );
	pea	$8C.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a4
; attr, &ctx->Arra
	pea	$8C.w
	move.l	a2,a0
	add.l	#$E5B8,a0
	pea	(a0)
	move.l	a4,-(a7)
	jsr	_q_memcpy
	add.w	#$C,a7
;      newnode = new_attrib_node( GL_CLIENT_VERTEX_ARRAY_BIT );
	pea	2.w
	jsr	_new_attrib_node
	addq.w	#4,a7
	move.l	d0,a0
;      newnode->data = attr;
	move.l	a4,4(a0)
;      newnode->next = head;
	move.l	a3,$8(a0)
;      head = newnode;
	move.l	a0,a3
L239
;   ctx->ClientAttribStack[ctx->ClientAttribStackDepth] = head;
	move.l	a2,a0
	add.l	#$E578,a0
	move.l	a2,a1
	add.l	#$E574,a1
	move.l	(a1),d0
	move.l	a3,0(a0,d0.l*4)
;   ctx->ClientAttribStackDepth++;
	move.l	a2,a0
	add.l	#$E574,a0
	move.l	(a0),d0
	addq.l	#1,d0
	move.l	a2,a0
	add.l	#$E574,a0
	move.l	d0,(a0)
	movem.l	(a7)+,d2/a2-a4
	rts

L230
	dc.b	'glPushClientAttrib',0

	SECTION "_gl_PopClientAttrib:0",CODE


;void gl_PopClientAttrib( GLcontext *ctx )
	XDEF	_gl_PopClientAttrib
_gl_PopClientAttrib
	movem.l	a2-a4,-(a7)
	move.l	$10(a7),a3
L242
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a3,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L244
L243
;      gl_error( ctx, GL_INVALID_OPERATION, "glPopClientAttrib"
	move.l	#L240,-(a7)
	pea	$502.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,a2-a4
	rts
L244
;   if (ctx->ClientAttribStackDepth==0) 
	move.l	a3,a0
	add.l	#$E574,a0
	tst.l	(a0)
	bne.b	L246
L245
;      gl_error( ctx, GL_STACK_UNDERFLOW, "glPopClientAttrib" );
	move.l	#L240,-(a7)
	pea	$504.w
	move.l	a3,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,a2-a4
	rts
L246
;   ctx->ClientAttribStackDepth--;
	move.l	a3,a0
	add.l	#$E574,a0
	move.l	(a0),d0
	subq.l	#1,d0
	move.l	a3,a0
	add.l	#$E574,a0
	move.l	d0,(a0)
;   attr = ctx->ClientAttribStack[ctx->ClientAttribStackDepth];
	move.l	a3,a0
	add.l	#$E578,a0
	move.l	a3,a1
	add.l	#$E574,a1
	move.l	(a1),d0
	move.l	0(a0,d0.l*4),a2
;   while (attr) 
	bra	L253
L247
;      switch (attr->kind)
	move.l	(a2),d0
	cmp.l	#$100000,d0
	beq.b	L248
	bhi.b	L255
	cmp.l	#2,d0
	beq.b	L250
	bra.b	L251
L255
	cmp.l	#$200000,d0
	beq.b	L249
	bra.b	L251
;         
L248
;               si
	pea	$1A.w
	move.l	4(a2),-(a7)
	move.l	a3,a0
	add.l	#$E644,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra.b	L252
L249
;               si
	pea	$1A.w
	move.l	4(a2),-(a7)
	move.l	a3,a0
	add.l	#$E65E,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra.b	L252
L250
;		    sizeof(struct gl_array_at
	pea	$8C.w
	move.l	4(a2),-(a7)
	move.l	a3,a0
	add.l	#$E5B8,a0
	pea	(a0)
	jsr	_q_memcpy
	add.w	#$C,a7
;            
	bra.b	L252
L251
;            gl_problem( ctx, "Bad attrib flag in PopClie
	move.l	#L241,-(a7)
	move.l	a3,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
;            
L252
;      next = attr->next;
	move.l	$8(a2),a4
;      free( (void *) attr->data );
	move.l	4(a2),-(a7)
	jsr	_free
	addq.w	#4,a7
;      free( (void *) attr );
	move.l	a2,-(a7)
	jsr	_free
	addq.w	#4,a7
;      attr = next;
	move.l	a4,a2
L253
	cmp.w	#0,a2
	bne	L247
L254
;   ctx->NewState = NEW_ALL;
	move.l	a3,a0
	add.l	#$E960,a0
	move.l	#$FF,(a0)
	movem.l	(a7)+,a2-a4
	rts

L241
	dc.b	'Bad attrib flag in PopClientAttrib',0
L240
	dc.b	'glPopClientAttrib',0

	END
