// ============================================
// output - Disassembled Source
// ============================================
// KickAssembler syntax
// Generated by Restore 64 v0.2.1 alpha build 298, 2026-04-11 21:36:40
// https://restore64.dev by datucker / Rabenauge
//
// Load address: $0700  End: $10ff  (2560 bytes)
// Crunched with Exomizer v2/v3 — depacked by emulation
// Packer entry: $080b (via BASIC SYS 2059)
// Entry point:  $0c00 (3072)
// IRQ handler:  $0e3c (irq_0e3c)
//
// Code: 392 bytes, Data: 2168 bytes
// Labels: 51, Subroutines: 4
//
// Cross-references: all OK
// ============================================


// --- Region $0c00-$0cd6 ---
.pc = $0c00 "main_0c00"

main_0c00:
        sei
        jsr $ff84
        ldy #$01

loc_0c06:
        bit $d011
        bmi loc_0c06

loc_0c0b:
        bit $d011
        bpl loc_0c0b
        ldx #$72

loc_0c12:
        dex
        bpl loc_0c12
        bit $d011
        bmi loc_0c1b
        dey

loc_0c1b:
        sty $02a6
        jsr sub_0d1f
        jsr sub_0cb5
        ldx #$02

loc_0c26:
        lda $00,x
        sta $0400,x
        inx
        bne loc_0c26
        ldx #$0e

loc_0c30:
        lda $0d37,x
        ldy $02a6
        bne loc_0c3b
        lda $0d46,x

loc_0c3b:
        ora $0b00,x
        sta $0b00,x
        dex
        bpl loc_0c30
        ldy #$00
        ldx #$00

loc_0c48:
        lda dat_0cd7,y
        sta $10,x
        lda #$01
        sta $18,x
        iny
        iny
        inx
        cpx #$08
        bne loc_0c48
        sei
        lda #$35
        sta $01
        lda #$3c
        sta $fffe
        lda #$0e
        sta $ffff
        ldx #$2f

loc_0c69:
        lda $0cd6,x
        sta $cfff,x
        lda #$20
        sta $033f,x
        dex
        bne loc_0c69
        ldy #$2f
        ldx #$08

loc_0c7b:
        tya
        sta $07f7,x
        dey
        dex
        bne loc_0c7b
        jsr sub_0e33
        ldx #$18

loc_0c88:
        lda $0d06,x
        sta $d400,x
        dex
        bpl loc_0c88
        lda #$66
        sta smc_0e46                                // SMC: modifies $0e46
        lda #$0e
        sta smc_0e47                                // SMC: modifies $0e47
        lda #$1d
        sta $03
        lda #$06
        sta smc_0e9d                                // SMC: modifies $0e9d
        sta $07
        sta $08
        lda #$01
        sta $06
        sta $dc0d
        lda $dc0d
        cli

loc_0cb3:
        bne loc_0cb3
// Referenced by: jsr from $0c21

sub_0cb5:
        ldx #$00

loc_0cb7:
        lda #$00
        sta $d800,x
        sta $d900,x
        sta $da00,x
        sta $db00,x
        lda #$20
        sta $0400,x
        sta $0500,x
        sta $0600,x
        sta $06e8,x
        inx
        bne loc_0cb7
        rts

// --- Region $0d1f-$0d2f ---
.pc = $0d1f "sub_0d1f"
// Referenced by: jsr from $0c1e; branch from $0d22

sub_0d1f:
        lda $d012
        bne sub_0d1f
        sta $d011
        ldx #$18

loc_0d29:
        sta $d400,x
        dex
        bpl loc_0d29
        rts

// --- Region $0e33-$0ed2 ---
.pc = $0e33 "sub_0e33"
// Referenced by: jsr from $0c83

sub_0e33:
        lda #$7b
        sta $04
        lda #$0f
        sta $05
        rts

irq_0e3c:
        sta smc_0e60                                // SMC: modifies $0e60
        stx smc_0e62                                // SMC: modifies $0e62
        sty smc_0e64                                // SMC: modifies $0e64
.label smc_0e46 = * + 1
.label smc_0e47 = * + 2
        jsr sub_0e66                                // !SMC: modified by $0c93, $0c98
        lda #$1b
        sta $d011
        lda #$fa
        ldx #$3c
        ldy #$0e
        sta $d012
        stx $fffe
        sty $ffff
        inc $d019
