| Decrunch30.s, MIT syntax for GNU C Compiler 2.2.2
|
| Copyright © 1992-1994 by Stefano Reksten
|
| Use Decrunch30.c to interface with GCC !
|
| 1112821571 = 'BTOC'

.text
	.even
.globl _Decrunch30
_Decrunch25:
	moveml	d1-d5/a0-a1,sp@-
	movel	a1@+,d0
	cmpl	#1112821571,d0
	beq	ok_go
	moveq	#0,d0
	bra	end
ok_go:
	movel	a1@+,d0
	moveb	a1@+,d1
	moveq	#0,d4
	moveb	a1@+,d4
loop:
	cmpb	a1@,d1
	beq	explode
	moveb	a1@+,a0@+
	subl	#1,d0
	beq	end
	bra	loop
explode:
	addl	#1,a1
	moveq	#0,d2
	moveb	a1@+,d2
	cmpb	d2,d4
	bhi	else
	subl	d4,d2
	beq	skip_byt
	moveb	a1@+,d3
	bra	expl
skip_byt:
	moveb	a1@+,d5
	moveq	#7,d2
	moveb	d1,a0@+
skip_loop:
	btst	d2,d5
	bne	put_byte
	moveb	d1,a0@+
	bra	ok
put_byte:
	moveb	a1@+,a0@+
ok:
	dbra	d2,skip_loop
	subl	#9,d0
	bra	done
else:
	moveb	d1,d3
expl:
	subl	d2,d0
	subb	#1,d2
exploop:
	moveb	d3,a0@+
	dbra	d2,exploop
done:
	tstl	d0
	beq	end
	bra	loop
	moveq	#1,d0
end:
	moveml	sp@+,d1-d5/a0-a1
	rts
