;	StormC Compiler V 3.00.28.PPC

	XREF	_difftime__r
	XREF	@__difftime__r
	XREF	_clock
	XREF	@__clock
	XREF	_strlen
	XREF	@__strlen
	XREF	_sin__r
	XREF	@__sin__r
	XREF	_sprintf
	XREF	@__sprintf
	XREF	_WriteChunkyPixels
	XREF	@__WriteChunkyPixels
	XREF	_ReleasePen
	XREF	@__ReleasePen
	XREF	_ObtainBestPen
	XREF	@__ObtainBestPen
	XREF	_BltBitMapRastPort
	XREF	@__BltBitMapRastPort
	XREF	_SetDrMd
	XREF	@__SetDrMd
	XREF	_SetBPen
	XREF	@__SetBPen
	XREF	_SetAPen
	XREF	@__SetAPen
	XREF	_Move
	XREF	@__Move
	XREF	_Text
	XREF	@__Text
	XREF	_FreeVec
	XREF	@__FreeVec
	XREF	_AllocVec
	XREF	@__AllocVec
	XREF	_CopyMem
	XREF	@__CopyMem
	XREF	_OpenLibrary
	XREF	@__OpenLibrary
	XREF	_CloseLibrary
	XREF	@__CloseLibrary
	XREF	_ReplyMsg
	XREF	@__ReplyMsg
	XREF	_GetMsg
	XREF	@__GetMsg
	XREF	_Wait
	XREF	@__Wait
	XREF	_SetTaskPri
	XREF	@__SetTaskPri
	XREF	_FindTask
	XREF	@__FindTask
	XREF	_OpenWindowTags
	XREF	@__OpenWindowTags
	XREF	_UnlockPubScreen
	XREF	@__UnlockPubScreen
	XREF	_LockPubScreen
	XREF	@__LockPubScreen
	XREF	_SetWindowTitles
	XREF	@__SetWindowTitles
	XREF	_CloseWindow
	XREF	@__CloseWindow
	XREF	_WritePixelArray
	XREF	@__WritePixelArray
	XREF	_DrawMandelbrot
	XREF	@__DrawMandelbrot
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_PowerPCBase
	XREF	@__PowerPCBase
	XREF	_std__in
	XREF	@__std__in
	XREF	_std__out
	XREF	@__std__out
	XREF	_std__err
	XREF	@__std__err

	SECTION	":0",Code

	XDEF	_INIT_8_MandelDemo_c
_INIT_8_MandelDemo_c:
	mflr	r0
	stw	r0,8(r1)
	stwu	r1,-32(r1)
;	int N = 20;
;	long x0 = 0
;	long x0 = 0,y0 = 0;
;	static char* foo = "PRE CALL";
;	struct Library *PowerPCBase = NULL;
;	struct Library *CyberGfxBase = NULL;
	addi	r1,r1,32
	lwz	r0,8(r1)
	mtlr	r0
	blr