.label smc_0e60 = * + 1
        lda #$00                                    // !SMC: modified by $0e3c
.label smc_0e62 = * + 1
        ldx #$00                                    // !SMC: modified by $0e3f
.label smc_0e64 = * + 1
        ldy #$00                                    // !SMC: modified by $0e42
        rti
// Referenced by: jsr from $0e45

sub_0e66:
        lda $03
        beq loc_0e9c
        dec $03
        ldx #$00

loc_0e6e:
        sec
        lda $10,x
        sbc #$07
        sta $10,x
        bcs loc_0e79
        dec $18,x

loc_0e79:
        inx
        cpx #$08
        bne loc_0e6e
        ldx #$00

loc_0e80:
        lda $18,x
        lsr
        ror $d010
        inx
        cpx #$08
        bne loc_0e80
        ldy #$00
        ldx #$00

loc_0e8f:
        lda $10,x
        sta $d000,y
        iny
        iny
        inx
        cpx #$08
        bne loc_0e8f
        rts

loc_0e9c:
.label smc_0e9d = * + 1
        ldy #$06                                    // !SMC: modified by $0ca1
        cpy #$1e
        beq dat_0ed3
        inc smc_0e9d
        lda $0d55,y
        clc
        adc #$1e
        sta $d000
        clc
        adc #$18
        sta $d002
        clc
        adc #$18
        sta $d004
        clc
        adc #$18
        sta $d006
        clc
        adc #$15
        sta $d00a
        sta $d00c
        sta $d00e
        clc
        adc #$03
        sta $d008
        rts

// ============================================
// Data blocks
// ============================================

// --- Region $0800-$0aea ---
.pc = $0800 "dat_0800"

dat_0800:
        .byte $3c,$66,$c6,$d6,$dc,$c0,$78,$00,$7c,$c6,$c6,$fe,$ee,$ee,$ee,$00 // <f....x.|.......
        .byte $fc,$c6,$c6,$fc,$ee,$ee,$fc,$00,$7c,$c6,$c6,$c0,$e0,$ee,$7c,$00 // ........|.....|.
        .byte $fc,$c6,$c6,$c6,$ee,$ee,$fc,$00,$fe,$c0,$c0,$f8,$e0,$e0,$fe,$00 // ................
        .byte $fe,$c0,$c0,$f8,$e0,$e0,$e0,$00,$7c,$c6,$c0,$de,$ee,$ee,$7c,$00 // ........|.....|.
        .byte $c6,$c6,$c6,$fe,$ee,$ee,$ee,$00,$78
        .text "00088"
        .byte $78,$00
        .byte $06,$06,$06,$06,$ee,$ee,$7c,$00,$c6,$c6,$cc,$f8,$ec,$ee,$ee,$00 // ......|.........
        .byte $c0,$c0,$c0,$c0,$e0,$ee,$fe,$00,$c6,$ee,$fe,$d6,$ee,$ee,$ee,$00 // ................
        .byte $ce,$ee,$f6,$de,$ee,$ee,$ee,$00,$7c,$c6,$c6,$c6,$ee,$ee,$7c,$00 // ........|.....|.
        .byte $fc,$c6,$c6,$fc,$e0,$e0,$e0,$00,$7c,$c6,$c6,$c6,$ee,$e3,$7c,$00 // ........|.....|.
        .byte $fc,$c6,$c6,$fc,$ee,$ee,$ee,$00,$7c,$c6,$c0,$7c,$0e,$ee,$7c,$00 // ........|..|..|.
        .byte $fc                                   // .

txt_08a1:
        .text "000888"
        .byte $00                                   // string terminator
        .byte $c6,$c6,$c6,$c6,$ee,$ee,$7c,$00,$ee,$ee,$c6,$c6,$ee,$7c,$38,$00 // ......|......|8.
        .byte $ee,$ee,$c6,$d6,$fe,$ee,$c6,$00,$ee,$c6,$6c,$38,$6c,$ee,$ee,$00 // ..........l8l...
        .byte $ee,$c6,$7c
        .text "8888"
        .byte $00,$fe,$ce,$1c
        .byte $38,$70,$ee,$fe,$00

