// ============================================
// output - Disassembled Source
// ============================================
// KickAssembler syntax
// Generated by Restore 64 v0.2.1 alpha build 298, 2026-04-11 21:35:36
// https://restore64.dev by datucker / Rabenauge
//
// Load address: $0800  End: $0def  (1520 bytes)
// Note: PRG was crunched, depacked by emulation
// Packer entry: $080b (via BASIC SYS 2059)
// Entry point:  $0818 (2072)
// IRQ handler:  $08c2 (irq_08c2)
//
// Code: 602 bytes, Data: 918 bytes
// Labels: 57, Subroutines: 8
//
// Verification: 4 line(s) auto-corrected to .byte for exact byte matching
//
// Cross-references: all OK
// ============================================


// --- Region $0818-$097f ---
.pc = $0818 "main_0818"
main_0818: {
        jsr $e544
        lda #$00
        sta $d020
        sta $d021
        tax
loop1:
        lda #$0b
        sta $d800,x
        sta $d900,x
        sta $da00,x
        sta $db00,x
        inx
        bne loop1
        jsr sub_09e1
        ldx #$0b
        stx smc_0c41                                // SMC: modifies $0c41
        inx
        stx smc_0c49                                // SMC: modifies $0c49
        lda #$10
        sta smc_0c4d                                // SMC: modifies $0c4d
        lda #$04
        sta smc_0c51                                // SMC: modifies $0c51
        lda #$c8
        sta smc_0c57                                // SMC: modifies $0c57
        jsr sub_0c40
        lda #$0d
        sta smc_0c41                                // SMC: modifies $0c41
        sta smc_0c49                                // SMC: modifies $0c49
        lda #$4c
        sta smc_0c4d                                // SMC: modifies $0c4d
        lda #$03
        sta smc_0c51                                // SMC: modifies $0c51
        lda #$40
        sta smc_0c57                                // SMC: modifies $0c57
        jsr sub_0c40
        lda #$0a
        sta smc_0c41                                // SMC: modifies $0c41
        sta smc_0c49                                // SMC: modifies $0c49
        lda #$1c
        sta smc_0c4d                                // SMC: modifies $0c4d
        lda #$02
        sta smc_0c51                                // SMC: modifies $0c51
        lda #$20
        sta smc_0c57                                // SMC: modifies $0c57
        jsr sub_0c40
        ldx #$00
loop2:
        lda #$07
        sta $d940,x
        lda #$a0
        sta $07c0,x
        lda $0ac0,x
        sta $0798,x
        lda #$00
        sta $db98,x
        sta $dbc0,x
        lda #$06
        sta $d828,x
        inx
        cpx #$28
        bne loop2
        sei
        lda #$08
        sta $0315
        lda #$c2
        sta $0314
        lda #$7f
        sta $dc0d
        lda #$01
        sta $d01a
        cli
        rts
}

irq_08c2:
        lda #$0a
        sta smc_0c3b                                // SMC: modifies $0c3b
        lda #$b6
        sta smc_0c2b                                // SMC: modifies $0c2b
        lda #$39

loc_08ce:
        cmp $d012
        bne loc_08ce
        jsr sub_0c25
        lda #$46

loc_08d8:
        cmp $d012
        bne loc_08d8
        lda #$c8
        sta $d016
        lda #$1f
        sta smc_0c2b                                // SMC: modifies $0c2b
        lda #$98
        sta smc_0c3b                                // SMC: modifies $0c3b
        lda #$49

loc_08ee:
        cmp $d012
        bne loc_08ee
        jsr sub_0c25
        lda #$c8
        sta $d016
        lda #$16
        sta $d018
        lda #$ea

loc_0902:
        cmp $d012
        bne loc_0902
        ldx #$0a

loc_0909:
        dex
        bne loc_0909
        lda #$c1
        sta $d016
        lda #$0f
        sta $d021
        lda #$00
        sta $d020
        lda #$ef

loc_091d:
        cmp $d012
        bne loc_091d
        lda #$c0
        sta $d016
        ldx #$01
        stx $d021
        dex

loc_092d:
.label smc_092e = * + 1
        lda #$0b                                    // !SMC: modified by $0c18
        sta $db9e,x
        inx
        cpx #$1c
        bne loc_092d
        lda #$ff

loc_0939:
        cmp $d012
        bne loc_0939
        lda #$00
        sta $d021
        jsr sub_0c11
        jsr sub_09c0
        lda $fb
        sta $d016
        lda $dc01
        cmp #$ef
        beq loc_0958
        jmp $ea81

loc_0958:
        sei
        jsr $ff5b
        jsr $fd15
        jsr sub_0cb7
        cli
        lda #$00
        sta $c6
        lda #$00
        ldx #$08

