DECRUNCH:
cmpi.w #'DP',(a0)
bne.w _notcrunched
lea DECRUNCH(pc),a3
movea.l a0,a1 ; addr data crunched
addq.w #2,a0 ; skip header
move.l a1,addr1+2-DECRUNCH(a3) ;$15C(a3)
movea.l a1,a2
adda.l (a0)+,a2 ; decrunched len
move.l a2,addr2+2-DECRUNCH(a3) ;$162(a3)
move.b (a0)+,v1+1-DECRUNCH(a3) ;$E9(a3)
move.b (a0)+,v2+1-DECRUNCH(a3) ;$113(a3)
move.b (a0)+,v3+1-DECRUNCH(a3) ;$133(a3)
move.b (a0)+,v4+1-DECRUNCH(a3) ;$141(a3)
move.b (a0)+,v5+1-DECRUNCH(a3) ;$147(a3)
move.b (a0)+,v6+1-DECRUNCH(a3) ;$159(a3)
move.l (a0)+,d0 ; .L
movea.l a0,a4
adda.w #256,a0
adda.l d0,a0
movea.l a2,a1
suba.l -(a0),a1
move.l -(a0),d0
loc_0_B422:
moveq #3,d1
bsr.w sub_0_B4F4
tst.w d2
beq.w loc_0_B4B4
cmpi.b #7,d2
bne.s loc_0_B474
lsr.l #1,d0
bne.s loc_0_B43C
bsr.w sub_0_B4DE
loc_0_B43C:
bcs.s loc_0_B448
moveq #2,d1
bsr.w sub_0_B4F4
addq.w #7,d2
bra.s loc_0_B474
loc_0_B448:
moveq #8,d1
bsr.w sub_0_B4F4
tst.w d2
beq.s loc_0_B458
addi.w #$A,d2
bra.s loc_0_B474
loc_0_B458:
moveq #$C,d1
bsr.w sub_0_B4F4
tst.w d2
beq.s loc_0_B468
addi.w #$109,d2
bra.s loc_0_B474
loc_0_B468:
moveq #$F,d1
bsr.w sub_0_B4F4
addi.l #$110B,d2
loc_0_B474:
subq.w #1,d2
move.w d2,d3
loc_0_B478:
lsr.l #1,d0
bne.s loc_0_B47E
bsr.s sub_0_B4DE
loc_0_B47E:
bcs.s loc_0_B486
moveq #8,d5
moveq #6,d1
bra.s loc_0_B4A8
loc_0_B486:
lsr.l #1,d0
bne.s loc_0_B48C
bsr.s sub_0_B4DE
loc_0_B48C:
bcs.s loc_0_B494
moveq #0,d5
moveq #3,d1
bra.s loc_0_B4A8
loc_0_B494:
lsr.l #1,d0
bne.s loc_0_B49A
bsr.s sub_0_B4DE
loc_0_B49A:
bcs.s loc_0_B4A2
moveq #$48,d5
moveq #6,d1
bra.s loc_0_B4A8
loc_0_B4A2:
move.w #$88,d5
moveq #7,d1
loc_0_B4A8:
bsr.s sub_0_B4F4
add.w d5,d2
move.b (a4,d2.w),-(a2)
dbf d3,loc_0_B478
loc_0_B4B4:
cmpa.l a2,a1
bge.w loc_0_B536
lsr.l #1,d0
bne.s loc_0_B4C0
bsr.s sub_0_B4DE
loc_0_B4C0:
bcc.s loc_0_B514
moveq #2,d1
bsr.s sub_0_B4F4
v1 moveq #-1,d1
moveq #3,d3
tst.b d2
beq.s loc_0_B526
cmp.b d2,d3
beq.s loc_0_B506
cmpi.b #1,d2
beq.s loc_0_B4E8
moveq #6,d3
moveq #3,d1
bra.s loc_0_B4EC
; ======================================
sub_0_B4DE:
move.l -(a0),d0
move #$10,ccr
roxr.l #1,d0
rts
loc_0_B4E8:
moveq #4,d3
moveq #1,d1
loc_0_B4EC:
bsr.s sub_0_B4F4
add.w d2,d3
v2 moveq #-1,d1
bra.s loc_0_B526
sub_0_B4F4:
subq.w #1,d1
moveq #0,d2
loc_0_B4F8:
lsr.l #1,d0
bne.s loc_0_B4FE
bsr.s sub_0_B4DE
loc_0_B4FE:
addx.l d2,d2
dbf d1,loc_0_B4F8
rts
loc_0_B506:
moveq #8,d1
bsr.s sub_0_B4F4
move.w d2,d3
addi.w #$E,d3
v3 moveq #-1,d1
bra.s loc_0_B526
loc_0_B514:
lsr.l #1,d0
bne.s loc_0_B51A
bsr.s sub_0_B4DE
loc_0_B51A:
bcs.s loc_0_B522
moveq #2,d3
v4 moveq #-1,d1
bra.s loc_0_B526
loc_0_B522:
moveq #1,d3
v5 moveq #-1,d1
loc_0_B526:
bsr.s sub_0_B4F4
loc_0_B528:
move.b -1(a2,d2.w),-(a2)
dbf d3,loc_0_B528
cmpa.l a2,a1
blt.w loc_0_B422
loc_0_B536:
v6 moveq #-1,d7
addr1 lea 0,a0
addr2 lea 0,a2
loc_0_B544:
move.b (a1)+,d0
cmp.b d7,d0
bne.s loc_0_B55A
moveq #0,d1
move.b (a1)+,d1
beq.s loc_0_B55A
move.b (a1)+,d0
addq.w #1,d1
loc_0_B554:
move.b d0,(a0)+
dbf d1,loc_0_B554
loc_0_B55A:
move.b d0,(a0)+
cmpa.l a2,a1
blt.s loc_0_B544
_notcrunched:
rts