txt_08d8:
        .text "<00088<"
        .byte $00                                   // string terminator
        .byte $7c,$c6,$c0,$78,$e0,$70,$fe,$00,$70
        .text "00088"
        .byte $78,$00
        .byte $10,$38,$7c,$fe,$38,$38,$38,$00,$10,$30,$7e,$fe,$7e,$30,$10,$00 // .8|.888..0~.~0..
        .fill 8, $00
        .text "00008"
        .byte $00
        .byte $38,$00
        .byte $36,$36,$6c,$00,$00,$00,$00,$00
        .byte $6c,$fe,$6c,$6c,$fe,$6c,$6c,$00,$30,$f8,$b0,$fc,$34,$fc,$30,$00 // l.ll.ll.0...4.0.
        .byte $c4,$cc,$18,$30,$60,$cc,$8c,$00,$00,$00,$00,$00,$00,$00,$00,$00 // ...0`...........
        .byte $30,$30,$60,$00,$00,$00,$00,$00,$1c
        .text "00088"
        .byte $1c,$00
        .byte $70,$18,$18,$18,$1c,$1c,$78,$00,$00,$00,$00,$00,$00,$00,$00,$00 // p.....x.........
        .byte $00,$30,$30,$fc,$30,$30,$00,$00,$00,$00,$00,$00,$00,$30,$30,$60 // .00.00.......00`
        .byte $00,$00,$00,$fc,$00,$00,$00,$00,$00,$00,$00,$00,$00,$60,$60,$00 // .............``.
        .byte $06,$0e,$1c,$38,$70,$e0,$c0,$00,$7c,$c6,$c6,$c6,$ee,$ee,$7c,$00 // ...8p...|.....|.
        .byte $18,$38,$18,$18,$1c,$1c,$3c,$00,$7c,$c6,$06,$7c,$e0,$e0,$fe,$00 // .8....<.|..|....
        .byte $7c,$c6,$06,$7c,$0e,$ee,$7c,$00,$c6,$c6,$c6,$fe,$0e,$0e,$0e,$00 // |..|..|.........
        .byte $fe,$c6,$c0,$7c,$0e,$ee,$7c,$00,$7c,$c6,$c0,$fc,$ee,$ee,$7c,$00 // ...|..|.|.....|.
        .byte $fe,$ce,$1c,$38,$70,$e0,$e0,$00,$7c,$c6,$c6,$7c,$ee,$ee,$7c,$00 // ...8p...|..|..|.
        .byte $7c,$c6,$c6,$7e,$0e,$ee,$7c,$00,$00,$00,$30,$00,$38,$00,$00,$00 // |..~..|...0.8...
        .fill 9, $00
        .byte $0e,$38,$e0,$38,$0e,$00,$00,$00,$00,$fc,$00,$fc,$00,$00,$00,$00 // .8.8............
        .byte $e0,$38,$0e,$38,$e0,$00,$00,$7c,$c6,$06,$1c,$38,$00,$38,$00,$00 // .8.8...|...8.8..
        .byte $3f,$ff,$00,$3f,$ff,$00,$3c,$00,$f0,$3c,$00,$f8,$3c,$ff,$fc,$3c // ?..?..<..<..<..<
        .byte $ff,$fe,$3c,$f1,$ff,$3c,$f1,$ff,$bc,$f1,$f7,$fc,$f1,$f3,$fc,$f1 // ..<..<..........
        .byte $f1,$fc,$f1,$f0,$fc,$ff,$f0,$7c,$ff,$00,$00,$00,$00,$00,$00,$00 // .......|........
        .fill 15, $00
        .byte $ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$78,$00,$00,$78,$e7,$fe,$79,$e7 // ........x..x..y.
        .byte $fe,$79,$e7,$80,$79,$e7,$80,$79,$e7,$fe,$79,$e7,$fe,$79,$e0,$1e // .y..y..y..y..y..
        .byte $79,$e0,$1e,$79,$e7,$fe,$79,$e7,$fe,$79,$00,$00,$00,$00,$00,$00 // y..y..y..y......
        .fill 16, $00
        .byte $ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00,$00,$00,$00,$ff,$cf,$03,$ff // ................
        .byte $cf,$03,$e3,$cf,$03,$e3,$cf,$03,$ff,$cf,$03,$ff,$cf,$03,$e3,$cf // ................
        .byte $03,$e3,$cf,$03,$e3,$cf,$f3,$e3,$cf,$f3,$00,$00,$00,$00,$00,$00 // ................
        .fill 16, $00
        .byte $ff,$fe,$78,$ff,$fe,$7c,$00,$00,$7e,$00,$00,$7f,$ff,$9e,$7f,$ff // ..x..|..~.......
        .byte $9e,$7b,$c0,$1e,$79,$c0,$1e,$78,$df,$9e,$7f,$df,$9e,$7f,$c7,$9e // .{..y..x........
        .byte $78,$c7,$9e,$78,$ff,$9e,$78,$ff,$9e,$78 // x..x..x..x