loc_096b:
        sta $0277,x
        dex
        bpl loc_096b
        ldx #$64

loc_0973:
        lda dat_097f,x
        sta $033c,x
        dex
        bpl loc_0973
        jmp $033c

dat_097f:
        .byte $78                                   // x

// --- Region $09c0-$09fa ---
.pc = $09c0 "sub_09c0"
// Referenced by: jsr from $0946

sub_09c0:
        dec $fb
        lda $fb
        and #$07
        cmp #$07
        bne loc_09f3
        ldx #$00

loc_09cc:
        lda $0429,x
        sta $0428,x
        inx
        cpx #$28
        bne loc_09cc
.label smc_09d8 = * + 1
.label smc_09d9 = * + 2
        lda $0d60                                   // !SMC: modified by $09e3, $09e8
        sta $044f
        cmp #$e0
        bne loc_09eb
// Referenced by: jsr from $0835

sub_09e1:
        ldx #$50
        stx smc_09d8                                // SMC: modifies $09d8
        ldx #$0d
        stx smc_09d9                                // SMC: modifies $09d9

loc_09eb:
        inc smc_09d8
        bne loc_09f3
        inc smc_09d9

loc_09f3:
        lda $fb
        and #$07
        sta $fb
        rts

dat_09fa:
        .byte $00                                   // .

// --- Region $0c11-$0cca ---
.pc = $0c11 "sub_0c11"
// Referenced by: jsr from $0943

sub_0c11:
.label smc_0c12 = * + 1
        lda $0271                                   // !SMC: modified by $0c21
        cmp #$00
        beq loc_0c1f
        sta smc_092e                                // SMC: modifies $092e
        inc smc_0c12
        rts

loc_0c1f:
        lda #$20
        sta smc_0c12                                // SMC: modifies $0c12
        rts
// Referenced by: jsr from $08d3, $08f3

sub_0c25:
        ldx #$09

loc_0c27:
        dex
        bne loc_0c27

loc_0c2a:
.label smc_0c2b = * + 1
        lda $0a1f,x                                 // !SMC: modified by $08c9, $08e4
        sta $d020
        sta $d021
        ldy $0340,x

loc_0c36:
        dey
        bne loc_0c36
        inx
.label smc_0c3b = * + 1
        cpx #$98                                    // !SMC: modified by $08c4, $08e9
        bne loc_0c2a
        rts

dat_0c3f:
        .byte $00                                   // .
// Referenced by: jsr from $0850, $086a, $0884

sub_0c40:
.label smc_0c41 = * + 1
        lda #$0a                                    // !SMC: modified by $083a, $0855, $086f
        sta $b2
        lda #$00
        sta $b1
.label smc_0c49 = * + 1
        lda #$0a                                    // !SMC: modified by $083e, $0858, $0872
        sta $fc
.label smc_0c4d = * + 1
        lda #$1c                                    // !SMC: modified by $0843, $085d, $0877
        sta $fb
.label smc_0c51 = * + 1
        lda #$02                                    // !SMC: modified by $0848, $0862, $087c
        sta $b0
        sta $fe
.label smc_0c57 = * + 1
        lda #$20                                    // !SMC: modified by $084d, $0867, $0881
        sta $af
        sta $fd

loc_0c5c:
        ldy #$00
        lda ($b1),y
        nop
        nop
        nop
        cmp #$6f
        beq loc_0c72
        sta ($fd),y
        jsr sub_0c93
        jsr sub_0c9c
        jmp loc_0ca5

loc_0c72:
        jsr sub_0c93
        lda ($b1),y
        sta $02
        jsr sub_0c93
        lda ($b1),y
        sta $b4
        ldx $02

loc_0c82:
        lda $b4
        sta ($fd),y
        jsr sub_0c9c
        txa
        dex
        bne loc_0c82
        jsr sub_0c93
        jmp loc_0ca5

// Referenced by: jsr from $0c69, $0c72, $0c79, $0c8d
sub_0c93: {
        inc $b1
        lda $b1
        bne done
        inc $b2
done:
        rts
}
// Referenced by: jsr from $0c6c, $0c86

sub_0c9c:
        inc $fd
        lda $fd
        bne loc_0ca4
        inc $fe

loc_0ca4:
        rts

loc_0ca5:
        clc
        lda $b1
        cmp $fb
        bcc loc_0cb4
        clc
        lda $b2
        cmp $fc
        bcc loc_0cb4
        rts

loc_0cb4:
        jmp loc_0c5c
// Referenced by: jsr from $095f

