*******************************************************************************
* RNC Copy Lock reader (in OS Framework)       Copyright İ 1995 Beldin/Hellfire
* ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
* $Release	: 1.0 $
* $Revision	: 0.00 $
* $Date		: 10-03-96 $
*
* $Author(s)	: Written by Beldin (In MC680x0 Assembly under Asm-One)
* $Note(s)	: Position Independacy off a4 - (WARNING: DON`T TRASH A4!)
*		: SysBase Ptr is cached so that if running in fastmem access
*		: to SysBase ptr is faster.
*
* $Purpose	: Read in the original serial number from RNC copy lock
*		: in an OS Framework.
*******************************************************************************
*-------------- Definition Includes...

		incdir	include:
		include	os3_gst.i
		
*-------------- Definition of Main Variables (Public) Block...

		STRUCTURE VarsBlock,0

		APTR	_SysBase	/* SysBase base */
		APTR	_DOSBase	/* DOS lib base */
		APTR	_DOSOutput	/* DOS output base */

		APTR	_ArgsPtr	/* argument pointer */
		APTR	_ArgsLength	/* argument length */

		LABEL	vars_SIZEOF
		PUSH	a0/d0		; save the arg and length
*******************************************************************************
*-------------- Determine WB/CLI Enviroment (doesn`t corrupt CLI params)

_StartUp:	move.l	d0,d7			; save CLI params len
		move.l	a0,a5			; save CLI params ptr
		suba.l	a1,a1			; clear a1
		move.l	4.w,a6			; get execbase
		CALL	FindTask		; find *THIS* task
		move.l	d0,a4			; get task ptr
		move.l	d7,d0			; restore CLI params len
		move.l	a5,a0			; restore CLI params ptr
		tst.l	pr_CLI(a4)		; did we originate from CLI?
		bne.s	_ProgStart		; yes... call our program
		lea	pr_MsgPort(a4),a0	; from wb.. handle wb_startup
		move.l	a0,a4
		CALL	WaitPort		; wait for a message
		move.l	a4,a0
		CALL	GetMsg			; then get it
		move.l	d0,-(sp)
		bsr.s	_ProgStart
		move.l	d0,d7			; save CLI Return code
		move.l	4.w,a6
		CALL	Forbid
		move.l	(sp)+,a1
		CALL	ReplyMsg
		move.l	d7,d0			; exit code
		rts
*******************************************************************************
*-------------- Display out version number under the "version" command.

VersionStr:	dc.b	'$VER: Rnc CopyLock Reader v1  Beldin/Hellfire',0 ;for 'version' command
		cnop	0,4				;longword align code..
*******************************************************************************
*-------------- Allocate our Variables (RS.) Area

_ProgStart:	move.l	#vars_SIZEOF,d0		; length for our variables
		move.l	#MEMF_PUBLIC+MEMF_CLEAR,d1 ; we want public mem, cleared
		move.l	(AbsExecBase).w,a6	; get SysBase
		CALL	AllocMem		; allocate it...
		move.l	d0,a4			; ptr to our RS.Variables base
		bne.s	_RSValid		; did the alloc fail, if so exit
		moveq	#VAR_ERROR,d0		; Memory allocation fail code
		rts				; exit to dos...