dat_0aea:
        // === Fill data (1 bytes, $0aea-$0aea) ===
        .byte $00                                   // .

// --- Region $0b0c-$0b64 ---
.pc = $0b0c "dat_0b0c"

dat_0b0c:
        .byte $80,$00,$00,$c0,$00,$00,$e0,$00,$00,$f0,$00,$00,$f8,$00,$00,$fc // ................
        .byte $00,$00,$1e,$00,$00,$0f,$00,$00,$07,$80,$00,$03,$c0,$00,$00,$00 // ................
        .fill 20, $00
        .fill 9, $ff
        .byte $aa,$aa,$aa,$2a,$aa,$aa,$2a,$aa,$aa,$00,$00,$00,$00,$00,$00,$00 // ...*..*.........
        .byte $00,$00,$05,$55,$55,$05,$55,$55,$05,$55,$55 // ...UU.UU.UU

dat_0b64:
        // === Fill data (1 bytes, $0b64-$0b64) ===
        .byte $00                                   // .

// --- Region $0b92-$0b9b ---
.pc = $0b92 "dat_0b92"

dat_0b92:
        .byte $1f,$ff,$ff,$1f,$ff,$ff,$1f,$ff,$ff   // .........

dat_0b9b:
        // === Fill data (1 bytes, $0b9b-$0b9b) ===
        .byte $00                                   // .

// --- Region $0be4-$0bff ---
.pc = $0be4 "dat_0be4"

dat_0be4:
        .byte $03,$ff,$ff,$03,$ff,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 // ................
        .fill 12, $00

// --- Region $0cd7-$0d1e ---
.pc = $0cd7 "dat_0cd7"

dat_0cd7:
        .byte $6a,$8f,$82,$8f,$9a,$8f,$b2,$8f,$ca,$8f,$c7,$8f,$c7,$8f,$c7,$8f // j...............
        .byte $ff,$0b,$10,$00,$00,$ff,$00,$00,$12,$0f,$01,$00,$20,$e0,$00,$00 // ............ ...
        .byte $00,$00,$00,$00,$00,$07,$02,$01,$01   // .........

spr_0d00:
        // === Sprite data (31 bytes, $0d00-$0d1e) ===
        .byte $01,$01,$01                           // .......#.......#.......#
        .byte $08,$05,$06                           // ....#........#.#.....##.
        .byte $ff,$01,$88                           // ########.......##...#...
        .byte $88,$41,$f1                           // #...#....#.....#####...#
        .byte $f9,$00,$f0                           // #####..#........####....
        .byte $00,$00,$81                           // ................#......#
        .byte $d0,$1a,$00                           // ##.#.......##.#.........
        .byte $e9,$00,$00                           // ###.#..#................
        .byte $14,$c1,$89                           // ...#.#..##.....##...#..#
        .byte $00,$11,$f1                           // ...........#...#####...#
        .byte $1f

// --- Region $0d30-$0e32 ---
.pc = $0d30 "spr_0d30"

spr_0d30:
        // === Sprite data (16 bytes, $0d30-$0d3f) ===
        .byte $00,$09,$02                           // ............#..#......#.
        .byte $05,$0f,$07                           // .....#.#....####.....###
        .byte $0d,$01,$c6                           // ....##.#.......###...##.
        .byte $40,$01,$29                           // .#.............#..#.#..#
        .byte $40,$01,$cf                           // .#.............###..####
        .byte $40
        .byte $01,$09,$40,$01,$09,$70,$01,$2e,$73,$01,$a4,$84,$01,$e4,$64,$01 // ..@..p..s.....d.
        .byte $64,$14,$01,$24,$e3,$b0,$a7,$9e,$96,$8d,$85,$7c,$74,$6c,$64,$5d // d..$.......|tld]

