begin:	
               lea	stackend,sp
	move.l	sp,d0
	subi.l	#begin-$0120,d0
	move.l	d0,-(sp)
	pea	begin-$0100(pc)
	clr.w	-(sp)
	move.w	#$4a,-(sp)
	trap	#1
	adda.w	#$0c,sp
	bsr.s	ice3_04
	move.l	$84.w,ice3_08+2
	move.l	#ice3_06,$84.w
	bsr.s	ice3_05
	pea	ice3_02(pc)
	pea	ice3_02(pc)
	pea	filename(pc)
	clr.w	-(sp)
	move.w	#$4b,-(sp)
	trap	#1
	lea	16(sp),sp
	pea	ice3_02(pc)
	pea	ice3_02(pc)
	pea	filename2(pc)
	clr.w	-(sp)
	move.w	#$4b,-(sp)
	trap	#1
	lea	16(sp),sp
	bsr.s	ice3_04
	move.l	ice3_08+2(pc),$84.w
	bsr.s	ice3_05
	clr.w	-(sp)
	trap	#1

ice3_02:dc.l 0
filename:  dc.b 'narco1.dat',0
filename2: dc.b 'narco2.dat',0
	even

ice3_04:clr.l	-(sp)
	move.w	#$20,-(sp)
	trap	#1
	addq.l	#6,sp
	move.l	d0,d7
	rts
ice3_05:move.l	d7,-(sp)
	move.w	#$20,-(sp)
	trap	#1
	addq.l	#6,sp
	rts
ice3_06:	movea.l	sp,a0
	btst	#$0d-8,(sp)
	bne.s	ice3_07
	move	usp,a0
	subq.l	#6,a0
ice3_07:addq.l	#6,a0
	cmpi.w	#$3f,(a0)
	beq.s	ice3_0a
ice3_08:jmp	$00.l
ice3_0a:move.l	8(a0),loadadr
	move.l	2(sp),ice3_0c+2
	move.l	#ice3_0b,2(sp)
	bra.s	ice3_08
ice3_0b:tst.w	2(sp)
	bmi.s	ice3_0c
	movea.l	loadadr(pc),a0
	bsr.s	ice3_0e
	movea.l	loadadr(pc),a0
	bsr	fire_unpac
ice3_0c:	jmp	$00.l
ice3_0e:
	movem.l d0-a6,-(sp)
	bsr	ice04
	cmpi.l	#'Ice!',d0		; Is file packed?
	bne	ice03			; no, leave this routine
	bsr.s	ice04
	lea	-8(a0,d0.l),a5
	bsr.s	ice04
	move.l	d0,(sp)
               lea	108(a0),a4
	movea.l a4,a6
	adda.l	d0,a6
	movea.l a6,a3
	movea.l a6,a1			; save 120 bytes
	lea	loadadr+124(pc),a2	; at the end of the
	moveq	#$77,d0			; unpacked data
ice2_00:	move.b	-(a1),-(a2)
	dbra	d0,ice2_00
	move.b	-(a5),d7
	bsr	ice06
	bsr	ice0a		;; Picture decrunch!
	bcc.s	ice2_04		;; Enable these lines in your own
	move.w	#$0f9f,d7		;; sources if you are using the
pic00: moveq	#3,d6			;; additional algorithm for lores
pic01: move.w	-(a3),d4		;; picture pre-compression.
	moveq	#3,d5			;;
pic02: add.w	d4,d4			;;
	addx.w	d0,d0			;;
	add.w	d4,d4			;;
	addx.w	d1,d1			;;
	add.w	d4,d4			;;
	addx.w	d2,d2			;;
	add.w	d4,d4			;;
	addx.w	d3,d3			;;
	dbra	d5,pic02		;;
	dbra	d6,pic01		;;
	movem.w d0-d3,(a3)		;;
	dbra	d7,pic00		;;
ice2_04:	move.l	(sp),d0			; move all data to
		lea	-120(a4),a1		; 120 bytes lower
ice2_05:	move.b	(a4)+,(a1)+
		dbra	d0,ice2_05
		subi.l	#$010000,d0
		bpl.s	ice2_05
		moveq	#$77,d0			; restore saved data
		lea	loadadr+124(pc),a2
ice2_06:	move.b	-(a2),-(a3)
		dbra	d0,ice2_06
ice03:	movem.l (sp)+,d0-a6
	rts
ice04:	moveq	#3,d1
ice05:	lsl.l	#8,d0
	move.b	(a0)+,d0
	dbra	d1,ice05
	rts
ice06:	bsr.s	ice0a
	bcc.s	ice09
	moveq	#0,d1
	bsr.s	ice0a
	bcc.s	ice08
	lea	ice17(pc),a1
	moveq	#4,d3
ice07:	move.l	-(a1),d0
	bsr.s	ice0c
	swap	d0
	cmp.w	d0,d1
	dbne	d3,ice07
	add.l	20(a1),d1
