	;--------------------------------------
	;-- BYTEKILLER V2.0 DECRUNCH ROUTINE --
	;--------------------------------------

		Source:	=	$40000		;Packed Data
		Dest:	=	$50000		;UnPacked Data

DeCruncher:	movem.l	d0-d7/a0-a6,-(a7)
		lea.l	$dff180,a6
		lea.l	Source,a0
		lea.l	Dest,a1
		move.l	(a0)+,d0
		move.l	(a0)+,d1
		move.l	(a0)+,d5
		move.l	a1,a2
		add.l	d0,a0
		add.l	d1,a2
		move.l	-(a0),d0
		eor.l	d0,d5
lbC0007F8:	lsr.l	#1,d0
		bne.s	lbC000800
		bsr.S	lbC0008A0
lbC000800:	bcs.s	lbC00083E
		moveq	#8,d1
		moveq	#1,d3
		lsr.l	#1,d0
		bne.s	lbC00080E
		bsr.S	lbC0008A0
lbC00080E:	bcs.s	lbC00086A
		moveq	#3,d1
		clr.w	d4
lbC000814:	bsr.S	lbC0008AC
		move.w	d2,d3
		add.w	d4,d3
lbC00081C:	moveq	#7,d1
lbC00081E:	lsr.l	#1,d0
		bne.s	lbC000826
		bsr.S	lbC0008A0
lbC000826:	roxl.l	#1,d2
		dbra	d1,lbC00081E
		move.b	d2,-(a2)
		dbra	d3,lbC00081C
		bra.S	lbC000878
 
lbC000836:	moveq	#8,d1
		moveq	#8,d4
		bra.S	lbC000814
 
lbC00083E:	moveq	#2,d1
		bsr.S	lbC0008AC
		cmp.b	#2,d2
		blt.s	lbC000860
		cmp.b	#3,d2
		beq.s	lbC000836
		moveq	#8,d1
		bsr.S	lbC0008AC
		move.w	d2,d3
		move.w	#$C,d1
		bra.S	lbC00086A
 
lbC000860:	move.w	#9,d1
		add.w	d2,d1
		addq.w	#2,d2
		move.w	d2,d3
lbC00086A:	bsr.S	lbC0008AC
lbC00086E:	subq.w	#1,a2
		move.b	0(a2,d2.w),(a2)
		dbra	d3,lbC00086E
lbC000878:	move.w	a0,(a6)
		cmp.l	a2,a1
		blt.S	lbC0007F8
		movem.l	(a7)+,d0-d7/a0-a6
		rts
  
lbC0008A0:	move.l	-(a0),d0
		eor.l	d0,d5
		move.w	#$10,CCR
		roxr.l	#1,d0
		rts
 
lbC0008AC:	subq.w	#1,d1
		clr.w	d2
lbC0008B0:	lsr.l	#1,d0
		bne.s	lbC0008BE
		move.l	-(a0),d0
		eor.l	d0,d5
		move.w	#$10,CCR
		roxr.l	#1,d0
lbC0008BE:	roxl.l	#1,d2
		dbra	d1,lbC0008B0
		rts