txt_0d60:
        .text "UNG"
        .byte $40                                   // @ character
        .text "93-'"
        .byte $22                                   // double quote character
        .byte $1d,$19,$14,$10,$0d,$0a,$07,$05,$03,$01,$00,$00,$a9,$80,$8d,$0b // ................
        .byte $d4,$ad,$01,$dc,$c9,$ef,$d0,$0e,$a9,$8f,$8d,$46,$0e,$a9,$0d,$8d // ...........F....
        .byte $47,$0e,$a9,$00,$85,$08,$a6,$06,$f0,$12,$c6,$06,$e0,$07,$b0,$0b // G...............
        .byte $bd,$2f,$0d,$a0,$13,$99,$f2,$d9,$88,$10,$fa,$60,$a5,$07,$d0,$10 // ./.........`....
        .byte $a9,$e1,$8d,$46,$0e,$a9,$0e,$8d,$47,$0e,$a9,$40,$8d,$04,$d4,$60 // ...F....G..@...`
        .byte $a2,$00,$e8,$e0,$1e,$d0,$18,$a9,$14,$8d,$12,$d4,$a5,$08,$d0,$02 // ................
        .byte $85,$07,$a9,$1e,$85,$06,$20,$12,$0e,$a2,$ff,$8e,$ba,$0d,$60,$8e // ...... .......`.
        .byte $ba,$0d,$ad,$40,$03,$c9,$20,$f0,$05,$a9,$15,$8d,$12,$d4,$bd,$55 // ...@.. ........U
        .byte $0d,$48,$aa,$29,$07,$49,$0f,$8d,$16,$d0,$8a // .H.).I.....

txt_0df4:
        .text "JJJ"
        .byte $a8                                   // '(' | $80 (end-of-string marker)
        .byte $a2,$00,$b9,$40,$03,$9d,$f2,$05,$c8,$e8,$e0,$16,$d0,$f4,$68,$4a // ...@..........hJ
        .byte $4a,$4a,$4a,$8d,$01,$d4,$a9,$01,$d0,$8a,$a0,$00,$b1,$04,$d0,$03 // JJJ.............
        .byte $20,$33,$0e,$a0,$13,$b1,$04,$29,$3f,$99,$40,$03,$88,$10,$f6,$a5 //  3.....)?.@.....
        .byte $04,$18,$69,$14,$90,$02,$e6,$05,$85,$04,$60 // ..i.......`

// --- Region $0ed3-$0f50 ---
.pc = $0ed3 "dat_0ed3"

dat_0ed3:
        .byte $8c,$e2,$0e,$a9,$75,$8d,$46,$0e,$a9,$0d,$8d,$47,$0e,$60,$a0,$00 // ....u.F....G.`..
        .byte $c0,$05,$f0,$06,$ce,$e2,$0e,$4c,$a5,$0e,$a5,$03,$c9,$1d,$f0,$17 // .......L........
        .byte $e6,$03,$a2,$00,$18,$b5,$10,$69,$07,$95,$10,$90,$02,$f6,$18,$e8 // .......i........
        .byte $e0,$08,$d0,$f0,$4c,$7e,$0e,$78,$a9,$37,$85,$01,$20,$1f,$0d,$a2 // ....L~.x.7.. ...
        .byte $7f,$8e,$0d,$dc,$8e,$0d,$dd,$ae,$0d,$dc,$ae,$0d,$dd,$8d,$1a,$d0 // ................
        .byte $ce,$19,$d0,$a2,$02,$bd,$00,$04,$95,$00,$e8,$d0,$f8,$20,$b5,$0c // ............. ..
        .byte $a2,$ff,$8e,$ff,$ff,$a9,$48,$8d,$fe,$ff,$9a,$20,$bf,$e3,$20,$84 // ......H.... .. .
        .byte $ff,$20,$a0,$e5,$78,$a9,$08,$8d,$00,$de,$4c,$e2,$fc // . ..x.....L..

dat_0f50:
        // === Fill data (1 bytes, $0f50-$0f50) ===
        .byte $00                                   // .

// --- Region $0f7b-$107f ---
.pc = $0f7b "txt_0f7b"

txt_0f7b:
        .text "       #149         GIANTS REVENGE +3D  (C) 1984            THOR COMPUTER SOFTW.CRACKED BY 6R6                              GREETINGS:        REMEMBER, TRIAD    ONSLAUGHT, SCS+TRC  FAIRLIGHT, HOKUTO   HITMEN, EXCESS,     RADWAR AND FRIENDS.                    "
        .byte $00                                   // string terminator