ice08:	move.b	-(a5),-(a6)
	dbra	d1,ice08
ice09:	cmpa.l	a4,a6
	bgt.s	ice0f
	rts
ice0a:	add.b	d7,d7
	bne.s	ice0b
	move.b	-(a5),d7
	addx.b	d7,d7
ice0b:	rts
ice0c:	moveq	#0,d1
ice0d:	add.b	d7,d7
	bne.s	ice0e
	move.b	-(a5),d7
	addx.b	d7,d7
ice0e:	addx.w	d1,d1
	dbra	d0,ice0d
	rts
ice0f:	lea	ice18(pc),a1
	moveq	#3,d2
ice10:	bsr.s	ice0a
	dbcc	d2,ice10
	moveq	#0,d4
	moveq	#0,d1
	move.b	1(a1,d2.w),d0
	ext.w	d0
	bmi.s	ice11
	bsr.s	ice0c
ice11:	move.b	6(a1,d2.w),d4
	add.w	d1,d4
	beq.s	ice13
	lea	ice19(pc),a1
	moveq	#1,d2
ice12:	bsr.s	ice0a
	dbcc	d2,ice12
	moveq	#0,d1
	move.b	1(a1,d2.w),d0
	ext.w	d0
	bsr.s	ice0c
	add.w	d2,d2
	add.w	6(a1,d2.w),d1
	bpl.s	ice15
	sub.w	d4,d1
	bra.s	ice15
ice13:	moveq	#0,d1
	moveq	#5,d0
	moveq	#-1,d2
	bsr.s	ice0a
	bcc.s	ice14
	moveq	#8,d0
	moveq	#$3f,d2
ice14:	bsr.s	ice0c
	add.w	d2,d1
ice15:	lea	2(a6,d4.w),a1
	adda.w	d1,a1
	move.b	-(a1),-(a6)
ice16:	move.b	-(a1),-(a6)
	dbra	d4,ice16
	bra	ice06
	DC.B $7f,$ff,$00,$0e,$00,$ff,$00,$07
	DC.B $00,$07,$00,$02,$00,$03,$00,$01
	DC.B $00,$03,$00,$01
ice17:	DC.B $00,$00,$01,$0d,$00,$00,$00,$0e
	DC.B $00,$00,$00,$07,$00,$00,$00,$04
	DC.B $00,$00,$00,$01
ice18:	DC.B $09,$01,$00,$ff,$ff,$08,$04,$02
	DC.B $01,$00
ice19:	DC.B $0b,$04,$07,$00,$01,$1f,$ff,$ff
	DC.B $00,$1f

		rts
fire_unpac
       MOVEM.L A0-A6/D0-D7,-(A7) 
       LEA     0(A0,D0.L),A5 
       BSR     fire08 
       CMPI.L  #$46697265,D7 
       BNE.S   fire03 
       ADDA.W  #$78,A0 
       BSR.S   fire08 
       MOVE.L  D7,(A7) 
       LEA     0(A0,D7.L),A6 
       MOVEA.L A6,A3 
       MOVEA.L A6,A1 
       lea loadadr+$78+4(pc),A2 
       MOVE.W  #$77,D0 
fire00:MOVE.B  -(A1),-(A2) 
       DBF     D0,fire00
       BSR     fire08 
       LEA     fire25(PC),A4
       MOVEQ   #1,D6 
       SWAP    D6
       MOVEQ   #0,D5 
       BSR.S   fire04 
       MOVE.L  (A7),D0 
       LEA     -120(A0),A1 
fire01:MOVE.B  (A0)+,(A1)+ 
       DBF     D0,fire01
       SUB.L   D6,D0 
       BPL.S   fire01 
       MOVE.W  #$77,D0 
       lea loadadr+$78+4(pc),A2 
fire02:MOVE.B  -(A2),-(A3) 
       DBF     D0,fire02
fire03:MOVEM.L (A7)+,A0-A6/D0-D7 
       RTS 
fire04:BSR.S   fire0C 
       BCC.S   fire07 
       MOVEQ   #0,D1 
       BSR.S   fire0C 
       BCC.S   fire06 
       MOVEA.L A4,A1 
       MOVEQ   #3,D3 
fire05:MOVE.L  -(A1),D0
       BSR.S   fire0F 
       SWAP    D0
       CMP.W   D0,D1 
       DBNE    D3,fire05
       ADD.L   16(A1),D1 
fire06:MOVE.B  -(A5),-(A6) 
       DBF     D1,fire06
fire07:CMPA.L  A0,A6 
       BGT.S   fire12 
       RTS 
fire08:MOVEQ   #3,D0 
fire09:MOVE.B  -(A5),D7
       ROR.L   #8,D7 
       DBF     D0,fire09
       RTS 
fire0A:MOVE.W  A5,D7 
       BTST    #0,D7 
       BNE.S   fire0B 
       MOVE.L  -(A5),D7
       ADDX.L  D7,D7 
       BRA.S   fire11 
