; ; File generated by cc65 v 2.11.0 ; .fopt compiler,"cc65 v 2.11.0" .setcpu "6502" .smart on .autoimport on .case on .debuginfo on .importzp sp, sreg, regsave, regbank, tmp1, ptr1, ptr2 .macpack longbranch .dbg file, "uncompress.c", 1065, 1064347899 .dbg file, "../../include/zlib.h", 7100, 1006113957 .import _inflatemem .export _uncompress .import _adler32 ; --------------------------------------------------------------- ; int __near__ uncompress (unsigned char*, unsigned int*, const unsigned char*, unsigned int) ; --------------------------------------------------------------- .segment "CODE" .proc _uncompress: near .segment "CODE" ; ; if ((source[0] & 0x8f) != Z_DEFLATED || source[1] & 0x20) ; .dbg line, "uncompress.c", 23 jsr decsp8 ldy #$0B jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y and #$8F cmp #$08 bne L0004 ldy #$0B jsr ldaxysp ldy #$01 sta ptr1 stx ptr1+1 lda (ptr1),y and #$20 beq L0003 ; ; return Z_DATA_ERROR; ; .dbg line, "uncompress.c", 24 L0004: ldx #$FF lda #$FD jmp L0002 ; ; if ((((unsigned) source[0] << 8) | (unsigned char) source[1]) % 31) ; .dbg line, "uncompress.c", 25 L0003: ldy #$0B jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y tax stx ptr2+1 ldy #$0B jsr ldaxysp ldy #$01 sta ptr1 stx ptr1+1 ldx #$00 lda (ptr1),y sta ptr2 txa ora ptr2+1 tax lda ptr2 jsr pushax lda #$1F jsr tosumoda0 stx tmp1 ora tmp1 beq L000C ; ; return Z_DATA_ERROR; ; .dbg line, "uncompress.c", 26 ldx #$FF lda #$FD jmp L0002 ; ; *destLen = len = inflatemem(dest, source + 2); ; .dbg line, "uncompress.c", 27 L000C: ldy #$0F jsr pushwysp ldy #$13 jsr pushwysp ldy #$0F jsr ldaxysp clc adc #$02 bcc L0019 inx L0019: jsr _inflatemem ldy #$08 jsr staxysp ldy #$00 jsr staxspidx ; ; ptr = (unsigned char*) source + sourceLen - 4; ; .dbg line, "uncompress.c", 28 ldy #$0A lda (sp),y clc ldy #$08 adc (sp),y pha ldy #$0B lda (sp),y ldy #$09 adc (sp),y tax pla sec sbc #$04 bcs L001C dex L001C: ldy #$04 jsr staxysp ; ; csum = adler32(adler32(0L, Z_NULL, 0), dest, len); ; .dbg line, "uncompress.c", 29 jsr decsp6 jsr decsp6 ldx #$00 ldy #$02 txa sta (sp),y iny sta (sp),y iny sta (sp),y iny sta (sp),y tay sta (sp),y iny sta (sp),y jsr _adler32 ldy #$02 jsr steaxysp ldy #$15 jsr ldaxysp ldy #$00 sta (sp),y iny txa sta (sp),y ldy #$0D jsr ldaxysp jsr _adler32 ldy #$00 jsr steaxysp ; ; if ((unsigned char) csum != ptr[3] ; .dbg line, "uncompress.c", 30 ldy #$00 ldx #$00 lda (sp),y jsr pushax ldy #$07 jsr ldaxysp ; ; || (unsigned char) (csum >> 8) != ptr[2] ; .dbg line, "uncompress.c", 31 ldy #$03 sta ptr1 stx ptr1+1 ldx #$00 lda (ptr1),y jsr tosicmp bne L0026 ldy #$03 jsr ldeaxysp txa ldx sreg jsr pushax ldy #$07 jsr ldaxysp ; ; || (unsigned char) (csum >> 16) != ptr[1] ; .dbg line, "uncompress.c", 32 ldy #$02 sta ptr1 stx ptr1+1 ldx #$00 lda (ptr1),y jsr tosicmp bne L0026 ldy #$03 jsr ldeaxysp ldx sreg+1 lda sreg jsr pushax ldy #$07 jsr ldaxysp ; ; || (unsigned char) (csum >> 24) != ptr[0]) ; .dbg line, "uncompress.c", 33 ldy #$01 sta ptr1 stx ptr1+1 ldx #$00 lda (ptr1),y jsr tosicmp bne L0026 ldy #$03 jsr ldeaxysp jsr pusheax lda #$18 jsr tosshreax jsr pushax ldy #$07 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 ldx #$00 lda (ptr1),y jsr tosicmp beq L0025 ; ; return Z_DATA_ERROR; ; .dbg line, "uncompress.c", 34 L0026: ldx #$FF lda #$FD jmp L0002 ; ; return Z_OK; ; .dbg line, "uncompress.c", 35 L0025: ldx #$00 txa ; ; } ; .dbg line, "uncompress.c", 36 L0002: ldy #$10 jmp addysp .dbg line .endproc