*-------------- From here a4 points to our variables area (DON`T DESTROY A4!)

_RSValid:	move.l	a6,(a4)			; cache execptr in Public so if
						; we are in fastmem were faster
*-------------- Open all libs we want to use

		lea	LibTags(pc),a0		; pt to library script
		bsr.w	_OpenTagLibs		; open libraries
		beq.w	_ShutDown		; if failed to open.. exit

*******************************************************************************
*-------------- Program starts here
*******************************************************************************
*-------------- Get DOS Output

_StartCode:	PULL	a0/d0			; get the args and length

		move.b	#0,-1(a0,d0)
		move.l	a0,_ArgsPtr(a4)

*-------------- Find the output window.

		CALLREL	Output,_DOSBase		; get dos output base
		move.l	d0,_DOSOutput(a4)

*-------------- Write the about message to the shell window!

		lea	HF.Msg(pc),a0		; format string
		bsr.w	_OSPutStr

*-------------- Get the Copy Lock serial number.

		jsr	_RncDecrypt		; after d0 = number

*-------------- Encrypt the serial number to fuck off lamers!

		eor.l	#"Beldin",d0

*-------------- Convert the serial number into ascii.

		lea	WordBuffer(pc),a0
		move.l	d0,d1
		bsr	_HexLW2Ascii

*-------------- And write this into the screen update.

		lea	SerialNumber(pc),a1
		move.l	#WordBuffer,a0
		move.w	(a0)+,(a1)+
		move.w	(a0)+,(a1)+
		move.w	(a0)+,(a1)+
		move.w	(a0)+,(a1)+

*-------------- Write these to the screen.

		lea	S_Number.msg(pc),a0
		bsr	_OSPutStr

*******************************************************************************
*-------------- Program ends here
*******************************************************************************

*******************************************************************************
* Shutdown() - Free all allocated resources & exit program
* ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
* Frees all previously allocated resources, sanity checks are made so only
* allocated memory/open libraries will be removed.
*******************************************************************************
*-------------- Close Open Libraries

_ShutDown:	lea	LibTags(pc),a0		;pt to taglist of libs to close
		bsr.w	CloseTagLibs		;close all open libs..
		
*-------------- Free RS Variables Area

		move.l	a4,a1			;ptr to our RS.Variables base
		move.l	#vars_SIZEOF,d0		;no. of bytes to free
		move.l	(a4),a6			;get SysBase
		CALL	FreeMem			;free the memory

		moveq	#SUCCESS,d0		;no return code
		rts				;exit...
*****************************************************************************
WordBuffer:	ds.b	10
		even

_HexLW2Ascii:	move.w	#8-1,d7
.Loop		rol.l	#4,d1
		move.w	d1,d2
		bsr	.Nibble
		move.b	d2,(a0)+
		dbra	d7,.Loop
		move.b	#0,(a0)
		rts
.Nibble		and.w	#$0f,d2
		add.w	#$30,d2
		cmp.w	#$3a,d2
		bcs.s	.Ok
		add.w	#7,d2
.Ok		rts
*******************************************************************************
* OSPutStr(string) <NON MODIFIABLE> 
* ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
* Sends a ascii text string to current console output
* 
* $Inputs:	: a0.l = String ptr (null terminated)
* $Output	: void
* $SR-Flags	: void
*******************************************************************************

_OSPutStr:	move.l	a0,d2

*-------------- calculate string length

		moveq	#-1,d3			;d4=0
.getlen2	addq.l	#1,d3			;increase string length by 1
		tst.b	(a0)+			;increase position
		bne.s	.getlen2		;nope not found, so keep on

*-------------- write string to console

		move.l	_DOSOutput(a4),d1	;dos output
		move.l	_DOSBase(a4),a6		;dos base
		CALL	Write			;print error msg to cli
		rts
******************************************************************************
* OpenTagLibs(library_taglist) <NON MODIFIABLE> 
* ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
* $Inputs	: a0.l	= Taglist Pt
* $Format eg;	: dc	DOSName-*,_DOSBase,36
*		:
* $Output	: d0.b  = $FF.B if FAILED & $00.B if OKAY
* $SR-Flags	: Z-Flag cleared on FAIL
******************************************************************************
		
_OpenTagLibs:	PUSH	d1-d7/a1-a3/a5-a6	;save registers
		move.l	_SysBase(a4),a6		;SysBase in a6
		move.l	a0,a5
.find_tag:	tst.w	(a5)			;TAG_DONE?
		beq.s	.tag_done		;end of taglist?
		move.l	a5,a1			;start of script
		add.w	(a5)+,a1		;a1=library name pt
		moveq	#0,d7			;clear d7
		move.l	d7,d0			;clear d0 for version no.
		move.w	(a5)+,d7		;d7=_XXXBase pt
		move.w	(a5)+,d0		;d0=lib version.
		PUSHR	a1			;stack libname pt
		CALL	OpenLibrary		;try to open desired library
		PULLR	a1			;get libname pt
		move.l	d0,(a4,d7.w)		;save lib base (to RS.)
		bne.s	.find_tag		;did it open? if so open next..
		sf.b	d0			;set Z Flag (d0=$00.B) FAILED!
		bra.s	.pullexit		;clean up stack and return
.tag_done:	st.b	d0			;clear Z Flag (d0=$FF.B) OKAY!
.pullexit:	PULL	d1-d7/a1-a3/a5-a6	;restore registers
		tst.b	d0
		rts				;libraries opened succefully!

CloseTagLibs:	PUSH	d0-d7/a0-a3/a5-a6	;save registers
		move.l	a0,a5			;make copy of taglist ptr
		move.l	_SysBase(a4),a6		;SysBase in a6
.find_tag:	tst.w	(a0)+			;TAG_DONE?
		beq.s	.tag_done		;end of taglist?
		move.l	a4,a1			;get RS. base
		add.w	(a0)+,a1		;create LibBase pt
		move.l	(a1),d0			;is this library open?
		beq.s	.find_tag		;no.. so don`t close it..
		move.l	d0,a1			;base of library to close
		tst.w	(a0)+			;skip version
		PUSHR	a0			;stack script pt
		CALL	CloseLibrary		;close this library
		PULLR	a0			;get script pt
		bra.s	.find_tag		;next tagitem please!
.tag_done:	PULL	d0-d7/a0-a3/a5-a6	;restore registers
script_done:	rts				;all open libraries closed..

******************************************************************************
* String & Data Variable definitions

*-------------- Open Library definition script

LibTags:	dc	DOSName-*,_DOSBase,36
		dc	TAG_DONE

DOSName:	dc.b	"dos.library",0
		even
HF.Msg:		dc.b	$0a
		dc.b	$9b,"1;31;40m"		; bold on
		dc.b	" Copy Lock Reader (CLR) v1.0"
		dc.b	$9b,"0;31;40m"		; bold off
		dc.b	"  -  Beldin/Hellfire 96'",$0a
		dc.b	" ---------------------------------------------------",$0a
		dc.b	$0a
		dc.b	0

S_Number.msg:	dc.b	"   (Encrypted) Original serial number: $"
SerialNumber:	ds.b	8
		dc.b	$0a,$0a,$0a
		dc.b	0
		
		cnop	0,4
****************************************************************************
_RncDecrypt:	MOVEM.L	D1-D7/A0-A6,-(SP)
		MOVE.L	#$8CE,D0
		MOVEQ	#3,D1
		MOVEA.L	(4).L,A6
		JSR	(_LVOAllocMem,A6)
		TST.L	D0
		BEQ.W	_Error
		MOVE.L	D0,-(SP)
		MOVEA.L	D0,A0
		LEA	(_VectorTrace,PC),A1
		MOVE.L	#$8CE,D7
.Loop:		MOVE.W	(A1)+,(A0)+
		SUBQ.L	#2,D7
		BGT.W	.Loop
		MOVEQ	#0,D0
		MOVEQ	#0,D1
		MOVEA.L	(SP),A5
		MOVEA.L	(4).L,A6
		JSR	(_LVOSupervisor,A6)
		MOVEA.L	(SP)+,A1
		MOVE.L	#$8CE,D0
		MOVEA.L	(4).L,A6
		JSR	(_LVOFreeMem,A6)
		MOVE.L	D5,D0
_Error:		MOVEM.L	(SP)+,D1-D7/A0-A6
		RTS

_VectorTrace:	dc.w	$487A
		dc.w	10
		dc.w	$23DF
		dc.w	0
		dc.w	$10
		dc.w	$4AFC
		dc.w	$48E7
		dc.w	$FFFF
		dc.w	$487A
		dc.w	$1A
		dc.w	$23DF
		dc.w	0
		dc.w	$10
		dc.w	$204F
		dc.w	$4E7A
		dc.w	2
		dc.w	$2F40
		dc.w	$3C
		dc.w	$880
		dc.w	0
		dc.w	$4E7B
		dc.w	2
		dc.w	$2E48
		dc.w	$4CFA
		dc.w	$7FFF
		dc.w	2
		dc.w	$2F3C
		dc.w	$4E73
		dc.w	0
		dc.w	$2F3C
		dc.w	0
		dc.w	$10
		dc.w	$2F3C
		dc.w	4
		dc.w	$DDB9
		dc.w	$2F3C
		dc.w	$BD96
		dc.w	$BDAE
		dc.w	$2F3C
		dc.w	$B386
		dc.w	$B586
		dc.w	$2F3C
		dc.w	$D046
		dc.w	$D246
		dc.w	$2F3C
		dc.w	$246
		dc.w	$A71F
		dc.w	$2F3C
		dc.w	2
		dc.w	$3C17
		dc.w	$2F3C
		dc.w	4
		dc.w	$2C6F
		dc.w	$2F3C
		dc.w	$BD96
		dc.w	$BDAE
		dc.w	$23CF
		dc.w	0
		dc.w	$24
		dc.w	$7C
		dc.w	$A71F
		dc.w	$5CB9
		dc.w	0
		dc.w	$24
		dc.w	$7285
		dc.w	$712C
		dc.w	$2F18
		dc.w	$6D85
		dc.w	$DA2C
		dc.w	$2F34
		dc.w	$6D85
		dc.w	$8354
		dc.w	$2F2C
		dc.w	$277D
		dc.w	$6C7A
		dc.w	$B8BD
		dc.w	$40
		dc.w	$BDE
		dc.w	$94BA
		dc.w	$BA4C
		dc.w	$F3E7
		dc.w	$65BD
		dc.w	$FDD5
		dc.w	$C56F
		dc.w	$92EA
		dc.w	$B148
		dc.w	$6FD0
		dc.w	$611E
		dc.w	$5D66
		dc.w	$B555
		dc.w	$D398
		dc.w	$FBF0
		dc.w	$559C
		dc.w	$E73E
		dc.w	$6494
		dc.w	$2778
		dc.w	$1660
		dc.w	$2C12
		dc.w	$E686
		dc.w	$6556
		dc.w	$B7A9
		dc.w	$B553
		dc.w	$3A73
		dc.w	$8D03
		dc.w	$5C1A
		dc.w	$9547
		dc.w	$2892
		dc.w	$86B2
		dc.w	$558B
		dc.w	$6C56
		dc.w	$3973
		dc.w	$2BAA
		dc.w	$D97
		dc.w	$AA72
		dc.w	$699A
		dc.w	$F155
		dc.w	$BD13
		dc.w	$17B0
		dc.w	$4255
		dc.w	$5A3E
		dc.w	$131C
		dc.w	$44B0
		dc.w	$BD92
		dc.w	$8EF7
		dc.w	$F100
		dc.w	$6A13
		dc.w	$AD3D
		dc.w	$28E1
		dc.w	$8ED6
		dc.w	$FED4
		dc.w	$3A3E
		dc.w	$B3D2
		dc.w	$CAB2
		dc.w	$F115
		dc.w	$2AAF
		dc.w	$D4B8
		dc.w	$83B4
		dc.w	$C41A
		dc.w	$21DB
		dc.w	$2BAA
		dc.w	$1351
		dc.w	$924B
		dc.w	$29B3
		dc.w	$3D6A
		dc.w	$B58B
		dc.w	$19DE
		dc.w	$D66A
		dc.w	$45DD
		dc.w	$2950
		dc.w	$978B
		dc.w	$C418
		dc.w	$2E1D
		dc.w	$2DDA
		dc.w	$24F1
		dc.w	$336A
		dc.w	$5D3A
		dc.w	$15DA
		dc.w	$69B9
		dc.w	$70EB
		dc.w	$4FC1
		dc.w	$46EF
		dc.w	$8260
		dc.w	$F932
		dc.w	$5EC3
		dc.w	$BB55
		dc.w	$D506
		dc.w	$D096
		dc.w	$47AB
		dc.w	$C10F
		dc.w	$6C05
		dc.w	$208C
		dc.w	$D3D8
		dc.w	$43CC
		dc.w	$FC80
		dc.w	$A0C3
		dc.w	$3BA
		dc.w	$7295
		dc.w	$D630
		dc.w	$4FB4
		dc.w	$74BD
		dc.w	$6B9
		dc.w	$1AF0
		dc.w	$7D80
		dc.w	$34B4
		dc.w	$D630
		dc.w	$ABF7
		dc.w	$64AD
		dc.w	$6B9
		dc.w	$3FF0
		dc.w	$C3B9
		dc.w	$C0CA
		dc.w	$11EF
		dc.w	$DB3F
		dc.w	$CA69
		dc.w	$4A0F
		dc.w	$D2B9
		dc.w	$384D
		dc.w	$F5C5
		dc.w	$140
		dc.w	$D52B
		dc.w	$A8C0
		dc.w	$D5C4
		dc.w	$157C
		dc.w	$E5CC
		dc.w	$DBBF
		dc.w	$3844
		dc.w	$AB8E
		dc.w	$68BF
		dc.w	$8B0
		dc.w	$5E6A
		dc.w	$3997
		dc.w	$FAF0
		dc.w	$B4F
		dc.w	$AFE
		dc.w	$38C8
		dc.w	$87E1
		dc.w	$4278
		dc.w	$8388
		dc.w	$B3C
		dc.w	$D201
		dc.w	$11F8
		dc.w	$74CD
		dc.w	$DBFE
		dc.w	$A612
		dc.w	$62C7
		dc.w	$A976
		dc.w	$A163
		dc.w	$A6FB
		dc.w	$23C
		dc.w	$1CE2
		dc.w	$140
		dc.w	$C7BC
		dc.w	$A0A9
		dc.w	$4CEA
		dc.w	$1780
		dc.w	$D81B
		dc.w	$7CE7
		dc.w	$FC80
		dc.w	$C87C
		dc.w	$3BA
		dc.w	$1A2A
		dc.w	$A161
		dc.w	$B1C4
		dc.w	$237
		dc.w	$EDA0
		dc.w	$D3BF
		dc.w	$2D8
		dc.w	$32E1
		dc.w	$FC80
		dc.w	$F09A
		dc.w	$FF93
		dc.w	$F09A
		dc.w	$E7D3
		dc.w	$39D6
		dc.w	$63E0
		dc.w	$9778
		dc.w	$A9A7
		dc.w	$2A55
		dc.w	$40F9
		dc.w	$8A6D
		dc.w	$630C
		dc.w	$A986
		dc.w	$9D8D
		dc.w	$4B2E
		dc.w	$11C0
		dc.w	$E754
		dc.w	$7826
		dc.w	$2C05
		dc.w	$F94D
		dc.w	$93D8
		dc.w	$F22A
		dc.w	$4140
		dc.w	$2465
		dc.w	$18C1
		dc.w	$E323
		dc.w	$D3BF
		dc.w	$43F1
		dc.w	$BC80
		dc.w	$361
		dc.w	$41BA
		dc.w	$D337
		dc.w	$DB88
		dc.w	$9B3F
		dc.w	$81A0
		dc.w	$7D6E
		dc.w	$7BD6
		dc.w	$61DE
		dc.w	$257
		dc.w	$4AFD
		dc.w	$390D
		dc.w	$42F6
		dc.w	$1DC3
		dc.w	$165B
		dc.w	$EF60
		dc.w	$A986
		dc.w	$2C6
		dc.w	$EBE1
		dc.w	$9904
		dc.w	$86DE
		dc.w	$A0B6
		dc.w	$1C24
		dc.w	$1324
		dc.w	$5E9C
		dc.w	$E47D
		dc.w	$7B1E
		dc.w	$A8FF
		dc.w	$3A97
		dc.w	$DFE9
		dc.w	$6DE2
		dc.w	$3B44
		dc.w	$E323
		dc.w	$7A83
		dc.w	$4390
		dc.w	$3284
		dc.w	$45CD
		dc.w	$FDA7
		dc.w	$48B3
		dc.w	$3242
		dc.w	$6ABB
		dc.w	$EE4D
		dc.w	$D0AB
		dc.w	$F0C2
		dc.w	$D835
		dc.w	$3280
		dc.w	$2762
		dc.w	$6C08
		dc.w	$4C4B
		dc.w	$3244
		dc.w	$12B3
		dc.w	$E241
		dc.w	$D82D
		dc.w	$F8BD
		dc.w	$80AE
		dc.w	$EB05
		dc.w	$8578
		dc.w	$EF50
		dc.w	$3AA5
		dc.w	$6109
		dc.w	$E83D
		dc.w	$2640
		dc.w	$A1AC
		dc.w	$EB1D
		dc.w	$7AC2
		dc.w	$4BCF
		dc.w	$15FD
		dc.w	$BAE0
		dc.w	$E8C7
		dc.w	$6AB6
		dc.w	$D386
		dc.w	$A95F
		dc.w	$6A64
		dc.w	$7550
		dc.w	$4996
		dc.w	$69E0
		dc.w	$CFEB
		dc.w	$789D
		dc.w	$3133
		dc.w	$2746
		dc.w	$FE18
		dc.w	$1E65
		dc.w	$F563
		dc.w	$A1B8
		dc.w	$E11D
		dc.w	$1C20
		dc.w	$7ADF
		dc.w	$711F
		dc.w	$6B40
		dc.w	$EBE5
		dc.w	$D8D2
		dc.w	$A95D
		dc.w	$7168
		dc.w	$8CDF
		dc.w	$CDC2
		dc.w	$FD46
		dc.w	$181F
		dc.w	$9A23
		dc.w	$2837
		dc.w	$5621
		dc.w	$3852
		dc.w	$6475
		dc.w	$1A61
		dc.w	$FD34
		dc.w	$938F
		dc.w	$C520
		dc.w	$D20B
		dc.w	$F9E8
		dc.w	$D118
		dc.w	$F9E8
		dc.w	$1012
		dc.w	$155D
		dc.w	$9661
		dc.w	$2475
		dc.w	$5627
		dc.w	$B68D
		dc.w	$6E73
		dc.w	$7DAC
		dc.w	$68DB
		dc.w	$5E47
		dc.w	$FAB5
		dc.w	$EEAF
		dc.w	$B7B2
		dc.w	$1E23
		dc.w	$F574
		dc.w	$2558
		dc.w	$228
		dc.w	$8715
		dc.w	$52A2
		dc.w	$2F8D
		dc.w	$2FCB
		dc.w	$E397
		dc.w	$566A
		dc.w	$523E
		dc.w	$39F7
		dc.w	$6616
		dc.w	$D24B
		dc.w	$1696
		dc.w	$B304
		dc.w	$9C6A
		dc.w	$205
		dc.w	$FF89
		dc.w	$D24B
		dc.w	$1A6B
		dc.w	$9B75
		dc.w	$9C6A
		dc.w	$16FF
		dc.w	$7C11
		dc.w	$D24B
		dc.w	$207
		dc.w	$4CE7
		dc.w	$9C6A
		dc.w	$E88F
		dc.w	$B35E
		dc.w	$D24B
		dc.w	$FE7B
		dc.w	$2DCE
		dc.w	$9C6A
		dc.w	$A68B
		dc.w	$937E
		dc.w	$D24B
		dc.w	$FC47
		dc.w	$FD77
		dc.w	$9C6A
		dc.w	$54E0
		dc.w	$B35C
		dc.w	$D24B
		dc.w	$1C17
		dc.w	$4CE7
		dc.w	$9C6A
		dc.w	$C57F
		dc.w	$B35E
		dc.w	$D24B
		dc.w	$858B
		dc.w	$2DCE
		dc.w	$9C6A
		dc.w	$937B
		dc.w	$937E
		dc.w	$D24B
		dc.w	$E806
		dc.w	$FD77
		dc.w	$9C6A
		dc.w	$6303
		dc.w	$4CA9
		dc.w	$D24B
		dc.w	$CE98
		dc.w	$7DF7
		dc.w	$9C6A
		dc.w	$710E
		dc.w	$FD27
		dc.w	$D24B
		dc.w	$547B
		dc.w	$B306
		dc.w	$9C6A
		dc.w	$30E9
		dc.w	$EF8
		dc.w	$DE8B
		dc.w	$226F
		dc.w	$FD67
		dc.w	$226F
		dc.w	12
		dc.w	$9099
		dc.w	$5B67
		dc.w	$B372
		dc.w	$5DDE
		dc.w	$B372
		dc.w	$5B6B
		dc.w	$B372
		dc.w	$24
		dc.w	$8F5D
		dc.w	$9C
		dc.w	$8F1B
		dc.w	$F863
		dc.w	$B05D
		dc.w	$F871
		dc.w	$9072
		dc.w	$F809
		dc.w	$B25D
		dc.w	$F875
		dc.w	$FABA
		dc.w	$C785
		dc.w	$8EBA
		dc.w	$2115
		dc.w	$6C28
		dc.w	$C685
		dc.w	$7828
		dc.w	$E084
		dc.w	$62B
		dc.w	$9C84
		dc.w	$672B
		dc.w	$9C7A
		dc.w	$25
		dc.w	$EC7B
		dc.w	$6125
		dc.w	$EEBB
		dc.w	$25
		dc.w	$EC21
		dc.w	$6125
		dc.w	$EC09
		dc.w	$25
		dc.w	$ED1B
		dc.w	$4AA3
		dc.w	$8B15
		dc.w	$21
		dc.w	$E11F
		dc.w	$5223
		dc.w	$E31D
		dc.w	$5220
		dc.w	$B2D2
		dc.w	$ADF8
		dc.w	$D3D2
		dc.w	$AD40
		dc.w	$E1D0
		dc.w	$8D46
		dc.w	$AD0F
		dc.w	$82BA
		dc.w	$CD0F
		dc.w	$811C
		dc.w	$9480
		dc.w	$B120
		dc.w	$1D94
		dc.w	$831C
		dc.w	$1DA6
		dc.w	$C2E6
		dc.w	$1EC6
		dc.w	$A3E6
		dc.w	$1FE4
		dc.w	$C8E6
		dc.w	$1F9E
		dc.w	$FADA
		dc.w	$1F99
		dc.w	$6A42
		dc.w	$4E50
		dc.w	$95BE
		dc.w	$FEEC
		dc.w	$30CD
		dc.w	$2D7C
		dc.w	$5617
		dc.w	$6C86
		dc.w	$5555
		dc.w	$5CBA
		dc.w	$DC44
		dc.w	$3DBA
		dc.w	$DD7E
		dc.w	$5AE2
		dc.w	$D12E
		dc.w	$7073
		dc.w	$B7DE
		dc.w	$5EF3
		dc.w	$87E2
		dc.w	$D7E1
		dc.w	$E6E2
		dc.w	$D6C9
		dc.w	$81A4
		dc.w	$DA99
		dc.w	$2B36
		dc.w	$BC69
		dc.w	$936
		dc.w	$9C7E
		dc.w	$6836
		dc.w	$9C40
		dc.w	$300
		dc.w	$AC7C
		dc.w	$8A14
		dc.w	$CD7C
		dc.w	$8B1A
		dc.w	$AA50
		dc.w	$874A
		dc.w	$C4
		dc.w	$E1BA
		dc.w	$22D3
		dc.w	$809C
		dc.w	$49F3
		dc.w	$B0A0
		dc.w	$C0A2
		dc.w	$D1A0
		dc.w	$C1FE
		dc.w	$61DC
		dc.w	$C252
		dc.w	$CCE
		dc.w	$722E
		dc.w	$9F2
		dc.w	$1C22
		dc.w	$3BCE
		dc.w	$1C29
		dc.w	$E748
		dc.w	$80B1
		dc.w	$B681
		dc.w	$7F4B
		dc.w	$EE0E
		dc.w	$313E
		dc.w	$7E8F
		dc.w	$5A2E
		dc.w	$BE73
		dc.w	$5A4A
		dc.w	$3EB2
		dc.w	$EA76
		dc.w	$3EB0
		dc.w	$8772
		dc.w	$4EB0
		dc.w	$C907
		dc.w	$3E4F
		dc.w	$8772
		dc.w	$7FB5
		dc.w	$85B2
		dc.w	$4D89
		dc.w	$85AB
		dc.w	$6DB5
		dc.w	$85AE
		dc.w	$E092
		dc.w	$4552
		dc.w	$E083
		dc.w	$17D2
		dc.w	$D043
		dc.w	$461B
		dc.w	$2FB5
		dc.w	$86E
		dc.w	$4EB5
		dc.w	$856
		dc.w	$2FB5
		dc.w	$98A
		dc.w	$15B5
		dc.w	$5BCA
		dc.w	$72AD
		dc.w	$53F3
		dc.w	$72AF
		dc.w	$5B75
		dc.w	$92AC
		dc.w	$3D7B
		dc.w	$E2AE
		dc.w	$5C7B
		dc.w	$E300
		dc.w	$5442
		dc.w	$E302
		dc.w	$5CC4
		dc.w	$301
		dc.w	$12B1
		dc.w	$3304
		dc.w	$79BD
		dc.w	$5204
		dc.w	$7821
		dc.w	$1882
		dc.w	$1F3B
		dc.w	$5281
		dc.w	$782D
		dc.w	$1CF4
		dc.w	$8D2
		dc.w	$F34
		dc.w	$86D
		dc.w	$CDF4
		dc.w	$ED
		dc.w	$CDF3
		dc.w	$61E5
		dc.w	$BDED
		dc.w	$1E5
		dc.w	$BFF3
		dc.w	$711A
		dc.w	$AC33
		dc.w	$71A5
		dc.w	$6EF3
		dc.w	$27A7
		dc.w	$6B73
		dc.w	$3467
		dc.w	$6BCC
		dc.w	$F6A7
		dc.w	$6E0C
		dc.w	$E567
		dc.w	$6EB3
		dc.w	$27A7
		dc.w	$39B1
		dc.w	$69D2
		dc.w	$58B1
		dc.w	$692A
		dc.w	$BAF8
		dc.w	$696B
		dc.w	$3AF8
		dc.w	$5A2A
		dc.w	$3ADC
		dc.w	$696B
		dc.w	$3AF8
		dc.w	$4957
		dc.w	$3AF8
		dc.w	$62D3
		dc.w	$5BF8
		dc.w	$60D5
		dc.w	$53D1
		dc.w	$60D4
		dc.w	$5BE7
		dc.w	$6DA
		dc.w	$3AE7
		dc.w	$736
		dc.w	$5C15
		dc.w	$6636
		dc.w	$5CE9
		dc.w	$16C9
		dc.w	$129C
		dc.w	$77C9
		dc.w	$1268
		dc.w	$7C9
		dc.w	$5C1D
		dc.w	$2181
		dc.w	$3D1D
		dc.w	$213D
		dc.w	$F21
		dc.w	$A13D
		dc.w	$201D
		dc.w	$5ECB
		dc.w	$4154
		dc.w	$71F7
		dc.w	$2BAC
		dc.w	$F03
		dc.w	$490
		dc.w	$452A
		dc.w	$2BB6
		dc.w	$6A16
		dc.w	$59B6
		dc.w	$17AB
		dc.w	$768A
		dc.w	$7D51
		dc.w	$4F77
		dc.w	$526D
		dc.w	$7D5E
		dc.w	$7D4B
		dc.w	$5262
		dc.w	$17B1
		dc.w	$6B9F
		dc.w	$388D
		dc.w	$59B6
		dc.w	$17AB
		dc.w	$768A
		dc.w	$17B1
		dc.w	$3E4E
		dc.w	$388D
		dc.w	$3667
		dc.w	$17B5
		dc.w	$195B
		dc.w	$2789
		dc.w	$3599
		dc.w	$14C8
		dc.w	$35BD
		dc.w	$2789
		dc.w	$3599
		dc.w	$3C6
		dc.w	$FADE
		dc.w	$4C29
		dc.w	$FAF2
		dc.w	$2D29
		dc.w	$FA62
		dc.w	$D28
		dc.w	$B417
		dc.w	$6C28
		dc.w	$B44D
		dc.w	$5E14
		dc.w	$344D
		dc.w	$7128
		dc.w	$7A3C
		dc.w	$1061
		dc.w	$5500
		dc.w	$CD61
		dc.w	$1DD2
		dc.w	$E25D
		dc.w	$1DD6
		dc.w	$CDDE
		dc.w	$32EA
		dc.w	$9F9F
		dc.w	$15EF
		dc.w	$B0A3
		dc.w	$15F5
		dc.w	$F59D
		dc.w	$3AC9
		dc.w	$289D
		dc.w	$5DC
		dc.w	$7A1
		dc.w	$5D8
		dc.w	$2822
		dc.w	$2AE4
		dc.w	$5A22
		dc.w	$DE1
		dc.w	$751E
		dc.w	$DFB
		dc.w	$3DDA
		dc.w	$22C7
		dc.w	$35F3
		dc.w	$DFF
		dc.w	$6B2
		dc.w	$DDB
		dc.w	$35F3
		dc.w	$DFF
		dc.w	$11BC
		dc.w	$C2B8
		dc.w	$5E53
		dc.w	$C290
		dc.w	$3F53
		dc.w	$C2A4
		dc.w	$1F52
		dc.w	$8CD1
		dc.w	$5CAB
		dc.w	$8C0E
		dc.w	$EF52
		dc.w	$BF72
		dc.w	$AF52
		dc.w	$8C2A
		dc.w	$8C1A
		dc.w	$8C0A
		dc.w	$BF5A
		dc.w	$8C74
		dc.w	$8C26
		dc.w	$C64
		dc.w	$BFCC
		dc.w	$3F18
		dc.w	$D9CC
		dc.w	$CFA
		dc.w	$EAB0
		dc.w	$99FA
		dc.w	$D952
		dc.w	$AA86
		dc.w	$D950
		dc.w	$9966
		dc.w	$9725
		dc.w	$AA1A
		dc.w	$9727
		dc.w	$99FA
		dc.w	$A45B
		dc.w	$D9FA
		dc.w	$9703
		dc.w	$EA86
		dc.w	$9303
		dc.w	$D964
		dc.w	$DD76
		dc.w	$F958
		dc.w	$DD76
		dc.w	$D2DC
		dc.w	$BC76
		dc.w	$D200
		dc.w	$B44F
		dc.w	$D205
		dc.w	$BCC9
		dc.w	$3201
		dc.w	$DBC3
		dc.w	$5301
		dc.w	$DB03
		dc.w	$35F1
		dc.w	$ABFC
		dc.w	$7B84
		dc.w	$DBFC
		dc.w	$35F1
		dc.w	$E4FC
		dc.w	$D7BD
		dc.w	$6B4
		dc.w	$A5BD
		dc.w	$96F0
		dc.w	$CFB9
		dc.w	$E40F
		dc.w	$8BF9
		dc.w	$850F
		dc.w	$8BCD
		dc.w	$BD10
		dc.w	$EBAD
		dc.w	$CF45
		dc.w	$E394
		dc.w	$CF41
		dc.w	$EB12
		dc.w	$2F44
		dc.w	$8C06
		dc.w	$45
		dc.w	$FC07
		dc.w	$72BA
		dc.w	$9D07
		dc.w	$72A0
		dc.w	$BF18
		dc.w	$2369
		dc.w	$40F0
		dc.w	$1368
		dc.w	$E85
		dc.w	$6B68
		dc.w	$6F85
		dc.w	$6B54
		dc.w	$1FD0
		dc.w	$FB15
		dc.w	$CF90
		dc.w	$B560
		dc.w	$8590
		dc.w	$D24C
		dc.w	$BA90
		dc.w	$B34C
		dc.w	$BAA6
		dc.w	$F94D
		dc.w	$DCA2
		dc.w	$F1CD
		dc.w	$DCA3
		dc.w	$F94D
		dc.w	$DCA3
		dc.w	$EA8D
		dc.w	$DC1C
		dc.w	$284D
		dc.w	$D4DC
		dc.w	$284D
		dc.w	$C71C
		dc.w	$28F2
		dc.w	$5DC
		dc.w	$58F6
		dc.w	$64EC
		dc.w	$68E9
		dc.w	$37EC
		dc.w	$E39
		dc.w	$7999
		dc.w	$6F39
		dc.w	$7993
		dc.w	$7CF9
		dc.w	$792C
		dc.w	$BE39
		dc.w	$3759
		dc.w	$AE00
		dc.w	$37E6
		dc.w	$6F39
		dc.w	$37E6
		dc.w	$6F46
		dc.w	$61E4
		dc.w	$6AC6
		dc.w	$36E6
		dc.w	$62C2
		dc.w	$36E6
		dc.w	$5C6
		dc.w	$3E66
		dc.w	$5C4
		dc.w	$7013
		dc.w	$64C4
		dc.w	$7033
		dc.w	$6CFD
		dc.w	$7033
		dc.w	$647B
		dc.w	$AE33
		dc.w	$28D
		dc.w	$FDB3
		dc.w	$6463
		dc.w	$B3C6
		dc.w	$6C5A
		dc.w	$B3C6
		dc.w	$64DC
		dc.w	$6DC6
		dc.w	$2C0
		dc.w	$3E46
		dc.w	$65D8
		dc.w	$2DBA
		dc.w	$65D0
		dc.w	$3EF9
		dc.w	$BBD8
		dc.w	$2D05
		dc.w	$BB14
		dc.w	$3E46
		dc.w	$6FD8
		dc.w	$2DBA
		dc.w	$6FDA
		dc.w	$3EF9
		dc.w	$BAD8
		dc.w	$708C
		dc.w	$7ECC
		dc.w	$6B8D
		dc.w	$245E
		dc.w	$6A3F
		dc.w	$E30
		dc.w	$F131
		dc.w	$442
		dc.w	$4863
		dc.w	$CE94
		dc.w	$B7D5
		dc.w	$3526
		dc.w	$8787
		dc.w	$FFF8
		dc.w	$FF79
		dc.w	$F70A
		dc.w	$67AB
		dc.w	$E25C
		dc.w	$81D
		dc.w	$89EE
		dc.w	$28CF
		dc.w	$B5C0
		dc.w	$11C1
		dc.w	$2DD2
		dc.w	$AF3
		dc.w	$BA24
		dc.w	$5C65
		dc.w	$BAD8
		dc.w	$708C
		dc.w	$F737
		dc.w	$70F4
		dc.w	$DA77
		dc.w	$70E0
		dc.w	$FBB7
		dc.w	$7014
		dc.w	$DB8B
		dc.w	$4990
		dc.w	$17B6
		dc.w	$6550
		dc.w	$3B77
		dc.w	$86C8
		dc.w	$17B7
		dc.w	$6550
		dc.w	$3B77
		dc.w	$86C8
		dc.w	$17B7
		dc.w	$6350
		dc.w	$4FF9
		dc.w	$4F90
		dc.w	$AC61
		dc.w	$6350
		dc.w	$DC61
		dc.w	$1150
		dc.w	$919B
		dc.w	$1140
		dc.w	$BDB5
		dc.w	$EEBC
		dc.w	$610C
		dc.w	$EEBC
		dc.w	$BDBD
		dc.w	$EEC0
		dc.w	$1AA2
		dc.w	$E879
		dc.w	$1AA2
		dc.w	$EE84
		dc.w	$1AA2
		dc.w	$24
		dc.w	$313C
		dc.w	$6E70
		dc.w	$EE90
		dc.w	$C1FC
		dc.w	$F88F
		dc.w	$A0B3
		dc.w	$C1FC
		dc.w	$643F
		dc.w	$EC97
		dc.w	$C1FC
		dc.w	$19AF
		dc.w	$913F
		dc.w	$C1FC
		dc.w	$C59E
		dc.w	$EEBC
		dc.w	$C1FC
		dc.w	$E3C
		dc.w	$EE7E
		dc.w	$C1FC
		dc.w	$1F0
		dc.w	$883A
		dc.w	$C1FC
		dc.w	$9676
		dc.w	$AC59
		dc.w	$C1FC
		dc.w	$708A
		dc.w	$CECB
		dc.w	$C1FC
		dc.w	$6DA8
		dc.w	$B740
		dc.w	$C1FC
		dc.w	$828A
		dc.w	$8EC6
		dc.w	$C1FC
		dc.w	$3E50
		dc.w	$B740
		dc.w	$C1FC
		dc.w	$63B0
		dc.w	$3D00
		dc.w	$C1FC
		dc.w	$58B8
		dc.w	$81CC
		dc.w	$C1FC
		dc.w	$2062
		dc.w	$89E0
		dc.w	$C1FC
		dc.w	$F71B
		dc.w	$EEC2
		dc.w	$C1FC
		dc.w	$FE4E
		dc.w	$EE78
		dc.w	$C1FC
		dc.w	$3A9A
		dc.w	$112E
		dc.w	$C1FC
		dc.w	$AC60
		dc.w	$EED0
		dc.w	$C1FC
		dc.w	$C574
		dc.w	$CD1F
		dc.w	$C1FC
		dc.w	$7A64
		dc.w	$A6BA
		dc.w	$C1FC
		dc.w	$2EF6
		dc.w	$536E
		dc.w	$AF3A
		dc.w	$C846
		dc.w	$CC88
		dc.w	$7D3C
		dc.w	$8650
		dc.w	$EEC0
		dc.w	$CABC
		dc.w	$3F48
		dc.w	$EEC0
		dc.w	$C8BC
		dc.w	$5440
		dc.w	$EEC0
		dc.w	$C689
		dc.w	$373C
		dc.w	$2230
		dc.w	$EEC0
		dc.w	$CD0F
		dc.w	$5B28
		dc.w	$EEE4
		dc.w	$4E71	; nop
		dc.w	$4E73	; rte
		dc.w	$7000	; moveq #0,d0
		dc.w	$4E75	; rts
_Jsr2Start	dc.w	$4EB9	; jsr ($237402).l
		dc.w	$23
		dc.w	$7402

		END