sub_0cb7:
        jsr $fda3
        lda #$01
        sta $0286
        jsr $e544
        lda #$06
        sta $d020
        sta $d021
        rts

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

// --- Region $0801-$0817 ---
.pc = $0801 "dat_0801"

dat_0801:
        // === BASIC loader stub ===
        .byte $16,$08                                                     // [corrected] was: .byte $0b,$08                               // next line pointer ($080b)
        .byte $c9,$07                                                     // [corrected] was: .byte $00,$00                               // line number 0
        .byte $9e                                   // SYS token
        .text "2072"                                // SYS 2072 → main_0818
        .byte $28                                                         // [corrected] was: .byte $00                                   // end of line
        .byte $43,$29                                                     // [corrected] was: .byte $00,$00                               // end of BASIC program
        .text "SMASHER!"
        .byte $00,$00,$00

// --- Region $0980-$09bf ---
.pc = $0980 "Program $0980"
        .byte $a9,$34,$85,$01,$a0,$c9,$a2,$00,$bd,$e0,$0d,$9d,$00,$08,$e8,$d0 // .4..............
        .byte $f7,$ee,$47,$03,$ee,$4a,$03,$88,$d0,$ec,$a9,$37,$85,$01,$58,$a9 // ..G..J.....7..X.
        .byte $01,$a2,$08,$85,$ae,$86,$af,$85,$2d,$86,$2e,$4c,$e2,$fc,$00,$00 // ........-..L....
        .fill 16, $00

// --- Region $09fb-$0ae7 ---
.pc = $09fb "Program $09fb"
        .byte $00,$00,$00,$00,$00,$6f,$10,$0b,$04,$04,$0c,$0c,$0f,$0f,$07,$07 // .....o..........
        .byte $0d,$0d,$6f,$04,$01,$0d,$0d,$07,$07,$0f,$0f,$0c,$0c,$04,$04,$6f // ..o............o
        .byte $37,$0b,$00,$00,$00,$00,$09,$00,$09,$08,$00,$09,$08,$05,$00,$09 // 7...............
        .byte $08,$05,$0d,$0f,$0c,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0d,$0b,$0b,$0b // ................
        .byte $0b,$0b,$0b,$0b,$07,$0b,$0b,$0b,$0b,$0b,$0b,$07,$0d,$0b,$0b,$0b // ................
        .fill 10, $0b
        .byte $07,$07,$01,$0b,$0b,$0b,$0b,$0b,$07,$0d,$01,$0b,$0b,$0b,$0b,$0f // ................
        .byte $07,$07,$01,$0b,$0b,$0b,$0b,$07,$07,$01,$01,$0b,$0b,$0b,$0f,$0f // ................
        .byte $07,$07,$01,$0b,$0b,$0b,$0f,$07,$07,$01,$01,$0b,$0b,$0c,$0f,$0f // ................
        .byte $07,$07,$01,$0b,$0b,$0f,$0f,$07,$07,$01,$01,$0b,$0c,$0c,$0f,$0f // ................
        .byte $07,$07,$01,$0b,$0c,$0f,$0f,$07,$07,$01,$01,$0b,$0b,$0b,$0b,$0b // ................
        .byte $0b,$0b,$0c,$0f,$07,$0f,$0a,$02,$00,$0f,$0a,$02,$00,$0a,$02,$00 // ................
        .byte $02,$00,$0e,$0e,$03,$03,$0d,$0d,$01,$01,$00,$a0,$a0,$a0,$a0,$a0 // ................
        .byte $a0,$a0,$a0,$ad,$aa,$9d,$be,$c1,$c4,$c4,$c7,$c1,$d2,$a0,$d0,$cc // ................
        .byte $d5,$d3,$a0,$cf,$ce,$c5,$a1,$bc,$9b,$aa,$ad,$a0,$a0,$a0,$a0,$a0 // ................
        .byte $a0,$a0,$a0                           // ...

// --- Region $0b00-$0c10 ---
.pc = $0b00 "dat_0b00"

