
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src-glu/quadric.c
	mc68030
	mc68881
	XREF	_gluErrorString
	XREF	_glTexCoord2f
	XREF	_glNormal3f
	XREF	_glVertex3f
	XREF	_glVertex3d
	XREF	_glVertex2f
	XREF	_glVertex2d
	XREF	_glEnd
	XREF	_glBegin
	XREF	_getenv
	XREF	_abort
	XREF	_malloc
	XREF	_free
	XREF	_fprintf
	XREF	_sqrt__r
	XREF	_cos__r
	XREF	_sin__r
	XREF	_std__in
	XREF	_std__out
	XREF	_std__err

	SECTION "_quadric_error:0",CODE


;static void quadric_error( GLUquadricObj *qobj, GLenum error, const 
_quadric_error
	movem.l	d2/a2,-(a7)
	movem.l	$10(a7),d2/a2
	move.l	$C(a7),a1
L212
;   if (qobj->ErrorFunc) 
	tst.l	$E(a1)
	beq.b	L214
L213
;      (*qobj->ErrorFunc)( error );
	move.l	d2,-(a7)
	move.l	$E(a1),a0
	jsr	(a0)
	addq.w	#4,a7
L214
;   if (getenv("MESA_DEBUG")) 
	move.l	#L210,-(a7)
	jsr	_getenv
	addq.w	#4,a7
	tst.l	d0
	beq.b	L216
L215
;      fprintf(stderr,"GLUError: %s: %s\n", (char*) gluErrorStr
	move.l	a2,-(a7)
	move.l	d2,-(a7)
	jsr	_gluErrorString
	addq.w	#4,a7
	move.l	d0,-(a7)
	move.l	#L211,-(a7)
	pea	_std__err(a6)
	jsr	_fprintf
	add.w	#$10,a7
L216
	movem.l	(a7)+,d2/a2
	rts

L211
	dc.b	'GLUError: %s: %s',$A,0
L210
	dc.b	'MESA_DEBUG',0

	SECTION "_gluNewQuadric:0",CODE

	rts

;GLUquadricObj * APIENTRY gluNewQuadric( void )
	XDEF	_gluNewQuadric
_gluNewQuadric
L217
;   q = (GLUquadricObj *) malloc( sizeof(struct GLUquadricObj) );
	pea	$12.w
	jsr	_malloc
	addq.w	#4,a7
	move.l	d0,a0
;   if (q) 
	cmp.w	#0,a0
	beq.b	L219
L218
;      q->DrawStyle = GLU_FILL;
	move.l	#$186AC,(a0)
;      q->Orientation = GLU_OUTSIDE;
	move.l	#$186B4,4(a0)
;      q->TextureFlag = GL_FALSE;
	clr.b	$8(a0)
;      q->Normals = GLU_SMOOTH;
	move.l	#$186A0,$A(a0)
;      q->ErrorFunc = NULL;
	clr.l	$E(a0)
L219
	move.l	a0,d0
	rts

	SECTION "_gluDeleteQuadric:0",CODE


;void APIENTRY gluDeleteQuadric( GLUquadricObj *state )
	XDEF	_gluDeleteQuadric
_gluDeleteQuadric
	move.l	4(a7),a1
L220
;   if (state) 
	cmp.w	#0,a1
	beq.b	L222
L221
;      free( (void *) state );
	move.l	a1,-(a7)
	jsr	_free
	addq.w	#4,a7
L222
	rts

	SECTION "_gluQuadricDrawStyle:0",CODE


;void APIENTRY gluQuadricDrawStyle( GLUquadricObj *quadObject, GLenum
	XDEF	_gluQuadricDrawStyle
_gluQuadricDrawStyle
	move.l	$8(a7),d0
	move.l	4(a7),a1
L224
;   if (quadObject && (drawStyle==GLU_FILL || drawStyle==GLU_LINE
	cmp.w	#0,a1
	beq.b	L230
L225
	cmp.l	#$186AC,d0
	beq.b	L229
L226
	cmp.l	#$186AB,d0
	beq.b	L229
L227
	cmp.l	#$186AD,d0
	beq.b	L229
L228
	cmp.l	#$186AA,d0
	bne.b	L230
L229
;      quadObject->DrawStyle = drawStyle;
	move.l	d0,(a1)
	bra.b	L231
L230
;      quadric_error( quadObject, GLU_INVALID_ENUM, "qluQuadric
	move.l	#L223,-(a7)
	move.l	#$18A24,-(a7)
	move.l	a1,-(a7)
	jsr	_quadric_error
	add.w	#$C,a7
L231
	rts

L223
	dc.b	'qluQuadricDrawStyle',0

	SECTION "_gluQuadricOrientation:0",CODE


;void APIENTRY gluQuadricOrientation( GLUquadricObj *quadObject,
	XDEF	_gluQuadricOrientation
_gluQuadricOrientation
	move.l	$8(a7),d0
	move.l	4(a7),a1
L233
;   if (quadObject && (orientation==GLU_INSIDE || orientation==GLU
	cmp.w	#0,a1
	beq.b	L237
L234
	cmp.l	#$186B5,d0
	beq.b	L236
L235
	cmp.l	#$186B4,d0
	bne.b	L237
L236
;      quadObject->Orientation = orientation;
	move.l	d0,4(a1)
	bra.b	L238
L237
;      quadric_error( quadObject, GLU_INVALID_ENUM, "qluQuadric
	move.l	#L232,-(a7)
	move.l	#$18A24,-(a7)
	move.l	a1,-(a7)
	jsr	_quadric_error
	add.w	#$C,a7
L238
	rts

L232
	dc.b	'qluQuadricOrientation',0

	SECTION "_gluQuadricCallback:0",CODE


;void APIENTRY gluQuadricCallback( GLUquadricObj *qobj,
	XDEF	_gluQuadricCallback
_gluQuadricCallback
	move.l	a2,-(a7)
	movem.l	$C(a7),d0/a2
	move.l	$8(a7),a1
L239
;   if (qobj && which==GLU_ERROR) 
	cmp.w	#0,a1
	beq.b	L242
L240
	cmp.l	#$18707,d0
	bne.b	L242
L241
;      qobj->ErrorFunc = (void(CALLBACK*)(GLenum))fn;
	move.l	a2,$E(a1)
L242
	move.l	(a7)+,a2
	rts

	SECTION "_gluQuadricNormals:0",CODE


;void APIENTRY gluQuadricNormals( GLUquadricObj *quadObject, GLenum n
	XDEF	_gluQuadricNormals
_gluQuadricNormals
	move.l	$8(a7),d0
	move.l	4(a7),a1
L243
;   if (quadObject
	cmp.w	#0,a1
	beq.b	L248
L244
	cmp.l	#$186A2,d0
	beq.b	L247
L245
	cmp.l	#$186A1,d0
	beq.b	L247
L246
	cmp.l	#$186A0,d0
	bne.b	L248
L247
;      quadObject->Normals = normals;
	move.l	d0,$A(a1)
L248
	rts

	SECTION "_gluQuadricTexture:0",CODE


;void APIENTRY gluQuadricTexture( GLUquadricObj *quadObject,
	XDEF	_gluQuadricTexture
_gluQuadricTexture
	move.b	$8(a7),d0
	move.l	4(a7),a1
L249
;   if (quadObject) 
	cmp.w	#0,a1
	beq.b	L251
L250
;      quadObject->TextureFlag = textureCoords;
	move.b	d0,$8(a1)
L251
	rts

	SECTION "_normal3f:0",CODE


;static void normal3f( GLfloat x, GLfloat y, GLfloat z )
_normal3f
	fmovem.x fp2/fp3/fp4/fp5,-(a7)
	fmove.s	$3C(a7),fp2
	fmove.s	$38(a7),fp3
	fmove.s	$34(a7),fp4
L252
;   mag = sqrt( x*x + y*y + z*z );
	fmove.x	fp4,fp0
	fmul.x	fp4,fp0
	fmove.x	fp3,fp1
	fmul.x	fp3,fp1
	fadd.x	fp1,fp0
	fmove.x	fp2,fp1
	fmul.x	fp2,fp1
	fadd.x	fp1,fp0
	fmove.d	fp0,-(a7)
	jsr	_sqrt__r
	addq.w	#$8,a7
;   if (mag>0.00001F) 
	fcmp.d	#$.3EE4F8B5.80000000,fp0
	fbole.b	L254
L253
;      x /= mag;
	fmove.x	fp0,fp1
	fdiv.x	fp1,fp4
;      y /= mag;
	fmove.x	fp0,fp1
	fdiv.x	fp1,fp3
;      z /= mag;
	fdiv.x	fp0,fp2
L254
;   glNormal3f( x, y, z );
	fmove.s	fp2,-(a7)
	fmove.s	fp3,-(a7)
	fmove.s	fp4,-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
	fmovem.x (a7)+,fp2/fp3/fp4/fp5
	rts

	SECTION "_gluCylinder:0",CODE


;void APIENTRY gluCylinder( GLUquadricObj *qobj,
	XDEF	_gluCylinder
_gluCylinder
L307	EQU	-$A4
	link	a5,#L307
	movem.l	d2-d5/a2,-(a7)
	fmovem.x fp2/fp3/fp4/fp5,-(a7)
	move.l	$28(a5),d4
	move.l	$24(a5),d5
	move.l	$8(a5),a2
L255
;   if (qobj->Orientation==GLU_INSIDE) 
	move.l	4(a2),d0
	cmp.l	#$186B5,d0
	bne.b	L257
L256
;      nsign = -1.0;
	fmove.s	#$.BF800000,fp2
	bra.b	L258
L257
;      nsign = 1.0;
	fmove.s	#$.3F800000,fp2
L258
;   da = 2.0*M_PI / slices;
	fmove.l	d5,fp0
	fmove.d	fp0,-$8(a5)
	fmove.d	#$.401921FB.4D12D846,fp0
	fdiv.d	-$8(a5),fp0
	fmove.d	fp0,-$8(a5)
;   dr = (topRadius-baseRadius) / stacks;
	fmove.d	$14(a5),fp0
	fsub.d	$C(a5),fp0
	fmove.d	fp0,-$18(a5)
	fmove.l	d4,fp0
	fmove.d	-$18(a5),fp1
	fdiv.x	fp0,fp1
	fmove.d	fp1,-$18(a5)
;   dz = height / stacks;
	fmove.l	d4,fp0
	fmove.d	fp0,-$20(a5)
	fmove.d	$1C(a5),fp0
	fdiv.d	-$20(a5),fp0
	fmove.d	fp0,-$20(a5)
;   nz = (baseRadius-topRadius) / height;
	fmove.d	$C(a5),fp0
	fsub.d	$14(a5),fp0
	fdiv.d	$1C(a5),fp0
	fmove.s	fp0,-$30(a5)
;   if (qobj->DrawStyle==GLU_POINT) 
	move.l	(a2),d0
	cmp.l	#$186AA,d0
	bne	L266
L259
;      glBegin( GL_POINTS );
	clr.l	-(a7)
	jsr	_glBegin
	addq.w	#4,a7
;      for (i=0;
	moveq	#0,d2
	bra	L264
L260
;	 x = cos(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.s	fp0,-$24(a5)
;	 y = sin(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp5
;	 normal3f( x*nsign, y*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	 z = 0.0;
	fmove.s	#$.00000000,fp4
;	 r = baseRadius;
	fmove.d	$C(a5),fp3
;	 for (j=0;
	moveq	#0,d3
	bra.b	L262
L261
;	    glVertex3f( x*r, y*r, z );
	fmove.s	fp4,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
;	    z += dz;
	fmove.d	-$20(a5),fp0
	fadd.x	fp0,fp4
;	    r += dr;
	fadd.d	-$18(a5),fp3
	addq.l	#1,d3
L262
	cmp.l	d4,d3
	ble.b	L261
L263
	addq.l	#1,d2
L264
	cmp.l	d5,d2
	blt	L260
L265
;      glEnd();
	jsr	_glEnd
	bra	L306
L266
;   else if (qobj->DrawStyle==GLU_LINE || qobj->DrawStyle==GL
	move.l	(a2),d0
	cmp.l	#$186AB,d0
	beq.b	L268
L267
	move.l	(a2),d0
	cmp.l	#$186AD,d0
	bne	L288
L268
;      if (qobj->DrawStyle==GLU_LINE) 
	move.l	(a2),d0
	cmp.l	#$186AB,d0
	bne	L276
L269
;	 z = 0.0;
	fmove.s	#$.00000000,fp4
;	 r = baseRadius;
	fmove.d	$C(a5),fp3
;	 for (j=0;
	moveq	#0,d3
	bra	L274
L270
;	    glBegin( GL_LINE_LOOP );
	pea	2.w
	jsr	_glBegin
	addq.w	#4,a7
;	    for (i=0;
	moveq	#0,d2
	bra	L272
L271
;	       x = cos(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.s	fp0,-$24(a5)
;	       y = sin(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp5
;	       normal3f( x*nsign, y*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	       glVertex3f( x*r, y*r, z );
	fmove.s	fp4,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d2
L272
	cmp.l	d5,d2
	blt	L271
L273
;	    glEnd();
	jsr	_glEnd
;	    z += dz;
	fmove.d	-$20(a5),fp0
	fadd.x	fp0,fp4
;	    r += dr;
	fadd.d	-$18(a5),fp3
	addq.l	#1,d3
L274
	cmp.l	d4,d3
	ble	L270
L275
	bra	L284
L276
;	 if (baseRadius!=0.0) 
	ftst.d	$C(a5)
	fbeq.b	L284
L277
;	    glBegin( GL_LINE_LOOP );
	pea	2.w
	jsr	_glBegin
	addq.w	#4,a7
;	    for (i=0;
	moveq	#0,d2
	bra	L279
L278
;	       x = cos(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.s	fp0,-$24(a5)
;	       y = sin(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp5
;	       normal3f( x*nsign, y*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	       glVertex3f( x*baseRadius, y*baseRadius, 0.0 );
	clr.l	-(a7)
	fmove.x	fp5,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d2
L279
	cmp.l	d5,d2
	blt	L278
L280
;	    glEnd();
	jsr	_glEnd
;	    glBegin( GL_LINE_LOOP );
	pea	2.w
	jsr	_glBegin
	addq.w	#4,a7
;	    for (i=0;
	moveq	#0,d2
	bra	L282
L281
;	       x = cos(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.s	fp0,-$24(a5)
;	       y = sin(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp5
;	       normal3f( x*nsign, y*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	       glVertex3f( x*topRadius, y*topRadius, height );
	fmove.d	$1C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.d	$14(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.d	$14(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d2
L282
	cmp.l	d5,d2
	blt	L281
L283
;	    glEnd();
	jsr	_glEnd
L284
;      glBegin( GL_LINES );
	pea	1.w
	jsr	_glBegin
	addq.w	#4,a7
;      for (i=0;
	moveq	#0,d2
	bra	L286
L285
;	 x = cos(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.s	fp0,-$24(a5)
;	 y = sin(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp5
;	 normal3f( x*nsign, y*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	 glVertex3f( x*baseRadius, y*baseRadius, 0.0 );
	clr.l	-(a7)
	fmove.x	fp5,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
;	 glVertex3f( x*topRadius, y*topRadius, height );
	fmove.d	$1C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.d	$14(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$24(a5),fp0
	fmul.d	$14(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d2
L286
	cmp.l	d5,d2
	blt	L285
L287
;      glEnd();
	jsr	_glEnd
	bra	L306
L288
;   else if (qobj->DrawStyle==GLU_FILL) 
	move.l	(a2),d0
	cmp.l	#$186AC,d0
	bne	L306
L289
;      GLfloat du = 1.0 / slices;
	fmove.l	d5,fp0
	fmove.d	#$.3FF00000.00000000,fp1
	fdiv.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-$40(a5)
;      GLfloat dv = 1.0 / stacks;
	fmove.l	d4,fp0
	fmove.d	#$.3FF00000.00000000,fp1
	fdiv.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-$44(a5)
;      GLfloat tcx = 0.0
	clr.l	-$48(a5)
;      GLfloat tcx = 0.0, tcy = 0.0;
;      for (i=0;
	moveq	#0,d2
	bra	L305
L290
;	 GLfloat x1 = -sin(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fneg.d	fp0
	fmove.s	fp0,-$50(a5)
;	 GLfloat y1 = cos(i*da);
	fmove.l	d2,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.s	fp0,-$54(a5)
;	 GLfloat x2 = -sin((i+1)*da);
	move.l	d2,d0
	addq.l	#1,d0
	fmove.l	d0,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fneg.d	fp0
	fmove.s	fp0,-$58(a5)
;	 GLfloat y2 = cos((i+1)*da);
	move.l	d2,d0
	addq.l	#1,d0
	fmove.l	d0,fp0
	fmul.d	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.s	fp0,-$5C(a5)
;	 z = 0.0;
	fmove.s	#$.00000000,fp4
;	 r = baseRadius;
	fmove.d	$C(a5),fp3
;	 tcy = 0.0;
	fmove.s	#$.00000000,fp5
;	 glBegin( GL_QUAD_STRIP );
	pea	$8.w
	jsr	_glBegin
	addq.w	#4,a7
;	 for (j=0;
	moveq	#0,d3
	bra	L303
L291
;	    if (nsign==1.0) 
	fmove.x	fp2,fp0
	fcmp.d	#$.3FF00000.00000000,fp0
	fbne.b	L297
L292
;	       normal3f( x1*nsign, y1*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$54(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$50(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	       TXTR_COORD(tcx, tcy)
	tst.b	$8(a2)
	beq.b	L294
L293
;	       TXTR_COORD(tcx, tcy)
	fmove.s	fp5,-(a7)
	move.l	-$48(a5),-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L294
;	       glVertex3f( x1*r, y1*r, z );
	fmove.s	fp4,-(a7)
	fmove.s	-$54(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$50(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
;	       normal3f( x2*nsign, y2*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$5C(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$58(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	       TXTR_COORD(tcx+du, tcy)
	tst.b	$8(a2)
	beq.b	L296
L295
;	       TXTR_COORD(tcx+du, tcy)
	fmove.s	fp5,-(a7)
	fmove.s	-$48(a5),fp0
	fadd.s	-$40(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L296
;	       glVertex3f( x2*r, y2*r, z );
	fmove.s	fp4,-(a7)
	fmove.s	-$5C(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$58(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	bra	L302
L297
;	       normal3f( x2*nsign, y2*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$5C(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$58(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	       TXTR_COORD(tcx, tcy)
	tst.b	$8(a2)
	beq.b	L299
L298
;	       TXTR_COORD(tcx, tcy)
	fmove.s	fp5,-(a7)
	move.l	-$48(a5),-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L299
;	       glVertex3f( x2*r, y2*r, z );
	fmove.s	fp4,-(a7)
	fmove.s	-$5C(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$58(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
;	       normal3f( x1*nsign, y1*nsign, nz*nsign );
	fmove.s	-$30(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$54(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$50(a5),fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	jsr	_normal3f
	add.w	#$C,a7
;	       TXTR_COORD(tcx+du, tcy)
	tst.b	$8(a2)
	beq.b	L301
L300
;	       TXTR_COORD(tcx+du, tcy)
	fmove.s	fp5,-(a7)
	fmove.s	-$48(a5),fp0
	fadd.s	-$40(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L301
;	       glVertex3f( x1*r, y1*r, z );
	fmove.s	fp4,-(a7)
	fmove.s	-$54(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$50(a5),fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
L302
;	    z += dz;
	fmove.d	-$20(a5),fp0
	fadd.x	fp0,fp4
;	    r += dr;
	fadd.d	-$18(a5),fp3
;	    tcy += dv;
	fadd.s	-$44(a5),fp5
	addq.l	#1,d3
L303
	cmp.l	d4,d3
	ble	L291
L304
;	 glEnd();
	jsr	_glEnd
;	 tcx += du;
	fmove.s	-$48(a5),fp0
	fadd.s	-$40(a5),fp0
	fmove.s	fp0,-$48(a5)
	addq.l	#1,d2
L305
	cmp.l	d5,d2
	blt	L290
L306
	fmovem.x (a7)+,fp2/fp3/fp4/fp5
	movem.l	(a7)+,d2-d5/a2
	unlk	a5
	rts

	SECTION "_gluSphere:0",CODE


;      glNormal3f( 0.0, 0.0, -1.0 );
	XDEF	_gluSphere
_gluSphere
L396	EQU	-$90
	link	a5,#L396
	movem.l	d2-d5/a2,-(a7)
	fmovem.x fp2/fp3/fp4/fp5,-(a7)
	move.l	$14(a5),d5
	move.l	$8(a5),a2
L308
;   if (qobj->Normals==GLU_NONE) 
	move.l	$A(a2),d0
	cmp.l	#$186A2,d0
	bne.b	L310
L309
;      normals = GL_FALSE;
	moveq	#0,d4
	bra.b	L311
L310
;      normals = GL_TRUE;
	moveq	#1,d4
L311
;   if (qobj->Orientation==GLU_INSIDE) 
	move.l	4(a2),d0
	cmp.l	#$186B5,d0
	bne.b	L313
L312
;      nsign = -1.0;
	fmove.s	#$.BF800000,fp4
	bra.b	L314
L313
;      nsign = 1.0;
	fmove.s	#$.3F800000,fp4
L314
;   drho = M_PI / (GLfloat) stacks;
	fmove.l	$18(a5),fp0
	fmove.d	#$.400921FB.4D12D846,fp1
	fdiv.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-$8(a5)
;   dtheta = 2.0 * M_PI / (GLfloat) slices;
	fmove.l	d5,fp0
	fmove.d	#$.401921FB.4D12D846,fp1
	fdiv.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-$10(a5)
;   if (qobj->DrawStyle==GLU_FILL) 
	move.l	(a2),d0
	cmp.l	#$186AC,d0
	bne	L362
L315
;     if (!qobj->TextureFlag) 
	tst.b	$8(a2)
	bne	L327
L316
;      glBegin( GL_TRIANGLE_FAN );
	pea	6.w
	jsr	_glBegin
	addq.w	#4,a7
;      glNormal3f( 0.0, 0.0, 1.0 );
	move.l	#$3F800000,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
;      TXTR_COORD(0.5,1.0)
	tst.b	$8(a2)
	beq.b	L318
L317
;      TXTR_COORD(0.5,1.0)
	move.l	#$3F800000,-(a7)
	move.l	#$3F000000,-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L318
;      glVertex3f( 0.0, 0.0, nsign * radius );
	fmove.x	fp4,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
;      for (j=0;
	moveq	#0,d2
	bra	L325
L319
;	 theta = (j==slices) ? 0.0 : j * dtheta;
	cmp.l	d5,d2
	bne.b	L321
L320
	fmove.d	#$.00000000.00000000,fp0
	bra.b	L322
L321
	fmove.l	d2,fp0
	fmul.s	-$10(a5),fp0
L322
	fmove.x	fp0,fp5
;	 x = -sin(theta) * sin(drho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
	fneg.d	fp2
	fmove.s	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$14(a5)
;	 y = cos(theta) * sin(drho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.s	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$18(a5)
;	 z = nsign * cos(drho);
	fmove.x	fp4,fp2
	fmove.s	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
;	 if (normals)  
	tst.b	d4
	beq.b	L324
L323
;	 if (normals)  glNormal3f( x*nsign, y*nsign, z*nsig
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L324
;	 glVertex3f( x*radius, y*radius, z*radius );
	fmove.x	fp2,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d2
L325
	cmp.l	d5,d2
	ble	L319
L326
;      glEnd();
	jsr	_glEnd
L327
;      ds = 1.0 / slices;
	fmove.l	d5,fp0
	fmove.d	#$.3FF00000.00000000,fp1
	fdiv.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-$28(a5)
;      dt = 1.0 / stacks;
	fmove.l	$18(a5),fp0
	fmove.d	#$.3FF00000.00000000,fp1
	fdiv.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-$2C(a5)
;      t = 1.0;
	move.l	#$3F800000,-$24(a5)
;      if (qobj->TextureFlag) 
	tst.b	$8(a2)
	beq.b	L329
L328
;        imin = 0;
	moveq	#0,d0
;        imax = stacks;
	move.l	$18(a5),-$3C(a5)
	bra.b	L330
L329
;        imin = 1;
	moveq	#1,d0
;        imax = stacks-1;
	move.l	$18(a5),d1
	subq.l	#1,d1
	move.l	d1,-$3C(a5)
L330
;      for (i=imin;
	move.l	d0,d3
	bra	L346
L331
;	 rho = i * drho;
	fmove.l	d3,fp3
	fmul.s	-$8(a5),fp3
;	 glBegin( GL_QUAD_STRIP );
	pea	$8.w
	jsr	_glBegin
	addq.w	#4,a7
;         s = 0.0;
	clr.l	-$20(a5)
;	 for (j=0;
	moveq	#0,d2
	bra	L344
L332
;	    theta = (j==slices) ? 0.0 : j * dtheta;
	cmp.l	d5,d2
	bne.b	L334
L333
	fmove.d	#$.00000000.00000000,fp0
	bra.b	L335
L334
	fmove.l	d2,fp0
	fmul.s	-$10(a5),fp0
L335
	fmove.x	fp0,fp5
;	    x = -sin(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
	fneg.d	fp2
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$14(a5)
;	    y = cos(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$18(a5)
;	    z = nsign * cos(rho);
	fmove.x	fp4,fp2
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
;	    if (normals)  
	tst.b	d4
	beq.b	L337
L336
;	    if (normals)  glNormal3f( x*nsign, y*nsign, 
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L337
;	    TXTR_COORD(s,t)
	tst.b	$8(a2)
	beq.b	L339
L338
;	    TXTR_COORD(s,t)
	move.l	-$24(a5),-(a7)
	move.l	-$20(a5),-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L339
;	    glVertex3f( x*radius, y*radius, z*radius );
	fmove.x	fp2,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
;	    x = -sin(theta) * sin(rho+drho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
	fneg.d	fp2
	fmove.x	fp3,fp0
	fadd.s	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$14(a5)
;	    y = cos(theta) * sin(rho+drho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fadd.s	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$18(a5)
;	    z = nsign * cos(rho+drho);
	fmove.x	fp4,fp2
	fmove.x	fp3,fp0
	fadd.s	-$8(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
;	    if (normals)  
	tst.b	d4
	beq.b	L341
L340
;	    if (normals)  glNormal3f( x*nsign, y*nsign, 
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L341
;	    TXTR_COORD(s,t-dt)
	tst.b	$8(a2)
	beq.b	L343
L342
;	    TXTR_COORD(s,t-dt)
	fmove.s	-$24(a5),fp0
	fsub.s	-$2C(a5),fp0
	fmove.s	fp0,-(a7)
	move.l	-$20(a5),-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L343
;            s += ds;
	fmove.s	-$20(a5),fp0
	fadd.s	-$28(a5),fp0
	fmove.s	fp0,-$20(a5)
;	    glVertex3f( x*radius, y*radius, z*radius );
	fmove.x	fp2,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d2
L344
	cmp.l	d5,d2
	ble	L332
L345
;	 glEnd();
	jsr	_glEnd
;	 t -= dt;
	fmove.s	-$24(a5),fp0
	fsub.s	-$2C(a5),fp0
	fmove.s	fp0,-$24(a5)
	addq.l	#1,d3
L346
	cmp.l	-$3C(a5),d3
	blt	L331
L347
;     if (!qobj->TextureFlag) 
	tst.b	$8(a2)
	bne	L361
L348
;      glBegin( GL_TRIANGLE_FAN );
	pea	6.w
	jsr	_glBegin
	addq.w	#4,a7
;      glNormal3f( 0.0, 0.0, -1.0 );
	move.l	#$BF800000,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
;      TXTR_COORD(0.5,0.0)
	tst.b	$8(a2)
	beq.b	L350
L349
;      TXTR_COORD(0.5,0.0)
	clr.l	-(a7)
	move.l	#$3F000000,-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L350
;      glVertex3f( 0.0, 0.0, -radius*nsign );
	fmove.d	$C(a5),fp0
	fneg.d	fp0
	fmove.x	fp4,fp1
	fmul.x	fp1,fp0
	fmove.s	fp0,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
;      rho = M_PI - drho;
	fmove.s	-$8(a5),fp0
	fmove.d	#$.400921FB.4D12D846,fp1
	fsub.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.x	fp0,fp3
;      s = 1.0;
	move.l	#$3F800000,-$20(a5)
;      t = dt;
	move.l	-$2C(a5),-$24(a5)
;      for (j=slices;
	move.l	d5,d2
	bra	L359
L351
;	 theta = (j==slices) ? 0.0 : j * dtheta;
	cmp.l	d5,d2
	bne.b	L353
L352
	fmove.d	#$.00000000.00000000,fp0
	bra.b	L354
L353
	fmove.l	d2,fp0
	fmul.s	-$10(a5),fp0
L354
	fmove.x	fp0,fp5
;	 x = -sin(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
	fneg.d	fp2
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$14(a5)
;	 y = cos(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$18(a5)
;	 z = nsign * cos(rho);
	fmove.x	fp4,fp2
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
;	 if (normals)  
	tst.b	d4
	beq.b	L356
L355
;	 if (normals)  glNormal3f( x*nsign, y*nsign, z*nsig
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L356
;	 TXTR_COORD(s,t)
	tst.b	$8(a2)
	beq.b	L358
L357
;	 TXTR_COORD(s,t)
	move.l	-$24(a5),-(a7)
	move.l	-$20(a5),-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L358
;         s -= ds;
	fmove.s	-$20(a5),fp0
	fsub.s	-$28(a5),fp0
	fmove.s	fp0,-$20(a5)
;	 glVertex3f( x*radius, y*radius, z*radius );
	fmove.x	fp2,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	subq.l	#1,d2
L359
	tst.l	d2
	bpl	L351
L360
;      glEnd();
	jsr	_glEnd
L361
	bra	L395
L362
;   else if (qobj->DrawStyle==GLU_LINE || qobj->DrawStyle==GL
	move.l	(a2),d0
	cmp.l	#$186AB,d0
	beq.b	L364
L363
	move.l	(a2),d0
	cmp.l	#$186AD,d0
	bne	L381
L364
;      for (i=1;
	moveq	#1,d3
	bra	L371
L365
;	 rho = i * drho;
	fmove.l	d3,fp3
	fmul.s	-$8(a5),fp3
;	 glBegin( GL_LINE_LOOP );
	pea	2.w
	jsr	_glBegin
	addq.w	#4,a7
;	 for (j=0;
	moveq	#0,d2
	bra	L369
L366
;	    theta = j * dtheta;
	fmove.l	d2,fp5
	fmul.s	-$10(a5),fp5
;	    x = cos(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$14(a5)
;	    y = sin(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$18(a5)
;	    z = cos(rho);
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
;	    if (normals)  
	tst.b	d4
	beq.b	L368
L367
;	    if (normals)  glNormal3f( x*nsign, y*nsign, 
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L368
;	    glVertex3f( x*radius, y*radius, z*radius );
	fmove.x	fp2,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d2
L369
	cmp.l	d5,d2
	blt	L366
L370
;	 glEnd();
	jsr	_glEnd
	addq.l	#1,d3
L371
	cmp.l	$18(a5),d3
	blt	L365
L372
;      for (j=0;
	moveq	#0,d2
	bra	L379
L373
;	 theta = j * dtheta;
	fmove.l	d2,fp5
	fmul.s	-$10(a5),fp5
;	 glBegin( GL_LINE_STRIP );
	pea	3.w
	jsr	_glBegin
	addq.w	#4,a7
;	 for (i=0;
	moveq	#0,d3
	bra	L377
L374
;	    rho = i * drho;
	fmove.l	d3,fp3
	fmul.s	-$8(a5),fp3
;	    x = cos(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$14(a5)
;	    y = sin(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$18(a5)
;	    z = cos(rho);
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
;	    if (normals)  
	tst.b	d4
	beq.b	L376
L375
;	    if (normals)  glNormal3f( x*nsign, y*nsign, 
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L376
;	    glVertex3f( x*radius, y*radius, z*radius );
	fmove.x	fp2,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d3
L377
	cmp.l	$18(a5),d3
	ble	L374
L378
;	 glEnd();
	jsr	_glEnd
	addq.l	#1,d2
L379
	cmp.l	d5,d2
	blt	L373
L380
	bra	L395
L381
;   else if (qobj->DrawStyle==GLU_POINT) 
	move.l	(a2),d0
	cmp.l	#$186AA,d0
	bne	L395
L382
;      glBegin( GL_POINTS );
	clr.l	-(a7)
	jsr	_glBegin
	addq.w	#4,a7
;      if (normals)  
	tst.b	d4
	beq.b	L384
L383
;      if (normals)  glNormal3f( 0.0, 0.0, nsign )
	fmove.s	fp4,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L384
;      glVertex3d( 0.0, 0.0, radius );
	move.l	$10(a5),-(a7)
	move.l	$C(a5),-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glVertex3d
	add.w	#$18,a7
;      if (normals)  
	tst.b	d4
	beq.b	L386
L385
;      if (normals)  glNormal3f( 0.0, 0.0, -nsign
	fmove.x	fp4,fp0
	fneg.s	fp0
	fmove.s	fp0,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L386
;      glVertex3d( 0.0, 0.0, -radius );
	fmove.d	$C(a5),fp0
	fneg.d	fp0
	fmove.d	fp0,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glVertex3d
	add.w	#$18,a7
;      for (i=1;
	moveq	#1,d3
	bra	L393
L387
;	 rho = i * drho;
	fmove.l	d3,fp3
	fmul.s	-$8(a5),fp3
;	 for (j=0;
	moveq	#0,d2
	bra	L391
L388
;	    theta = j * dtheta;
	fmove.l	d2,fp5
	fmul.s	-$10(a5),fp5
;	    x = cos(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$14(a5)
;	    y = sin(theta) * sin(rho);
	fmove.x	fp5,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	fmove.x	fp0,fp2
	addq.w	#$8,a7
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp2
	fmove.s	fp2,-$18(a5)
;	    z = cos(rho);
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
;	    if (normals)  
	tst.b	d4
	beq.b	L390
L389
;	    if (normals)  glNormal3f( x*nsign, y*nsign, 
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.x	fp4,fp0
	fmove.s	fp0,-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L390
;	    glVertex3f( x*radius, y*radius, z*radius );
	fmove.x	fp2,fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$18(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	fmove.s	-$14(a5),fp0
	fmul.d	$C(a5),fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex3f
	add.w	#$C,a7
	addq.l	#1,d2
L391
	cmp.l	d5,d2
	blt	L388
L392
	addq.l	#1,d3
L393
	move.l	$18(a5),d0
	subq.l	#1,d0
	cmp.l	d0,d3
	blt	L387
L394
;      glEnd();
	jsr	_glEnd
L395
	fmovem.x (a7)+,fp2/fp3/fp4/fp5
	movem.l	(a7)+,d2-d5/a2
	unlk	a5
	rts

	SECTION "_gluDisk:0",CODE


;void APIENTRY gluDisk( GLUquadricObj *qobj,
	XDEF	_gluDisk
_gluDisk
L460	EQU	-$58
	link	a5,#L460
	movem.l	d2-d5/a2,-(a7)
	fmovem.x fp2/fp3/fp4/fp5,-(a7)
	movem.l	$1C(a5),d4/d5
	move.l	$8(a5),a2
	fmove.d	$C(a5),fp4
	fmove.d	$14(a5),fp5
L397
;   if (qobj->Normals!=GLU_NONE) 
	move.l	$A(a2),d0
	cmp.l	#$186A2,d0
	beq.b	L401
L398
;      if (qobj->Orientation==GLU_OUTSIDE) 
	move.l	4(a2),d0
	cmp.l	#$186B4,d0
	bne.b	L400
L399
;	 glNormal3f( 0.0, 0.0, +1.0 );
	move.l	#$3F800000,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
	bra.b	L401
L400
;	 glNormal3f( 0.0, 0.0, -1.0 );
	move.l	#$BF800000,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L401
;   da = 2.0*M_PI / slices;
	fmove.l	d4,fp0
	fmove.d	#$.401921FB.4D12D846,fp1
	fdiv.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-4(a5)
;   dr = (outerRadius-innerRadius) / (GLfloat) loops;
	fmove.x	fp5,fp0
	fsub.x	fp4,fp0
	fmove.l	d5,fp1
	fdiv.x	fp1,fp0
	fmove.s	fp0,-$8(a5)
;   switch (qobj->DrawStyle)
	move.l	(a2),d0
	cmp.l	#$186AC,d0
	beq.b	L402
	bgt.b	L461
	cmp.l	#$186AA,d0
	beq	L442
	cmp.l	#$186AB,d0
	beq	L429
	bra	L458
L461
	cmp.l	#$186AD,d0
	beq	L449
	bra	L458
;      
L402
;         GLfloat dtc = 2.0f * outerRadius;
	fmove.x	fp5,fp0
	fmul.d	#$.40000000.00000000,fp0
	fmove.s	fp0,-$C(a5)
;         GLfloat r1 = innerRadius;
;         for (l=0;
	moveq	#0,d3
	bra	L427
L403
;	    GLfloat r2 = r1 + dr;
	fmove.x	fp4,fp5
	fadd.s	-$8(a5),fp5
;	    if (qobj->Orientation==GLU_OUTSIDE) 
	move.l	4(a2),d0
	cmp.l	#$186B4,d0
	bne	L415
L404
;	       glBegin( GL_QUAD_STRIP );
	pea	$8.w
	jsr	_glBegin
	addq.w	#4,a7
;	       for (s=0;
	moveq	#0,d2
	bra	L413
L405
;		  if (s==slices) 
	cmp.l	d4,d2
	bne.b	L407
L406
;		  if (s==slices) a = 0.0;
	fmove.s	#$.00000000,fp2
	bra.b	L408
L407
;		  else  a = s * da;
	fmove.l	d2,fp2
	fmul.s	-4(a5),fp2
L408
;		  sa = sin(a);
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp3
; ca = cos(a);
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
;             TXTR
	tst.b	$8(a2)
	beq.b	L410
L409
;             TXTR
	fmove.x	fp2,fp0
	fmul.x	fp5,fp0
	fdiv.s	-$C(a5),fp0
	fadd.d	#$.3FE00000.00000000,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp3,fp0
	fmul.x	fp5,fp0
	fdiv.s	-$C(a5),fp0
	fadd.d	#$.3FE00000.00000000,fp0
	fmove.s	fp0,-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L410
;                  glVertex2f( r2*sa, r2*ca );
	fmove.x	fp5,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
;             TXTR
	tst.b	$8(a2)
	beq.b	L412
L411
;             TXTR
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fdiv.s	-$C(a5),fp0
	fadd.d	#$.3FE00000.00000000,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp3,fp0
	fmul.x	fp4,fp0
	fdiv.s	-$C(a5),fp0
	fadd.d	#$.3FE00000.00000000,fp0
	fmove.s	fp0,-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L412
;                  glVertex2f( r1*sa, r1*ca );
	fmove.x	fp4,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp4,fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
	addq.l	#1,d2
L413
	cmp.l	d4,d2
	ble	L405
L414
;	       glEnd();
	jsr	_glEnd
	bra	L426
L415
;	       glBegin( GL_QUAD_STRIP );
	pea	$8.w
	jsr	_glBegin
	addq.w	#4,a7
;	       for (s=slices;
	move.l	d4,d2
	bra	L424
L416
;		  if (s==slices) 
	cmp.l	d4,d2
	bne.b	L418
L417
;		  if (s==slices) a = 0.0;
	fmove.s	#$.00000000,fp2
	bra.b	L419
L418
;		  else  a = s * da;
	fmove.l	d2,fp2
	fmul.s	-4(a5),fp2
L419
;		  sa = sin(a);
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp3
; ca = cos(a);
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
;             TXTR
	tst.b	$8(a2)
	beq.b	L421
L420
;             TXTR
	fmove.x	fp2,fp0
	fmul.x	fp5,fp0
	fdiv.s	-$C(a5),fp0
	fadd.d	#$.3FE00000.00000000,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp3,fp0
	fmul.x	fp5,fp0
	fdiv.s	-$C(a5),fp0
	fmove.d	#$.3FE00000.00000000,fp1
	fsub.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L421
;                  glVertex2f( r2*sa, r2*ca );
	fmove.x	fp5,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
;             TXTR
	tst.b	$8(a2)
	beq.b	L423
L422
;             TXTR
	fmove.x	fp2,fp0
	fmul.x	fp4,fp0
	fdiv.s	-$C(a5),fp0
	fadd.d	#$.3FE00000.00000000,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp3,fp0
	fmul.x	fp4,fp0
	fdiv.s	-$C(a5),fp0
	fmove.d	#$.3FE00000.00000000,fp1
	fsub.x	fp0,fp1
	fmove.x	fp1,fp0
	fmove.s	fp0,-(a7)
	jsr	_glTexCoord2f
	addq.w	#$8,a7
L423
;                  glVertex2f( r1*sa, r1*ca );
	fmove.x	fp4,fp0
	fmul.x	fp2,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp4,fp0
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
	subq.l	#1,d2
L424
	tst.l	d2
	bpl	L416
L425
;	       glEnd();
	jsr	_glEnd
L426
;	    r1 = r2;
	fmove.x	fp5,fp4
	addq.l	#1,d3
L427
	cmp.l	d5,d3
	blt	L403
L428
;         
	bra	L459
L429
;         for (l=0;
	moveq	#0,d3
	bra	L434
L430
;            GLfloat r = innerRadius + l * dr;
	fmove.l	d3,fp0
	fmul.s	-$8(a5),fp0
	fadd.x	fp4,fp0
	fmove.x	fp0,fp5
;	    glBegin( GL_LINE_LOOP );
	pea	2.w
	jsr	_glBegin
	addq.w	#4,a7
;            for (s=0;
	moveq	#0,d2
	bra.b	L432
L431
;               GLfloat a = s * da;
	fmove.l	d2,fp2
	fmul.s	-4(a5),fp2
;	       glVertex2f( r*sin(a), r*cos(a) );
	fmove.x	fp5,fp3
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp0,fp3
	fmove.x	fp3,fp0
	fmove.s	fp0,-(a7)
	fmove.x	fp5,fp3
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp3
	fmove.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
	addq.l	#1,d2
L432
	cmp.l	d4,d2
	blt.b	L431
L433
;	    glEnd();
	jsr	_glEnd
	addq.l	#1,d3
L434
	cmp.l	d5,d3
	ble	L430
L435
;         for (s=0;
	moveq	#0,d2
	bra	L440
L436
;            GLfloat a = s * da;
	fmove.l	d2,fp2
	fmul.s	-4(a5),fp2
;	    GLfloat x = sin(a);
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp3
;	    GLfloat y = cos(a);
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
;	    glBegin( GL_LINE_STRIP );
	pea	3.w
	jsr	_glBegin
	addq.w	#4,a7
;            for (l=0;
	moveq	#0,d3
	bra.b	L438
L437
;               GLfloat r = innerRadius + l * dr;
	fmove.l	d3,fp0
	fmul.s	-$8(a5),fp0
	fadd.x	fp4,fp0
;	       glVertex2f( r*x, r*y );
	fmove.x	fp0,fp1
	fmul.x	fp2,fp1
	fmove.s	fp1,-(a7)
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
	addq.l	#1,d3
L438
	cmp.l	d5,d3
	ble.b	L437
L439
;	    glEnd();
	jsr	_glEnd
	addq.l	#1,d2
L440
	cmp.l	d4,d2
	blt	L436
L441
;	 
	bra	L459
L442
;	 glBegin( GL_POINTS );
	clr.l	-(a7)
	jsr	_glBegin
	addq.w	#4,a7
;         for (s=0;
	moveq	#0,d3
	bra.b	L447
L443
;            GLfloat a = s * da;
	fmove.l	d3,fp2
	fmul.s	-4(a5),fp2
;	    GLfloat x = sin(a);
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmove.x	fp0,fp3
;	    GLfloat y = cos(a);
	fmove.x	fp2,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmove.x	fp0,fp2
;            for (l=0;
	moveq	#0,d2
	bra.b	L445
L444
;               GLfloat r = innerRadius * l * dr;
	fmove.l	d2,fp0
	fmul.x	fp4,fp0
	fmove.s	-$8(a5),fp1
	fmul.x	fp1,fp0
;	       glVertex2f( r*x, r*y );
	fmove.x	fp0,fp1
	fmul.x	fp2,fp1
	fmove.s	fp1,-(a7)
	fmul.x	fp3,fp0
	fmove.s	fp0,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
	addq.l	#1,d2
L445
	cmp.l	d5,d2
	ble.b	L444
L446
	addq.l	#1,d3
L447
	cmp.l	d4,d3
	blt.b	L443
L448
;	 glEnd();
	jsr	_glEnd
;	 
	bra	L459
L449
;	 if (innerRadius!=0.0) 
	ftst.d	fp4
	fbeq.b	L454
L450
;	    glBegin( GL_LINE_LOOP );
	pea	2.w
	jsr	_glBegin
	addq.w	#4,a7
;	    for (a=0.0;
	fmove.s	#$.00000000,fp3
	bra.b	L452
L451
;	       GLfloat x = innerRadius * sin(a);
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp4,fp0
	fmove.x	fp0,fp2
;	       GLfloat y = innerRadius * cos(a);
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp4,fp0
;	       glVertex2f( x, y );
	fmove.s	fp0,-(a7)
	fmove.s	fp2,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
	fadd.s	-4(a5),fp3
L452
	fmove.x	fp3,fp0
	fcmp.d	#$.401921FB.4D12D846,fp0
	fbolt.b	L451
L453
;	    glEnd();
	jsr	_glEnd
L454
;            glBegin( GL_LINE_LOOP );
	pea	2.w
	jsr	_glBegin
	addq.w	#4,a7
;            for (a=0;
	fmove.s	#$.00000000,fp3
	bra.b	L456
L455
;               GLfloat x = outerRadius * sin(a);
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp5,fp0
	fmove.x	fp0,fp2
;               GLfloat y = outerRadius * cos(a);
	fmove.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp5,fp0
;               glVertex2f( x, y );
	fmove.s	fp0,-(a7)
	fmove.s	fp2,-(a7)
	jsr	_glVertex2f
	addq.w	#$8,a7
	fadd.s	-4(a5),fp3
L456
	fmove.x	fp3,fp0
	fcmp.d	#$.401921FB.4D12D846,fp0
	fbolt.b	L455
L457
;            glEnd();
	jsr	_glEnd
;	 
	bra.b	L459
L458
;         abort();
	jsr	_abort
L459
	fmovem.x (a7)+,fp2/fp3/fp4/fp5
	movem.l	(a7)+,d2-d5/a2
	unlk	a5
	rts

	SECTION "_gluPartialDisk:0",CODE


;void APIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRad
	XDEF	_gluPartialDisk
_gluPartialDisk
L511	EQU	-$60
	link	a5,#L511
	movem.l	d2-d5/a2,-(a7)
	fmovem.x fp2/fp3/fp4/fp5,-(a7)
	movem.l	$1C(a5),d4/d5
	move.l	$8(a5),a2
	fmove.d	$14(a5),fp3
L462
;   if (qobj->Normals!=GLU_NONE) 
	move.l	$A(a2),d0
	cmp.l	#$186A2,d0
	beq.b	L466
L463
;      if (qobj->Orientation==GLU_OUTSIDE) 
	move.l	4(a2),d0
	cmp.l	#$186B4,d0
	bne.b	L465
L464
;	 glNormal3f( 0.0, 0.0, +1.0 );
	move.l	#$3F800000,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
	bra.b	L466
L465
;	 glNormal3f( 0.0, 0.0, -1.0 );
	move.l	#$BF800000,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glNormal3f
	add.w	#$C,a7
L466
;   if (qobj->DrawStyle==GLU_POINT) 
	move.l	(a2),d0
	cmp.l	#$186AA,d0
	bne	L474
L467
;      delta_radius = (outerRadius - innerRadius) / (loops-1);
	fmove.x	fp3,fp5
	fsub.d	$C(a5),fp5
	move.l	d5,d0
	subq.l	#1,d0
	fmove.l	d0,fp0
	fdiv.x	fp0,fp5
;      delta_angle = DEG_TO_RAD((sweepAngle) / (slices-1));
	move.l	d4,d0
	subq.l	#1,d0
	fmove.l	d0,fp4
	fmove.d	$2C(a5),fp0
	fdiv.x	fp4,fp0
	fmove.x	fp0,fp4
	fmul.d	#$.3F91DF46.9D353915,fp4
;      glBegin( GL_POINTS );
	clr.l	-(a7)
	jsr	_glBegin
	addq.w	#4,a7
;      radius = innerRadius;
	fmove.d	$C(a5),fp3
;      for (loop=0;
	moveq	#0,d3
	bra.b	L472
L468
;	 angle = DEG_TO_RAD(startAngle);
	fmove.d	$24(a5),fp2
	fmul.d	#$.3F91DF46.9D353915,fp2
;	 for (slice=0;
	moveq	#0,d2
	bra.b	L470
L469
;	    glVertex2d( radius * sin(angle), radius * cos(angle) );
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	    angle += delta_angle;
	fadd.x	fp4,fp2
	addq.l	#1,d2
L470
	cmp.l	d4,d2
	blt.b	L469
L471
;	 radius += delta_radius;
	fadd.x	fp5,fp3
	addq.l	#1,d3
L472
	cmp.l	d5,d3
	blt.b	L468
L473
;      glEnd();
	jsr	_glEnd
	bra	L510
L474
;   else if (qobj->DrawStyle==GLU_LINE) 
	move.l	(a2),d0
	cmp.l	#$186AB,d0
	bne	L488
L475
;      delta_radius = (outerRadius - innerRadius) / loops;
	fmove.x	fp3,fp5
	fsub.d	$C(a5),fp5
	fmove.l	d5,fp0
	fdiv.x	fp0,fp5
;      delta_angle = DEG_TO_RAD(sweepAngle / slices);
	fmove.l	d4,fp4
	fmove.d	$2C(a5),fp0
	fdiv.x	fp4,fp0
	fmove.x	fp0,fp4
	fmul.d	#$.3F91DF46.9D353915,fp4
;      radius = innerRadius;
	fmove.d	$C(a5),fp3
;      for (loop=0;
	moveq	#0,d3
	bra.b	L480
L476
;	 angle = DEG_TO_RAD(startAngle);
	fmove.d	$24(a5),fp2
	fmul.d	#$.3F91DF46.9D353915,fp2
;	 glBegin( GL_LINE_STRIP );
	pea	3.w
	jsr	_glBegin
	addq.w	#4,a7
;	 for (slice=0;
	moveq	#0,d2
	bra.b	L478
L477
;	    glVertex2d( radius * sin(angle), radius * cos(angle) );
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	    angle += delta_angle;
	fadd.x	fp4,fp2
	addq.l	#1,d2
L478
	cmp.l	d4,d2
	blt.b	L477
L479
;	 glEnd();
	jsr	_glEnd
;	 radius += delta_radius;
	fadd.x	fp5,fp3
	addq.l	#1,d3
L480
	cmp.l	d5,d3
	blt.b	L476
L481
;      angle = DEG_TO_RAD(startAngle);
	fmove.d	$24(a5),fp2
	fmul.d	#$.3F91DF46.9D353915,fp2
;      for (slice=0;
	moveq	#0,d2
	bra.b	L486
L482
;	 radius = innerRadius;
	fmove.d	$C(a5),fp3
;	 glBegin( GL_LINE_STRIP );
	pea	3.w
	jsr	_glBegin
	addq.w	#4,a7
;	 for (loop=0;
	moveq	#0,d3
	bra.b	L484
L483
;	    glVertex2d( radius * sin(angle), radius * cos(angle) );
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	    radius += delta_radius;
	fadd.x	fp5,fp3
	addq.l	#1,d3
L484
	cmp.l	d5,d3
	blt.b	L483
L485
;	 glEnd();
	jsr	_glEnd
;	 angle += delta_angle;
	fadd.x	fp4,fp2
	addq.l	#1,d2
L486
	cmp.l	d4,d2
	blt.b	L482
L487
	bra	L510
L488
;   else if (qobj->DrawStyle==GLU_SILHOUETTE) 
	move.l	(a2),d0
	cmp.l	#$186AD,d0
	bne	L500
L489
;      delta_angle = DEG_TO_RAD(sweepAngle / slices);
	fmove.l	d4,fp4
	fmove.d	$2C(a5),fp0
	fdiv.x	fp4,fp0
	fmove.x	fp0,fp4
	fmul.d	#$.3F91DF46.9D353915,fp4
;      glBegin( GL_LINE_STRIP );
	pea	3.w
	jsr	_glBegin
	addq.w	#4,a7
;      angle = DEG_TO_RAD(startAngle);
	fmove.d	$24(a5),fp2
	fmul.d	#$.3F91DF46.9D353915,fp2
;      for (slice=0;
	moveq	#0,d2
	bra.b	L491
L490
;	 glVertex2d( outerRadius * sin(angle), outerRadius * cos(angle) );
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	 angle += delta_angle;
	fadd.x	fp4,fp2
	addq.l	#1,d2
L491
	cmp.l	d4,d2
	ble.b	L490
L492
;      glEnd();
	jsr	_glEnd
;      if (innerRadius>0.0) 
	fmove.d	$C(a5),fp0
	fcmp.d	#$.00000000.00000000,fp0
	fbole.b	L497
L493
;	 glBegin( GL_LINE_STRIP );
	pea	3.w
	jsr	_glBegin
	addq.w	#4,a7
;	 angle = DEG_TO_RAD(startAngle);
	fmove.d	$24(a5),fp2
	fmul.d	#$.3F91DF46.9D353915,fp2
;	 for (slice=0;
	moveq	#0,d2
	bra.b	L495
L494
;	    glVertex2d( innerRadius * sin(angle), innerRadius * cos(an
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.d	$C(a5),fp0
	fmove.d	fp0,-(a7)
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.d	$C(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	    angle += delta_angle;
	fadd.x	fp4,fp2
	addq.l	#1,d2
L495
	cmp.l	d4,d2
	blt.b	L494
L496
;	 glEnd();
	jsr	_glEnd
L497
;      if (sweepAngle<360.0) 
	fmove.d	$2C(a5),fp0
	fcmp.d	#$.40768000.00000000,fp0
	fboge.b	L499
L498
;	 GLdouble stopAngle = startAngle + sweepAngle;
	fmove.d	$24(a5),fp2
	fadd.d	$2C(a5),fp2
;	 glBegin( GL_LINES );
	pea	1.w
	jsr	_glBegin
	addq.w	#4,a7
;	 glVertex2d( innerRadius*SIND(startAngle), innerRadius*COSD(start
	fmove.d	$24(a5),fp0
	fmul.d	#$.3F91DF46.9D353915,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.d	$C(a5),fp0
	fmove.d	fp0,-(a7)
	fmove.d	$24(a5),fp0
	fmul.d	#$.3F91DF46.9D353915,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.d	$C(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	 glVertex2d( outerRadius*SIND(startAngle), outerRadius*COSD(start
	fmove.d	$24(a5),fp0
	fmul.d	#$.3F91DF46.9D353915,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	fmove.d	$24(a5),fp0
	fmul.d	#$.3F91DF46.9D353915,fp0
	fmove.d	fp0,$24(a5)
	move.l	$28(a5),-(a7)
	move.l	$24(a5),-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	 glVertex2d( innerRadius*SIND(stopAngle), innerRadius*COSD(stopAn
	fmove.x	fp2,fp0
	fmul.d	#$.3F91DF46.9D353915,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.d	$C(a5),fp0
	fmove.d	fp0,-(a7)
	fmove.x	fp2,fp0
	fmul.d	#$.3F91DF46.9D353915,fp0
	fmove.d	fp0,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.d	$C(a5),fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	 glVertex2d( outerRadius*SIND(stopAngle), outerRadius*COSD(stopAn
	fmove.x	fp2,fp0
	fmul.d	#$.3F91DF46.9D353915,fp0
	fmove.d	fp0,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	fmul.d	#$.3F91DF46.9D353915,fp2
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	 glEnd();
	jsr	_glEnd
L499
	bra	L510
L500
;   else if (qobj->DrawStyle==GLU_FILL) 
	move.l	(a2),d0
	cmp.l	#$186AC,d0
	bne	L510
L501
;      delta_radius = (outerRadius - innerRadius) / loops;
	fmove.x	fp3,fp4
	fsub.d	$C(a5),fp4
	fmove.l	d5,fp0
	fdiv.x	fp0,fp4
;      delta_angle = DEG_TO_RAD(sweepAngle / slices);
	fmove.l	d4,fp0
	fmove.d	fp0,-$50(a5)
	fmove.d	$2C(a5),fp0
	fdiv.d	-$50(a5),fp0
	fmove.d	fp0,-$50(a5)
	fmove.d	-$50(a5),fp0
	fmul.d	#$.3F91DF46.9D353915,fp0
	fmove.d	fp0,-$50(a5)
;      radius = innerRadius;
	fmove.d	$C(a5),fp3
;      for (loop=0;
	moveq	#0,d3
	bra	L509
L502
;	 glBegin( GL_QUAD_STRIP );
	pea	$8.w
	jsr	_glBegin
	addq.w	#4,a7
;	 angle = DEG_TO_RAD(startAngle);
	fmove.d	$24(a5),fp2
	fmul.d	#$.3F91DF46.9D353915,fp2
;	 for (slice=0;
	moveq	#0,d2
	bra	L507
L503
;	    if (qobj->Orientation==GLU_OUTSIDE) 
	move.l	4(a2),d0
	cmp.l	#$186B4,d0
	bne.b	L505
L504
;	       glVertex2d( (radius+delta_radius)*sin(angle),
	fmove.x	fp3,fp5
	fadd.x	fp4,fp5
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp0,fp5
	fmove.d	fp5,-(a7)
	fmove.x	fp3,fp5
	fadd.x	fp4,fp5
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp5
	fmove.d	fp5,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	       glVertex2d( radius * sin(angle), radius * cos(angle)
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
	bra.b	L506
L505
;	       glVertex2d( radius * sin(angle), radius * cos(angle)
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp3,fp0
	fmove.d	fp0,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
;	       glVertex2d( (radius+delta_radius)*sin(angle),
	fmove.x	fp3,fp5
	fadd.x	fp4,fp5
	fmove.d	fp2,-(a7)
	jsr	_cos__r
	addq.w	#$8,a7
	fmul.x	fp0,fp5
	fmove.d	fp5,-(a7)
	fmove.x	fp3,fp5
	fadd.x	fp4,fp5
	fmove.d	fp2,-(a7)
	jsr	_sin__r
	addq.w	#$8,a7
	fmul.x	fp0,fp5
	fmove.d	fp5,-(a7)
	jsr	_glVertex2d
	add.w	#$10,a7
L506
;	    angle += delta_angle;
	fadd.d	-$50(a5),fp2
	addq.l	#1,d2
L507
	cmp.l	d4,d2
	blt	L503
L508
;	 glEnd();
	jsr	_glEnd
;	 radius += delta_radius;
	fadd.x	fp4,fp3
	addq.l	#1,d3
L509
	cmp.l	d5,d3
	blt	L502
L510
	fmovem.x (a7)+,fp2/fp3/fp4/fp5
	movem.l	(a7)+,d2-d5/a2
	unlk	a5
	rts

	END