;	static ULONG getit(
_getit:
	mflr	r0
	stw	r0,8(r1)
	stwu	r1,-32(r1)
;		if (msg)
	cmpli	cr0,r9,0
	beq	cr0,L92
;			gfxbuf = *msg;
	addi	r3,r2,_gfxbuf
	lwz	r0,0(r9)
	stw	r0,0(r3)
	lwz	r0,4(r9)
	stw	r0,4(r3)
	lwz	r0,8(r9)
	stw	r0,8(r3)
	lwz	r0,12(r9)
	stw	r0,12(r3)
	lwz	r0,16(r9)
	stw	r0,16(r3)
	lwz	r0,20(r9)
	stw	r0,20(r3)
	lhz	r0,24(r9)
	sth	r0,24(r3)
L92
;		foo = "GetIt()";
	addi	r12,r2,L88
	stw	r12,_foo(r2)
;		return 0;
	addi	r3,r0,0
	addi	r1,r1,32
	lwz	r0,8(r1)
	mtlr	r0
	blr

;	static ULONG drawit(
_drawit:
	mflr	r0
	stw	r0,8(r1)
	stwu	r1,-48(r1)
;		CopyMem(gfxbuf.memptr,msg->memptr,msg->ysize*msg->bytesperrow);
	lwz	r4,16(r9)
	lhz	r3,20(r9)
	rlwinm	r3,r3,0,16,31
	mullw	r5,r4,r3
	addi	r3,r2,_gfxbuf
	lwz	r4,0(r9)
	lwz	r3,0(r3)
	bl	_CopyMem
;		foo = "DrawIt()";
	addi	r12,r2,L93
	stw	r12,_foo(r2)
;		return 0;
	addi	r3,r0,0
	addi	r1,r1,48
	lwz	r0,8(r1)
	mtlr	r0
	blr

;	void TextOutXY(struct RastPort *rp,long x, long y,  STRPTR s)
	XDEF	_TextOutXY
_TextOutXY:
	stw	r14,-4(r1)
	stw	r13,-8(r1)
	mflr	r0
	mr	r14,r3	;dst=src
	stw	r0,8(r1)
	mr	r13,r6	;dst=src
	stwu	r1,-48(r1)
;		Move(rp,x,y);
	mr	r3,r14	;dst=src
	bl	_Move
;		Text(rp,s,strlen(s));
	mr	r3,r13	;dst=src
	bl	_strlen
	mr	r4,r13	;dst=src
	mr	r5,r3	;dst=src
	mr	r3,r14	;dst=src
	bl	_Text
	addi	r1,r1,48
	lwz	r0,8(r1)
	mtlr	r0
	lwz	r13,-8(r1)
	lwz	r14,-4(r1)
	blr

;	void TextOut(struct RastPort *rp,STRPTR s)
	XDEF	_TextOut
_TextOut:
	stw	r14,-4(r1)
	stw	r13,-8(r1)
	mflr	r0
	mr	r14,r3	;dst=src
	stw	r0,8(r1)
	mr	r13,r4	;dst=src
	stwu	r1,-48(r1)
;		Text(rp,s,strlen(s));
	mr	r3,r13	;dst=src
	bl	_strlen
	mr	r4,r13	;dst=src
	mr	r5,r3	;dst=src
	mr	r3,r14	;dst=src
	bl	_Text
	addi	r1,r1,48
	lwz	r0,8(r1)
	mtlr	r0
	lwz	r13,-8(r1)
	lwz	r14,-4(r1)
	blr

;	static void DrawMandelInfo(struct RastPort *rp, int N, Rect &view)
_DrawMandelInfo:
	stw	r16,-4(r1)
	stw	r15,-8(r1)
	stw	r14,-12(r1)
	stw	r13,-16(r1)
	mflr	r0
	mr	r16,r4	;dst=src
	mr	r14,r5	;dst=src
	mr	r13,r3	;dst=src
	stw	r0,8(r1)
	stwu	r1,-144(r1)
;		ULONG h = rp->TxHeight;
	lhz	r3,58(r13)
	rlwinm	r15,r3,0,16,31
;		SetDrMd(rp,JAM2);
	addi	r4,r0,1
	mr	r3,r13	;dst=src
	bl	_SetDrMd
;		SetAPen(rp,0);
	addi	r4,r0,0
	mr	r3,r13	;dst=src
	bl	_SetAPen
;		SetBPen(rp,1);
	addi	r4,r0,1
	mr	r3,r13	;dst=src
	bl	_SetBPen
;		sprintf(buf,", Depth: %ld",N);
	addi	r3,r1,60
	addi	r4,r2,L98
	mr	r5,r16	;dst=src
	stw	r5,32(r1)
	bl	_sprintf
;		TextOutXY(rp,0,rp->TxBaseline,buf);
	addi	r6,r1,60
	addi	r4,r0,0
	mr	r3,r13	;dst=src
	lhz	r5,62(r13)
	rlwinm	r5,r5,0,16,31
	bl	_TextOutXY
;		sprintf(buf,"From: (%g,%g)",view.x0,view.y0);
	addi	r3,r1,60
	addi	r4,r2,L100
	lfd	f1,0(r14)
	lfd	f2,8(r14)
	stfd	f1,32(r1)
	stfd	f2,40(r1)
	bl	_sprintf
;		TextOutXY(rp,0,rp->cp_y+h,buf);
	addi	r6,r1,60
	addi	r4,r0,0
	lha	r3,38(r13)
	extsh	r3,r3
	add	r5,r3,r15
	mr	r3,r13	;dst=src
	bl	_TextOutXY
;		sprintf(buf,"To:   (%g,%g)",view.x1,view.y1);
	addi	r3,r1,60
	addi	r4,r2,L102
	lfd	f1,16(r14)
	lfd	f2,24(r14)
	stfd	f1,32(r1)
	stfd	f2,40(r1)
	bl	_sprintf
;		TextOutXY(rp,0,rp->cp_y+h,buf);
	addi	r6,r1,60
	addi	r4,r0,0
	lha	r3,38(r13)
	extsh	r3,r3
	add	r5,r3,r15
	mr	r3,r13	;dst=src
	bl	_TextOutXY
	addi	r1,r1,144
	lwz	r0,8(r1)
	mtlr	r0
	lwz	r15,-8(r1)
	lwz	r14,-12(r1)
	lwz	r13,-16(r1)
	lwz	r16,-4(r1)
	blr

;	void ScrollView(Window *window,DrawMsg *gfxport,long dx, long dy)
	XDEF	_ScrollView
_ScrollView:
	stw	r18,-4(r1)
	stw	r17,-8(r1)
	stw	r16,-12(r1)
	stw	r15,-16(r1)
	stw	r14,-20(r1)
	stw	r13,-24(r1)
	mflr	r0
	mr	r16,r3	;dst=src
	mr	r15,r5	;dst=src
	mr	r14,r6	;dst=src
	mr	r13,r4	;dst=src
	stw	r0,8(r1)
	stwu	r1,-128(r1)
;		if (window && gfxport && gfxport->memptr)
	cmpli	cr0,r16,0
	beq	cr0,L135
	cmpli	cr0,r13,0
	beq	cr0,L135
	lwz	r3,0(r13)
	cmpli	cr0,r3,0
	beq	cr0,L135
;		
;			long w = window->Width - window->BorderLeft - window->BorderRigh
	lha	r3,8(r16)
	extsh	r4,r3
	lbz	r3,54(r16)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r4,r3,r4	;dst=b-a
	lbz	r3,56(r16)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r3,r3,r4	;dst=b-a
	addi	r18,r3,-1
;			long h = window->Height - window->BorderBottom - window->BorderT
	lha	r3,10(r16)
	extsh	r4,r3
	lbz	r3,57(r16)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r4,r3,r4	;dst=b-a
	lbz	r3,55(r16)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r3,r3,r4	;dst=b-a
	addi	r17,r3,-1
;			long x = window->LeftEdge + window->BorderLeft;
	lha	r3,4(r16)
	extsh	r4,r3
	lbz	r3,54(r16)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	add	r4,r4,r3
;			long y = window->TopEdge + window->BorderTop;
	lha	r3,6(r16)
	extsh	r5,r3
	lbz	r3,55(r16)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	add	r5,r5,r3
;			long x1 = x0
	lwz	r7,_x0(r2)
;			long x1 = x0,y1 = y0;
	lwz	r6,_y0(r2)
;			x0 += dx;
	lwz	r11,_x0(r2)
	add	r12,r11,r15
	stw	r12,_x0(r2)
;			y0 += dy;
	lwz	r11,_y0(r2)
	add	r12,r11,r14
	stw	r12,_y0(r2)
;			if (x0 < 0) 
	lwz	r12,_x0(r2)
	cmpi	cr0,r12,0
	bge	cr0,L110
;			if (x0 < 0) x0 = 0;
	addi	r12,r0,0
	stw	r12,_x0(r2)
L110
;			if (x0 > width - w) 
	lwz	r12,_width(r2)
	subf	r3,r18,r12	;dst=b-a
	lwz	r12,_x0(r2)
	cmp	cr0,r12,r3
	ble	cr0,L112
;			if (x0 > width - w) x0 = width - w;
	lwz	r11,_width(r2)
	subf	r12,r18,r11	;dst=b-a
	stw	r12,_x0(r2)
L112
;			if (y0 < 0) 
	lwz	r12,_y0(r2)
	cmpi	cr0,r12,0
	bge	cr0,L114
;			if (y0 < 0) y0 = 0;
	addi	r12,r0,0
	stw	r12,_y0(r2)
L114
;			if (y0 > height - h) 
	lwz	r12,_height(r2)
	subf	r3,r17,r12	;dst=b-a
	lwz	r12,_y0(r2)
	cmp	cr0,r12,r3
	ble	cr0,L116
;			if (y0 > height - h) y0 = height - h;
	lwz	r11,_height(r2)
	subf	r12,r17,r11	;dst=b-a
	stw	r12,_y0(r2)
L116
;			dx = x0 - x1;
	lwz	r12,_x0(r2)
	subf.	r15,r7,r12	;dst=b-a
;			dy = y0 - y1;
	lwz	r12,_y0(r2)
	subf	r14,r6,r12	;dst=b-a
;			if (dx || dy)
	bne	cr0,L118
	cmpi	cr0,r14,0
	beq	cr0,L135
L118
;			
;				struct BitMap *map = window->RPort->BitMap;
	lwz	r3,50(r16)
	lwz	r3,4(r3)
;				struct RastPort *rp = window->RPort;
	lwz	r6,50(r16)
;				if (dx < 0)
	cmpi	cr0,r15,0
	bge	cr0,L125
;				
;					if (dy == 0)
	cmpi	cr0,r14,0
	bne	cr0,L121
;					
;						BltBitMapRastPort(map,x,y,rp,-dx,dy,w+dx,h+1,0xc0);
	addi	r10,r17,1
	addi	r12,r0,192
	add	r9,r18,r15
	neg	r7,r15
	mr	r8,r14	;dst=src
	stw	r12,56(r1)
	bl	_BltBitMapRastPort
;						addr = (long)gfxport->memptr + x0 + y0 * gfxport->bytesper
	lwz	r3,0(r13)
	lwz	r12,_x0(r2)
	add	r4,r3,r12
	lhz	r3,20(r13)
	rlwinm	r3,r3,0,16,31
	lwz	r12,_y0(r2)
	mullw	r3,r12,r3
	add	r8,r4,r3
;						WriteChunkyPixels(window->RPort,0,0,-dx,h,(UBYTE*)addr,gfx
	addi	r5,r0,0
	addi	r4,r0,0
	lhz	r9,20(r13)
	neg	r6,r15
	mr	r7,r17	;dst=src
	lwz	r3,50(r16)
	rlwinm	r9,r9,0,16,31
	bl	_WriteChunkyPixels
	b	L124
L121
;					else if (dy > 0)
	cmpi	cr0,r14,0
	ble	cr0,L123
;					
;						BltBitMapRastPort(map,x,y,rp,-dx,dy,w+dx,h-dy+1,0xc0);
	addi	r12,r0,192
	subf	r7,r14,r17	;dst=b-a
	addi	r10,r7,1
	add	r9,r18,r15
	stw	r12,56(r1)
	mr	r8,r14	;dst=src
	neg	r7,r15
	bl	_BltBitMapRastPort
;						addr = (long)gfxport->memptr + x0 + y0 * gfxport->bytesper
	lwz	r12,_x0(r2)
	lwz	r3,0(r13)
	add	r4,r3,r12
	lhz	r3,20(r13)
	lwz	r12,_y0(r2)
	rlwinm	r3,r3,0,16,31
	mullw	r3,r12,r3
	add	r8,r4,r3
;						WriteChunkyPixels(window->RPort,0,0,-dx,h,(UBYTE*)addr,gfx
	addi	r5,r0,0
	addi	r4,r0,0
	lhz	r9,20(r13)
	mr	r7,r17	;dst=src
	lwz	r3,50(r16)
	neg	r6,r15
	rlwinm	r9,r9,0,16,31
	bl	_WriteChunkyPixels
	b	L124
L123
;					
;						BltBitMapRastPort(map,x,y-dy,rp,-dx,0,w+dx,h+dy+1,0xc0);
	addi	r12,r0,192
	addi	r8,r0,0
	add	r7,r17,r14
	addi	r10,r7,1
	stw	r12,56(r1)
	add	r9,r18,r15
	subf	r5,r14,r5	;dst=b-a
	neg	r7,r15
	bl	_BltBitMapRastPort
;						addr = (long)gfxport->memptr + x0 + y0 * gfxport->bytesper
	lwz	r3,0(r13)
	lwz	r12,_x0(r2)
	add	r4,r3,r12
	lhz	r3,20(r13)
	lwz	r12,_y0(r2)
	rlwinm	r3,r3,0,16,31
	mullw	r3,r12,r3
	add	r8,r4,r3
;						WriteChunkyPixels(window->RPort,0,0,-dx,h,(UBYTE*)addr,gfx
	addi	r5,r0,0
	addi	r4,r0,0
	lhz	r9,20(r13)
	lwz	r3,50(r16)
	neg	r6,r15
	rlwinm	r9,r9,0,16,31
	mr	r7,r17	;dst=src
	bl	_WriteChunkyPixels
L124
	b	L135
L125
;				else if (dx > 0)
	cmpi	cr0,r15,0
	ble	cr0,L132
;				
;					if (dy == 0)
	cmpi	cr0,r14,0
	bne	cr0,L128
;					
;						BltBitMapRastPort(map,x+dx,y,rp,0,dy,w-dx,h+1,0xc0);
	addi	r10,r17,1
	addi	r12,r0,192
	addi	r7,r0,0
	stw	r12,56(r1)
	subf	r9,r15,r18	;dst=b-a
	add	r4,r4,r15
	mr	r8,r14	;dst=src
	bl	_BltBitMapRastPort
;						addr = (long)gfxport->memptr + x0 + w - dx + y0 * gfxport-
	lwz	r3,0(r13)
	lwz	r12,_x0(r2)
	add	r3,r3,r12
	add	r3,r3,r18
	subf	r4,r15,r3	;dst=b-a
	lhz	r3,20(r13)
	lwz	r12,_y0(r2)
	rlwinm	r3,r3,0,16,31
	mullw	r3,r12,r3
	add	r8,r4,r3
;						WriteChunkyPixels(window->RPort,w-dx,0,w,h,(UBYTE*)addr,gf
	addi	r5,r0,0
	lhz	r9,20(r13)
	lwz	r3,50(r16)
	rlwinm	r9,r9,0,16,31
	mr	r6,r18	;dst=src
	subf	r4,r15,r18	;dst=b-a
	mr	r7,r17	;dst=src
	bl	_WriteChunkyPixels
	b	L131
L128
;					else if (dy > 0)
	cmpi	cr0,r14,0
	ble	cr0,L130
;					
;						BltBitMapRastPort(map,x,y,rp,dx,dy,w-dx,h-dy+1,0xc0);
	addi	r12,r0,192
	subf	r7,r14,r17	;dst=b-a
	addi	r10,r7,1
	stw	r12,56(r1)
	subf	r9,r15,r18	;dst=b-a
	mr	r8,r14	;dst=src
	mr	r7,r15	;dst=src
	bl	_BltBitMapRastPort
;						addr = (long)gfxport->memptr + x0 + y0 * gfxport->bytesper
	lwz	r3,0(r13)
	lwz	r12,_x0(r2)
	add	r4,r3,r12
	lhz	r3,20(r13)
	lwz	r12,_y0(r2)
	rlwinm	r3,r3,0,16,31
	mullw	r3,r12,r3
	add	r8,r4,r3
;						WriteChunkyPixels(window->RPort,0,0,dx,h,(UBYTE*)addr,gfxp
	addi	r4,r0,0
	addi	r5,r0,0
	lhz	r9,20(r13)
	lwz	r3,50(r16)
	rlwinm	r9,r9,0,16,31
	mr	r6,r15	;dst=src
	mr	r7,r17	;dst=src
	bl	_WriteChunkyPixels
	b	L131
L130
;					
;						BltBitMapRastPort(map,x,y-dy,rp,dx,0,w-dx,h+dy+1,0xc0);
	addi	r12,r0,192
	addi	r8,r0,0
	add	r7,r17,r14
	addi	r10,r7,1
	stw	r12,56(r1)
	subf	r9,r15,r18	;dst=b-a
	mr	r7,r15	;dst=src
	subf	r5,r14,r5	;dst=b-a
	bl	_BltBitMapRastPort
;						addr = (long)gfxport->memptr + x0 + y0 * gfxport->bytesper
	lwz	r3,0(r13)
	lwz	r12,_x0(r2)
	add	r4,r3,r12
	lhz	r3,20(r13)
	lwz	r12,_y0(r2)
	rlwinm	r3,r3,0,16,31
	mullw	r3,r12,r3
	add	r8,r4,r3
;						WriteChunkyPixels(window->RPort,0,0,dx,h,(UBYTE*)addr,gfxp
	addi	r4,r0,0
	addi	r5,r0,0
	lhz	r9,20(r13)
	lwz	r3,50(r16)
	rlwinm	r9,r9,0,16,31
	mr	r6,r15	;dst=src
	mr	r7,r17	;dst=src
	bl	_WriteChunkyPixels
L131
	b	L135
L132
;				
;					if (dy < 0)
	cmpi	cr0,r14,0
	bge	cr0,L134
;					
;						BltBitMapRastPort(map,x,y,rp,0,-dy,w,h+dy+1,0xc0);
	addi	r12,r0,192
	add	r7,r17,r14
	addi	r10,r7,1
	addi	r7,r0,0
	stw	r12,56(r1)
	mr	r9,r18	;dst=src
	neg	r8,r14
	bl	_BltBitMapRastPort
;						addr = (long)gfxport->memptr + x0 + y0 * gfxport->bytesper
	lwz	r3,0(r13)
	lwz	r12,_x0(r2)
	add	r4,r3,r12
	lhz	r3,20(r13)
	lwz	r12,_y0(r2)
	rlwinm	r3,r3,0,16,31
	mullw	r3,r12,r3
	add	r8,r4,r3
;						WriteChunkyPixels(window->RPort,0,0,w,-dy,(UBYTE*)addr,gfx
	addi	r4,r0,0
	addi	r5,r0,0
	lhz	r9,20(r13)
	lwz	r3,50(r16)
	neg	r7,r14
	rlwinm	r9,r9,0,16,31
	mr	r6,r18	;dst=src
	bl	_WriteChunkyPixels
	b	L135
L134
;					
;						BltBitMapRastPort(map,x,y+dy,rp,0,0,w,h-dy+1,0xc0);
	addi	r12,r0,192
	addi	r8,r0,0
	subf	r7,r14,r17	;dst=b-a
	addi	r10,r7,1
	addi	r7,r0,0
	stw	r12,56(r1)
	mr	r9,r18	;dst=src
	add	r5,r5,r14
	bl	_BltBitMapRastPort
;						addr = (long)gfxport->memptr + x0 + (y0 + h) * gfxport->by
	lwz	r3,0(r13)
	lwz	r12,_x0(r2)
	add	r5,r3,r12
	lhz	r3,20(r13)
	lwz	r12,_y0(r2)
	add	r4,r12,r17
	rlwinm	r3,r3,0,16,31
	mullw	r3,r4,r3
	add	r8,r5,r3
;						WriteChunkyPixels(window->RPort,0,h-dy,w,h,(UBYTE*)addr,gf
	addi	r4,r0,0
	lhz	r9,20(r13)
	lwz	r3,50(r16)
	rlwinm	r9,r9,0,16,31
	subf	r5,r14,r17	;dst=b-a
	mr	r6,r18	;dst=src
	mr	r7,r17	;dst=src
	bl	_WriteChunkyPixels
L135
	addi	r1,r1,128
	lwz	r0,8(r1)
	mtlr	r0
	lwz	r14,-20(r1)
	lwz	r13,-24(r1)
	lwz	r18,-4(r1)
	lwz	r17,-8(r1)
	lwz	r16,-12(r1)
	lwz	r15,-16(r1)
	blr

;	void main()
	XDEF	_main
_main:
	stfd	f20,-8(r1)
	stfd	f19,-16(r1)
	stfd	f18,-24(r1)
	stfd	f17,-32(r1)
	stfd	f16,-40(r1)
	stfd	f15,-48(r1)
	stfd	f14,-56(r1)
	stw	r18,-60(r1)
	stw	r17,-64(r1)
	stw	r16,-68(r1)
	stw	r15,-72(r1)
	stw	r14,-76(r1)
	stw	r13,-80(r1)
	mflr	r0
	stw	r0,8(r1)
	stwu	r1,-1072(r1)
;		gethook.h_Entry = (ULONG (*)())getit;
	lwz	r12,@__getit(r2)
	stw	r12,968(r1)
;		drawhook.h_Entry = (ULONG (*)())drawit;
	lwz	r12,@__drawit(r2)
	stw	r12,216(r1)
;		for (i = 0;
	addi	r13,r0,0
	b	L150
L149
;		
;			lut[i] = (int) (sin(2.0*PI/256.0*(double) i)*127.0 + 127.0);
	addis	r0,r0,17200
	stw	r0,-8(r1)
	xoris	r0,r13,-32768
	stw	r0,-4(r1)
	addis	r0,r0,-32768
	lfd	f0,-8(r1)
	stw	r0,-4(r1)
	lfd	f13,-8(r1)
	fsub	f0,f0,f13
	lfd	f13,@x3F9921FBx54442D0F(r2)
	fmul	f1,f13,f0
	bl	_sin__r
	addi	r3,r2,_lut
	lfd	f13,@x405FC000x0(r2)
	fmul	f0,f1,f13
	rlwinm	r0,r13,2,0,29
	fadd	f0,f0,f13
	fctiwz	f13,f0
	add	r3,r0,r3
	stfd	f13,-8(r1)
	lwz	r4,-4(r1)
	stw	r4,0(r3)
	addi	r13,r13,1
L150
	cmpi	cr0,r13,256
	blt	cr0,L149
;		for (i = 0;
	addi	r13,r0,0
	b	L153
L152
;		
;			lut[i] |= (int) (sin(2.2*PI/256.0*(double) i + 0.4)*127.0 + 127.
	addis	r0,r0,17200
	stw	r0,-8(r1)
	xoris	r0,r13,-32768
	stw	r0,-4(r1)
	addis	r0,r0,-32768
	lfd	f0,-8(r1)
	stw	r0,-4(r1)
	lfd	f13,-8(r1)
	fsub	f0,f0,f13
	lfd	f13,@x3F9BA561x4317CB29(r2)
	fmul	f0,f13,f0
	lfd	f13,@x3FD99999x9999999A(r2)
	fadd	f1,f0,f13
	bl	_sin__r
	lfd	f13,@x405FC000x0(r2)
	fmul	f0,f1,f13
	fadd	f0,f0,f13
	fctiwz	f13,f0
	stfd	f13,-8(r1)
	lwz	r3,-4(r1)
	rlwinm	r5,r3,8,0,23
	addi	r3,r2,_lut
	rlwinm	r0,r13,2,0,29
	add	r4,r0,r3
	lwz	r3,0(r4)
	or	r3,r3,r5
	stw	r3,0(r4)
	addi	r13,r13,1
L153
	cmpi	cr0,r13,256
	blt	cr0,L152
;		for (i = 0;
	addi	r13,r0,0
	b	L156
L155
;		
;			lut[i] |= (int) (sin(1.8*PI/256.0*(double) i + 2.5)*127.0 + 127.
	addis	r0,r0,17200
	stw	r0,-8(r1)
	xoris	r0,r13,-32768
	stw	r0,-4(r1)
	addis	r0,r0,-32768
	lfd	f0,-8(r1)
	stw	r0,-4(r1)
	lfd	f13,-8(r1)
	fsub	f0,f0,f13
	lfd	f13,@x3F969E95x65708EF4(r2)
	fmul	f0,f13,f0
	lfd	f13,@x40040000x0(r2)
	fadd	f1,f0,f13
	bl	_sin__r
	lfd	f13,@x405FC000x0(r2)
	fmul	f0,f1,f13
	fadd	f0,f0,f13
	fctiwz	f13,f0
	rlwinm	r0,r13,2,0,29
	stfd	f13,-8(r1)
	lwz	r3,-4(r1)
	rlwinm	r5,r3,16,0,15
	addi	r3,r2,_lut
	add	r4,r0,r3
	lwz	r3,0(r4)
	or	r3,r3,r5
	stw	r3,0(r4)
	addi	r13,r13,1
L156
	cmpi	cr0,r13,256
	blt	cr0,L155
;		lut[0] = 0x000000;
	addi	r12,r0,0
	addi	r3,r2,_lut
	stw	r12,0(r3)
;		SetTaskPri(FindTask(NULL),0);
	addi	r3,r0,0
	bl	_FindTask
	addi	r4,r0,0
	bl	_SetTaskPri
;		PowerPCBase = OpenLibrary("powerpc.library",7);
	addi	r3,r2,L136
	addi	r4,r0,7
	bl	_OpenLibrary
	stw	r3,_PowerPCBase(r2)
;		CyberGfxBase = OpenLibrary("cybergraphics.library",40);
	addi	r3,r2,L138
	addi	r4,r0,40
	bl	_OpenLibrary
	stw	r3,_CyberGfxBase(r2)
;		if (CyberGfxBase)
	lwz	r12,_CyberGfxBase(r2)
	cmpli	cr0,r12,0
	beq	cr0,L237
;		
;			screen = LockPubScreen(NULL);
	addi	r3,r0,0
	bl	_LockPubScreen
	mr.	r18,r3	;dst=src
;					if (screen)
	beq	cr0,L236
;					
;						window = OpenWindowTags(NULL,
	lha	r3,14(r18)
	cmpi	cr0,r3,256
	ble	cr0,L161
	addi	r9,r0,256
	b	L162
L161
	lha	r9,14(r18)
	extsh	r9,r9
L162
	lha	r3,12(r18)
	cmpi	cr0,r3,320
	ble	cr0,L164
	addi	r7,r0,320
	b	L165
L164
	lha	r7,12(r18)
	extsh	r7,r7
L165
	addi	r12,r0,10
	stw	r12,56(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+115
	stw	r12,60(r1)
	addi	r12,r0,10
	stw	r12,64(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+116
	stw	r12,68(r1)
	addi	r12,r0,-1
	stw	r12,72(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+117
	stw	r12,76(r1)
	addi	r12,r0,-1
	stw	r12,80(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+144
	stw	r12,84(r1)
	addi	r12,r0,1
	stw	r12,88(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+136
	stw	r12,92(r1)
	addi	r12,r0,0
	stw	r12,96(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+106
	stw	r12,100(r1)
	addis	r12,r0,96
	ori	r12,r12,+1563
	stw	r12,104(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+134
	stw	r12,108(r1)
	addi	r12,r0,1
	stw	r12,112(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+138
	stw	r12,116(r1)
	addi	r12,r0,1
	stw	r12,120(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+128
	stw	r12,124(r1)
	addi	r12,r0,1
	stw	r12,128(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+112
	stw	r12,132(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+145
	stw	r18,136(r1)
	stw	r12,140(r1)
	addi	r12,r0,1
	stw	r12,144(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+130
	stw	r12,148(r1)
	addi	r12,r0,1
	stw	r12,152(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+132
	stw	r12,156(r1)
	addi	r12,r0,1
	stw	r12,160(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+129
	stw	r12,164(r1)
	addi	r12,r0,1
	stw	r12,168(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+143
	stw	r12,172(r1)
	addi	r12,r0,1
	stw	r12,176(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+131
	stw	r12,180(r1)
	addi	r12,r0,1
	stw	r12,184(r1)
	addis	r12,r0,-32768
	ori	r12,r12,+137
	stw	r12,188(r1)
	addi	r12,r0,1
	stw	r12,192(r1)
	addi	r12,r0,0
	addis	r4,r0,-32768
	addi	r5,r2,L140
	addi	r3,r0,0
	addis	r6,r0,-32768
	addis	r8,r0,-32768
	ori	r4,r4,+110
	ori	r6,r6,+102
	addis	r10,r0,-32768
	ori	r8,r8,+103
	ori	r10,r10,+114
	stw	r12,196(r1)
	stw	r5,32(r1)
	stw	r6,36(r1)
	stw	r7,40(r1)
	stw	r8,44(r1)
	stw	r9,48(r1)
	stw	r10,52(r1)
	bl	_OpenWindowTags
	mr.	r14,r3	;dst=src
;						if (window)
	beq	cr0,L235
;						
;							view.x0 = -2.0;
	addis	r12,r0,-16384
	stw	r12,_view(r2)
	addi	r12,r0,0
	stw	r12,_view+4(r2)
;							view.x1 = 2.0;
	lfd	f13,@x40000000x0(r2)
	stfd	f13,_view+16(r2)
;							view.y0 = 2.0;
	stfd	f13,_view+8(r2)
;							view.y1 = -2.0;
	lfd	f13,@xC0000000x0(r2)
	stfd	f13,_view+24(r2)
;							width = /* 3 **/ (window->Width - window->BorderLeft - w
	lha	r3,8(r14)
	extsh	r4,r3
	lbz	r3,54(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r4,r3,r4	;dst=b-a
	lbz	r3,56(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r12,r3,r4	;dst=b-a
	stw	r12,_width(r2)
;							height = /*3 **/ (window->Height - window->BorderBottom 
	lha	r3,10(r14)
	extsh	r4,r3
	lbz	r3,57(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r4,r3,r4	;dst=b-a
	lbz	r3,55(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r12,r3,r4	;dst=b-a
	stw	r12,_height(r2)
;							x0 = 0;
	addi	r12,r0,0
	stw	r12,_x0(r2)
;							y0 = 0;
	stw	r12,_y0(r2)
;							gfxbuf.memptr = NULL;
	stw	r12,_gfxbuf(r2)
;							gfxbuf.offsetx = 0;
	stw	r12,_gfxbuf+4(r2)
;							gfxbuf.offsety = 0;
	stw	r12,_gfxbuf+8(r2)
;							gfxbuf.xsize = width;
	lwz	r12,_width(r2)
	stw	r12,_gfxbuf+12(r2)
;							gfxbuf.ysize = height;
	lwz	r12,_height(r2)
	stw	r12,_gfxbuf+16(r2)
;							gfxbuf.bytesperrow = gfxbuf.xsize;
	addi	r3,r2,_gfxbuf
	lwz	r3,12(r3)
	rlwinm	r3,r3,0,16,31
	sth	r3,_gfxbuf+20(r2)
;							gfxbuf.bytesperpix = 1;
	addi	r12,r0,1
	sth	r12,_gfxbuf+22(r2)
;							gfxbuf.colormodel =  PIXFMT_LUT8;
	addi	r12,r0,0
	sth	r12,_gfxbuf+24(r2)
;							if (gfxbuf.colormodel == PIXFMT_LUT8)
	addi	r3,r2,_gfxbuf
	lhz	r3,24(r3)
	cmpli	cr0,r3,0
	bne	cr0,L171
;							
;								for (i = 0;
	addi	r13,r0,0
	b	L169
L168
;								
;									red   = lut[i] >> 16 & 0xff;
	rlwinm	r0,r13,2,0,29
	addi	r3,r2,_lut
	add	r3,r0,r3
	lwz	r3,0(r3)
	rlwinm	r3,r3,16,16,31
	andi.	r17,r3,255
;									green = lut[i] >> 8 & 0xff;
	rlwinm	r0,r13,2,0,29
	addi	r3,r2,_lut
	add	r3,r0,r3
	lwz	r3,0(r3)
	rlwinm	r3,r3,24,8,31
	andi.	r16,r3,255
;									blue  = lut[i] & 0xff;
	rlwinm	r0,r13,2,0,29
	addi	r3,r2,_lut
	add	r3,r0,r3
	lwz	r3,0(r3)
	andi.	r15,r3,255
;									sprintf(cbuf,"%s, obtaining shared pens...",_WINDOW_
	addi	r4,r2,L142
	addi	r5,r2,L140
	stw	r5,32(r1)
	addi	r3,r1,720
	bl	_sprintf
;									SetWindowTitles(window,cbuf,(UBYTE*)-1);
	mr	r3,r14	;dst=src
	addi	r4,r1,720
	addi	r5,r0,-1
	bl	_SetWindowTitles
;	                        shared_pens[i] = Obt
	rlwinm	r3,r15,8,0,23
	or	r4,r15,r3
	rlwinm	r3,r15,16,0,15
	or	r4,r4,r3
	rlwinm	r3,r15,24,0,7
	or	r6,r4,r3
	rlwinm	r3,r16,8,0,23
	or	r4,r16,r3
	rlwinm	r3,r16,16,0,15
	or	r4,r4,r3
	rlwinm	r3,r16,24,0,7
	or	r5,r4,r3
	rlwinm	r3,r17,8,0,23
	or	r4,r17,r3
	rlwinm	r3,r17,16,0,15
	or	r4,r4,r3
	rlwinm	r3,r17,24,0,7
	or	r4,r4,r3
	lwz	r3,46(r14)
	addi	r3,r3,44
	lwz	r3,4(r3)
	addis	r7,r0,-31744
	addi	r8,r0,-1
	stw	r8,44(r1)
	addi	r9,r0,0
	stw	r9,48(r1)
	bl	_ObtainBestPen
	rlwinm	r3,r3,0,24,31
	rlwinm	r3,r3,0,24,31
	addi	r4,r2,_shared_pens
	add	r4,r4,r13
	stb	r3,0(r4)
	addi	r13,r13,1
L169
	cmpi	cr0,r13,256
	blt	cr0,L168
	b	L172
L171
;							
;								gfxbuf.bytesperrow = gfxbuf.xsize * 4;
	addi	r3,r2,_gfxbuf
	lwz	r3,12(r3)
	rlwinm	r3,r3,2,0,29
	rlwinm	r3,r3,0,16,31
	sth	r3,_gfxbuf+20(r2)
;								gfxbuf.bytesperpix = 4;
	addi	r12,r0,4
	sth	r12,_gfxbuf+22(r2)
;								gfxbuf.colormodel = PIXFMT_ARGB32;
	addi	r12,r0,11
	sth	r12,_gfxbuf+24(r2)
L172
;							gfxport = &gfxbuf;
	addi	r12,r2,_gfxbuf
	stw	r12,_gfxport(r2)
;							gfxport->memptr = (UBYTE *) AllocVec(gfxport->ysize*gfxp
	lwz	r3,_gfxport(r2)
	lwz	r4,16(r3)
	lwz	r3,_gfxport(r2)
	lhz	r3,20(r3)
	rlwinm	r3,r3,0,16,31
	mullw	r3,r4,r3
	addi	r4,r0,0
	bl	_AllocVec
	lwz	r12,_gfxport(r2)
	stw	r3,0(r12)
;							if (gfxport->memptr)
	lwz	r3,_gfxport(r2)
	lwz	r3,0(r3)
	cmpli	cr0,r3,0
	beq	cr0,L231
;							
;								BOOL redraw = TRUE;
	addi	r15,r0,1
;								BOOL quit = FALSE;
	addi	r16,r0,0
;								BOOL contdraw = FALSE;
;								double tim = 0
	lfd	f20,@x0x0(r2)
;								double tim = 0,tim_prev = 0;
;								while (!quit)
	b	L229
L174
;								
;									if (redraw)
	extsh	r15,r15
	cmpi	cr0,r15,0
	beq	cr0,L183
;									
;										struct RastPort *rp = window->RPort;
	lwz	r13,50(r14)
;										ULONG h = rp->TxHeight;
;										SetDrMd(rp,JAM2);
	mr	r3,r13	;dst=src
	addi	r4,r0,1
	bl	_SetDrMd
;										SetAPen(rp,0);
	mr	r3,r13	;dst=src
	addi	r4,r0,0
	bl	_SetAPen
;										SetBPen(rp,1);
	mr	r3,r13	;dst=src
	addi	r4,r0,1
	bl	_SetBPen
;										sprintf(title,"%s, Depth %ld, From (%g,%g) To (%g,
	addi	r3,r2,_view
	lfd	f4,24(r3)
	addi	r3,r2,_view
	lfd	f3,16(r3)
	addi	r3,r2,_view
	lfd	f2,8(r3)
	addi	r3,r2,_view
	lfd	f1,0(r3)
	addi	r3,r1,414
	addi	r4,r2,L144
	addi	r5,r2,L140
	stw	r5,32(r1)
	lwz	r6,_N(r2)
	stw	r6,36(r1)
	stfd	f1,40(r1)
	stfd	f2,48(r1)
	stfd	f3,56(r1)
	stfd	f4,64(r1)
	bl	_sprintf
;										SetWindowTitles(window,title,(UBYTE*)-1);
	mr	r3,r14	;dst=src
	addi	r4,r1,414
	addi	r5,r0,-1
	bl	_SetWindowTitles
;										tim1 = clock();
	bl	_clock
	mr	r17,r3	;dst=src
;										DrawMandelbrot(&view,gfxport,N);
	lwz	r4,_gfxport(r2)
	lwz	r5,_N(r2)
	addi	r3,r2,_view
	bl	_DrawMandelbrot
;										tim2 = clock();
	bl	_clock
	mr	r15,r3	;dst=src
;										if (gfxbuf.colormodel == PIXFMT_LUT8)
	addi	r3,r2,_gfxbuf
	lhz	r3,24(r3)
	cmpli	cr0,r3,0
	bne	cr0,L181
;										
;											long w = window->Width - window->BorderLeft - wi
	lha	r3,8(r14)
	extsh	r4,r3
	lbz	r3,54(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r4,r3,r4	;dst=b-a
	lbz	r3,56(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r3,r3,r4	;dst=b-a
	addi	r6,r3,-1
;											long h = window->Height - window->BorderBottom -
	lha	r3,10(r14)
	extsh	r4,r3
	lbz	r3,57(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r4,r3,r4	;dst=b-a
	lbz	r3,55(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r3,r3,r4	;dst=b-a
	addi	r7,r3,-1
;											if (w > gfxbuf.xsize) 
	addi	r3,r2,_gfxbuf
	lwz	r3,12(r3)
	cmpl	cr0,r6,r3
	ble	cr0,L178
;											if (w > gfxbuf.xsize) w = 
	addi	r3,r2,_gfxbuf
	lwz	r6,12(r3)
L178
;											if (h > gfxbuf.ysize) 
	addi	r3,r2,_gfxbuf
	lwz	r3,16(r3)
	cmpl	cr0,r7,r3
	ble	cr0,L180
;											if (h > gfxbuf.ysize) h = 
	addi	r3,r2,_gfxbuf
	lwz	r7,16(r3)
L180
;											addr = (long)gfxport->memptr + x0 + y0 * gfxport
	lwz	r12,_x0(r2)
	lwz	r3,_gfxport(r2)
	lwz	r3,0(r3)
	add	r4,r3,r12
	lwz	r3,_gfxport(r2)
	lhz	r3,20(r3)
	rlwinm	r3,r3,0,16,31
	lwz	r12,_y0(r2)
	mullw	r3,r12,r3
	add	r8,r4,r3
;											WriteChunkyPixels(rp,0,0,w,h,(UBYTE*)addr,gfxpor
	lwz	r3,_gfxport(r2)
	lhz	r9,20(r3)
	rlwinm	r9,r9,0,16,31
	mr	r3,r13	;dst=src
	addi	r5,r0,0
	addi	r4,r0,0
	bl	_WriteChunkyPixels
	b	L182
L181
;										
;											WritePixelArray(gfxport->memptr,0,0,gfxport->byt
	lwz	r3,_gfxport(r2)
	lwz	r3,16(r3)
	rlwinm	r4,r3,0,16,31
	rlwinm	r4,r4,0,16,31
	lwz	r3,_gfxport(r2)
	lwz	r10,12(r3)
	lwz	r3,_gfxport(r2)
	lhz	r6,20(r3)
	mr	r7,r13	;dst=src
	lwz	r3,_gfxport(r2)
	lwz	r3,0(r3)
	sth	r4,56(r1)
	addi	r12,r0,2
	stb	r12,58(r1)
	addi	r4,r0,0
	addi	r5,r0,0
	addi	r8,r0,0
	addi	r9,r0,0
	bl	_WritePixelArray
L182
;										tim_prev = tim;
	fmr	f14,f20
;										tim = difftime(tim2,tim1)/CLOCKS_PER_SEC;
	mr	r3,r15	;dst=src
	mr	r4,r17	;dst=src
	bl	_difftime__r
	lfd	f12,@x3F947AE1x47AE147A(r2)
	fmul	f20,f1,f12
;										sprintf(title,"%s, Depth %ld, From (%g,%g) To (%g,
	addi	r3,r2,_view
	lfd	f4,24(r3)
	addi	r3,r2,_view
	lfd	f3,16(r3)
	addi	r3,r2,_view
	lfd	f2,8(r3)
	addi	r3,r2,_view
	lfd	f1,0(r3)
	addi	r3,r1,414
	addi	r4,r2,L146
	addi	r5,r2,L140
	fmr	f5,f20
	stw	r5,32(r1)
	fmr	f6,f14
	lwz	r6,_N(r2)
	stw	r6,36(r1)
	stfd	f1,40(r1)
	stfd	f2,48(r1)
	stfd	f3,56(r1)
	stfd	f4,64(r1)
	stfd	f5,72(r1)
	stfd	f6,80(r1)
	bl	_sprintf
;										SetWindowTitles(window,title,(UBYTE*)-1);
	mr	r3,r14	;dst=src
	addi	r4,r1,414
	addi	r5,r0,-1
	bl	_SetWindowTitles
;										redraw = FALSE;
	addi	r15,r0,0
L183
;									sigs = Wait(4096|(1L << window->UserPort->mp_SigBit))
	lwz	r3,86(r14)
	lbz	r3,15(r3)
	rlwinm	r3,r3,0,24,31
	addi	r12,r0,1
	slw	r3,r12,r3
	ori	r3,r3,+4096
	bl	_Wait
;									if (sigs & 4096)
	andi.	r3,r3,4096
	beq	cr0,L185
;									
;										
	b	L230
L185
;									while (msg = (struct IntuiMessage *) GetMsg(window->
	b	L228
L186
;									
;										if ((msg->Class == IDCMP_NEWSIZE) ||
	lwz	r3,20(r13)
	cmpli	cr0,r3,2
	beq	cr0,L188
	lwz	r3,20(r13)
	cmpli	cr0,r3,1
	bne	cr0,L189
L188
;										
;											APTR mem = gfxport->memptr;
	lwz	r3,_gfxport(r2)
	lwz	r15,0(r3)
;											gfxbuf.xsize =/*3 **/ (window->Width - window->B
	lha	r3,8(r14)
	extsh	r4,r3
	lbz	r3,54(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r4,r3,r4	;dst=b-a
	lbz	r3,56(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r3,r3,r4	;dst=b-a
	stw	r3,_gfxbuf+12(r2)
;											gfxbuf.ysize =/* 3 **/ (window->Height - window-
	lha	r3,10(r14)
	extsh	r4,r3
	lbz	r3,57(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r4,r3,r4	;dst=b-a
	lbz	r3,55(r14)
	extsb	r3,r3
	extsb	r3,r3
	extsb	r3,r3
	subf	r3,r3,r4	;dst=b-a
	stw	r3,_gfxbuf+16(r2)
;											gfxbuf.bytesperrow = gfxbuf.xsize;
	addi	r3,r2,_gfxbuf
	lwz	r3,12(r3)
	rlwinm	r3,r3,0,16,31
	sth	r3,_gfxbuf+20(r2)
;											gfxport->memptr = (UBYTE *) AllocVec(gfxport->ys
	lwz	r3,_gfxport(r2)
	lwz	r4,16(r3)
	lwz	r3,_gfxport(r2)
	lhz	r3,20(r3)
	rlwinm	r3,r3,0,16,31
	mullw	r3,r4,r3
	addi	r4,r0,0
	bl	_AllocVec
	lwz	r12,_gfxport(r2)
	stw	r3,0(r12)
;											FreeVec(mem);
	mr	r3,r15	;dst=src
	bl	_FreeVec
;											redraw = TRUE;
	addi	r15,r0,1
L189
;										w = (double) gfxport->xsize;
	lwz	r3,_gfxport(r2)
	lwz	r3,12(r3)
	addis	r0,r0,17200
	stw	r0,-8(r1)
	xoris	r0,r3,-32768
	stw	r0,-4(r1)
	lfd	f17,-8(r1)
	addis	r0,r0,-32768
	stw	r0,-4(r1)
	lfd	f13,-8(r1)
	fsub	f17,f17,f13
;										h = (double) gfxport->ysize;
	lwz	r3,_gfxport(r2)
	lwz	r3,16(r3)
	addis	r0,r0,17200
	stw	r0,-8(r1)
	xoris	r0,r3,-32768
	stw	r0,-4(r1)
	lfd	f16,-8(r1)
	addis	r0,r0,-32768
	stw	r0,-4(r1)
	lfd	f13,-8(r1)
	fsub	f16,f16,f13
;										dx = (view.x1 - view.x0) / w;
	addi	r3,r2,_view
	lfd	f1,16(r3)
	addi	r3,r2,_view
	lfd	f0,0(r3)
	fsub	f0,f1,f0
	fdiv	f15,f0,f17
;										dy = (view.y1 - view.y0) / h;
	addi	r3,r2,_view
	lfd	f1,24(r3)
	addi	r3,r2,_view
	lfd	f0,8(r3)
	fsub	f0,f1,f0
	fdiv	f14,f0,f16
;										mx = (double) msg->MouseX;
	lha	r3,32(r13)
	extsh	r3,r3
	addis	r0,r0,17200
	stw	r0,-8(r1)
	xoris	r0,r3,-32768
	stw	r0,-4(r1)
	lfd	f19,-8(r1)
	addis	r0,r0,-32768
	stw	r0,-4(r1)
	lfd	f13,-8(r1)
	fsub	f19,f19,f13
;										my = (double) msg->MouseY;
	lha	r3,34(r13)
	extsh	r3,r3
	addis	r0,r0,17200
	stw	r0,-8(r1)
	xoris	r0,r3,-32768
	stw	r0,-4(r1)
	lfd	f18,-8(r1)
	addis	r0,r0,-32768
	stw	r0,-4(r1)
	lfd	f13,-8(r1)
	fsub	f18,f18,f13
;										if (msg->Class == IDCMP_RAWKEY)
	lwz	r3,20(r13)
	cmpli	cr0,r3,1024
	bne	cr0,L207
;										
;											BOOL shift_on = FALSE;
	addi	r3,r0,0
;											long delta = 20;
	addi	r6,r0,20
;											switch (msg->Code)
	lhz	r4,24(r13)
	cmpli	cr0,r4,76
	beq	cr0,L191
	cmpli	cr0,r4,77
	beq	cr0,L195
	cmpli	cr0,r4,78
	beq	cr0,L199
	cmpli	cr0,r4,79
	beq	cr0,L203
	b	L207
L191
;													if (shift_on)
	extsh	r3,r3
	cmpi	cr0,r3,0
	beq	cr0,L193
;													
;														ScrollView(window,gfxport,0,-delta);
	neg	r6,r6
	mr	r3,r14	;dst=src
	lwz	r4,_gfxport(r2)
	addi	r5,r0,0
	bl	_ScrollView
	b	L194
L193
;													
;														view.y0 -= dy * h / 4;
	fmul	f0,f14,f16
	lfd	f12,@x3FD00000x0(r2)
	fmul	f1,f0,f12
	addi	r3,r2,_view
	addi	r3,r3,8
	lfd	f0,0(r3)
	fsub	f0,f0,f1
	stfd	f0,_view+8(r2)
;														view.y1 = view.y0 + h * dy;
	fmul	f0,f16,f14
	addi	r3,r2,_view
	lfd	f1,8(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+24(r2)
;														redraw = TRUE;
	addi	r15,r0,1
L194
;													
	b	L207
L195
;													if (shift_on)
	extsh	r3,r3
	cmpi	cr0,r3,0
	beq	cr0,L197
;													
;														ScrollView(window,gfxport,0, delta);
	mr	r3,r14	;dst=src
	lwz	r4,_gfxport(r2)
	addi	r5,r0,0
	bl	_ScrollView
	b	L198
L197
;													
;														view.y0 += dy * h / 4;
	fmul	f0,f14,f16
	lfd	f12,@x3FD00000x0(r2)
	fmul	f1,f0,f12
	addi	r3,r2,_view
	addi	r3,r3,8
	lfd	f0,0(r3)
	fadd	f0,f0,f1
	stfd	f0,_view+8(r2)
;														view.y1 = view.y0 + h * dy;
	fmul	f0,f16,f14
	addi	r3,r2,_view
	lfd	f1,8(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+24(r2)
;														redraw = TRUE;
	addi	r15,r0,1
L198
;													
	b	L207
L199
;													if (shift_on)
	extsh	r3,r3
	cmpi	cr0,r3,0
	beq	cr0,L201
;													
;														ScrollView(window,gfxport,delta,0);
	mr	r5,r6	;dst=src
	mr	r3,r14	;dst=src
	lwz	r4,_gfxport(r2)
	addi	r6,r0,0
	bl	_ScrollView
	b	L202
L201
;													
;														view.x0 += dx * w / 4;
	fmul	f0,f15,f17
	lfd	f13,@x40100000x0(r2)
	lfd	f12,_view(r2)
	fdiv	f0,f0,f13
	fadd	f13,f12,f0
	stfd	f13,_view(r2)
;														view.x1 = view.x0 + w * dx;
	fmul	f0,f17,f15
	addi	r3,r2,_view
	lfd	f1,0(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+16(r2)
;														redraw = TRUE;
	addi	r15,r0,1
L202
;													
	b	L207
L203
;													if (shift_on)
	extsh	r3,r3
	cmpi	cr0,r3,0
	beq	cr0,L205
;													
;														ScrollView(window,gfxport,-delta,0);
	neg	r5,r6
	mr	r3,r14	;dst=src
	lwz	r4,_gfxport(r2)
	addi	r6,r0,0
	bl	_ScrollView
	b	L206
L205
;													
;														view.x0 -= dx * w / 4;
	fmul	f0,f15,f17
	lfd	f13,@x40100000x0(r2)
	lfd	f12,_view(r2)
	fdiv	f0,f0,f13
	fsub	f13,f12,f0
	stfd	f13,_view(r2)
;														view.x1 = view.x0 + w * dx;
	fmul	f0,f17,f15
	addi	r3,r2,_view
	lfd	f1,0(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+16(r2)
;														redraw = TRUE;
	addi	r15,r0,1
L206
;													
L207
;										if (msg->Class == IDCMP_VANILLAKEY)
	lwz	r3,20(r13)
	addis	r12,r0,32
	cmpl	cr0,r3,r12
	bne	cr0,L225
;										
;											if (msg->Code >= '1' && msg->Code <= '9')
	lhz	r3,24(r13)
	cmpli	cr0,r3,49
	blt	cr0,L214
	lhz	r3,24(r13)
	cmpli	cr0,r3,57
	bgt	cr0,L214
;											
;												if (msg->Qualifier & IEQUALIFIER_CONTROL)
	lhz	r3,26(r13)
	rlwinm	r3,r3,0,16,31
	andi.	r3,r3,8
	beq	cr0,L212
;													views[msg->Code - '1'] = view
	addi	r3,r2,_views
	addi	r4,r3,-1568
	lhz	r3,24(r13)
	rlwinm	r3,r3,0,16,31
	rlwinm	r0,r3,5,0,26
	add	r4,r0,r4
	addi	r3,r2,_view
	lwz	r0,0(r3)
	stw	r0,0(r4)
	lwz	r0,4(r3)
	stw	r0,4(r4)
	lwz	r0,8(r3)
	stw	r0,8(r4)
	lwz	r0,12(r3)
	stw	r0,12(r4)
	lwz	r0,16(r3)
	stw	r0,16(r4)
	lwz	r0,20(r3)
	stw	r0,20(r4)
	lwz	r0,24(r3)
	stw	r0,24(r4)
	lwz	r0,28(r3)
	stw	r0,28(r4)
	b	L213
L212
;													view = views[msg->Code - '1'];
	addi	r5,r2,_view
	addi	r3,r2,_views
	addi	r4,r3,-1568
	lhz	r3,24(r13)
	rlwinm	r3,r3,0,16,31
	rlwinm	r0,r3,5,0,26
	add	r3,r0,r4
	lwz	r0,0(r3)
	stw	r0,0(r5)
	lwz	r0,4(r3)
	stw	r0,4(r5)
	lwz	r0,8(r3)
	stw	r0,8(r5)
	lwz	r0,12(r3)
	stw	r0,12(r5)
	lwz	r0,16(r3)
	stw	r0,16(r5)
	lwz	r0,20(r3)
	stw	r0,20(r5)
	lwz	r0,24(r3)
	stw	r0,24(r5)
	lwz	r0,28(r3)
	stw	r0,28(r5)
L213
;												redraw = TRUE;
	addi	r15,r0,1
	b	L225
L214
;											
;												switch (msg->Code)
	lhz	r3,24(r13)
	cmpli	cr0,r3,105
	bgt	cr0,L240
	beq	cr0,L223
	cmpli	cr0,r3,43
	beq	cr0,L215
	cmpli	cr0,r3,45
	beq	cr0,L218
	b	L225
L240
	cmpli	cr0,r3,111
	beq	cr0,L224
	cmpli	cr0,r3,113
	beq	cr0,L221
	cmpli	cr0,r3,115
	beq	cr0,L222
	b	L225
L215
;														if (N < 1000)
	lwz	r12,_N(r2)
	cmpi	cr0,r12,1000
	bge	cr0,L217
;														
;															N += 20;
	lwz	r11,_N(r2)
	addi	r10,r0,20
	add	r12,r11,r10
	stw	r12,_N(r2)
;															redraw = TRUE;
	addi	r15,r0,1
L217
;														
	b	L225
L218
;														if (N >= 40)
	lwz	r12,_N(r2)
	cmpi	cr0,r12,40
	blt	cr0,L220
;														
;															N -= 20;
	lwz	r11,_N(r2)
	addi	r10,r0,20
	subf	r12,r10,r11	;dst=b-a
	stw	r12,_N(r2)
;															redraw = TRUE;
	addi	r15,r0,1
L220
;														
	b	L225
L221
;														quit = TRUE;
	addi	r16,r0,1
;														
	b	L225
L222
;														contdraw = FALSE;
;														
	b	L225
L223
;														view.x0 = view.x0 + 0.05 * mx * dx;
	addi	r3,r2,_view
	lfd	f1,0(r3)
	lfd	f13,@x3FA99999x99999999(r2)
	fmul	f0,f13,f19
	fmul	f0,f0,f15
	fadd	f13,f1,f0
	stfd	f13,_view(r2)
;														view.x1 = view.x0 + 0.95 * dx * w;
	lfd	f13,@x3FEE6666x66666666(r2)
	fmul	f0,f13,f15
	fmul	f0,f0,f17
	addi	r3,r2,_view
	lfd	f1,0(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+16(r2)
;														view.y0 = view.y0 + 0.05 * my * dy;
	lfd	f13,@x3FA99999x99999999(r2)
	fmul	f0,f13,f18
	fmul	f0,f0,f14
	addi	r3,r2,_view
	lfd	f1,8(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+8(r2)
;														view.y1 = view.y0 + 0.95 * dy * h;
	lfd	f13,@x3FEE6666x66666666(r2)
	fmul	f0,f13,f14
	fmul	f0,f0,f16
	addi	r3,r2,_view
	lfd	f1,8(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+24(r2)
;														redraw = TRUE;
	addi	r15,r0,1
;														contdraw = TRUE;
;														
	b	L225
L224
;														view.x0 = view.x0 - 0.05 * mx * dx;
	addi	r3,r2,_view
	lfd	f1,0(r3)
	lfd	f13,@x3FA99999x99999999(r2)
	fmul	f0,f13,f19
	fmul	f0,f0,f15
	fsub	f13,f1,f0
	stfd	f13,_view(r2)
;														view.x1 = view.x0 + 1.05 * dx * w;
	lfd	f13,@x3FF0CCCCxCCCCCCCC(r2)
	fmul	f0,f13,f15
	fmul	f0,f0,f17
	addi	r3,r2,_view
	lfd	f1,0(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+16(r2)
;														view.y0 = view.y0 - 0.05 * my * dy;
	lfd	f13,@x3FA99999x99999999(r2)
	fmul	f0,f13,f18
	fmul	f0,f0,f14
	addi	r3,r2,_view
	lfd	f1,8(r3)
	fsub	f0,f1,f0
	stfd	f0,_view+8(r2)
;														view.y1 = view.y0 + 1.05 * dy * h;
	lfd	f13,@x3FF0CCCCxCCCCCCCC(r2)
	fmul	f0,f13,f14
	fmul	f0,f0,f16
	addi	r3,r2,_view
	lfd	f1,8(r3)
	fadd	f0,f1,f0
	stfd	f0,_view+24(r2)
;														redraw = TRUE;
	addi	r15,r0,1
;														
L225
;										if (msg->Class == IDCMP_CLOSEWINDOW)
	lwz	r3,20(r13)
	cmpli	cr0,r3,512
	bne	cr0,L227
;										
;											quit = TRUE;
	addi	r16,r0,1
L227
;										ReplyMsg((struct Message *) msg);
	mr	r3,r13	;dst=src
	bl	_ReplyMsg
L228
	lwz	r3,86(r14)
	bl	_GetMsg
	mr.	r13,r3	;dst=src
	bne	cr0,L186
L229
	extsh	r16,r16
	cmpi	cr0,r16,0
	beq	cr0,L174
L230
;								FreeVec(gfxport->memptr);
	lwz	r3,_gfxport(r2)
	lwz	r3,0(r3)
	bl	_FreeVec
L231
;	                  for (col = 0;
	addi	r13,r0,0
	b	L233
L232
;		                  ReleasePen(window->WScreen->Vi
	addi	r3,r2,_shared_pens
	add	r3,r3,r13
	lbz	r4,0(r3)
	lwz	r3,46(r14)
	rlwinm	r4,r4,0,24,31
	addi	r3,r3,44
	lwz	r3,4(r3)
	bl	_ReleasePen
	addi	r13,r13,1
L233
	cmpi	cr0,r13,256
	blt	cr0,L232
;							CloseWindow(window);
	mr	r3,r14	;dst=src
	bl	_CloseWindow
L235
;						UnlockPubScreen(NULL,screen);
	mr	r4,r18	;dst=src
	addi	r3,r0,0
	bl	_UnlockPubScreen
L236
;			CloseLibrary(CyberGfxBase);
	lwz	r3,_CyberGfxBase(r2)
	bl	_CloseLibrary
L237
;		if (PowerPCBase)	
	lwz	r12,_PowerPCBase(r2)
	cmpli	cr0,r12,0
	beq	cr0,L239
;		if (PowerPCBase)	CloseLibrary(PowerPCBase);
	lwz	r3,_PowerPCBase(r2)
	bl	_CloseLibrary
L239
	addi	r1,r1,1072
	lwz	r0,8(r1)
	mtlr	r0
	lfd	f20,-8(r1)
	lfd	f19,-16(r1)
	lfd	f18,-24(r1)
	lfd	f17,-32(r1)
	lfd	f16,-40(r1)
	lfd	f15,-48(r1)
	lfd	f14,-56(r1)
	lwz	r18,-60(r1)
	lwz	r17,-64(r1)
	lwz	r16,-68(r1)
	lwz	r15,-72(r1)
	lwz	r14,-76(r1)
	lwz	r13,-80(r1)
	blr

;	void wbmain(struct WBStartup * argmsg)
	XDEF	_wbmain
_wbmain:
	mflr	r0
	stw	r0,8(r1)
	stwu	r1,-32(r1)
;		main();
	bl	_main
	addi	r1,r1,32
	lwz	r0,8(r1)
	mtlr	r0
	blr

	SECTION	":1",Data
	XDEF	_N
_N:
	dc.l	$14
	XDEF	_x0
_x0:
	dc.l	0
	XDEF	_y0
_y0:
	dc.l	0
_foo:
	dc.l	L85
	XDEF	_PowerPCBase
_PowerPCBase:
	dc.l	0
	XDEF	_CyberGfxBase
_CyberGfxBase:
	dc.l	0

L144:
	dc.b	"%s, Depth %ld, From (%g,%g) To (%g,%g), calculating...",0
L146:
	dc.b	"%s, Depth %ld, From (%g,%g) To (%g,%g), ready: %g sec. (was: %g)"
	dc.b	0
L142:
	dc.b	"%s, obtaining shared pens...",0
L98:
	dc.b	", Depth: %ld",0
L93:
	dc.b	"DrawIt()",0
L100:
	dc.b	"From: (%g,%g)",0
L88:
	dc.b	"GetIt()",0
L140:
	dc.b	"Mandeldemo, PPC",0
L85:
	dc.b	"PRE CALL",0
L102:
	dc.b	"To:   (%g,%g)",0
L138:
	dc.b	"cybergraphics.library",0
L136:
	dc.b	"powerpc.library",0

	SECTION	":2",Bss
	XDEF	_view
_view:
	ds.b	32
	XDEF	_gfxport
_gfxport:
	ds.l	1
	CNOP	0,8
_gfxbuf:
	ds.b	26
	CNOP	0,4
_lut:
	ds.b	1024
	CNOP	0,8
_views:
	ds.b	320
	XDEF	_width
_width:
	ds.l	1
	XDEF	_height
_height:
	ds.l	1
	XDEF	_shared_pens
_shared_pens:
	ds.b	256

	SECTION	"@__wbmain:1",Data
	XDEF	@__wbmain
@__wbmain:
	dc.l	_wbmain

	SECTION	"@x3FF0CCCCxCCCCCCCC:1",Data
	CNOP	0,8
	XDEF	@x3FF0CCCCxCCCCCCCC
@x3FF0CCCCxCCCCCCCC:
	CNOP	0,8
	dc.l	$3ff0cccc,-$33333334

	SECTION	"@x3FEE6666x66666666:1",Data
	CNOP	0,8
	XDEF	@x3FEE6666x66666666
@x3FEE6666x66666666:
	CNOP	0,8
	dc.l	$3fee6666,$66666666

	SECTION	"@x3FA99999x99999999:1",Data
	CNOP	0,8
	XDEF	@x3FA99999x99999999
@x3FA99999x99999999:
	CNOP	0,8
	dc.l	$3fa99999,-$66666667

	SECTION	"@x40100000x0:1",Data
	CNOP	0,8
	XDEF	@x40100000x0
@x40100000x0:
	CNOP	0,8
	dc.l	$40100000,0

	SECTION	"@x3FD00000x0:1",Data
	CNOP	0,8
	XDEF	@x3FD00000x0
@x3FD00000x0:
	CNOP	0,8
	dc.l	$3fd00000,0

	SECTION	"@x3F947AE1x47AE147A:1",Data
	CNOP	0,8
	XDEF	@x3F947AE1x47AE147A
@x3F947AE1x47AE147A:
	CNOP	0,8
	dc.l	$3f947ae1,$47ae147a

	SECTION	"@x0x0:1",Data
	CNOP	0,8
	XDEF	@x0x0
@x0x0:
	CNOP	0,8
	dc.l	0,0

	SECTION	"@xC0000000x0:1",Data
	CNOP	0,8
	XDEF	@xC0000000x0
@xC0000000x0:
	CNOP	0,8
	dc.l	-$40000000,0

	SECTION	"@x40000000x0:1",Data
	CNOP	0,8
	XDEF	@x40000000x0
@x40000000x0:
	CNOP	0,8
	dc.l	$40000000,0

	SECTION	"@x40040000x0:1",Data
	CNOP	0,8
	XDEF	@x40040000x0
@x40040000x0:
	CNOP	0,8
	dc.l	$40040000,0

	SECTION	"@x3F969E95x65708EF4:1",Data
	CNOP	0,8
	XDEF	@x3F969E95x65708EF4
@x3F969E95x65708EF4:
	CNOP	0,8
	dc.l	$3f969e95,$65708ef4

	SECTION	"@x3FD99999x9999999A:1",Data
	CNOP	0,8
	XDEF	@x3FD99999x9999999A
@x3FD99999x9999999A:
	CNOP	0,8
	dc.l	$3fd99999,-$66666666

	SECTION	"@x3F9BA561x4317CB29:1",Data
	CNOP	0,8
	XDEF	@x3F9BA561x4317CB29
@x3F9BA561x4317CB29:
	CNOP	0,8
	dc.l	$3f9ba561,$4317cb29

	SECTION	"@x405FC000x0:1",Data
	CNOP	0,8
	XDEF	@x405FC000x0
@x405FC000x0:
	CNOP	0,8
	dc.l	$405fc000,0

	SECTION	"@x3F9921FBx54442D0F:1",Data
	CNOP	0,8
	XDEF	@x3F9921FBx54442D0F
@x3F9921FBx54442D0F:
	CNOP	0,8
	dc.l	$3f9921fb,$54442d0f

	SECTION	"@__main:1",Data
	XDEF	@__main
@__main:
	dc.l	_main

	SECTION	"@__ScrollView:1",Data
	XDEF	@__ScrollView
@__ScrollView:
	dc.l	_ScrollView

	SECTION	"@__DrawMandelInfo:1",Data
@__DrawMandelInfo:
	dc.l	_DrawMandelInfo

	SECTION	"@__TextOut:1",Data
	XDEF	@__TextOut
@__TextOut:
	dc.l	_TextOut

	SECTION	"@__TextOutXY:1",Data
	XDEF	@__TextOutXY
@__TextOutXY:
	dc.l	_TextOutXY

	SECTION	"@__drawit:1",Data
@__drawit:
	dc.l	_drawit

	SECTION	"@__getit:1",Data
@__getit:
	dc.l	_getit

	END