dat_0b00:
        .byte $6f,$08,$e4,$6f,$05,$a0,$6f,$05,$e4,$6f,$05,$a0,$6f,$08,$e4,$6f // o..o..o..o..o..o
        .byte $04,$a0,$6f,$0d,$e4,$6f,$04,$a0,$6f,$06,$e4,$a0,$a0,$a0,$6f,$0a // ..o..o..o.....o.
        .byte $e4,$a0,$a0,$6f,$07,$e4,$6f,$08,$ef,$a0,$a0,$a0,$6f,$07,$ef,$a0 // ...o..o.....o...
        .byte $a0,$a0,$6f,$0a,$ef,$a0,$a0,$6f,$07,$ef,$6f,$0a,$20,$6f,$08,$6f // ..o....o..o. o.o
        .byte $20,$20,$6f,$05,$6f,$6f,$07,$20,$6f,$05,$6f,$20,$20,$20,$6f,$09 //   o.oo. o.o   o.
        .byte $a0,$6f,$04,$f9,$a0,$6f,$04,$f9,$a0,$a0,$6f,$04,$f9,$6f,$08,$a0 // .o...o....o..o..
        .byte $6f,$04,$f9,$a0,$a0,$a0,$6f,$05,$f9,$6f,$04,$a0,$6f,$04,$f9,$a0 // o.....o..o..o...
        .byte $a0,$6f,$04,$f9,$a0,$a0,$6f,$04,$f9,$6f,$08,$a0,$6f,$04,$f9,$a0 // .o....o..o..o...
        .byte $a0,$a0,$f9,$6f,$04,$e2,$a0,$a0,$a0,$6f,$04,$e2,$a0,$a0,$a0,$6f // ...o.....o.....o
        .byte $04,$e2,$a0,$a0,$6f,$04,$e2,$6f,$08,$a0,$6f,$04,$e2,$6f,$0b,$a0 // ....o..o..o..o..
        .byte $6f,$0c,$e2,$a0,$6f,$04,$e2,$6f,$08,$a0,$6f,$04,$e2,$6f,$0b,$a0 // o...o..o..o..o..
        .byte $6f,$0c,$78,$a0,$6f,$04,$78,$6f,$08,$a0,$6f,$04,$78,$6f,$12,$a0 // o.x.o.xo..o.xo..
        .byte $6f,$04,$78,$a0,$a0,$6f,$04,$78,$6f,$08,$a0,$6f,$04,$78,$6f,$12 // o.x..o.xo..o.xo.
        .byte $a0,$6f,$04,$77,$a0,$a0,$6f,$05,$77,$6f,$07,$a0,$6f,$05,$77,$6f // .o.w..o.wo..o.wo
        .byte $11,$a0,$6f,$04,$77,$a0,$a0,$a0,$6f,$0b,$77,$a0,$6f,$07,$77,$6f // ..o.w...o.w.o.wo
        .byte $0e,$a0,$6f,$04,$63,$a0,$a0,$a0,$6f,$0b,$63,$a0,$6f,$07,$63,$6f // ..o.c...o.c.o.co
        .byte $0e,$a0,$6f,$04,$63,$6f,$05,$a0,$6f,$09,$63,$a0,$a0,$a0,$6f,$05 // ..o.co..o.c...o.
        .byte $63                                   // c

// --- Region $0ccb-$0ccb ---
.pc = $0ccb "dat_0ccb"

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

// --- Region $0d00-$0ddf ---
.pc = $0d00 "dat_0d00"

dat_0d00:
        .byte $08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$07 // ..o...o...o...o.
        .byte $08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$07 // ..o...o...o...o.
        .byte $08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$07 // ..o...o...o...o.
        .byte $08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$07 // ..o...o...o...o.
        .byte $08,$01,$6f,$07,$08,$01,$6f,$07,$08,$01,$6f,$06,$08,$00,$00,$00 // ..o...o...o.....
        .byte $a0,$a0,$a0,$a0,$c1,$84,$84,$87,$81,$92,$a0,$97,$81,$93,$a0,$90 // ................
        .byte $81,$83,$8b,$85,$84,$a0,$a7,$8e,$a0,$8c,$85,$96,$85,$8c,$ad,$93 // ................
        .byte $8b,$89,$90,$a0,$89,$8e,$93,$94,$81,$8c,$8c,$85,$84,$a0,$82,$99 // ................
        .byte $a0,$cd,$92,$ae,$c1,$8c,$90,$88,$81,$a0,$a6,$a0,$93,$95,$90,$90 // ................
        .byte $8c,$89,$85,$84,$a0,$82,$99,$a0,$ad,$d4,$d2,$ad,$a0,$a1,$a0,$c7 // ................
        .byte $92,$85,$85,$94,$89,$8e,$87,$93,$a0,$94,$8f,$a0,$81,$8c,$8c,$a0 // ................
        .byte $8f,$95,$92,$a0,$86,$81,$8e,$93,$a0,$a1,$a0,$c6,$b4,$c3,$c7,$ad // ................
        .byte $8d,$8f,$92,$85,$a0,$90,$8f,$97,$85,$92,$a0,$89,$93,$8e,$a7,$94 // ................
        .byte $a0,$90,$8f,$93,$93,$89,$82,$8c,$85,$a1,$a0,$a0,$a0,$a0,$a0,$e0 // ................