fire0B:MOVE.L  -5(A5),D7 
       LSL.L   #8,D7 
       MOVE.B  -(A5),D7
       SUBQ.L  #3,A5 
       ADD.L   D7,D7 
       BSET    #0,D7 
       BRA.S   fire11 
fire0C:ADD.L   D7,D7 
       BEQ.S   fire0D 
       RTS 
fire0D:MOVE.W  A5,D7 
       BTST    #0,D7 
       BNE.S   fire0E 
       MOVE.L  -(A5),D7
       ADDX.L  D7,D7 
       RTS 
fire0E:MOVE.L  -5(A5),D7 
       LSL.L   #8,D7 
       MOVE.B  -(A5),D7
       SUBQ.L  #3,A5 
       ADD.L   D7,D7 
       BSET    #0,D7 
       RTS 
fire0F:MOVEQ   #0,D1 
fire10:ADD.L   D7,D7 
       BEQ.S   fire0A 
fire11:ADDX.W  D1,D1 
       DBF     D0,fire10
       RTS 
fire12:MOVEQ   #1,D0 
       BSR.S   fire0F 
       SUBQ.W  #1,D1 
       BMI.S   fire16 
       BEQ.S   fire18 
       SUBQ.W  #1,D1 
       BEQ.S   fire19 
       BSR.S   fire0C 
       BCC.S   fire17 
       BSR.S   fire0C 
       BCC.S   fire1A 
       BRA.S   fire1B 
fire13:MOVEQ   #1,D0 
       BSR.S   fire0F 
       SUBQ.W  #1,D1 
       BPL.S   fire15 
       MOVEQ   #0,D0 
       RTS 
fire14:MOVEQ   #1,D0 
       BSR.S   fire0F 
fire15:ADD.W   D1,D1 
       ADD.W   D1,D1 
       MOVEM.W 16(A4,D1.W),D5/D0 
       BSR.S   fire0F 
       ADD.L   D5,D1 
       RTS 
fire16:MOVEQ   #1,D0 
       BSR.S   fire0F 
       SUBQ.W  #1,D1 
       BMI.S   fire1F 
       ADD.W   D1,D1 
       ADD.W   D1,D1 
       MOVEM.W 32(A4,D1.W),D2/D0 
       BSR.S   fire0F 
       ADD.W   D1,D2 
       BSR.S   fire14 
       MOVE.W  D2,D0 
       BRA.S   fire21 
fire17:MOVEQ   #2,D0 
       BSR.S   fire0F 
       MOVEQ   #0,D0 
       BSET    D1,D0 
       BRA.S   fire1E 
fire18:MOVEQ   #7,D0 
       BSR.S   fire0F 
       MOVEQ   #0,D0 
       BRA.S   fire22 
fire19:BSR.S   fire13 
       TST.W   D0
       BEQ     fire1E 
       MOVEQ   #1,D0 
       BRA.S   fire22 
fire1A:BSR.S   fire13 
       TST.W   D0
       BEQ.S   fire1D 
       MOVEQ   #2,D0 
       BRA.S   fire22 
fire1B:BSR.S   fire13 
       TST.W   D0
       BEQ.S   fire1C 
       MOVEQ   #3,D0 
       BRA.S   fire22 
fire1C:MOVEQ   #-1,D0
       BRA.S   fire1E 
fire1D:MOVE.B  (A6),D0 
fire1E:MOVE.B  D0,-(A6)
       BRA.S   fire24 
fire1F:BSR.S   fire14 
       BEQ.S   fire24 
       MOVE.B  (A6),D0 
fire20:MOVE.B  D0,-(A6)
       DBF     D1,fire20
       SUB.L   D6,D1 
       BMI.S   fire24 
       BRA.S   fire20 
fire21:SUBQ.W  #2,D0 
fire22:LEA     2(A6,D1.L),A1 
       ADDA.W  D0,A1 
       MOVE.B  -(A1),-(A6) 
fire23:MOVE.B  -(A1),-(A6) 
       DBF     D0,fire23
fire24:BRA     fire04 
       DC.B   $03,$FF,$00,$09,$00,$07,$00,$02	; This source
       DC.B   $00,$03,$00,$01,$00,$03,$00,$01	; was written
fire25:DC.B   $00,$00,$00,$0E,$00,$00,$00,$07	; by:
       DC.B   $00,$00,$00,$04,$00,$00,$00,$01	; Axe of Delight
       DC.B   $00,$03,$00,$00,$00,$07,$00,$10
       DC.B   $00,$0B,$01,$10,$00,$0F,$11,$10
       DC.B   $00,$03,$00,$05,$00,$05,$00,$15
       DC.B   $00,$07,$00,$55
            

	section bss
loadadr:	ds.l	1
	ds.b	500
stackend:
	ds.b	10
The_end