1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-08-08 13:25:12 +00:00
Files
kickc/src/test/ref/line-anim.log

5998 lines
335 KiB
Plaintext

Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
Inlined call call vicSelectGfxBank (byte*) SCREEN
Inlined call (byte~) main::$4 ← call toD018 (byte*) SCREEN (byte*) BITMAP
Inlined call (word~) point_init::$7 ← call abs16s (signed word) point_init::x_diff
Inlined call (word~) point_init::$8 ← call abs16s (signed word) point_init::y_diff
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
to:@11
divr16u: scope:[divr16u] from divr16s::@4
(word) divr16u::divisor#5 ← phi( divr16s::@4/(word) divr16u::divisor#0 )
(word) divr16u::dividend#4 ← phi( divr16s::@4/(word) divr16u::dividend#1 )
(word) divr16u::rem#8 ← phi( divr16s::@4/(word) divr16u::rem#3 )
(word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
(byte) divr16u::i#5 ← phi( divr16u/(byte) divr16u::i#0 divr16u::@3/(byte) divr16u::i#1 )
(word) divr16u::divisor#3 ← phi( divr16u/(word) divr16u::divisor#5 divr16u::@3/(word) divr16u::divisor#6 )
(word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 )
(word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#4 divr16u::@3/(word) divr16u::dividend#5 )
(word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#8 divr16u::@3/(word) divr16u::rem#9 )
(word~) divr16u::$0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
(word) divr16u::rem#0 ← (word~) divr16u::$0
(byte~) divr16u::$1 ← > (word) divr16u::dividend#2
(byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
(bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16u::$4 ← ! (bool~) divr16u::$3
if((bool~) divr16u::$4) goto divr16u::@2
to:divr16u::@4
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
(byte) divr16u::i#3 ← phi( divr16u::@1/(byte) divr16u::i#5 divr16u::@4/(byte) divr16u::i#6 )
(word) divr16u::divisor#1 ← phi( divr16u::@1/(word) divr16u::divisor#3 divr16u::@4/(word) divr16u::divisor#4 )
(word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
(word) divr16u::quotient#3 ← phi( divr16u::@1/(word) divr16u::quotient#6 divr16u::@4/(word) divr16u::quotient#7 )
(word) divr16u::dividend#3 ← phi( divr16u::@1/(word) divr16u::dividend#2 divr16u::@4/(word) divr16u::dividend#6 )
(word~) divr16u::$6 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
(word) divr16u::dividend#0 ← (word~) divr16u::$6
(word~) divr16u::$7 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
(word) divr16u::quotient#1 ← (word~) divr16u::$7
(bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1
(bool~) divr16u::$9 ← ! (bool~) divr16u::$8
if((bool~) divr16u::$9) goto divr16u::@3
to:divr16u::@5
divr16u::@4: scope:[divr16u] from divr16u::@1
(byte) divr16u::i#6 ← phi( divr16u::@1/(byte) divr16u::i#5 )
(word) divr16u::divisor#4 ← phi( divr16u::@1/(word) divr16u::divisor#3 )
(word) divr16u::quotient#7 ← phi( divr16u::@1/(word) divr16u::quotient#6 )
(word) divr16u::dividend#6 ← phi( divr16u::@1/(word) divr16u::dividend#2 )
(word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 )
(word/dword~) divr16u::$5 ← (word) divr16u::rem#6 | (byte/signed byte/word/signed word/dword/signed dword) 1
(word) divr16u::rem#1 ← (word/dword~) divr16u::$5
to:divr16u::@2
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
(word) divr16u::divisor#6 ← phi( divr16u::@2/(word) divr16u::divisor#1 divr16u::@5/(word) divr16u::divisor#2 )
(word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
(word) divr16u::dividend#5 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#7 )
(word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
(byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 )
(byte) divr16u::i#1 ← (byte) divr16u::i#2 + rangenext(0,15)
(bool~) divr16u::$11 ← (byte) divr16u::i#1 != rangelast(0,15)
if((bool~) divr16u::$11) goto divr16u::@1
to:divr16u::@6
divr16u::@5: scope:[divr16u] from divr16u::@2
(word) divr16u::dividend#7 ← phi( divr16u::@2/(word) divr16u::dividend#0 )
(byte) divr16u::i#4 ← phi( divr16u::@2/(byte) divr16u::i#3 )
(word) divr16u::divisor#2 ← phi( divr16u::@2/(word) divr16u::divisor#1 )
(word) divr16u::rem#7 ← phi( divr16u::@2/(word) divr16u::rem#5 )
(word) divr16u::quotient#4 ← phi( divr16u::@2/(word) divr16u::quotient#1 )
(word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#4
(word~) divr16u::$10 ← (word) divr16u::rem#7 - (word) divr16u::divisor#2
(word) divr16u::rem#2 ← (word~) divr16u::$10
to:divr16u::@3
divr16u::@6: scope:[divr16u] from divr16u::@3
(word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 )
(word) divr16u::return#0 ← (word) divr16u::quotient#5
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
(word) divr16u::return#3 ← phi( divr16u::@6/(word) divr16u::return#0 )
(word) divr16u::return#1 ← (word) divr16u::return#3
return
to:@return
divr16s: scope:[divr16s] from point_init::@4
(signed word) divr16s::divisor#6 ← phi( point_init::@4/(signed word) divr16s::divisor#0 )
(signed word) divr16s::rem#1 ← phi( point_init::@4/(signed word) divr16s::rem#0 )
(signed word) divr16s::dividend#1 ← phi( point_init::@4/(signed word) divr16s::dividend#0 )
(byte) divr16s::neg#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) divr16s::dividendu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) divr16s::remu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16s::$0 ← (signed word) divr16s::dividend#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16s::$1 ← (signed word) divr16s::rem#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
if((bool~) divr16s::$2) goto divr16s::@1
to:divr16s::@7
divr16s::@1: scope:[divr16s] from divr16s
(signed word) divr16s::divisor#4 ← phi( divr16s/(signed word) divr16s::divisor#6 )
(signed word) divr16s::rem#2 ← phi( divr16s/(signed word) divr16s::rem#1 )
(signed word) divr16s::dividend#2 ← phi( divr16s/(signed word) divr16s::dividend#1 )
(signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#2
(word~) divr16s::$6 ← ((word)) (signed word~) divr16s::$5
(word) divr16s::dividendu#1 ← (word~) divr16s::$6
(signed word~) divr16s::$7 ← - (signed word) divr16s::rem#2
(word~) divr16s::$8 ← ((word)) (signed word~) divr16s::$7
(word) divr16s::remu#1 ← (word~) divr16s::$8
(byte) divr16s::neg#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1
to:divr16s::@2
divr16s::@7: scope:[divr16s] from divr16s
(byte) divr16s::neg#7 ← phi( divr16s/(byte) divr16s::neg#0 )
(signed word) divr16s::divisor#5 ← phi( divr16s/(signed word) divr16s::divisor#6 )
(signed word) divr16s::rem#3 ← phi( divr16s/(signed word) divr16s::rem#1 )
(signed word) divr16s::dividend#3 ← phi( divr16s/(signed word) divr16s::dividend#1 )
(word~) divr16s::$3 ← ((word)) (signed word) divr16s::dividend#3
(word) divr16s::dividendu#2 ← (word~) divr16s::$3
(word~) divr16s::$4 ← ((word)) (signed word) divr16s::rem#3
(word) divr16s::remu#2 ← (word~) divr16s::$4
to:divr16s::@2
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7
(word) divr16s::remu#6 ← phi( divr16s::@1/(word) divr16s::remu#1 divr16s::@7/(word) divr16s::remu#2 )
(word) divr16s::dividendu#6 ← phi( divr16s::@1/(word) divr16s::dividendu#1 divr16s::@7/(word) divr16s::dividendu#2 )
(byte) divr16s::neg#5 ← phi( divr16s::@1/(byte) divr16s::neg#1 divr16s::@7/(byte) divr16s::neg#7 )
(signed word) divr16s::divisor#1 ← phi( divr16s::@1/(signed word) divr16s::divisor#4 divr16s::@7/(signed word) divr16s::divisor#5 )
(word) divr16s::divisoru#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16s::$9 ← (signed word) divr16s::divisor#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool~) divr16s::$9) goto divr16s::@3
to:divr16s::@9
divr16s::@3: scope:[divr16s] from divr16s::@2
(word) divr16s::remu#4 ← phi( divr16s::@2/(word) divr16s::remu#6 )
(word) divr16s::dividendu#4 ← phi( divr16s::@2/(word) divr16s::dividendu#6 )
(byte) divr16s::neg#3 ← phi( divr16s::@2/(byte) divr16s::neg#5 )
(signed word) divr16s::divisor#2 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 )
(signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#2
(word~) divr16s::$12 ← ((word)) (signed word~) divr16s::$11
(word) divr16s::divisoru#1 ← (word~) divr16s::$12
(byte/word/dword~) divr16s::$13 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) divr16s::neg#2 ← (byte/word/dword~) divr16s::$13
to:divr16s::@4
divr16s::@9: scope:[divr16s] from divr16s::@2
(byte) divr16s::neg#8 ← phi( divr16s::@2/(byte) divr16s::neg#5 )
(word) divr16s::remu#5 ← phi( divr16s::@2/(word) divr16s::remu#6 )
(word) divr16s::dividendu#5 ← phi( divr16s::@2/(word) divr16s::dividendu#6 )
(signed word) divr16s::divisor#3 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 )
(word~) divr16s::$10 ← ((word)) (signed word) divr16s::divisor#3
(word) divr16s::divisoru#2 ← (word~) divr16s::$10
to:divr16s::@4
divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@9
(byte) divr16s::neg#6 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#8 )
(word) divr16s::remu#3 ← phi( divr16s::@3/(word) divr16s::remu#4 divr16s::@9/(word) divr16s::remu#5 )
(word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#1 divr16s::@9/(word) divr16s::divisoru#2 )
(word) divr16s::dividendu#3 ← phi( divr16s::@3/(word) divr16s::dividendu#4 divr16s::@9/(word) divr16s::dividendu#5 )
(word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
(word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
(word) divr16u::rem#3 ← (word) divr16s::remu#3
call divr16u
(word) divr16u::return#2 ← (word) divr16u::return#1
to:divr16s::@15
divr16s::@15: scope:[divr16s] from divr16s::@4
(byte) divr16s::neg#4 ← phi( divr16s::@4/(byte) divr16s::neg#6 )
(word) divr16u::return#4 ← phi( divr16s::@4/(word) divr16u::return#2 )
(word~) divr16s::$14 ← (word) divr16u::return#4
(word) divr16s::resultu#0 ← (word~) divr16s::$14
(bool~) divr16s::$15 ← (byte) divr16s::neg#4 == (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool~) divr16s::$15) goto divr16s::@5
to:divr16s::@11
divr16s::@5: scope:[divr16s] from divr16s::@15
(word) divr16s::resultu#1 ← phi( divr16s::@15/(word) divr16s::resultu#0 )
(signed word~) divr16s::$21 ← ((signed word)) (word) divr16s::resultu#1
(signed word) divr16s::return#0 ← (signed word~) divr16s::$21
to:divr16s::@return
divr16s::@11: scope:[divr16s] from divr16s::@15
(word) divr16s::resultu#2 ← phi( divr16s::@15/(word) divr16s::resultu#0 )
(signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#2
(signed word~) divr16s::$19 ← - (signed word~) divr16s::$18
(signed word) divr16s::return#1 ← (signed word~) divr16s::$19
to:divr16s::@return
divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@5
(signed word) divr16s::return#4 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@5/(signed word) divr16s::return#0 )
(signed word) divr16s::return#2 ← (signed word) divr16s::return#4
return
to:@return
@11: scope:[] from @begin
(byte*) BITMAP#0 ← ((byte*)) (word/dword/signed dword) 40960
(byte*) SCREEN#0 ← ((byte*)) (word/dword/signed dword) 34816
(byte) DELAY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
(word[4]) x_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 }
(byte[4]) y_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(word[4]) x_end#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(byte[4]) y_end#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(word[4]) x_cur#0 ← { fill( 4, 0) }
(word[4]) y_cur#0 ← { fill( 4, 0) }
(signed byte[4]) x_add#0 ← { fill( 4, 0) }
(signed byte[4]) y_add#0 ← { fill( 4, 0) }
(byte[4]) delay#0 ← { fill( 4, 0) }
to:@15
main: scope:[main] from @18
(byte*) BITMAP#9 ← phi( @18/(byte*) BITMAP#10 )
(byte*) SCREEN#1 ← phi( @18/(byte*) SCREEN#4 )
asm { sei }
*((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0
*((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0
(byte~) main::$0 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0
(byte~) main::$1 ← (byte~) main::$0 | (byte) VIC_RSEL#0
(byte/word/dword~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3
*((byte*) D011#0) ← (byte/word/dword~) main::$2
(byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) SCREEN#1
to:main::vicSelectGfxBank1
main::vicSelectGfxBank1: scope:[main] from main
(byte*) BITMAP#8 ← phi( main/(byte*) BITMAP#9 )
(byte*) SCREEN#12 ← phi( main/(byte*) SCREEN#1 )
(byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 )
*((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1
to:main::vicSelectGfxBank1_toDd001
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
(byte*) BITMAP#7 ← phi( main::vicSelectGfxBank1/(byte*) BITMAP#8 )
(byte*) SCREEN#10 ← phi( main::vicSelectGfxBank1/(byte*) SCREEN#12 )
(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 )
(word) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
(byte) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word) main::vicSelectGfxBank1_toDd001_$0#0
(byte) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte) main::vicSelectGfxBank1_toDd001_$1#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6
(byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte) main::vicSelectGfxBank1_toDd001_$2#0
(byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0
to:main::vicSelectGfxBank1_toDd001_@return
main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001
(byte*) BITMAP#5 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) BITMAP#7 )
(byte*) SCREEN#7 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SCREEN#10 )
(byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 )
(byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2
to:main::vicSelectGfxBank1_@1
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return
(byte*) BITMAP#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) BITMAP#5 )
(byte*) SCREEN#5 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SCREEN#7 )
(byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 )
(byte) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3
*((byte*) CIA2_PORT_A#0) ← (byte) main::vicSelectGfxBank1_$0#0
to:main::@15
main::@15: scope:[main] from main::vicSelectGfxBank1_@1
(byte*) BITMAP#1 ← phi( main::vicSelectGfxBank1_@1/(byte*) BITMAP#3 )
(byte*) SCREEN#2 ← phi( main::vicSelectGfxBank1_@1/(byte*) SCREEN#5 )
(byte*) main::toD0181_screen#0 ← (byte*) SCREEN#2
(byte*) main::toD0181_gfx#0 ← (byte*) BITMAP#1
to:main::toD0181
main::toD0181: scope:[main] from main::@15
(byte*) SCREEN#13 ← phi( main::@15/(byte*) SCREEN#2 )
(byte*) BITMAP#6 ← phi( main::@15/(byte*) BITMAP#1 )
(byte*) main::toD0181_gfx#1 ← phi( main::@15/(byte*) main::toD0181_gfx#0 )
(byte*) main::toD0181_screen#1 ← phi( main::@15/(byte*) main::toD0181_screen#0 )
(word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1
(word) main::toD0181_$1#0 ← (word) main::toD0181_$0#0 & (word/signed word/dword/signed dword) 16383
(word) main::toD0181_$2#0 ← (word) main::toD0181_$1#0 << (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) main::toD0181_$3#0 ← > (word) main::toD0181_$2#0
(word) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1
(byte) main::toD0181_$5#0 ← > (word) main::toD0181_$4#0
(byte) main::toD0181_$6#0 ← (byte) main::toD0181_$5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) main::toD0181_$7#0 ← (byte) main::toD0181_$6#0 & (byte/signed byte/word/signed word/dword/signed dword) 15
(byte) main::toD0181_$8#0 ← (byte) main::toD0181_$3#0 | (byte) main::toD0181_$7#0
(byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0
to:main::toD0181_@return
main::toD0181_@return: scope:[main] from main::toD0181
(byte*) SCREEN#11 ← phi( main::toD0181/(byte*) SCREEN#13 )
(byte*) BITMAP#4 ← phi( main::toD0181/(byte*) BITMAP#6 )
(byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
(byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
to:main::@16
main::@16: scope:[main] from main::toD0181_@return
(byte*) SCREEN#8 ← phi( main::toD0181_@return/(byte*) SCREEN#11 )
(byte*) BITMAP#2 ← phi( main::toD0181_@return/(byte*) BITMAP#4 )
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
(byte~) main::$4 ← (byte) main::toD0181_return#3
*((byte*) D018#0) ← (byte~) main::$4
(byte*) bitmap_init::bitmap#0 ← (byte*) BITMAP#2
call bitmap_init
to:main::@17
main::@17: scope:[main] from main::@16
(byte*) SCREEN#6 ← phi( main::@16/(byte*) SCREEN#8 )
call bitmap_clear
to:main::@18
main::@18: scope:[main] from main::@17
(byte*) SCREEN#3 ← phi( main::@17/(byte*) SCREEN#6 )
(byte*) screen_fill::screen#0 ← (byte*) SCREEN#3
(byte) screen_fill::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
call screen_fill
to:main::@19
main::@19: scope:[main] from main::@18
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:main::@1
main::@1: scope:[main] from main::@19 main::@21
(byte) main::i#2 ← phi( main::@19/(byte) main::i#0 main::@21/(byte) main::i#1 )
(byte) point_init::point_idx#0 ← (byte) main::i#2
call point_init
to:main::@20
main::@20: scope:[main] from main::@1
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
(byte~) main::$9 ← (byte) main::i#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(word) bitmap_plot::x#0 ← *((word[4]) x_start#0 + (byte) main::i#3)
(byte) bitmap_plot::y#0 ← *((byte[4]) y_start#0 + (byte~) main::$9)
call bitmap_plot
to:main::@21
main::@21: scope:[main] from main::@20
(byte) main::i#4 ← phi( main::@20/(byte) main::i#3 )
(byte) main::i#1 ← (byte) main::i#4 + (byte/signed byte/word/signed word/dword/signed dword) 2
(bool~) main::$11 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 8
if((bool~) main::$11) goto main::@1
to:main::@2
main::@2: scope:[main] from main::@21 main::@7
if(true) goto main::@3
to:main::@return
main::@3: scope:[main] from main::@2
to:main::@5
main::@5: scope:[main] from main::@3 main::@6
(bool~) main::$12 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255
if((bool~) main::$12) goto main::@6
to:main::@7
main::@6: scope:[main] from main::@5
to:main::@5
main::@7: scope:[main] from main::@5
*((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
to:main::@2
main::@return: scope:[main] from main::@2
return
to:@return
point_init: scope:[point_init] from main::@1
(byte) point_init::point_idx#1 ← phi( main::@1/(byte) point_init::point_idx#0 )
(byte~) point_init::$0 ← (byte) point_init::point_idx#1 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) point_init::point_idx1#0 ← (byte~) point_init::$0
(signed word~) point_init::$1 ← ((signed word)) *((word[4]) x_end#0 + (byte) point_init::point_idx#1)
(signed word~) point_init::$2 ← ((signed word)) *((word[4]) x_start#0 + (byte) point_init::point_idx#1)
(signed word~) point_init::$3 ← (signed word~) point_init::$1 - (signed word~) point_init::$2
(signed word) point_init::x_diff#0 ← (signed word~) point_init::$3
(signed word~) point_init::$4 ← ((signed word)) *((byte[4]) y_end#0 + (byte) point_init::point_idx1#0)
(signed word~) point_init::$5 ← ((signed word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
(signed word~) point_init::$6 ← (signed word~) point_init::$4 - (signed word~) point_init::$5
(signed word) point_init::y_diff#0 ← (signed word~) point_init::$6
(signed word) point_init::abs16s1_w#0 ← (signed word) point_init::x_diff#0
to:point_init::abs16s1
point_init::abs16s1: scope:[point_init] from point_init
(byte) point_init::point_idx1#16 ← phi( point_init/(byte) point_init::point_idx1#0 )
(byte) point_init::point_idx#17 ← phi( point_init/(byte) point_init::point_idx#1 )
(signed word) point_init::x_diff#14 ← phi( point_init/(signed word) point_init::x_diff#0 )
(signed word) point_init::y_diff#9 ← phi( point_init/(signed word) point_init::y_diff#0 )
(signed word) point_init::abs16s1_w#1 ← phi( point_init/(signed word) point_init::abs16s1_w#0 )
(bool) point_init::abs16s1_$0#0 ← (signed word) point_init::abs16s1_w#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool) point_init::abs16s1_$0#0) goto point_init::abs16s1_@1
to:point_init::abs16s1_@3
point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1
(byte) point_init::point_idx1#14 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 )
(byte) point_init::point_idx#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 )
(signed word) point_init::x_diff#12 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 )
(signed word) point_init::y_diff#6 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 )
(signed word) point_init::abs16s1_w#2 ← phi( point_init::abs16s1/(signed word) point_init::abs16s1_w#1 )
(signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::abs16s1_w#2
(word) point_init::abs16s1_$3#0 ← ((word)) (signed word) point_init::abs16s1_$2#0
(word) point_init::abs16s1_return#0 ← (word) point_init::abs16s1_$3#0
to:point_init::abs16s1_@return
point_init::abs16s1_@3: scope:[point_init] from point_init::abs16s1
(byte) point_init::point_idx1#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 )
(byte) point_init::point_idx#16 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 )
(signed word) point_init::x_diff#13 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 )
(signed word) point_init::y_diff#7 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 )
(signed word) point_init::abs16s1_w#3 ← phi( point_init::abs16s1/(signed word) point_init::abs16s1_w#1 )
(word) point_init::abs16s1_$1#0 ← ((word)) (signed word) point_init::abs16s1_w#3
(word) point_init::abs16s1_return#1 ← (word) point_init::abs16s1_$1#0
to:point_init::abs16s1_@return
point_init::abs16s1_@return: scope:[point_init] from point_init::abs16s1_@1 point_init::abs16s1_@3
(byte) point_init::point_idx1#13 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx1#14 point_init::abs16s1_@3/(byte) point_init::point_idx1#15 )
(byte) point_init::point_idx#14 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx#15 point_init::abs16s1_@3/(byte) point_init::point_idx#16 )
(signed word) point_init::x_diff#11 ← phi( point_init::abs16s1_@1/(signed word) point_init::x_diff#12 point_init::abs16s1_@3/(signed word) point_init::x_diff#13 )
(signed word) point_init::y_diff#3 ← phi( point_init::abs16s1_@1/(signed word) point_init::y_diff#6 point_init::abs16s1_@3/(signed word) point_init::y_diff#7 )
(word) point_init::abs16s1_return#3 ← phi( point_init::abs16s1_@1/(word) point_init::abs16s1_return#0 point_init::abs16s1_@3/(word) point_init::abs16s1_return#1 )
(word) point_init::abs16s1_return#2 ← (word) point_init::abs16s1_return#3
to:point_init::@9
point_init::@9: scope:[point_init] from point_init::abs16s1_@return
(byte) point_init::point_idx1#12 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx1#13 )
(byte) point_init::point_idx#13 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx#14 )
(signed word) point_init::x_diff#10 ← phi( point_init::abs16s1_@return/(signed word) point_init::x_diff#11 )
(signed word) point_init::y_diff#1 ← phi( point_init::abs16s1_@return/(signed word) point_init::y_diff#3 )
(word) point_init::abs16s1_return#4 ← phi( point_init::abs16s1_@return/(word) point_init::abs16s1_return#2 )
(word~) point_init::$7 ← (word) point_init::abs16s1_return#4
(signed word) point_init::abs16s2_w#0 ← (signed word) point_init::y_diff#1
to:point_init::abs16s2
point_init::abs16s2: scope:[point_init] from point_init::@9
(signed word) point_init::y_diff#14 ← phi( point_init::@9/(signed word) point_init::y_diff#1 )
(byte) point_init::point_idx1#11 ← phi( point_init::@9/(byte) point_init::point_idx1#12 )
(byte) point_init::point_idx#12 ← phi( point_init::@9/(byte) point_init::point_idx#13 )
(signed word) point_init::x_diff#9 ← phi( point_init::@9/(signed word) point_init::x_diff#10 )
(signed word) point_init::abs16s2_w#1 ← phi( point_init::@9/(signed word) point_init::abs16s2_w#0 )
(bool) point_init::abs16s2_$0#0 ← (signed word) point_init::abs16s2_w#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool) point_init::abs16s2_$0#0) goto point_init::abs16s2_@1
to:point_init::abs16s2_@3
point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2
(signed word) point_init::y_diff#12 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 )
(byte) point_init::point_idx1#8 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 )
(byte) point_init::point_idx#10 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 )
(signed word) point_init::x_diff#7 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 )
(signed word) point_init::abs16s2_w#2 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 )
(signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::abs16s2_w#2
(word) point_init::abs16s2_$3#0 ← ((word)) (signed word) point_init::abs16s2_$2#0
(word) point_init::abs16s2_return#0 ← (word) point_init::abs16s2_$3#0
to:point_init::abs16s2_@return
point_init::abs16s2_@3: scope:[point_init] from point_init::abs16s2
(signed word) point_init::y_diff#13 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 )
(byte) point_init::point_idx1#9 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 )
(byte) point_init::point_idx#11 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 )
(signed word) point_init::x_diff#8 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 )
(signed word) point_init::abs16s2_w#3 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 )
(word) point_init::abs16s2_$1#0 ← ((word)) (signed word) point_init::abs16s2_w#3
(word) point_init::abs16s2_return#1 ← (word) point_init::abs16s2_$1#0
to:point_init::abs16s2_@return
point_init::abs16s2_@return: scope:[point_init] from point_init::abs16s2_@1 point_init::abs16s2_@3
(signed word) point_init::y_diff#11 ← phi( point_init::abs16s2_@1/(signed word) point_init::y_diff#12 point_init::abs16s2_@3/(signed word) point_init::y_diff#13 )
(byte) point_init::point_idx1#5 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx1#8 point_init::abs16s2_@3/(byte) point_init::point_idx1#9 )
(byte) point_init::point_idx#8 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx#10 point_init::abs16s2_@3/(byte) point_init::point_idx#11 )
(signed word) point_init::x_diff#6 ← phi( point_init::abs16s2_@1/(signed word) point_init::x_diff#7 point_init::abs16s2_@3/(signed word) point_init::x_diff#8 )
(word) point_init::abs16s2_return#3 ← phi( point_init::abs16s2_@1/(word) point_init::abs16s2_return#0 point_init::abs16s2_@3/(word) point_init::abs16s2_return#1 )
(word) point_init::abs16s2_return#2 ← (word) point_init::abs16s2_return#3
to:point_init::@10
point_init::@10: scope:[point_init] from point_init::abs16s2_@return
(signed word) point_init::y_diff#10 ← phi( point_init::abs16s2_@return/(signed word) point_init::y_diff#11 )
(byte) point_init::point_idx1#3 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx1#5 )
(byte) point_init::point_idx#5 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx#8 )
(signed word) point_init::x_diff#3 ← phi( point_init::abs16s2_@return/(signed word) point_init::x_diff#6 )
(word) point_init::abs16s2_return#4 ← phi( point_init::abs16s2_@return/(word) point_init::abs16s2_return#2 )
(word~) point_init::$8 ← (word) point_init::abs16s2_return#4
(bool~) point_init::$9 ← (word~) point_init::$7 > (word~) point_init::$8
if((bool~) point_init::$9) goto point_init::@1
to:point_init::@2
point_init::@1: scope:[point_init] from point_init::@10
(byte) point_init::point_idx1#10 ← phi( point_init::@10/(byte) point_init::point_idx1#3 )
(signed word) point_init::y_diff#8 ← phi( point_init::@10/(signed word) point_init::y_diff#10 )
(byte) point_init::point_idx#7 ← phi( point_init::@10/(byte) point_init::point_idx#5 )
(signed word) point_init::x_diff#1 ← phi( point_init::@10/(signed word) point_init::x_diff#3 )
(bool~) point_init::$10 ← (signed word) point_init::x_diff#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool~) point_init::$10) goto point_init::@3
to:point_init::@7
point_init::@2: scope:[point_init] from point_init::@10 point_init::@11
(byte) point_init::point_idx1#1 ← phi( point_init::@10/(byte) point_init::point_idx1#3 point_init::@11/(byte) point_init::point_idx1#2 )
(byte) point_init::point_idx#2 ← phi( point_init::@10/(byte) point_init::point_idx#5 point_init::@11/(byte) point_init::point_idx#6 )
(word~) point_init::$16 ← *((word[4]) x_start#0 + (byte) point_init::point_idx#2) << (byte/signed byte/word/signed word/dword/signed dword) 4
*((word[4]) x_cur#0 + (byte) point_init::point_idx#2) ← (word~) point_init::$16
(word~) point_init::$17 ← ((word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx1#1)
(word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4
*((word[4]) y_cur#0 + (byte) point_init::point_idx#2) ← (word~) point_init::$18
*((byte[4]) delay#0 + (byte) point_init::point_idx1#1) ← (byte) DELAY#0
to:point_init::@return
point_init::@3: scope:[point_init] from point_init::@1
(byte) point_init::point_idx1#6 ← phi( point_init::@1/(byte) point_init::point_idx1#10 )
(signed word) point_init::y_diff#4 ← phi( point_init::@1/(signed word) point_init::y_diff#8 )
(signed word) point_init::x_diff#4 ← phi( point_init::@1/(signed word) point_init::x_diff#1 )
(byte) point_init::point_idx#3 ← phi( point_init::@1/(byte) point_init::point_idx#7 )
(signed byte/signed word/signed dword~) point_init::$11 ← - (byte/signed byte/word/signed word/dword/signed dword) 16
*((signed byte[4]) x_add#0 + (byte) point_init::point_idx#3) ← (signed byte/signed word/signed dword~) point_init::$11
to:point_init::@4
point_init::@7: scope:[point_init] from point_init::@1
(byte) point_init::point_idx1#7 ← phi( point_init::@1/(byte) point_init::point_idx1#10 )
(signed word) point_init::y_diff#5 ← phi( point_init::@1/(signed word) point_init::y_diff#8 )
(signed word) point_init::x_diff#5 ← phi( point_init::@1/(signed word) point_init::x_diff#1 )
(byte) point_init::point_idx#4 ← phi( point_init::@1/(byte) point_init::point_idx#7 )
*((signed byte[4]) x_add#0 + (byte) point_init::point_idx#4) ← (byte/signed byte/word/signed word/dword/signed dword) 16
to:point_init::@4
point_init::@4: scope:[point_init] from point_init::@3 point_init::@7
(byte) point_init::point_idx#9 ← phi( point_init::@3/(byte) point_init::point_idx#3 point_init::@7/(byte) point_init::point_idx#4 )
(byte) point_init::point_idx1#4 ← phi( point_init::@3/(byte) point_init::point_idx1#6 point_init::@7/(byte) point_init::point_idx1#7 )
(signed word) point_init::y_diff#2 ← phi( point_init::@3/(signed word) point_init::y_diff#4 point_init::@7/(signed word) point_init::y_diff#5 )
(signed word) point_init::x_diff#2 ← phi( point_init::@3/(signed word) point_init::x_diff#4 point_init::@7/(signed word) point_init::x_diff#5 )
(signed word) divr16s::dividend#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#2
(signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#2
call divr16s
(signed word) divr16s::return#3 ← (signed word) divr16s::return#2
to:point_init::@11
point_init::@11: scope:[point_init] from point_init::@4
(byte) point_init::point_idx#6 ← phi( point_init::@4/(byte) point_init::point_idx#9 )
(byte) point_init::point_idx1#2 ← phi( point_init::@4/(byte) point_init::point_idx1#4 )
(signed word) divr16s::return#5 ← phi( point_init::@4/(signed word) divr16s::return#3 )
(signed word~) point_init::$12 ← (signed word) divr16s::return#5
(signed word) point_init::x_stepf#0 ← (signed word~) point_init::$12
(byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0
(byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4
(signed byte~) point_init::$15 ← ((signed byte)) (byte~) point_init::$14
*((signed byte[4]) y_add#0 + (byte) point_init::point_idx1#2) ← (signed byte~) point_init::$15
to:point_init::@2
point_init::@return: scope:[point_init] from point_init::@2
return
to:@return
screen_fill: scope:[screen_fill] from main::@18
(byte*) screen_fill::screen#4 ← phi( main::@18/(byte*) screen_fill::screen#0 )
(byte) screen_fill::ch#3 ← phi( main::@18/(byte) screen_fill::ch#0 )
(byte) screen_fill::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:screen_fill::@1
screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3
(byte) screen_fill::y#4 ← phi( screen_fill/(byte) screen_fill::y#0 screen_fill::@3/(byte) screen_fill::y#1 )
(byte*) screen_fill::screen#3 ← phi( screen_fill/(byte*) screen_fill::screen#4 screen_fill::@3/(byte*) screen_fill::screen#5 )
(byte) screen_fill::ch#2 ← phi( screen_fill/(byte) screen_fill::ch#3 screen_fill::@3/(byte) screen_fill::ch#4 )
(byte) screen_fill::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:screen_fill::@2
screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2
(byte) screen_fill::y#3 ← phi( screen_fill::@1/(byte) screen_fill::y#4 screen_fill::@2/(byte) screen_fill::y#3 )
(byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte) screen_fill::x#0 screen_fill::@2/(byte) screen_fill::x#1 )
(byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 )
(byte) screen_fill::ch#1 ← phi( screen_fill::@1/(byte) screen_fill::ch#2 screen_fill::@2/(byte) screen_fill::ch#1 )
*((byte*) screen_fill::screen#2) ← (byte) screen_fill::ch#1
(byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2
(byte) screen_fill::x#1 ← (byte) screen_fill::x#2 + rangenext(0,39)
(bool~) screen_fill::$0 ← (byte) screen_fill::x#1 != rangelast(0,39)
if((bool~) screen_fill::$0) goto screen_fill::@2
to:screen_fill::@3
screen_fill::@3: scope:[screen_fill] from screen_fill::@2
(byte*) screen_fill::screen#5 ← phi( screen_fill::@2/(byte*) screen_fill::screen#1 )
(byte) screen_fill::ch#4 ← phi( screen_fill::@2/(byte) screen_fill::ch#1 )
(byte) screen_fill::y#2 ← phi( screen_fill::@2/(byte) screen_fill::y#3 )
(byte) screen_fill::y#1 ← (byte) screen_fill::y#2 + rangenext(0,24)
(bool~) screen_fill::$1 ← (byte) screen_fill::y#1 != rangelast(0,24)
if((bool~) screen_fill::$1) goto screen_fill::@1
to:screen_fill::@return
screen_fill::@return: scope:[screen_fill] from screen_fill::@3
return
to:@return
@15: scope:[] from @11
(byte*) BITMAP#11 ← phi( @11/(byte*) BITMAP#0 )
(byte*) SCREEN#9 ← phi( @11/(byte*) SCREEN#0 )
(byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) }
(byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) }
(byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) }
to:@18
bitmap_init: scope:[bitmap_init] from main::@16
(byte*) bitmap_init::bitmap#5 ← phi( main::@16/(byte*) bitmap_init::bitmap#0 )
(byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128
(byte) bitmap_init::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
(byte*) bitmap_init::bitmap#3 ← phi( bitmap_init/(byte*) bitmap_init::bitmap#5 bitmap_init::@2/(byte*) bitmap_init::bitmap#2 )
(byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 )
(byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 )
*((byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
(byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0
if((bool~) bitmap_init::$1) goto bitmap_init::@2
to:bitmap_init::@5
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@5
(byte*) bitmap_init::bitmap#2 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#3 bitmap_init::@5/(byte*) bitmap_init::bitmap#4 )
(byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@5/(byte) bitmap_init::bits#2 )
(byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@5/(byte) bitmap_init::x#4 )
(byte) bitmap_init::x#1 ← (byte) bitmap_init::x#3 + rangenext(0,255)
(bool~) bitmap_init::$2 ← (byte) bitmap_init::x#1 != rangelast(0,255)
if((bool~) bitmap_init::$2) goto bitmap_init::@1
to:bitmap_init::@6
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@1
(byte*) bitmap_init::bitmap#4 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#3 )
(byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 )
(byte) bitmap_init::bits#2 ← (byte/word/signed word/dword/signed dword) 128
to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@2
(byte*) bitmap_init::bitmap#1 ← phi( bitmap_init::@2/(byte*) bitmap_init::bitmap#2 )
(byte*) bitmap_init::yoffs#0 ← (byte*) bitmap_init::bitmap#1
(byte) bitmap_init::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6
(byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@6/(byte*) bitmap_init::yoffs#0 )
(byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@6/(byte) bitmap_init::y#0 )
(byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
(byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
(byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
*((byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
(byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
*((byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
(byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
(bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7
(bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8
if((bool~) bitmap_init::$9) goto bitmap_init::@4
to:bitmap_init::@7
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7
(byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
(byte) bitmap_init::y#3 ← phi( bitmap_init::@3/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 )
(byte) bitmap_init::y#1 ← (byte) bitmap_init::y#3 + rangenext(0,255)
(bool~) bitmap_init::$12 ← (byte) bitmap_init::y#1 != rangelast(0,255)
if((bool~) bitmap_init::$12) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3
(byte) bitmap_init::y#4 ← phi( bitmap_init::@3/(byte) bitmap_init::y#2 )
(byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 )
(word/signed word/dword/signed dword~) bitmap_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*~) bitmap_init::$11 ← (byte*) bitmap_init::yoffs#3 + (word/signed word/dword/signed dword~) bitmap_init::$10
(byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$11
to:bitmap_init::@4
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
return
to:@return
bitmap_clear: scope:[bitmap_clear] from main::@17
(byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi#0 + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_ylo#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) }
(byte*) bitmap_clear::bitmap#0 ← (byte*~) bitmap_clear::$0
(byte) bitmap_clear::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
(byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte) bitmap_clear::y#0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
(byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*) bitmap_clear::bitmap#0 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#4 )
(byte) bitmap_clear::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
(byte) bitmap_clear::y#3 ← phi( bitmap_clear::@1/(byte) bitmap_clear::y#4 bitmap_clear::@2/(byte) bitmap_clear::y#3 )
(byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte) bitmap_clear::x#0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
(byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
*((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
(byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
(byte) bitmap_clear::x#1 ← (byte) bitmap_clear::x#2 + rangenext(0,199)
(bool~) bitmap_clear::$1 ← (byte) bitmap_clear::x#1 != rangelast(0,199)
if((bool~) bitmap_clear::$1) goto bitmap_clear::@2
to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
(byte*) bitmap_clear::bitmap#4 ← phi( bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
(byte) bitmap_clear::y#2 ← phi( bitmap_clear::@2/(byte) bitmap_clear::y#3 )
(byte) bitmap_clear::y#1 ← (byte) bitmap_clear::y#2 + rangenext(0,39)
(bool~) bitmap_clear::$2 ← (byte) bitmap_clear::y#1 != rangelast(0,39)
if((bool~) bitmap_clear::$2) goto bitmap_clear::@1
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
return
to:@return
bitmap_plot: scope:[bitmap_plot] from main::@20
(word) bitmap_plot::x#1 ← phi( main::@20/(word) bitmap_plot::x#0 )
(byte) bitmap_plot::y#1 ← phi( main::@20/(byte) bitmap_plot::y#0 )
(byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#1), *((byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#1) }
(byte*) bitmap_plot::plotter#0 ← (byte*~) bitmap_plot::$0
(word~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (word/dword/signed dword) 65528
(byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1
(byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#1
*((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
return
to:@return
@18: scope:[] from @15
(byte*) BITMAP#10 ← phi( @15/(byte*) BITMAP#11 )
(byte*) SCREEN#4 ← phi( @15/(byte*) SCREEN#9 )
call main
to:@19
@19: scope:[] from @18
to:@end
@end: scope:[] from @19
SYMBOL TABLE SSA
(label) @11
(label) @15
(label) @18
(label) @19
(label) @begin
(label) @end
(byte*) BITMAP
(byte*) BITMAP#0
(byte*) BITMAP#1
(byte*) BITMAP#10
(byte*) BITMAP#11
(byte*) BITMAP#2
(byte*) BITMAP#3
(byte*) BITMAP#4
(byte*) BITMAP#5
(byte*) BITMAP#6
(byte*) BITMAP#7
(byte*) BITMAP#8
(byte*) BITMAP#9
(byte*) BORDERCOL
(byte*) BORDERCOL#0
(byte*) CIA2_PORT_A
(byte*) CIA2_PORT_A#0
(byte*) CIA2_PORT_A_DDR
(byte*) CIA2_PORT_A_DDR#0
(byte*) D011
(byte*) D011#0
(byte*) D018
(byte*) D018#0
(byte) DELAY
(byte) DELAY#0
(byte*) PROCPORT
(byte*) PROCPORT#0
(byte*) PROCPORT_DDR
(byte*) PROCPORT_DDR#0
(byte) PROCPORT_DDR_MEMORY_MASK
(byte) PROCPORT_DDR_MEMORY_MASK#0
(byte) PROCPORT_RAM_IO
(byte) PROCPORT_RAM_IO#0
(byte*) RASTER
(byte*) RASTER#0
(byte*) SCREEN
(byte*) SCREEN#0
(byte*) SCREEN#1
(byte*) SCREEN#10
(byte*) SCREEN#11
(byte*) SCREEN#12
(byte*) SCREEN#13
(byte*) SCREEN#2
(byte*) SCREEN#3
(byte*) SCREEN#4
(byte*) SCREEN#5
(byte*) SCREEN#6
(byte*) SCREEN#7
(byte*) SCREEN#8
(byte*) SCREEN#9
(byte) VIC_BMM
(byte) VIC_BMM#0
(byte) VIC_DEN
(byte) VIC_DEN#0
(byte) VIC_RSEL
(byte) VIC_RSEL#0
(void()) bitmap_clear()
(byte*~) bitmap_clear::$0
(bool~) bitmap_clear::$1
(bool~) bitmap_clear::$2
(label) bitmap_clear::@1
(label) bitmap_clear::@2
(label) bitmap_clear::@3
(label) bitmap_clear::@return
(byte*) bitmap_clear::bitmap
(byte*) bitmap_clear::bitmap#0
(byte*) bitmap_clear::bitmap#1
(byte*) bitmap_clear::bitmap#2
(byte*) bitmap_clear::bitmap#3
(byte*) bitmap_clear::bitmap#4
(byte) bitmap_clear::x
(byte) bitmap_clear::x#0
(byte) bitmap_clear::x#1
(byte) bitmap_clear::x#2
(byte) bitmap_clear::y
(byte) bitmap_clear::y#0
(byte) bitmap_clear::y#1
(byte) bitmap_clear::y#2
(byte) bitmap_clear::y#3
(byte) bitmap_clear::y#4
(void()) bitmap_init((byte*) bitmap_init::bitmap)
(bool~) bitmap_init::$0
(bool~) bitmap_init::$1
(word/signed word/dword/signed dword~) bitmap_init::$10
(byte*~) bitmap_init::$11
(bool~) bitmap_init::$12
(bool~) bitmap_init::$2
(byte~) bitmap_init::$3
(byte~) bitmap_init::$4
(byte~) bitmap_init::$5
(byte~) bitmap_init::$6
(byte~) bitmap_init::$7
(bool~) bitmap_init::$8
(bool~) bitmap_init::$9
(label) bitmap_init::@1
(label) bitmap_init::@2
(label) bitmap_init::@3
(label) bitmap_init::@4
(label) bitmap_init::@5
(label) bitmap_init::@6
(label) bitmap_init::@7
(label) bitmap_init::@return
(byte*) bitmap_init::bitmap
(byte*) bitmap_init::bitmap#0
(byte*) bitmap_init::bitmap#1
(byte*) bitmap_init::bitmap#2
(byte*) bitmap_init::bitmap#3
(byte*) bitmap_init::bitmap#4
(byte*) bitmap_init::bitmap#5
(byte) bitmap_init::bits
(byte) bitmap_init::bits#0
(byte) bitmap_init::bits#1
(byte) bitmap_init::bits#2
(byte) bitmap_init::bits#3
(byte) bitmap_init::bits#4
(byte) bitmap_init::x
(byte) bitmap_init::x#0
(byte) bitmap_init::x#1
(byte) bitmap_init::x#2
(byte) bitmap_init::x#3
(byte) bitmap_init::x#4
(byte) bitmap_init::y
(byte) bitmap_init::y#0
(byte) bitmap_init::y#1
(byte) bitmap_init::y#2
(byte) bitmap_init::y#3
(byte) bitmap_init::y#4
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#0
(byte*) bitmap_init::yoffs#1
(byte*) bitmap_init::yoffs#2
(byte*) bitmap_init::yoffs#3
(byte*) bitmap_init::yoffs#4
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(byte*~) bitmap_plot::$0
(word~) bitmap_plot::$1
(byte~) bitmap_plot::$2
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(byte*) bitmap_plot::plotter#0
(byte*) bitmap_plot::plotter#1
(word) bitmap_plot::x
(word) bitmap_plot::x#0
(word) bitmap_plot::x#1
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0
(byte) bitmap_plot::y#1
(byte[256]) bitmap_plot_bit
(byte[256]) bitmap_plot_bit#0
(byte[256]) bitmap_plot_yhi
(byte[256]) bitmap_plot_yhi#0
(byte[256]) bitmap_plot_ylo
(byte[256]) bitmap_plot_ylo#0
(byte[4]) delay
(byte[4]) delay#0
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(bool~) divr16s::$0
(bool~) divr16s::$1
(word~) divr16s::$10
(signed word~) divr16s::$11
(word~) divr16s::$12
(byte/word/dword~) divr16s::$13
(word~) divr16s::$14
(bool~) divr16s::$15
(signed word~) divr16s::$18
(signed word~) divr16s::$19
(bool~) divr16s::$2
(signed word~) divr16s::$21
(word~) divr16s::$3
(word~) divr16s::$4
(signed word~) divr16s::$5
(word~) divr16s::$6
(signed word~) divr16s::$7
(word~) divr16s::$8
(bool~) divr16s::$9
(label) divr16s::@1
(label) divr16s::@11
(label) divr16s::@15
(label) divr16s::@2
(label) divr16s::@3
(label) divr16s::@4
(label) divr16s::@5
(label) divr16s::@7
(label) divr16s::@9
(label) divr16s::@return
(signed word) divr16s::dividend
(signed word) divr16s::dividend#0
(signed word) divr16s::dividend#1
(signed word) divr16s::dividend#2
(signed word) divr16s::dividend#3
(word) divr16s::dividendu
(word) divr16s::dividendu#0
(word) divr16s::dividendu#1
(word) divr16s::dividendu#2
(word) divr16s::dividendu#3
(word) divr16s::dividendu#4
(word) divr16s::dividendu#5
(word) divr16s::dividendu#6
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0
(signed word) divr16s::divisor#1
(signed word) divr16s::divisor#2
(signed word) divr16s::divisor#3
(signed word) divr16s::divisor#4
(signed word) divr16s::divisor#5
(signed word) divr16s::divisor#6
(word) divr16s::divisoru
(word) divr16s::divisoru#0
(word) divr16s::divisoru#1
(word) divr16s::divisoru#2
(word) divr16s::divisoru#3
(byte) divr16s::neg
(byte) divr16s::neg#0
(byte) divr16s::neg#1
(byte) divr16s::neg#2
(byte) divr16s::neg#3
(byte) divr16s::neg#4
(byte) divr16s::neg#5
(byte) divr16s::neg#6
(byte) divr16s::neg#7
(byte) divr16s::neg#8
(signed word) divr16s::rem
(signed word) divr16s::rem#0
(signed word) divr16s::rem#1
(signed word) divr16s::rem#2
(signed word) divr16s::rem#3
(word) divr16s::remu
(word) divr16s::remu#0
(word) divr16s::remu#1
(word) divr16s::remu#2
(word) divr16s::remu#3
(word) divr16s::remu#4
(word) divr16s::remu#5
(word) divr16s::remu#6
(word) divr16s::resultu
(word) divr16s::resultu#0
(word) divr16s::resultu#1
(word) divr16s::resultu#2
(signed word) divr16s::return
(signed word) divr16s::return#0
(signed word) divr16s::return#1
(signed word) divr16s::return#2
(signed word) divr16s::return#3
(signed word) divr16s::return#4
(signed word) divr16s::return#5
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(word~) divr16u::$0
(byte~) divr16u::$1
(word~) divr16u::$10
(bool~) divr16u::$11
(byte~) divr16u::$2
(bool~) divr16u::$3
(bool~) divr16u::$4
(word/dword~) divr16u::$5
(word~) divr16u::$6
(word~) divr16u::$7
(bool~) divr16u::$8
(bool~) divr16u::$9
(label) divr16u::@1
(label) divr16u::@2
(label) divr16u::@3
(label) divr16u::@4
(label) divr16u::@5
(label) divr16u::@6
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0
(word) divr16u::dividend#1
(word) divr16u::dividend#2
(word) divr16u::dividend#3
(word) divr16u::dividend#4
(word) divr16u::dividend#5
(word) divr16u::dividend#6
(word) divr16u::dividend#7
(word) divr16u::divisor
(word) divr16u::divisor#0
(word) divr16u::divisor#1
(word) divr16u::divisor#2
(word) divr16u::divisor#3
(word) divr16u::divisor#4
(word) divr16u::divisor#5
(word) divr16u::divisor#6
(byte) divr16u::i
(byte) divr16u::i#0
(byte) divr16u::i#1
(byte) divr16u::i#2
(byte) divr16u::i#3
(byte) divr16u::i#4
(byte) divr16u::i#5
(byte) divr16u::i#6
(word) divr16u::quotient
(word) divr16u::quotient#0
(word) divr16u::quotient#1
(word) divr16u::quotient#2
(word) divr16u::quotient#3
(word) divr16u::quotient#4
(word) divr16u::quotient#5
(word) divr16u::quotient#6
(word) divr16u::quotient#7
(word) divr16u::quotient#8
(word) divr16u::rem
(word) divr16u::rem#0
(word) divr16u::rem#1
(word) divr16u::rem#2
(word) divr16u::rem#3
(word) divr16u::rem#4
(word) divr16u::rem#5
(word) divr16u::rem#6
(word) divr16u::rem#7
(word) divr16u::rem#8
(word) divr16u::rem#9
(word) divr16u::return
(word) divr16u::return#0
(word) divr16u::return#1
(word) divr16u::return#2
(word) divr16u::return#3
(word) divr16u::return#4
(void()) main()
(byte~) main::$0
(byte~) main::$1
(bool~) main::$11
(bool~) main::$12
(byte/word/dword~) main::$2
(byte~) main::$4
(byte~) main::$9
(label) main::@1
(label) main::@15
(label) main::@16
(label) main::@17
(label) main::@18
(label) main::@19
(label) main::@2
(label) main::@20
(label) main::@21
(label) main::@3
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@return
(byte) main::i
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
(byte) main::i#3
(byte) main::i#4
(label) main::toD0181
(word~) main::toD0181_$0
(word) main::toD0181_$0#0
(word~) main::toD0181_$1
(word) main::toD0181_$1#0
(word~) main::toD0181_$2
(word) main::toD0181_$2#0
(byte~) main::toD0181_$3
(byte) main::toD0181_$3#0
(word~) main::toD0181_$4
(word) main::toD0181_$4#0
(byte~) main::toD0181_$5
(byte) main::toD0181_$5#0
(byte~) main::toD0181_$6
(byte) main::toD0181_$6#0
(byte~) main::toD0181_$7
(byte) main::toD0181_$7#0
(byte~) main::toD0181_$8
(byte) main::toD0181_$8#0
(label) main::toD0181_@return
(byte*) main::toD0181_gfx
(byte*) main::toD0181_gfx#0
(byte*) main::toD0181_gfx#1
(byte) main::toD0181_return
(byte) main::toD0181_return#0
(byte) main::toD0181_return#1
(byte) main::toD0181_return#2
(byte) main::toD0181_return#3
(byte*) main::toD0181_screen
(byte*) main::toD0181_screen#0
(byte*) main::toD0181_screen#1
(label) main::vicSelectGfxBank1
(byte~) main::vicSelectGfxBank1_$0
(byte) main::vicSelectGfxBank1_$0#0
(label) main::vicSelectGfxBank1_@1
(byte*) main::vicSelectGfxBank1_gfx
(byte*) main::vicSelectGfxBank1_gfx#0
(byte*) main::vicSelectGfxBank1_gfx#1
(label) main::vicSelectGfxBank1_toDd001
(word~) main::vicSelectGfxBank1_toDd001_$0
(word) main::vicSelectGfxBank1_toDd001_$0#0
(byte~) main::vicSelectGfxBank1_toDd001_$1
(byte) main::vicSelectGfxBank1_toDd001_$1#0
(byte~) main::vicSelectGfxBank1_toDd001_$2
(byte) main::vicSelectGfxBank1_toDd001_$2#0
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
(byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0
(label) main::vicSelectGfxBank1_toDd001_@return
(byte*) main::vicSelectGfxBank1_toDd001_gfx
(byte*) main::vicSelectGfxBank1_toDd001_gfx#0
(byte*) main::vicSelectGfxBank1_toDd001_gfx#1
(byte) main::vicSelectGfxBank1_toDd001_return
(byte) main::vicSelectGfxBank1_toDd001_return#0
(byte) main::vicSelectGfxBank1_toDd001_return#1
(byte) main::vicSelectGfxBank1_toDd001_return#2
(byte) main::vicSelectGfxBank1_toDd001_return#3
(void()) point_init((byte) point_init::point_idx)
(byte~) point_init::$0
(signed word~) point_init::$1
(bool~) point_init::$10
(signed byte/signed word/signed dword~) point_init::$11
(signed word~) point_init::$12
(byte~) point_init::$13
(byte~) point_init::$14
(signed byte~) point_init::$15
(word~) point_init::$16
(word~) point_init::$17
(word~) point_init::$18
(signed word~) point_init::$2
(signed word~) point_init::$3
(signed word~) point_init::$4
(signed word~) point_init::$5
(signed word~) point_init::$6
(word~) point_init::$7
(word~) point_init::$8
(bool~) point_init::$9
(label) point_init::@1
(label) point_init::@10
(label) point_init::@11
(label) point_init::@2
(label) point_init::@3
(label) point_init::@4
(label) point_init::@7
(label) point_init::@9
(label) point_init::@return
(label) point_init::abs16s1
(bool~) point_init::abs16s1_$0
(bool) point_init::abs16s1_$0#0
(word~) point_init::abs16s1_$1
(word) point_init::abs16s1_$1#0
(signed word~) point_init::abs16s1_$2
(signed word) point_init::abs16s1_$2#0
(word~) point_init::abs16s1_$3
(word) point_init::abs16s1_$3#0
(label) point_init::abs16s1_@1
(label) point_init::abs16s1_@3
(label) point_init::abs16s1_@return
(word) point_init::abs16s1_return
(word) point_init::abs16s1_return#0
(word) point_init::abs16s1_return#1
(word) point_init::abs16s1_return#2
(word) point_init::abs16s1_return#3
(word) point_init::abs16s1_return#4
(signed word) point_init::abs16s1_w
(signed word) point_init::abs16s1_w#0
(signed word) point_init::abs16s1_w#1
(signed word) point_init::abs16s1_w#2
(signed word) point_init::abs16s1_w#3
(label) point_init::abs16s2
(bool~) point_init::abs16s2_$0
(bool) point_init::abs16s2_$0#0
(word~) point_init::abs16s2_$1
(word) point_init::abs16s2_$1#0
(signed word~) point_init::abs16s2_$2
(signed word) point_init::abs16s2_$2#0
(word~) point_init::abs16s2_$3
(word) point_init::abs16s2_$3#0
(label) point_init::abs16s2_@1
(label) point_init::abs16s2_@3
(label) point_init::abs16s2_@return
(word) point_init::abs16s2_return
(word) point_init::abs16s2_return#0
(word) point_init::abs16s2_return#1
(word) point_init::abs16s2_return#2
(word) point_init::abs16s2_return#3
(word) point_init::abs16s2_return#4
(signed word) point_init::abs16s2_w
(signed word) point_init::abs16s2_w#0
(signed word) point_init::abs16s2_w#1
(signed word) point_init::abs16s2_w#2
(signed word) point_init::abs16s2_w#3
(byte) point_init::point_idx
(byte) point_init::point_idx#0
(byte) point_init::point_idx#1
(byte) point_init::point_idx#10
(byte) point_init::point_idx#11
(byte) point_init::point_idx#12
(byte) point_init::point_idx#13
(byte) point_init::point_idx#14
(byte) point_init::point_idx#15
(byte) point_init::point_idx#16
(byte) point_init::point_idx#17
(byte) point_init::point_idx#2
(byte) point_init::point_idx#3
(byte) point_init::point_idx#4
(byte) point_init::point_idx#5
(byte) point_init::point_idx#6
(byte) point_init::point_idx#7
(byte) point_init::point_idx#8
(byte) point_init::point_idx#9
(byte) point_init::point_idx1
(byte) point_init::point_idx1#0
(byte) point_init::point_idx1#1
(byte) point_init::point_idx1#10
(byte) point_init::point_idx1#11
(byte) point_init::point_idx1#12
(byte) point_init::point_idx1#13
(byte) point_init::point_idx1#14
(byte) point_init::point_idx1#15
(byte) point_init::point_idx1#16
(byte) point_init::point_idx1#2
(byte) point_init::point_idx1#3
(byte) point_init::point_idx1#4
(byte) point_init::point_idx1#5
(byte) point_init::point_idx1#6
(byte) point_init::point_idx1#7
(byte) point_init::point_idx1#8
(byte) point_init::point_idx1#9
(signed word) point_init::x_diff
(signed word) point_init::x_diff#0
(signed word) point_init::x_diff#1
(signed word) point_init::x_diff#10
(signed word) point_init::x_diff#11
(signed word) point_init::x_diff#12
(signed word) point_init::x_diff#13
(signed word) point_init::x_diff#14
(signed word) point_init::x_diff#2
(signed word) point_init::x_diff#3
(signed word) point_init::x_diff#4
(signed word) point_init::x_diff#5
(signed word) point_init::x_diff#6
(signed word) point_init::x_diff#7
(signed word) point_init::x_diff#8
(signed word) point_init::x_diff#9
(signed word) point_init::x_stepf
(signed word) point_init::x_stepf#0
(signed word) point_init::y_diff
(signed word) point_init::y_diff#0
(signed word) point_init::y_diff#1
(signed word) point_init::y_diff#10
(signed word) point_init::y_diff#11
(signed word) point_init::y_diff#12
(signed word) point_init::y_diff#13
(signed word) point_init::y_diff#14
(signed word) point_init::y_diff#2
(signed word) point_init::y_diff#3
(signed word) point_init::y_diff#4
(signed word) point_init::y_diff#5
(signed word) point_init::y_diff#6
(signed word) point_init::y_diff#7
(signed word) point_init::y_diff#8
(signed word) point_init::y_diff#9
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
(bool~) screen_fill::$0
(bool~) screen_fill::$1
(label) screen_fill::@1
(label) screen_fill::@2
(label) screen_fill::@3
(label) screen_fill::@return
(byte) screen_fill::ch
(byte) screen_fill::ch#0
(byte) screen_fill::ch#1
(byte) screen_fill::ch#2
(byte) screen_fill::ch#3
(byte) screen_fill::ch#4
(byte*) screen_fill::screen
(byte*) screen_fill::screen#0
(byte*) screen_fill::screen#1
(byte*) screen_fill::screen#2
(byte*) screen_fill::screen#3
(byte*) screen_fill::screen#4
(byte*) screen_fill::screen#5
(byte) screen_fill::x
(byte) screen_fill::x#0
(byte) screen_fill::x#1
(byte) screen_fill::x#2
(byte) screen_fill::y
(byte) screen_fill::y#0
(byte) screen_fill::y#1
(byte) screen_fill::y#2
(byte) screen_fill::y#3
(byte) screen_fill::y#4
(signed byte[4]) x_add
(signed byte[4]) x_add#0
(word[4]) x_cur
(word[4]) x_cur#0
(word[4]) x_end
(word[4]) x_end#0
(word[4]) x_start
(word[4]) x_start#0
(signed byte[4]) y_add
(signed byte[4]) y_add#0
(word[4]) y_cur
(word[4]) y_cur#0
(byte[4]) y_end
(byte[4]) y_end#0
(byte[4]) y_start
(byte[4]) y_start#0
Culled Empty Block (label) main::@3
Culled Empty Block (label) main::@6
Culled Empty Block (label) @19
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1
Inversing boolean not (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7
Successful SSA optimization Pass2UnaryNotSimplification
Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#6
Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#7
Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4
Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#6
Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7
Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#4
Alias (byte) divr16u::i#5 = (byte) divr16u::i#6
Alias (word) divr16u::rem#1 = (word/dword~) divr16u::$5
Alias (word) divr16u::rem#5 = (word) divr16u::rem#7
Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2
Alias (byte) divr16u::i#3 = (byte) divr16u::i#4
Alias (word) divr16u::rem#2 = (word~) divr16u::$10
Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1
Alias (signed word) divr16s::dividend#1 = (signed word) divr16s::dividend#2 (signed word) divr16s::dividend#3
Alias (signed word) divr16s::rem#1 = (signed word) divr16s::rem#2 (signed word) divr16s::rem#3
Alias (signed word) divr16s::divisor#4 = (signed word) divr16s::divisor#6 (signed word) divr16s::divisor#5
Alias (word) divr16s::dividendu#1 = (word~) divr16s::$6
Alias (word) divr16s::remu#1 = (word~) divr16s::$8
Alias (byte) divr16s::neg#0 = (byte) divr16s::neg#7
Alias (word) divr16s::dividendu#2 = (word~) divr16s::$3
Alias (word) divr16s::remu#2 = (word~) divr16s::$4
Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#2 (signed word) divr16s::divisor#3
Alias (byte) divr16s::neg#3 = (byte) divr16s::neg#5 (byte) divr16s::neg#8
Alias (word) divr16s::dividendu#4 = (word) divr16s::dividendu#6 (word) divr16s::dividendu#5
Alias (word) divr16s::remu#4 = (word) divr16s::remu#6 (word) divr16s::remu#5
Alias (word) divr16s::divisoru#1 = (word~) divr16s::$12
Alias (byte) divr16s::neg#2 = (byte/word/dword~) divr16s::$13
Alias (word) divr16s::divisoru#2 = (word~) divr16s::$10
Alias (word) divr16u::return#2 = (word) divr16u::return#4
Alias (byte) divr16s::neg#4 = (byte) divr16s::neg#6
Alias (word) divr16s::resultu#0 = (word~) divr16s::$14 (word) divr16s::resultu#1 (word) divr16s::resultu#2
Alias (signed word) divr16s::return#0 = (signed word~) divr16s::$21
Alias (signed word) divr16s::return#1 = (signed word~) divr16s::$19
Alias (signed word) divr16s::return#2 = (signed word) divr16s::return#4
Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
Alias (byte*) SCREEN#1 = (byte*) SCREEN#12 (byte*) SCREEN#10 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#2 (byte*) SCREEN#13 (byte*) SCREEN#11 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#3
Alias (byte*) BITMAP#1 = (byte*) BITMAP#8 (byte*) BITMAP#9 (byte*) BITMAP#7 (byte*) BITMAP#5 (byte*) BITMAP#3 (byte*) BITMAP#6 (byte*) BITMAP#4 (byte*) BITMAP#2
Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4
Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4
Alias (byte) point_init::point_idx1#0 = (byte~) point_init::$0 (byte) point_init::point_idx1#16 (byte) point_init::point_idx1#14 (byte) point_init::point_idx1#15
Alias (signed word) point_init::abs16s1_w#0 = (signed word) point_init::x_diff#0 (signed word~) point_init::$3 (signed word) point_init::abs16s1_w#1 (signed word) point_init::x_diff#14 (signed word) point_init::abs16s1_w#2 (signed word) point_init::x_diff#12 (signed word) point_init::abs16s1_w#3 (signed word) point_init::x_diff#13
Alias (signed word) point_init::y_diff#0 = (signed word~) point_init::$6 (signed word) point_init::y_diff#9 (signed word) point_init::y_diff#6 (signed word) point_init::y_diff#7
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#17 (byte) point_init::point_idx#15 (byte) point_init::point_idx#16
Alias (word) point_init::abs16s1_return#0 = (word) point_init::abs16s1_$3#0
Alias (word) point_init::abs16s1_return#1 = (word) point_init::abs16s1_$1#0
Alias (word) point_init::abs16s1_return#2 = (word) point_init::abs16s1_return#3 (word) point_init::abs16s1_return#4 (word~) point_init::$7
Alias (signed word) point_init::y_diff#1 = (signed word) point_init::y_diff#3 (signed word) point_init::abs16s2_w#0 (signed word) point_init::abs16s2_w#1 (signed word) point_init::y_diff#14 (signed word) point_init::abs16s2_w#2 (signed word) point_init::y_diff#12 (signed word) point_init::abs16s2_w#3 (signed word) point_init::y_diff#13
Alias (signed word) point_init::x_diff#10 = (signed word) point_init::x_diff#11 (signed word) point_init::x_diff#9 (signed word) point_init::x_diff#7 (signed word) point_init::x_diff#8
Alias (byte) point_init::point_idx#10 = (byte) point_init::point_idx#13 (byte) point_init::point_idx#14 (byte) point_init::point_idx#12 (byte) point_init::point_idx#11
Alias (byte) point_init::point_idx1#11 = (byte) point_init::point_idx1#12 (byte) point_init::point_idx1#13 (byte) point_init::point_idx1#8 (byte) point_init::point_idx1#9
Alias (word) point_init::abs16s2_return#0 = (word) point_init::abs16s2_$3#0
Alias (word) point_init::abs16s2_return#1 = (word) point_init::abs16s2_$1#0
Alias (word) point_init::abs16s2_return#2 = (word) point_init::abs16s2_return#3 (word) point_init::abs16s2_return#4 (word~) point_init::$8
Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#3 (signed word) point_init::x_diff#6 (signed word) point_init::x_diff#4 (signed word) point_init::x_diff#5
Alias (byte) point_init::point_idx#3 = (byte) point_init::point_idx#5 (byte) point_init::point_idx#8 (byte) point_init::point_idx#7 (byte) point_init::point_idx#4
Alias (byte) point_init::point_idx1#10 = (byte) point_init::point_idx1#3 (byte) point_init::point_idx1#5 (byte) point_init::point_idx1#6 (byte) point_init::point_idx1#7
Alias (signed word) point_init::y_diff#10 = (signed word) point_init::y_diff#11 (signed word) point_init::y_diff#8 (signed word) point_init::y_diff#4 (signed word) point_init::y_diff#5
Alias (signed word) divr16s::return#3 = (signed word) divr16s::return#5
Alias (byte) point_init::point_idx1#2 = (byte) point_init::point_idx1#4
Alias (byte) point_init::point_idx#6 = (byte) point_init::point_idx#9
Alias (signed word) point_init::x_stepf#0 = (signed word~) point_init::$12
Alias (byte) screen_fill::y#2 = (byte) screen_fill::y#3
Alias (byte) screen_fill::ch#1 = (byte) screen_fill::ch#4
Alias (byte*) screen_fill::screen#1 = (byte*) screen_fill::screen#5
Alias (byte*) SCREEN#0 = (byte*) SCREEN#9 (byte*) SCREEN#4
Alias (byte*) BITMAP#0 = (byte*) BITMAP#11 (byte*) BITMAP#10
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4
Alias (byte*) bitmap_init::bitmap#3 = (byte*) bitmap_init::bitmap#4
Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::yoffs#0
Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4
Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$11
Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0
Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3
Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4
Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0
Successful SSA optimization Pass2AliasElimination
Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3
Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6
Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divisor#6
Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5
Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5
Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#4
Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4
Alias (word) divr16s::remu#3 = (word) divr16s::remu#4
Alias (signed word) point_init::y_diff#0 = (signed word) point_init::y_diff#1 (signed word) point_init::y_diff#10 (signed word) point_init::y_diff#2
Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#10 (signed word) point_init::abs16s1_w#0 (signed word) point_init::x_diff#2
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#10 (byte) point_init::point_idx#3 (byte) point_init::point_idx#6
Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#11 (byte) point_init::point_idx1#10 (byte) point_init::point_idx1#2
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3
Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3
Successful SSA optimization Pass2AliasElimination
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#2
Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#1
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (word) divr16u::divisor#1
Self Phi Eliminated (byte) screen_fill::ch#1
Self Phi Eliminated (byte) screen_fill::y#2
Self Phi Eliminated (byte*) bitmap_init::bitmap#1
Self Phi Eliminated (byte) bitmap_clear::y#2
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (word) divr16u::rem#8 (word) divr16u::rem#3
Redundant Phi (word) divr16u::dividend#4 (word) divr16u::dividend#1
Redundant Phi (word) divr16u::divisor#5 (word) divr16u::divisor#0
Redundant Phi (word) divr16u::divisor#1 (word) divr16u::divisor#5
Redundant Phi (signed word) divr16s::dividend#1 (signed word) divr16s::dividend#0
Redundant Phi (signed word) divr16s::rem#1 (signed word) divr16s::rem#0
Redundant Phi (signed word) divr16s::divisor#1 (signed word) divr16s::divisor#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte*) BITMAP#1 (byte*) BITMAP#0
Redundant Phi (byte) point_init::point_idx#1 (byte) point_init::point_idx#0
Redundant Phi (byte) screen_fill::ch#3 (byte) screen_fill::ch#0
Redundant Phi (byte*) screen_fill::screen#4 (byte*) screen_fill::screen#0
Redundant Phi (byte) screen_fill::ch#1 (byte) screen_fill::ch#2
Redundant Phi (byte) screen_fill::y#2 (byte) screen_fill::y#4
Redundant Phi (byte*) bitmap_init::bitmap#5 (byte*) bitmap_init::bitmap#0
Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#5
Redundant Phi (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4
Redundant Phi (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#0
Redundant Phi (word) bitmap_plot::x#1 (word) bitmap_plot::x#0
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) divr16u::$4 if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
Simple Condition (bool~) divr16u::$9 if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3
Simple Condition (bool~) divr16u::$11 if((byte) divr16u::i#1!=rangelast(0,15)) goto divr16u::@1
Simple Condition (bool~) divr16s::$9 if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
Simple Condition (bool~) divr16s::$15 if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@5
Simple Condition (bool~) main::$11 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1
Simple Condition (bool~) main::$12 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5
Simple Condition (bool) point_init::abs16s1_$0#0 if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1
Simple Condition (bool) point_init::abs16s2_$0#0 if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1
Simple Condition (bool~) point_init::$9 if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1
Simple Condition (bool~) point_init::$10 if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3
Simple Condition (bool~) screen_fill::$0 if((byte) screen_fill::x#1!=rangelast(0,39)) goto screen_fill::@2
Simple Condition (bool~) screen_fill::$1 if((byte) screen_fill::y#1!=rangelast(0,24)) goto screen_fill::@1
Simple Condition (bool~) bitmap_init::$1 if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2
Simple Condition (bool~) bitmap_init::$2 if((byte) bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1
Simple Condition (bool~) bitmap_init::$9 if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
Simple Condition (bool~) bitmap_init::$12 if((byte) bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3
Simple Condition (bool~) bitmap_clear::$1 if((byte) bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2
Simple Condition (bool~) bitmap_clear::$2 if((byte) bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting || if()-condition to two if()s (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte) PROCPORT_RAM_IO#0 = 53
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
Constant (const byte*) D011#0 = ((byte*))53265
Constant (const byte) VIC_BMM#0 = 32
Constant (const byte) VIC_DEN#0 = 16
Constant (const byte) VIC_RSEL#0 = 8
Constant (const byte*) D018#0 = ((byte*))53272
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
Constant (const word) divr16u::quotient#0 = 0
Constant (const byte) divr16u::i#0 = 0
Constant (const byte) divr16s::neg#0 = 0
Constant (const word) divr16s::dividendu#0 = 0
Constant (const word) divr16s::remu#0 = 0
Constant (const byte) divr16s::neg#1 = 1
Constant (const word) divr16s::divisoru#0 = 0
Constant (const byte*) BITMAP#0 = ((byte*))40960
Constant (const byte*) SCREEN#0 = ((byte*))34816
Constant (const byte) DELAY#0 = 8
Constant (const word[4]) x_start#0 = { 10, 20, 30, 30 }
Constant (const byte[4]) y_start#0 = { 10, 10, 10, 20 }
Constant (const word[4]) x_end#0 = { 20, 10, 20, 20 }
Constant (const byte[4]) y_end#0 = { 20, 20, 10, 20 }
Constant (const word[4]) x_cur#0 = { fill( 4, 0) }
Constant (const word[4]) y_cur#0 = { fill( 4, 0) }
Constant (const signed byte[4]) x_add#0 = { fill( 4, 0) }
Constant (const signed byte[4]) y_add#0 = { fill( 4, 0) }
Constant (const byte[4]) delay#0 = { fill( 4, 0) }
Constant (const byte) screen_fill::ch#0 = 16
Constant (const byte) main::i#0 = 0
Constant (const signed byte/signed word/signed dword) point_init::$11 = -16
Constant (const signed word) divr16s::dividend#0 = 0
Constant (const byte) screen_fill::y#0 = 0
Constant (const byte) screen_fill::x#0 = 0
Constant (const byte[256]) bitmap_plot_ylo#0 = { fill( 256, 0) }
Constant (const byte[256]) bitmap_plot_yhi#0 = { fill( 256, 0) }
Constant (const byte[256]) bitmap_plot_bit#0 = { fill( 256, 0) }
Constant (const byte) bitmap_init::bits#0 = 128
Constant (const byte) bitmap_init::x#0 = 0
Constant (const byte) bitmap_init::bits#2 = 128
Constant (const byte) bitmap_init::y#0 = 0
Constant (const word/signed word/dword/signed dword) bitmap_init::$10 = 40*8
Constant (const byte) bitmap_clear::y#0 = 0
Constant (const byte) bitmap_clear::x#0 = 0
Successful SSA optimization Pass2ConstantIdentification
Constant (const bool) divr16s::$0 = divr16s::dividend#0<0
Constant (const signed word) divr16s::$5 = -divr16s::dividend#0
Constant (const word) divr16s::dividendu#2 = ((word))divr16s::dividend#0
Constant (const byte) main::$0 = VIC_BMM#0|VIC_DEN#0
Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = SCREEN#0
Constant (const byte*) main::toD0181_screen#0 = SCREEN#0
Constant (const byte*) main::toD0181_gfx#0 = BITMAP#0
Constant (const byte*) bitmap_init::bitmap#0 = BITMAP#0
Constant (const byte*) screen_fill::screen#0 = SCREEN#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const word) divr16s::dividendu#1 = ((word))divr16s::$5
Constant (const byte) main::$1 = main::$0|VIC_RSEL#0
Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = ((word))main::vicSelectGfxBank1_gfx#0
Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0
Constant (const word) main::toD0181_$4#0 = ((word))main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/word/dword) main::$2 = main::$1|3
Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0
Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&16383
Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0>>6
Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0<<2
Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0>>2
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0
Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0
Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&15
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating if((const bool) divr16s::$0) goto divr16s::@1
if() condition always true - replacing block destination if(true) goto main::@5
Successful SSA optimization Pass2ConstantIfs
Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_yhi#0 + 0) w= *(bitmap_plot_ylo#0 + 0)
Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#0) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#0)
Successful SSA optimization Pass2FixInlineConstructors
Successful SSA optimization PassNEliminateUnusedVars
Eliminating Noop Cast (word) divr16s::remu#1 ← ((word)) (signed word~) divr16s::$7
Eliminating Noop Cast (word) divr16s::remu#2 ← ((word)) (signed word) divr16s::rem#0
Eliminating Noop Cast (word) divr16s::divisoru#1 ← ((word)) (signed word~) divr16s::$11
Eliminating Noop Cast (word) divr16s::divisoru#2 ← ((word)) (signed word) divr16s::divisor#0
Eliminating Noop Cast (signed word) divr16s::return#0 ← ((signed word)) (word) divr16s::resultu#0
Eliminating Noop Cast (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#0
Eliminating Noop Cast (signed word~) point_init::$1 ← ((signed word)) *((const word[4]) x_end#0 + (byte) point_init::point_idx#0)
Eliminating Noop Cast (signed word~) point_init::$2 ← ((signed word)) *((const word[4]) x_start#0 + (byte) point_init::point_idx#0)
Eliminating Noop Cast (word) point_init::abs16s1_return#0 ← ((word)) (signed word) point_init::abs16s1_$2#0
Eliminating Noop Cast (word) point_init::abs16s1_return#1 ← ((word)) (signed word) point_init::x_diff#1
Eliminating Noop Cast (word) point_init::abs16s2_return#0 ← ((word)) (signed word) point_init::abs16s2_$2#0
Eliminating Noop Cast (word) point_init::abs16s2_return#1 ← ((word)) (signed word) point_init::y_diff#0
Eliminating Noop Cast (signed byte~) point_init::$15 ← ((signed byte)) (byte~) point_init::$14
Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3
Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$3
Successful SSA optimization Pass2NopCastElimination
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++
Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16
Resolved ranged next value screen_fill::x#1 ← ++ screen_fill::x#2 to ++
Resolved ranged comparison value if(screen_fill::x#1!=rangelast(0,39)) goto screen_fill::@2 to (byte/signed byte/word/signed word/dword/signed dword) 40
Resolved ranged next value screen_fill::y#1 ← ++ screen_fill::y#4 to ++
Resolved ranged comparison value if(screen_fill::y#1!=rangelast(0,24)) goto screen_fill::@1 to (byte/signed byte/word/signed word/dword/signed dword) 25
Resolved ranged next value bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++
Resolved ranged comparison value if(bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++
Resolved ranged comparison value if(bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++
Resolved ranged comparison value if(bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 to (byte/word/signed word/dword/signed dword) 200
Resolved ranged next value bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++
Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40
Culled Empty Block (label) divr16u::@6
Culled Empty Block (label) divr16s::@7
Culled Empty Block (label) divr16s::@9
Culled Empty Block (label) divr16s::@5
Culled Empty Block (label) @11
Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return
Culled Empty Block (label) main::@15
Culled Empty Block (label) main::toD0181_@return
Culled Empty Block (label) main::@19
Culled Empty Block (label) main::@2
Culled Empty Block (label) point_init::abs16s1_@3
Culled Empty Block (label) point_init::@9
Culled Empty Block (label) point_init::abs16s2_@3
Culled Empty Block (label) @15
Culled Empty Block (label) bitmap_init::@6
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte) screen_fill::ch#2
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) screen_fill::ch#2 (const byte) screen_fill::ch#0
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) divr16s::$1 if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Consolidated array index constant in *(bitmap_plot_yhi#0+0)
Consolidated array index constant in *(bitmap_plot_ylo#0+0)
Successful SSA optimization Pass2ConstantAdditionElimination
Inlining constant with var siblings (const word) divr16u::quotient#0
Inlining constant with var siblings (const byte) divr16u::i#0
Inlining constant with var siblings (const byte) divr16s::neg#0
Inlining constant with var siblings (const byte) divr16s::neg#1
Inlining constant with var siblings (const word) divr16s::dividendu#2
Inlining constant with var siblings (const word) divr16s::dividendu#1
Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) screen_fill::y#0
Inlining constant with var siblings (const byte) screen_fill::x#0
Inlining constant with var siblings (const byte*) screen_fill::screen#0
Inlining constant with var siblings (const byte) bitmap_init::bits#0
Inlining constant with var siblings (const byte) bitmap_init::x#0
Inlining constant with var siblings (const byte) bitmap_init::bits#2
Inlining constant with var siblings (const byte) bitmap_init::y#0
Inlining constant with var siblings (const byte) bitmap_clear::y#0
Inlining constant with var siblings (const byte) bitmap_clear::x#0
Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN#0
Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP#0
Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr16s::dividendu#1 = ((word))-(const signed word) divr16s::dividend#0
Constant inlined divr16s::dividendu#2 = ((word))(const signed word) divr16s::dividend#0
Constant inlined bitmap_init::bits#0 = (byte/word/signed word/dword/signed dword) 128
Constant inlined bitmap_init::bits#2 = (byte/word/signed word/dword/signed dword) 128
Constant inlined divr16s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined divr16s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined point_init::$11 = -(byte/signed byte/word/signed word/dword/signed dword) 16
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_init::$10 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
Constant inlined screen_fill::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) SCREEN#0
Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) SCREEN#0
Constant inlined bitmap_clear::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_clear::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::toD0181_$0#0 = ((word))(const byte*) SCREEN#0
Constant inlined main::toD0181_$1#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383
Constant inlined main::toD0181_$6#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::toD0181_$7#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
Constant inlined screen_fill::screen#0 = (const byte*) SCREEN#0
Constant inlined divr16s::$5 = -(const signed word) divr16s::dividend#0
Constant inlined main::$1 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0
Constant inlined main::toD0181_$2#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::$2 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined main::toD0181_$3#0 = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::toD0181_$4#0 = ((word))(const byte*) BITMAP#0
Constant inlined main::$0 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0
Constant inlined main::toD0181_$5#0 = >((word))(const byte*) BITMAP#0
Constant inlined main::vicSelectGfxBank1_gfx#0 = (const byte*) SCREEN#0
Constant inlined bitmap_init::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined screen_fill::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_init::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_init::bitmap#0 = (const byte*) BITMAP#0
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero bitmap_plot_yhi#0+0
Simplifying constant plus zero bitmap_plot_ylo#0+0
Added new block during phi lifting main::@22(between main::@21 and main::@1)
Added new block during phi lifting point_init::@12(between point_init::abs16s1 and point_init::abs16s1_@return)
Added new block during phi lifting point_init::@13(between point_init::abs16s2 and point_init::abs16s2_@return)
Added new block during phi lifting divr16s::@17(between divr16s::@16 and divr16s::@2)
Fixing phi predecessor for divr16s::neg#3 to new block ( divr16s::@16 -> divr16s::@17 ) during phi lifting.
Fixing phi predecessor for divr16s::dividendu#3 to new block ( divr16s::@16 -> divr16s::@17 ) during phi lifting.
Added new block during phi lifting divr16s::@18(between divr16s::@2 and divr16s::@4)
Added new block during phi lifting divr16s::@19(between divr16s::@15 and divr16s::@return)
Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1)
Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2)
Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3)
Added new block during phi lifting screen_fill::@5(between screen_fill::@3 and screen_fill::@1)
Added new block during phi lifting screen_fill::@6(between screen_fill::@2 and screen_fill::@2)
Added new block during phi lifting bitmap_clear::@5(between bitmap_clear::@3 and bitmap_clear::@1)
Added new block during phi lifting bitmap_clear::@6(between bitmap_clear::@2 and bitmap_clear::@2)
Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1)
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2)
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3)
Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @18
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::@17
Adding NOP phi() at start of main::@18
Adding NOP phi() at start of divr16s
Adding NOP phi() at start of screen_fill
Adding NOP phi() at start of bitmap_init
Adding NOP phi() at start of bitmap_init::@5
CALL GRAPH
Calls in [] to main:2
Calls in [main] to bitmap_init:13 bitmap_clear:15 screen_fill:17 point_init:20 bitmap_plot:24
Calls in [point_init] to divr16s:59
Calls in [divr16s] to divr16u:81
Created 30 initial phi equivalence classes
Coalesced [29] main::i#5 ← main::i#1
Coalesced [76] divr16s::neg#10 ← divr16s::neg#3
Coalesced [86] divr16s::return#6 ← divr16s::return#1
Coalesced [93] divr16s::neg#9 ← divr16s::neg#2
Coalesced [96] divr16u::rem#10 ← divr16u::rem#3
Coalesced [97] divr16u::dividend#8 ← divr16u::dividend#1
Coalesced [104] divr16u::rem#13 ← divr16u::rem#1
Coalesced [111] divr16u::rem#15 ← divr16u::rem#2
Coalesced [112] divr16u::return#6 ← divr16u::quotient#2
Coalesced [117] divr16u::rem#11 ← divr16u::rem#9
Coalesced [118] divr16u::dividend#9 ← divr16u::dividend#0
Coalesced [119] divr16u::quotient#9 ← divr16u::return#0
Coalesced [120] divr16u::i#7 ← divr16u::i#1
Coalesced [121] divr16u::rem#14 ← divr16u::rem#5
Coalesced [122] divr16u::return#5 ← divr16u::quotient#1
Coalesced [123] divr16u::rem#12 ← divr16u::rem#0
Coalesced [126] screen_fill::screen#7 ← screen_fill::screen#3
Coalesced [135] screen_fill::screen#6 ← screen_fill::screen#1
Coalesced [136] screen_fill::y#5 ← screen_fill::y#1
Coalesced (already) [137] screen_fill::screen#8 ← screen_fill::screen#1
Coalesced [138] screen_fill::x#3 ← screen_fill::x#1
Coalesced [142] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3
Coalesced [151] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1
Coalesced [152] bitmap_clear::y#5 ← bitmap_clear::y#1
Coalesced (already) [153] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1
Coalesced [154] bitmap_clear::x#3 ← bitmap_clear::x#1
Coalesced [174] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1
Coalesced [179] bitmap_init::y#5 ← bitmap_init::y#1
Coalesced [180] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4
Coalesced (already) [181] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2
Coalesced [182] bitmap_init::bits#5 ← bitmap_init::bits#4
Coalesced [183] bitmap_init::x#5 ← bitmap_init::x#1
Coalesced [184] bitmap_init::bits#6 ← bitmap_init::bits#1
Coalesced down to 22 phi equivalence classes
Culled Empty Block (label) main::@22
Culled Empty Block (label) divr16u::@8
Culled Empty Block (label) divr16u::@10
Culled Empty Block (label) divr16u::@9
Culled Empty Block (label) screen_fill::@5
Culled Empty Block (label) screen_fill::@6
Culled Empty Block (label) bitmap_clear::@5
Culled Empty Block (label) bitmap_clear::@6
Culled Empty Block (label) bitmap_init::@5
Culled Empty Block (label) bitmap_init::@11
Culled Empty Block (label) bitmap_init::@12
Culled Empty Block (label) bitmap_init::@9
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @18
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::@17
Adding NOP phi() at start of main::@18
Adding NOP phi() at start of divr16s
Adding NOP phi() at start of divr16u
Adding NOP phi() at start of screen_fill
Adding NOP phi() at start of bitmap_init
Adding NOP phi() at start of bitmap_init::@10
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi()
to:@18
@18: scope:[] from @begin
[1] phi()
[2] call main
to:@end
@end: scope:[] from @18
[3] phi()
main: scope:[main] from @18
asm { sei }
[5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
[6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
[7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
to:main::vicSelectGfxBank1
main::vicSelectGfxBank1: scope:[main] from main
[8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
to:main::vicSelectGfxBank1_toDd001
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
[9] phi()
to:main::vicSelectGfxBank1_@1
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001
[10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
to:main::toD0181
main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1
[11] phi()
to:main::@16
main::@16: scope:[main] from main::toD0181
[12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
[13] call bitmap_init
to:main::@17
main::@17: scope:[main] from main::@16
[14] phi()
[15] call bitmap_clear
to:main::@18
main::@18: scope:[main] from main::@17
[16] phi()
[17] call screen_fill
to:main::@1
main::@1: scope:[main] from main::@18 main::@21
[18] (byte) main::i#2 ← phi( main::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@21/(byte) main::i#1 )
[19] (byte) point_init::point_idx#0 ← (byte) main::i#2
[20] call point_init
to:main::@20
main::@20: scope:[main] from main::@1
[21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1
[22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2)
[23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9)
[24] call bitmap_plot
to:main::@21
main::@21: scope:[main] from main::@20
[25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
[26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1
to:main::@5
main::@5: scope:[main] from main::@21 main::@5 main::@7
[27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5
to:main::@7
main::@7: scope:[main] from main::@5
[28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
to:main::@5
bitmap_plot: scope:[bitmap_plot] from main::@20
[29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
[30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528
[31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1
[32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0
[33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[34] return
to:@return
point_init: scope:[point_init] from main::@1
[35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
[36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0)
[37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0)
[38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
[39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5
to:point_init::abs16s1
point_init::abs16s1: scope:[point_init] from point_init
[40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1
to:point_init::@12
point_init::@12: scope:[point_init] from point_init::abs16s1
[41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1
to:point_init::abs16s1_@return
point_init::abs16s1_@return: scope:[point_init] from point_init::@12 point_init::abs16s1_@1
[42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@12/(word~) point_init::abs16s1_return#6 )
to:point_init::abs16s2
point_init::abs16s2: scope:[point_init] from point_init::abs16s1_@return
[43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1
to:point_init::@13
point_init::@13: scope:[point_init] from point_init::abs16s2
[44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0
to:point_init::abs16s2_@return
point_init::abs16s2_@return: scope:[point_init] from point_init::@13 point_init::abs16s2_@1
[45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@13/(word~) point_init::abs16s2_return#6 )
to:point_init::@10
point_init::@10: scope:[point_init] from point_init::abs16s2_@return
[46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1
to:point_init::@2
point_init::@2: scope:[point_init] from point_init::@10 point_init::@11
[47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4
[48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16
[49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
[50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4
[51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18
[52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0
to:point_init::@return
point_init::@return: scope:[point_init] from point_init::@2
[53] return
to:@return
point_init::@1: scope:[point_init] from point_init::@10
[54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3
to:point_init::@7
point_init::@7: scope:[point_init] from point_init::@1
[55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16
to:point_init::@4
point_init::@4: scope:[point_init] from point_init::@3 point_init::@7
[56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
[57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
[58] call divr16s
[59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
to:point_init::@11
point_init::@11: scope:[point_init] from point_init::@4
[60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
[61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0
[62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4
[63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14
to:point_init::@2
point_init::@3: scope:[point_init] from point_init::@1
[64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16
to:point_init::@4
point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2
[65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0
[66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
to:point_init::abs16s2_@return
point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1
[67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1
[68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
to:point_init::abs16s1_@return
divr16s: scope:[divr16s] from point_init::@4
[69] phi()
to:divr16s::@16
divr16s::@16: scope:[divr16s] from divr16s
[70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
to:divr16s::@17
divr16s::@17: scope:[divr16s] from divr16s::@16
[71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
to:divr16s::@2
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@17
[72] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 )
[72] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 )
[72] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 )
[73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
to:divr16s::@18
divr16s::@18: scope:[divr16s] from divr16s::@2
[74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
to:divr16s::@4
divr16s::@4: scope:[divr16s] from divr16s::@18 divr16s::@3
[75] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 )
[75] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 )
[76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
[77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
[78] (word) divr16u::rem#3 ← (word) divr16s::remu#3
[79] call divr16u
[80] (word) divr16u::return#2 ← (word) divr16u::return#0
to:divr16s::@15
divr16s::@15: scope:[divr16s] from divr16s::@4
[81] (word) divr16s::resultu#0 ← (word) divr16u::return#2
[82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19
to:divr16s::@11
divr16s::@11: scope:[divr16s] from divr16s::@15
[83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
to:divr16s::@return
divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@19
[84] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 )
[85] return
to:@return
divr16s::@19: scope:[divr16s] from divr16s::@15
[86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
to:divr16s::@return
divr16s::@3: scope:[divr16s] from divr16s::@2
[87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0
[88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
[89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
to:divr16s::@4
divr16s::@1: scope:[divr16s] from divr16s::@16
[90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0
[91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
to:divr16s::@2
divr16u: scope:[divr16u] from divr16s::@4
[92] phi()
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[93] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
[93] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
[93] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 )
[93] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 )
[94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
[95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
[96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
[97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[99] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
[101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
[102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[105] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[105] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
[106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@3
[108] return
to:@return
screen_fill: scope:[screen_fill] from main::@18
[109] phi()
to:screen_fill::@1
screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3
[110] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 )
[110] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 )
to:screen_fill::@2
screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2
[111] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 )
[111] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 )
[112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0
[113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2
[114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2
[115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2
to:screen_fill::@3
screen_fill::@3: scope:[screen_fill] from screen_fill::@2
[116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4
[117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1
to:screen_fill::@return
screen_fill::@return: scope:[screen_fill] from screen_fill::@3
[118] return
to:@return
bitmap_clear: scope:[bitmap_clear] from main::@17
[119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0)
[120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
[121] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
[121] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 )
to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
[122] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
[122] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
[123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
[124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
[125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2
[126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2
to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
[127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4
[128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
[129] return
to:@return
bitmap_init: scope:[bitmap_init] from main::@16
[130] phi()
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
[131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 )
[132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
[133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
[134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10
[135] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 )
[136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
[137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[138] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 )
[138] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
[139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
[140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
[141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
[142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
[143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
[144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
[145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
[146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
to:bitmap_init::@7
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3
[147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7
[148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
[149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
[150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[151] return
to:@return
bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1
[152] phi()
to:bitmap_init::@2
VARIABLE REGISTER WEIGHTS
(byte*) BITMAP
(byte*) BORDERCOL
(byte*) CIA2_PORT_A
(byte*) CIA2_PORT_A_DDR
(byte*) D011
(byte*) D018
(byte) DELAY
(byte*) PROCPORT
(byte*) PROCPORT_DDR
(byte) PROCPORT_DDR_MEMORY_MASK
(byte) PROCPORT_RAM_IO
(byte*) RASTER
(byte*) SCREEN
(byte) VIC_BMM
(byte) VIC_DEN
(byte) VIC_RSEL
(void()) bitmap_clear()
(word~) bitmap_clear::$3 2.0
(byte*) bitmap_clear::bitmap
(byte*) bitmap_clear::bitmap#1 42.599999999999994
(byte*) bitmap_clear::bitmap#2 157.0
(byte*) bitmap_clear::bitmap#3 24.0
(byte*~) bitmap_clear::bitmap#5 4.0
(byte) bitmap_clear::x
(byte) bitmap_clear::x#1 151.5
(byte) bitmap_clear::x#2 67.33333333333333
(byte) bitmap_clear::y
(byte) bitmap_clear::y#1 16.5
(byte) bitmap_clear::y#4 3.6666666666666665
(void()) bitmap_init((byte*) bitmap_init::bitmap)
(byte~) bitmap_init::$3 11.0
(byte~) bitmap_init::$4 22.0
(byte~) bitmap_init::$5 22.0
(byte~) bitmap_init::$6 22.0
(byte~) bitmap_init::$7 22.0
(byte*) bitmap_init::bitmap
(byte) bitmap_init::bits
(byte) bitmap_init::bits#1 11.0
(byte) bitmap_init::bits#3 16.5
(byte) bitmap_init::bits#4 7.333333333333333
(byte) bitmap_init::x
(byte) bitmap_init::x#1 16.5
(byte) bitmap_init::x#2 5.5
(byte) bitmap_init::y
(byte) bitmap_init::y#1 16.5
(byte) bitmap_init::y#2 6.0
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 22.0
(byte*) bitmap_init::yoffs#2 6.111111111111112
(byte*) bitmap_init::yoffs#4 11.0
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 4.0
(byte~) bitmap_plot::$2 4.0
(word~) bitmap_plot::$3 1.0
(byte*) bitmap_plot::plotter
(byte*) bitmap_plot::plotter#1 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 15.0
(byte[256]) bitmap_plot_bit
(byte[256]) bitmap_plot_yhi
(byte[256]) bitmap_plot_ylo
(byte[4]) delay
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(signed word~) divr16s::$11 1.0
(signed word~) divr16s::$7 2.0
(signed word) divr16s::dividend
(word) divr16s::dividendu
(word) divr16s::dividendu#3 0.2857142857142857
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0 0.6666666666666666
(word) divr16s::divisoru
(word) divr16s::divisoru#3 3.0
(word~) divr16s::divisoru#4 4.0
(word~) divr16s::divisoru#5 4.0
(byte) divr16s::neg
(byte) divr16s::neg#2 2.0
(byte) divr16s::neg#3 1.0
(byte) divr16s::neg#4 0.8571428571428571
(signed word) divr16s::rem
(signed word) divr16s::rem#0 2.0
(word) divr16s::remu
(word) divr16s::remu#3 0.6666666666666666
(word~) divr16s::remu#7 4.0
(word~) divr16s::remu#8 4.0
(word) divr16s::resultu
(word) divr16s::resultu#0 1.0
(signed word) divr16s::return
(signed word) divr16s::return#1 4.0
(signed word) divr16s::return#2 2.0
(signed word) divr16s::return#3 4.0
(signed word~) divr16s::return#7 4.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 202.0
(byte~) divr16u::$2 202.0
(word) divr16u::dividend
(word) divr16u::dividend#0 25.25
(word) divr16u::dividend#1 1.0
(word) divr16u::dividend#2 43.57142857142858
(word) divr16u::divisor
(word) divr16u::divisor#0 11.333333333333332
(byte) divr16u::i
(byte) divr16u::i#1 151.5
(byte) divr16u::i#2 15.538461538461538
(word) divr16u::quotient
(word) divr16u::quotient#1 151.5
(word) divr16u::quotient#2 101.0
(word) divr16u::quotient#3 25.25
(word) divr16u::rem
(word) divr16u::rem#0 75.75
(word) divr16u::rem#1 202.0
(word) divr16u::rem#2 202.0
(word) divr16u::rem#3 2.0
(word) divr16u::rem#4 204.0
(word) divr16u::rem#5 101.0
(word) divr16u::rem#9 101.0
(word) divr16u::return
(word) divr16u::return#0 61.0
(word) divr16u::return#2 4.0
(void()) main()
(byte~) main::$9 11.0
(byte) main::i
(byte) main::i#1 16.5
(byte) main::i#2 7.857142857142857
(word~) main::toD0181_$0
(word~) main::toD0181_$1
(word~) main::toD0181_$2
(byte~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(byte~) main::toD0181_$6
(byte~) main::toD0181_$7
(byte~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(byte*) main::toD0181_screen
(byte~) main::vicSelectGfxBank1_$0
(byte*) main::vicSelectGfxBank1_gfx
(word~) main::vicSelectGfxBank1_toDd001_$0
(byte~) main::vicSelectGfxBank1_toDd001_$1
(byte~) main::vicSelectGfxBank1_toDd001_$2
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
(byte*) main::vicSelectGfxBank1_toDd001_gfx
(byte) main::vicSelectGfxBank1_toDd001_return
(void()) point_init((byte) point_init::point_idx)
(byte~) point_init::$13 4.0
(byte~) point_init::$14 2.0
(word~) point_init::$16 4.0
(word~) point_init::$17 4.0
(word~) point_init::$18 4.0
(signed word~) point_init::$4 2.0
(signed word~) point_init::$5 4.0
(bool~) point_init::abs16s1_$0
(word~) point_init::abs16s1_$1
(signed word~) point_init::abs16s1_$2
(signed word) point_init::abs16s1_$2#0 2.0
(word~) point_init::abs16s1_$3
(word) point_init::abs16s1_return
(word) point_init::abs16s1_return#2 1.0
(word~) point_init::abs16s1_return#5 4.0
(word~) point_init::abs16s1_return#6 4.0
(signed word) point_init::abs16s1_w
(bool~) point_init::abs16s2_$0
(word~) point_init::abs16s2_$1
(signed word~) point_init::abs16s2_$2
(signed word) point_init::abs16s2_$2#0 2.0
(word~) point_init::abs16s2_$3
(word) point_init::abs16s2_return
(word) point_init::abs16s2_return#2 6.0
(word~) point_init::abs16s2_return#5 4.0
(word~) point_init::abs16s2_return#6 4.0
(signed word) point_init::abs16s2_w
(byte) point_init::point_idx
(byte) point_init::point_idx#0 0.71875
(byte) point_init::point_idx1
(byte) point_init::point_idx1#0 0.375
(signed word) point_init::x_diff
(signed word) point_init::x_diff#1 0.5555555555555556
(signed word) point_init::x_stepf
(signed word) point_init::x_stepf#0 4.0
(signed word) point_init::y_diff
(signed word) point_init::y_diff#0 0.5
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
(byte) screen_fill::ch
(byte*) screen_fill::screen
(byte*) screen_fill::screen#1 42.599999999999994
(byte*) screen_fill::screen#2 157.0
(byte*) screen_fill::screen#3 22.0
(byte) screen_fill::x
(byte) screen_fill::x#1 151.5
(byte) screen_fill::x#2 67.33333333333333
(byte) screen_fill::y
(byte) screen_fill::y#1 16.5
(byte) screen_fill::y#4 3.6666666666666665
(signed byte[4]) x_add
(word[4]) x_cur
(word[4]) x_end
(word[4]) x_start
(signed byte[4]) y_add
(word[4]) y_cur
(byte[4]) y_end
(byte[4]) y_start
Initial phi equivalence classes
[ main::i#2 main::i#1 ]
[ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
[ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
[ divr16s::dividendu#3 ]
[ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
[ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
[ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
[ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
[ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
[ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
[ divr16u::i#2 divr16u::i#1 ]
[ screen_fill::y#4 screen_fill::y#1 ]
[ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
[ screen_fill::x#2 screen_fill::x#1 ]
[ bitmap_clear::y#4 bitmap_clear::y#1 ]
[ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
[ bitmap_clear::x#2 bitmap_clear::x#1 ]
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
[ bitmap_init::x#2 bitmap_init::x#1 ]
[ bitmap_init::y#2 bitmap_init::y#1 ]
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
Added variable point_init::point_idx#0 to zero page equivalence class [ point_init::point_idx#0 ]
Added variable main::$9 to zero page equivalence class [ main::$9 ]
Added variable bitmap_plot::x#0 to zero page equivalence class [ bitmap_plot::x#0 ]
Added variable bitmap_plot::y#0 to zero page equivalence class [ bitmap_plot::y#0 ]
Added variable bitmap_plot::$3 to zero page equivalence class [ bitmap_plot::$3 ]
Added variable bitmap_plot::$1 to zero page equivalence class [ bitmap_plot::$1 ]
Added variable bitmap_plot::plotter#1 to zero page equivalence class [ bitmap_plot::plotter#1 ]
Added variable bitmap_plot::$2 to zero page equivalence class [ bitmap_plot::$2 ]
Added variable point_init::point_idx1#0 to zero page equivalence class [ point_init::point_idx1#0 ]
Added variable point_init::x_diff#1 to zero page equivalence class [ point_init::x_diff#1 ]
Added variable point_init::$4 to zero page equivalence class [ point_init::$4 ]
Added variable point_init::$5 to zero page equivalence class [ point_init::$5 ]
Added variable point_init::y_diff#0 to zero page equivalence class [ point_init::y_diff#0 ]
Added variable point_init::$16 to zero page equivalence class [ point_init::$16 ]
Added variable point_init::$17 to zero page equivalence class [ point_init::$17 ]
Added variable point_init::$18 to zero page equivalence class [ point_init::$18 ]
Added variable divr16s::divisor#0 to zero page equivalence class [ divr16s::divisor#0 ]
Added variable divr16s::rem#0 to zero page equivalence class [ divr16s::rem#0 ]
Added variable divr16s::return#3 to zero page equivalence class [ divr16s::return#3 ]
Added variable point_init::x_stepf#0 to zero page equivalence class [ point_init::x_stepf#0 ]
Added variable point_init::$13 to zero page equivalence class [ point_init::$13 ]
Added variable point_init::$14 to zero page equivalence class [ point_init::$14 ]
Added variable point_init::abs16s2_$2#0 to zero page equivalence class [ point_init::abs16s2_$2#0 ]
Added variable point_init::abs16s1_$2#0 to zero page equivalence class [ point_init::abs16s1_$2#0 ]
Added variable divr16u::divisor#0 to zero page equivalence class [ divr16u::divisor#0 ]
Added variable divr16u::return#2 to zero page equivalence class [ divr16u::return#2 ]
Added variable divr16s::resultu#0 to zero page equivalence class [ divr16s::resultu#0 ]
Added variable divr16s::$11 to zero page equivalence class [ divr16s::$11 ]
Added variable divr16s::$7 to zero page equivalence class [ divr16s::$7 ]
Added variable divr16u::$1 to zero page equivalence class [ divr16u::$1 ]
Added variable divr16u::$2 to zero page equivalence class [ divr16u::$2 ]
Added variable bitmap_clear::$3 to zero page equivalence class [ bitmap_clear::$3 ]
Added variable bitmap_init::$3 to zero page equivalence class [ bitmap_init::$3 ]
Added variable bitmap_init::$4 to zero page equivalence class [ bitmap_init::$4 ]
Added variable bitmap_init::$5 to zero page equivalence class [ bitmap_init::$5 ]
Added variable bitmap_init::$6 to zero page equivalence class [ bitmap_init::$6 ]
Added variable bitmap_init::$7 to zero page equivalence class [ bitmap_init::$7 ]
Complete equivalence classes
[ main::i#2 main::i#1 ]
[ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
[ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
[ divr16s::dividendu#3 ]
[ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
[ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
[ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
[ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
[ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
[ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
[ divr16u::i#2 divr16u::i#1 ]
[ screen_fill::y#4 screen_fill::y#1 ]
[ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
[ screen_fill::x#2 screen_fill::x#1 ]
[ bitmap_clear::y#4 bitmap_clear::y#1 ]
[ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
[ bitmap_clear::x#2 bitmap_clear::x#1 ]
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
[ bitmap_init::x#2 bitmap_init::x#1 ]
[ bitmap_init::y#2 bitmap_init::y#1 ]
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
[ point_init::point_idx#0 ]
[ main::$9 ]
[ bitmap_plot::x#0 ]
[ bitmap_plot::y#0 ]
[ bitmap_plot::$3 ]
[ bitmap_plot::$1 ]
[ bitmap_plot::plotter#1 ]
[ bitmap_plot::$2 ]
[ point_init::point_idx1#0 ]
[ point_init::x_diff#1 ]
[ point_init::$4 ]
[ point_init::$5 ]
[ point_init::y_diff#0 ]
[ point_init::$16 ]
[ point_init::$17 ]
[ point_init::$18 ]
[ divr16s::divisor#0 ]
[ divr16s::rem#0 ]
[ divr16s::return#3 ]
[ point_init::x_stepf#0 ]
[ point_init::$13 ]
[ point_init::$14 ]
[ point_init::abs16s2_$2#0 ]
[ point_init::abs16s1_$2#0 ]
[ divr16u::divisor#0 ]
[ divr16u::return#2 ]
[ divr16s::resultu#0 ]
[ divr16s::$11 ]
[ divr16s::$7 ]
[ divr16u::$1 ]
[ divr16u::$2 ]
[ bitmap_clear::$3 ]
[ bitmap_init::$3 ]
[ bitmap_init::$4 ]
[ bitmap_init::$5 ]
[ bitmap_init::$6 ]
[ bitmap_init::$7 ]
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
Allocated zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
Allocated zp ZP_WORD:7 [ divr16s::dividendu#3 ]
Allocated zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
Allocated zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
Allocated zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
Allocated zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
Allocated zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
Allocated zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
Allocated zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
Allocated zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ]
Allocated zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
Allocated zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
Allocated zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ]
Allocated zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Allocated zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
Allocated zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
Allocated zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
Allocated zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ]
Allocated zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ]
Allocated zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
Allocated zp ZP_BYTE:36 [ point_init::point_idx#0 ]
Allocated zp ZP_BYTE:37 [ main::$9 ]
Allocated zp ZP_WORD:38 [ bitmap_plot::x#0 ]
Allocated zp ZP_BYTE:40 [ bitmap_plot::y#0 ]
Allocated zp ZP_WORD:41 [ bitmap_plot::$3 ]
Allocated zp ZP_WORD:43 [ bitmap_plot::$1 ]
Allocated zp ZP_WORD:45 [ bitmap_plot::plotter#1 ]
Allocated zp ZP_BYTE:47 [ bitmap_plot::$2 ]
Allocated zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
Allocated zp ZP_WORD:49 [ point_init::x_diff#1 ]
Allocated zp ZP_WORD:51 [ point_init::$4 ]
Allocated zp ZP_WORD:53 [ point_init::$5 ]
Allocated zp ZP_WORD:55 [ point_init::y_diff#0 ]
Allocated zp ZP_WORD:57 [ point_init::$16 ]
Allocated zp ZP_WORD:59 [ point_init::$17 ]
Allocated zp ZP_WORD:61 [ point_init::$18 ]
Allocated zp ZP_WORD:63 [ divr16s::divisor#0 ]
Allocated zp ZP_WORD:65 [ divr16s::rem#0 ]
Allocated zp ZP_WORD:67 [ divr16s::return#3 ]
Allocated zp ZP_WORD:69 [ point_init::x_stepf#0 ]
Allocated zp ZP_BYTE:71 [ point_init::$13 ]
Allocated zp ZP_BYTE:72 [ point_init::$14 ]
Allocated zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ]
Allocated zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ]
Allocated zp ZP_WORD:77 [ divr16u::divisor#0 ]
Allocated zp ZP_WORD:79 [ divr16u::return#2 ]
Allocated zp ZP_WORD:81 [ divr16s::resultu#0 ]
Allocated zp ZP_WORD:83 [ divr16s::$11 ]
Allocated zp ZP_WORD:85 [ divr16s::$7 ]
Allocated zp ZP_BYTE:87 [ divr16u::$1 ]
Allocated zp ZP_BYTE:88 [ divr16u::$2 ]
Allocated zp ZP_WORD:89 [ bitmap_clear::$3 ]
Allocated zp ZP_BYTE:91 [ bitmap_init::$3 ]
Allocated zp ZP_BYTE:92 [ bitmap_init::$4 ]
Allocated zp ZP_BYTE:93 [ bitmap_init::$5 ]
Allocated zp ZP_BYTE:94 [ bitmap_init::$6 ]
Allocated zp ZP_BYTE:95 [ bitmap_init::$7 ]
INITIAL ASM
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
.label PROCPORT_DDR = 0
.const PROCPORT_DDR_MEMORY_MASK = 7
.label PROCPORT = 1
.const PROCPORT_RAM_IO = $35
.label RASTER = $d012
.label BORDERCOL = $d020
.label D011 = $d011
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.label D018 = $d018
.label CIA2_PORT_A = $dd00
.label CIA2_PORT_A_DDR = $dd02
.label BITMAP = $a000
.label SCREEN = $8800
.const DELAY = 8
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
b18_from_bbegin:
jmp b18
//SEG4 @18
b18:
//SEG5 [2] call main
jsr main
//SEG6 [3] phi from @18 to @end [phi:@18->@end]
bend_from_b18:
jmp bend
//SEG7 @end
bend:
//SEG8 main
main: {
.const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
.const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
.label _9 = $25
.label i = 2
//SEG9 asm { sei }
sei
//SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
lda #PROCPORT_DDR_MEMORY_MASK
sta PROCPORT_DDR
//SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta PROCPORT
//SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
sta D011
jmp vicSelectGfxBank1
//SEG13 main::vicSelectGfxBank1
vicSelectGfxBank1:
//SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
lda #3
sta CIA2_PORT_A_DDR
//SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
jmp vicSelectGfxBank1_toDd001
//SEG16 main::vicSelectGfxBank1_toDd001
vicSelectGfxBank1_toDd001:
jmp vicSelectGfxBank1_b1
//SEG17 main::vicSelectGfxBank1_@1
vicSelectGfxBank1_b1:
//SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2
lda #vicSelectGfxBank1_toDd001_return
sta CIA2_PORT_A
//SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
toD0181_from_vicSelectGfxBank1_b1:
jmp toD0181
//SEG20 main::toD0181
toD0181:
jmp b16
//SEG21 main::@16
b16:
//SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
lda #toD0181_return
sta D018
//SEG23 [13] call bitmap_init
//SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
bitmap_init_from_b16:
jsr bitmap_init
//SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
b17_from_b16:
jmp b17
//SEG26 main::@17
b17:
//SEG27 [15] call bitmap_clear
jsr bitmap_clear
//SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
b18_from_b17:
jmp b18
//SEG29 main::@18
b18:
//SEG30 [17] call screen_fill
//SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
screen_fill_from_b18:
jsr screen_fill
//SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
b1_from_b18:
//SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1
lda #0
sta i
jmp b1
//SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
b1_from_b21:
//SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy
jmp b1
//SEG36 main::@1
b1:
//SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 -- vbuz1=vbuz2
lda i
sta point_init.point_idx
//SEG38 [20] call point_init
jsr point_init
jmp b20
//SEG39 main::@20
b20:
//SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1
lda i
lsr
sta _9
//SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2
ldy i
lda x_start,y
sta bitmap_plot.x
lda x_start+1,y
sta bitmap_plot.x+1
//SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuz1=pbuc1_derefidx_vbuz2
ldy _9
lda y_start,y
sta bitmap_plot.y
//SEG43 [24] call bitmap_plot
jsr bitmap_plot
jmp b21
//SEG44 main::@21
b21:
//SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2
lda i
clc
adc #2
sta i
//SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
lda i
cmp #8
bne b1_from_b21
jmp b5
//SEG47 main::@5
b5:
//SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
lda RASTER
cmp #$ff
bne b5
jmp b7
//SEG49 main::@7
b7:
//SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
inc BORDERCOL
jmp b5
}
//SEG51 bitmap_plot
bitmap_plot: {
.label _1 = $2b
.label _2 = $2f
.label x = $26
.label y = $28
.label plotter = $2d
.label _3 = $29
//SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2
ldy y
lda bitmap_plot_yhi,y
sta _3+1
lda bitmap_plot_ylo,y
sta _3
//SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1
lda x
and #<$fff8
sta _1
lda x+1
and #>$fff8
sta _1+1
//SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3
lda _3
clc
adc _1
sta plotter
lda _3+1
adc _1+1
sta plotter+1
//SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2
lda x
sta _2
//SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2
ldy #0
lda (plotter),y
ldy _2
ora bitmap_plot_bit,y
ldy #0
sta (plotter),y
jmp breturn
//SEG57 bitmap_plot::@return
breturn:
//SEG58 [34] return
rts
}
//SEG59 point_init
point_init: {
.label _4 = $33
.label _5 = $35
.label _13 = $47
.label _14 = $48
.label _16 = $39
.label _17 = $3b
.label _18 = $3d
.label point_idx = $24
.label point_idx1 = $30
.label y_diff = $37
.label abs16s1__2 = $4b
.label abs16s1_return = 3
.label abs16s2__2 = $49
.label abs16s2_return = 5
.label x_stepf = $45
.label x_diff = $31
//SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1
lda point_idx
lsr
sta point_idx1
//SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2
ldy point_idx
sec
lda x_end,y
sbc x_start,y
sta x_diff
lda x_end+1,y
sbc x_start+1,y
sta x_diff+1
//SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
ldy point_idx1
lda y_end,y
sta _4
lda #0
sta _4+1
//SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
ldy point_idx1
lda y_start,y
sta _5
lda #0
sta _5+1
//SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz2_minus_vwsz3
lda _4
sec
sbc _5
sta y_diff
lda _4+1
sbc _5+1
sta y_diff+1
jmp abs16s1
//SEG65 point_init::abs16s1
abs16s1:
//SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1
lda x_diff+1
bmi abs16s1_b1
jmp b12
//SEG67 point_init::@12
b12:
//SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2
lda x_diff
sta abs16s1_return
lda x_diff+1
sta abs16s1_return+1
//SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
abs16s1_breturn_from_b12:
abs16s1_breturn_from_abs16s1_b1:
//SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy
jmp abs16s1_breturn
//SEG71 point_init::abs16s1_@return
abs16s1_breturn:
jmp abs16s2
//SEG72 point_init::abs16s2
abs16s2:
//SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1
lda y_diff+1
bmi abs16s2_b1
jmp b13
//SEG74 point_init::@13
b13:
//SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2
lda y_diff
sta abs16s2_return
lda y_diff+1
sta abs16s2_return+1
//SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
abs16s2_breturn_from_b13:
abs16s2_breturn_from_abs16s2_b1:
//SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy
jmp abs16s2_breturn
//SEG78 point_init::abs16s2_@return
abs16s2_breturn:
jmp b10
//SEG79 point_init::@10
b10:
//SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1
lda abs16s1_return
cmp abs16s2_return
lda abs16s1_return+1
sbc abs16s2_return+1
bvc !+
eor #$80
!:
bpl b1
jmp b2
//SEG81 point_init::@2
b2:
//SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4
ldy point_idx
lda x_start,y
sta _16
lda x_start+1,y
sta _16+1
asl _16
rol _16+1
asl _16
rol _16+1
asl _16
rol _16+1
asl _16
rol _16+1
//SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2
ldy point_idx
lda _16
sta x_cur,y
lda _16+1
sta x_cur+1,y
//SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2
ldy point_idx1
lda y_start,y
sta _17
lda #0
sta _17+1
//SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_rol_4
lda _17
asl
sta _18
lda _17+1
rol
sta _18+1
asl _18
rol _18+1
asl _18
rol _18+1
asl _18
rol _18+1
//SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2
ldy point_idx
lda _18
sta y_cur,y
lda _18+1
sta y_cur+1,y
//SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2
ldy point_idx1
lda #DELAY
sta delay,y
jmp breturn
//SEG88 point_init::@return
breturn:
//SEG89 [53] return
rts
//SEG90 point_init::@1
b1:
//SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1
lda x_diff+1
bmi b3
jmp b7
//SEG92 point_init::@7
b7:
//SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2
ldy point_idx
lda #$10
sta x_add,y
jmp b4
//SEG94 point_init::@4
b4:
//SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2
lda x_diff
sta divr16s.divisor
lda x_diff+1
sta divr16s.divisor+1
//SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2
lda y_diff
sta divr16s.rem
lda y_diff+1
sta divr16s.rem+1
//SEG97 [58] call divr16s
//SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
divr16s_from_b4:
jsr divr16s
//SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2
lda divr16s.return
sta divr16s.return_3
lda divr16s.return+1
sta divr16s.return_3+1
jmp b11
//SEG100 point_init::@11
b11:
//SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2
lda divr16s.return_3
sta x_stepf
lda divr16s.return_3+1
sta x_stepf+1
//SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2
lda x_stepf+1
sta _13
//SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4
lda _13
lsr
lsr
lsr
lsr
sta _14
//SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsz2
lda _14
ldy point_idx1
sta y_add,y
jmp b2
//SEG105 point_init::@3
b3:
//SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2
ldy point_idx
lda #-$10
sta x_add,y
jmp b4
//SEG107 point_init::abs16s2_@1
abs16s2_b1:
//SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2
sec
lda y_diff
eor #$ff
adc #0
sta abs16s2__2
lda y_diff+1
eor #$ff
adc #0
sta abs16s2__2+1
//SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 -- vwuz1=vwuz2
lda abs16s2__2
sta abs16s2_return
lda abs16s2__2+1
sta abs16s2_return+1
jmp abs16s2_breturn_from_abs16s2_b1
//SEG110 point_init::abs16s1_@1
abs16s1_b1:
//SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2
sec
lda x_diff
eor #$ff
adc #0
sta abs16s1__2
lda x_diff+1
eor #$ff
adc #0
sta abs16s1__2+1
//SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 -- vwuz1=vwuz2
lda abs16s1__2
sta abs16s1_return
lda abs16s1__2+1
sta abs16s1_return+1
jmp abs16s1_breturn_from_abs16s1_b1
}
//SEG113 divr16s
divr16s: {
.const dividend = 0
.label _7 = $55
.label _11 = $53
.label neg = $d
.label resultu = $51
.label return = $e
.label divisor = $3f
.label rem = $41
.label return_3 = $43
.label dividendu = 7
.label divisoru = $b
.label remu = 9
jmp b16
//SEG114 divr16s::@16
b16:
//SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1
lda rem+1
bmi b1
jmp b17
//SEG116 divr16s::@17
b17:
//SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2
lda rem
sta remu
lda rem+1
sta remu+1
//SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
b2_from_b17:
//SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy
//SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1
lda #<dividend
sta dividendu
lda #>dividend
sta dividendu+1
//SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuz1=vbuc1
lda #0
sta neg
jmp b2
//SEG122 divr16s::@2
b2:
//SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1
lda divisor+1
bmi b3
jmp b18
//SEG124 divr16s::@18
b18:
//SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2
lda divisor
sta divisoru
lda divisor+1
sta divisoru+1
//SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
b4_from_b18:
b4_from_b3:
//SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy
//SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy
jmp b4
//SEG129 divr16s::@4
b4:
//SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2
lda dividendu
sta divr16u.dividend
lda dividendu+1
sta divr16u.dividend+1
//SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2
lda divisoru
sta divr16u.divisor
lda divisoru+1
sta divr16u.divisor+1
//SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2
lda remu
sta divr16u.rem
lda remu+1
sta divr16u.rem+1
//SEG133 [79] call divr16u
//SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
divr16u_from_b4:
jsr divr16u
//SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2
lda divr16u.return
sta divr16u.return_2
lda divr16u.return+1
sta divr16u.return_2+1
jmp b15
//SEG136 divr16s::@15
b15:
//SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2
lda divr16u.return_2
sta resultu
lda divr16u.return_2+1
sta resultu+1
//SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuz1_eq_0_then_la1
lda neg
cmp #0
beq b19
jmp b11
//SEG139 divr16s::@11
b11:
//SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2
sec
lda resultu
eor #$ff
adc #0
sta return
lda resultu+1
eor #$ff
adc #0
sta return+1
//SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
breturn_from_b11:
breturn_from_b19:
//SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy
jmp breturn
//SEG143 divr16s::@return
breturn:
//SEG144 [85] return
rts
//SEG145 divr16s::@19
b19:
//SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2
lda resultu
sta return
lda resultu+1
sta return+1
jmp breturn_from_b19
//SEG147 divr16s::@3
b3:
//SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2
sec
lda divisor
eor #$ff
adc #0
sta _11
lda divisor+1
eor #$ff
adc #0
sta _11+1
//SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1
lda neg
eor #1
sta neg
//SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 -- vwuz1=vwuz2
lda _11
sta divisoru
lda _11+1
sta divisoru+1
jmp b4_from_b3
//SEG151 divr16s::@1
b1:
//SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2
sec
lda rem
eor #$ff
adc #0
sta _7
lda rem+1
eor #$ff
adc #0
sta _7+1
//SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 -- vwuz1=vwuz2
lda _7
sta remu
lda _7+1
sta remu+1
//SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
b2_from_b1:
//SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy
//SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1
lda #<-dividend
sta dividendu
lda #>-dividend
sta dividendu+1
//SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1
lda #1
sta neg
jmp b2
}
//SEG158 divr16u
divr16u: {
.label _1 = $57
.label _2 = $58
.label rem = $10
.label dividend = $12
.label quotient = $14
.label i = $16
.label return = $14
.label divisor = $4d
.label return_2 = $4f
//SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
b1_from_divr16u:
//SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1
lda #0
sta i
//SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1
lda #<0
sta quotient
lda #>0
sta quotient+1
//SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy
//SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy
jmp b1
//SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
b1_from_b3:
//SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
//SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
//SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
//SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
jmp b1
//SEG169 divr16u::@1
b1:
//SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl rem
rol rem+1
//SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2
lda dividend+1
sta _1
//SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1
lda #$80
and _1
sta _2
//SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1
lda _2
cmp #0
beq b2_from_b1
jmp b4
//SEG174 divr16u::@4
b4:
//SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1
lda #1
ora rem
sta rem
//SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
b2_from_b1:
b2_from_b4:
//SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
jmp b2
//SEG178 divr16u::@2
b2:
//SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl dividend
rol dividend+1
//SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl quotient
rol quotient+1
//SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1
lda rem+1
cmp divisor+1
bcc b3_from_b2
bne !+
lda rem
cmp divisor
bcc b3_from_b2
!:
jmp b5
//SEG182 divr16u::@5
b5:
//SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
inc quotient
bne !+
inc quotient+1
!:
//SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2
lda rem
sec
sbc divisor
sta rem
lda rem+1
sbc divisor+1
sta rem+1
//SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
b3_from_b2:
b3_from_b5:
//SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
//SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
jmp b3
//SEG188 divr16u::@3
b3:
//SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1
inc i
//SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1
lda i
cmp #$10
bne b1_from_b3
jmp breturn
//SEG191 divr16u::@return
breturn:
//SEG192 [108] return
rts
}
//SEG193 screen_fill
screen_fill: {
.const ch = $10
.label screen = $18
.label x = $1a
.label y = $17
//SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
b1_from_screen_fill:
//SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1
lda #0
sta y
//SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1
lda #<SCREEN
sta screen
lda #>SCREEN
sta screen+1
jmp b1
//SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
b1_from_b3:
//SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy
//SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy
jmp b1
//SEG200 screen_fill::@1
b1:
//SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
b2_from_b1:
//SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuz1=vbuc1
lda #0
sta x
//SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy
jmp b2
//SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
b2_from_b2:
//SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy
//SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy
jmp b2
//SEG207 screen_fill::@2
b2:
//SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1
lda #ch
ldy #0
sta (screen),y
//SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1
inc screen
bne !+
inc screen+1
!:
//SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1
inc x
//SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuz1_neq_vbuc1_then_la1
lda x
cmp #$28
bne b2_from_b2
jmp b3
//SEG212 screen_fill::@3
b3:
//SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1
inc y
//SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1
lda y
cmp #$19
bne b1_from_b3
jmp breturn
//SEG215 screen_fill::@return
breturn:
//SEG216 [118] return
rts
}
//SEG217 bitmap_clear
bitmap_clear: {
.label bitmap = $1c
.label x = $1e
.label y = $1b
.label _3 = $59
//SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2
lda bitmap_plot_ylo
sta _3
lda bitmap_plot_yhi
sta _3+1
//SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2
lda _3
sta bitmap
lda _3+1
sta bitmap+1
//SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
b1_from_bitmap_clear:
//SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1
lda #0
sta y
//SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy
jmp b1
//SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
b1_from_b3:
//SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy
//SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy
jmp b1
//SEG226 bitmap_clear::@1
b1:
//SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
b2_from_b1:
//SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1
lda #0
sta x
//SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy
jmp b2
//SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
b2_from_b2:
//SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy
//SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy
jmp b2
//SEG233 bitmap_clear::@2
b2:
//SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1
lda #0
ldy #0
sta (bitmap),y
//SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1
inc bitmap
bne !+
inc bitmap+1
!:
//SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1
inc x
//SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1
lda x
cmp #$c8
bne b2_from_b2
jmp b3
//SEG238 bitmap_clear::@3
b3:
//SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
inc y
//SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
lda y
cmp #$28
bne b1_from_b3
jmp breturn
//SEG241 bitmap_clear::@return
breturn:
//SEG242 [129] return
rts
}
//SEG243 bitmap_init
bitmap_init: {
.label _3 = $5b
.label _4 = $5c
.label _5 = $5d
.label _6 = $5e
.label _7 = $5f
.label bits = $1f
.label x = $20
.label y = $21
.label yoffs = $22
//SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
b1_from_bitmap_init:
//SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1
lda #0
sta x
//SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1
lda #$80
sta bits
jmp b1
//SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
b1_from_b2:
//SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
//SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
jmp b1
//SEG250 bitmap_init::@1
b1:
//SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2
lda bits
ldy x
sta bitmap_plot_bit,y
//SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1
lsr bits
//SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1
lda bits
bne b10_from_b1
//SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
b2_from_b1:
//SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1
lda #$80
sta bits
jmp b2
//SEG256 bitmap_init::@2
b2:
//SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1
inc x
//SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1
lda x
bne b1_from_b2
//SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
b3_from_b2:
//SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
lda #<BITMAP
sta yoffs
lda #>BITMAP
sta yoffs+1
//SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1
lda #0
sta y
jmp b3
//SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
b3_from_b4:
//SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
//SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
jmp b3
//SEG265 bitmap_init::@3
b3:
//SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1
lda #7
and y
sta _3
//SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2
lda yoffs
sta _4
//SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3
lda _3
ora _4
sta _5
//SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2
lda _5
ldy y
sta bitmap_plot_ylo,y
//SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2
lda yoffs+1
sta _6
//SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2
lda _6
ldy y
sta bitmap_plot_yhi,y
//SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1
lda #7
and y
sta _7
//SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1
lda _7
cmp #7
bne b4_from_b3
jmp b7
//SEG274 bitmap_init::@7
b7:
//SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1
clc
lda yoffs
adc #<$28*8
sta yoffs
lda yoffs+1
adc #>$28*8
sta yoffs+1
//SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
b4_from_b3:
b4_from_b7:
//SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy
jmp b4
//SEG278 bitmap_init::@4
b4:
//SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1
inc y
//SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1
lda y
bne b3_from_b4
jmp breturn
//SEG281 bitmap_init::@return
breturn:
//SEG282 [151] return
rts
//SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
b10_from_b1:
jmp b10
//SEG284 bitmap_init::@10
b10:
//SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
b2_from_b10:
//SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy
jmp b2
}
x_start: .word $a, $14, $1e, $1e
y_start: .byte $a, $a, $a, $14
x_end: .word $14, $a, $14, $14
y_end: .byte $14, $14, $a, $14
x_cur: .fill 2*4, 0
y_cur: .fill 2*4, 0
x_add: .fill 4, 0
y_add: .fill 4, 0
delay: .fill 4, 0
bitmap_plot_ylo: .fill $100, 0
bitmap_plot_yhi: .fill $100, 0
bitmap_plot_bit: .fill $100, 0
REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp ZP_BYTE:92 [ bitmap_init::$4 ] has ALU potential.
Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ main::$9 ]
Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a
Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a
Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a
Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a
Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ point_init::point_idx#0 ]
Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a
Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a
Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a
Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a
Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a
Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a
Statement [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a
Statement [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a
Statement [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a
Statement [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx1#0 ] ) always clobbers reg byte a
Statement [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a
Statement [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a
Statement [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a
Statement [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ) always clobbers reg byte a
Statement [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ) always clobbers reg byte a
Statement [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ) always clobbers reg byte a
Statement [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ) always clobbers reg byte a
Statement [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a
Statement [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a
Statement [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a
Statement [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a
Statement [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a
Statement [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a
Statement [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
Statement [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a
Statement [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a
Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a
Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a
Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a
Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a
Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#1 ] ) always clobbers reg byte a
Statement [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#7 ] ) always clobbers reg byte a
Statement [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a
Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a
Statement [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a
Statement [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a
Statement [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a
Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ]
Statement [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a
Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a
Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a
Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ]
Statement [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a
Statement [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a
Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
Statement [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ]
Statement [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a
Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a
Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a
Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a
Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a
Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a
Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a
Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a
Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y
Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a
Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a
Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a
Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a
Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a
Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a
Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a
Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a
Statement [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a
Statement [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a
Statement [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a
Statement [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx1#0 ] ) always clobbers reg byte a
Statement [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a
Statement [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a
Statement [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a
Statement [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ) always clobbers reg byte a
Statement [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ) always clobbers reg byte a
Statement [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ) always clobbers reg byte a
Statement [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ) always clobbers reg byte a
Statement [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
Statement [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a
Statement [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a
Statement [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a
Statement [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a
Statement [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a
Statement [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a
Statement [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a
Statement [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a
Statement [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a
Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a
Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a
Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a
Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a
Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#1 ] ) always clobbers reg byte a
Statement [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#7 ] ) always clobbers reg byte a
Statement [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a
Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a
Statement [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a
Statement [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a
Statement [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a
Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a
Statement [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a
Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a
Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a
Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y
Statement [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a
Statement [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a
Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y
Statement [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a
Statement [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a
Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x ,
Potential registers zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] : zp ZP_WORD:3 ,
Potential registers zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] : zp ZP_WORD:5 ,
Potential registers zp ZP_WORD:7 [ divr16s::dividendu#3 ] : zp ZP_WORD:7 ,
Potential registers zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] : zp ZP_WORD:9 ,
Potential registers zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] : zp ZP_WORD:11 ,
Potential registers zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] : zp ZP_BYTE:13 , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] : zp ZP_WORD:14 ,
Potential registers zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:16 ,
Potential registers zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] : zp ZP_WORD:18 ,
Potential registers zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:20 ,
Potential registers zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] : zp ZP_BYTE:23 , reg byte x ,
Potential registers zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] : zp ZP_WORD:24 ,
Potential registers zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] : zp ZP_BYTE:26 , reg byte x ,
Potential registers zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] : zp ZP_BYTE:27 , reg byte x ,
Potential registers zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] : zp ZP_WORD:28 ,
Potential registers zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] : zp ZP_BYTE:30 , reg byte x ,
Potential registers zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:33 , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:34 ,
Potential registers zp ZP_BYTE:36 [ point_init::point_idx#0 ] : zp ZP_BYTE:36 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:37 [ main::$9 ] : zp ZP_BYTE:37 , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:38 [ bitmap_plot::x#0 ] : zp ZP_WORD:38 ,
Potential registers zp ZP_BYTE:40 [ bitmap_plot::y#0 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:41 [ bitmap_plot::$3 ] : zp ZP_WORD:41 ,
Potential registers zp ZP_WORD:43 [ bitmap_plot::$1 ] : zp ZP_WORD:43 ,
Potential registers zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:45 ,
Potential registers zp ZP_BYTE:47 [ bitmap_plot::$2 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:48 [ point_init::point_idx1#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:49 [ point_init::x_diff#1 ] : zp ZP_WORD:49 ,
Potential registers zp ZP_WORD:51 [ point_init::$4 ] : zp ZP_WORD:51 ,
Potential registers zp ZP_WORD:53 [ point_init::$5 ] : zp ZP_WORD:53 ,
Potential registers zp ZP_WORD:55 [ point_init::y_diff#0 ] : zp ZP_WORD:55 ,
Potential registers zp ZP_WORD:57 [ point_init::$16 ] : zp ZP_WORD:57 ,
Potential registers zp ZP_WORD:59 [ point_init::$17 ] : zp ZP_WORD:59 ,
Potential registers zp ZP_WORD:61 [ point_init::$18 ] : zp ZP_WORD:61 ,
Potential registers zp ZP_WORD:63 [ divr16s::divisor#0 ] : zp ZP_WORD:63 ,
Potential registers zp ZP_WORD:65 [ divr16s::rem#0 ] : zp ZP_WORD:65 ,
Potential registers zp ZP_WORD:67 [ divr16s::return#3 ] : zp ZP_WORD:67 ,
Potential registers zp ZP_WORD:69 [ point_init::x_stepf#0 ] : zp ZP_WORD:69 ,
Potential registers zp ZP_BYTE:71 [ point_init::$13 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:72 [ point_init::$14 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] : zp ZP_WORD:73 ,
Potential registers zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] : zp ZP_WORD:75 ,
Potential registers zp ZP_WORD:77 [ divr16u::divisor#0 ] : zp ZP_WORD:77 ,
Potential registers zp ZP_WORD:79 [ divr16u::return#2 ] : zp ZP_WORD:79 ,
Potential registers zp ZP_WORD:81 [ divr16s::resultu#0 ] : zp ZP_WORD:81 ,
Potential registers zp ZP_WORD:83 [ divr16s::$11 ] : zp ZP_WORD:83 ,
Potential registers zp ZP_WORD:85 [ divr16s::$7 ] : zp ZP_WORD:85 ,
Potential registers zp ZP_BYTE:87 [ divr16u::$1 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:88 [ divr16u::$2 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:89 [ bitmap_clear::$3 ] : zp ZP_WORD:89 ,
Potential registers zp ZP_BYTE:91 [ bitmap_init::$3 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:92 [ bitmap_init::$4 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , reg byte alu ,
Potential registers zp ZP_BYTE:93 [ bitmap_init::$5 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:94 [ bitmap_init::$6 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:95 [ bitmap_init::$7 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [divr16u] 887.75: zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 338.75: zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:87 [ divr16u::$1 ] 202: zp ZP_BYTE:88 [ divr16u::$2 ] 167.04: zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] 69.82: zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 11.33: zp ZP_WORD:77 [ divr16u::divisor#0 ] 4: zp ZP_WORD:79 [ divr16u::return#2 ]
Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:89 [ bitmap_clear::$3 ]
Uplift Scope [screen_fill] 221.6: zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 218.83: zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] 20.17: zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:92 [ bitmap_init::$4 ] 22: zp ZP_BYTE:93 [ bitmap_init::$5 ] 22: zp ZP_BYTE:94 [ bitmap_init::$6 ] 22: zp ZP_BYTE:95 [ bitmap_init::$7 ] 11: zp ZP_BYTE:91 [ bitmap_init::$3 ]
Uplift Scope [point_init] 14: zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 9: zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 4: zp ZP_WORD:53 [ point_init::$5 ] 4: zp ZP_WORD:57 [ point_init::$16 ] 4: zp ZP_WORD:59 [ point_init::$17 ] 4: zp ZP_WORD:61 [ point_init::$18 ] 4: zp ZP_WORD:69 [ point_init::x_stepf#0 ] 4: zp ZP_BYTE:71 [ point_init::$13 ] 2: zp ZP_WORD:51 [ point_init::$4 ] 2: zp ZP_BYTE:72 [ point_init::$14 ] 2: zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] 2: zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] 0.72: zp ZP_BYTE:36 [ point_init::point_idx#0 ] 0.56: zp ZP_WORD:49 [ point_init::x_diff#1 ] 0.5: zp ZP_WORD:55 [ point_init::y_diff#0 ] 0.38: zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
Uplift Scope [divr16s] 11: zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 10: zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 8.67: zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 4: zp ZP_WORD:67 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:65 [ divr16s::rem#0 ] 2: zp ZP_WORD:85 [ divr16s::$7 ] 1: zp ZP_WORD:81 [ divr16s::resultu#0 ] 1: zp ZP_WORD:83 [ divr16s::$11 ] 0.67: zp ZP_WORD:63 [ divr16s::divisor#0 ] 0.29: zp ZP_WORD:7 [ divr16s::dividendu#3 ]
Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 11: zp ZP_BYTE:37 [ main::$9 ]
Uplift Scope [bitmap_plot] 15: zp ZP_BYTE:40 [ bitmap_plot::y#0 ] 4: zp ZP_WORD:43 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:47 [ bitmap_plot::$2 ] 3: zp ZP_WORD:38 [ bitmap_plot::x#0 ] 3: zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:41 [ bitmap_plot::$3 ]
Uplift Scope []
Uplifting [divr16u] best 29551 combination zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:77 [ divr16u::divisor#0 ] zp ZP_WORD:79 [ divr16u::return#2 ]
Uplifting [bitmap_clear] best 28651 combination zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:89 [ bitmap_clear::$3 ]
Uplifting [screen_fill] best 27751 combination zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
Uplifting [bitmap_init] best 27311 combination zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:93 [ bitmap_init::$5 ] zp ZP_BYTE:94 [ bitmap_init::$6 ] zp ZP_BYTE:95 [ bitmap_init::$7 ] zp ZP_BYTE:91 [ bitmap_init::$3 ]
Limited combination testing to 100 combinations of 61440 possible.
Uplifting [point_init] best 27299 combination zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp ZP_WORD:53 [ point_init::$5 ] zp ZP_WORD:57 [ point_init::$16 ] zp ZP_WORD:59 [ point_init::$17 ] zp ZP_WORD:61 [ point_init::$18 ] zp ZP_WORD:69 [ point_init::x_stepf#0 ] reg byte a [ point_init::$13 ] zp ZP_WORD:51 [ point_init::$4 ] reg byte a [ point_init::$14 ] zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] zp ZP_BYTE:36 [ point_init::point_idx#0 ] zp ZP_WORD:49 [ point_init::x_diff#1 ] zp ZP_WORD:55 [ point_init::y_diff#0 ] zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
Limited combination testing to 100 combinations of 144 possible.
Uplifting [divr16s] best 27288 combination zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] zp ZP_WORD:67 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:65 [ divr16s::rem#0 ] zp ZP_WORD:85 [ divr16s::$7 ] zp ZP_WORD:81 [ divr16s::resultu#0 ] zp ZP_WORD:83 [ divr16s::$11 ] zp ZP_WORD:63 [ divr16s::divisor#0 ] zp ZP_WORD:7 [ divr16s::dividendu#3 ]
Uplifting [main] best 27248 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::$9 ]
Uplifting [bitmap_plot] best 27211 combination reg byte y [ bitmap_plot::y#0 ] zp ZP_WORD:43 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:38 [ bitmap_plot::x#0 ] zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] zp ZP_WORD:41 [ bitmap_plot::$3 ]
Uplifting [] best 27211 combination
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Uplifting [main] best 27211 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:93 [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 27151 combination reg byte a [ bitmap_init::$5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:94 [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 27091 combination reg byte a [ bitmap_init::$6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:95 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 27031 combination reg byte a [ bitmap_init::$7 ]
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
Uplifting [screen_fill] best 27031 combination zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Uplifting [bitmap_clear] best 27031 combination zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:91 [ bitmap_init::$3 ]
Uplifting [bitmap_init] best 27031 combination zp ZP_BYTE:91 [ bitmap_init::$3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ point_init::point_idx#0 ]
Uplifting [point_init] best 27031 combination zp ZP_BYTE:36 [ point_init::point_idx#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ point_init::point_idx1#0 ]
Uplifting [point_init] best 27031 combination zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:81 [ divr16s::resultu#0 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ main::i#2 main::i#1 ] ] with [ zp ZP_BYTE:36 [ point_init::point_idx#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ divr16s::dividendu#3 ] ] with [ zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] ] with [ zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:65 [ divr16s::rem#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp ZP_WORD:85 [ divr16s::$7 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:63 [ divr16s::divisor#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp ZP_WORD:77 [ divr16u::divisor#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp ZP_WORD:83 [ divr16s::$11 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:67 [ divr16s::return#3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:79 [ divr16u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:89 [ bitmap_clear::$3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ point_init::$4 ] ] with [ zp ZP_WORD:55 [ point_init::y_diff#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:59 [ point_init::$17 ] ] with [ zp ZP_WORD:61 [ point_init::$18 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ] ] with [ zp ZP_WORD:51 [ point_init::$4 point_init::y_diff#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 ] ] with [ zp ZP_WORD:49 [ point_init::x_diff#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:69 [ point_init::x_stepf#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 ] ] with [ zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 ] ] with [ zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:91 [ bitmap_init::$3 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 ] ] with [ zp ZP_WORD:7 [ divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] with [ zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp ZP_WORD:38 [ bitmap_plot::x#0 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 ] ] with [ zp ZP_WORD:53 [ point_init::$5 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 ] ] with [ zp ZP_WORD:57 [ point_init::$16 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$16 ] ] with [ zp ZP_WORD:59 [ point_init::$17 point_init::$18 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 ] ] with [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] with [ zp ZP_WORD:41 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 ] ] with [ zp ZP_WORD:43 [ bitmap_plot::$1 ] ]
Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ]
Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ]
Allocated (was zp ZP_BYTE:48) zp ZP_BYTE:11 [ point_init::point_idx1#0 ]
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
.label PROCPORT_DDR = 0
.const PROCPORT_DDR_MEMORY_MASK = 7
.label PROCPORT = 1
.const PROCPORT_RAM_IO = $35
.label RASTER = $d012
.label BORDERCOL = $d020
.label D011 = $d011
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.label D018 = $d018
.label CIA2_PORT_A = $dd00
.label CIA2_PORT_A_DDR = $dd02
.label BITMAP = $a000
.label SCREEN = $8800
.const DELAY = 8
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
b18_from_bbegin:
jmp b18
//SEG4 @18
b18:
//SEG5 [2] call main
jsr main
//SEG6 [3] phi from @18 to @end [phi:@18->@end]
bend_from_b18:
jmp bend
//SEG7 @end
bend:
//SEG8 main
main: {
.const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
.const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
.label i = 2
//SEG9 asm { sei }
sei
//SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
lda #PROCPORT_DDR_MEMORY_MASK
sta PROCPORT_DDR
//SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta PROCPORT
//SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
sta D011
jmp vicSelectGfxBank1
//SEG13 main::vicSelectGfxBank1
vicSelectGfxBank1:
//SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
lda #3
sta CIA2_PORT_A_DDR
//SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
jmp vicSelectGfxBank1_toDd001
//SEG16 main::vicSelectGfxBank1_toDd001
vicSelectGfxBank1_toDd001:
jmp vicSelectGfxBank1_b1
//SEG17 main::vicSelectGfxBank1_@1
vicSelectGfxBank1_b1:
//SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2
lda #vicSelectGfxBank1_toDd001_return
sta CIA2_PORT_A
//SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
toD0181_from_vicSelectGfxBank1_b1:
jmp toD0181
//SEG20 main::toD0181
toD0181:
jmp b16
//SEG21 main::@16
b16:
//SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
lda #toD0181_return
sta D018
//SEG23 [13] call bitmap_init
//SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
bitmap_init_from_b16:
jsr bitmap_init
//SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
b17_from_b16:
jmp b17
//SEG26 main::@17
b17:
//SEG27 [15] call bitmap_clear
jsr bitmap_clear
//SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
b18_from_b17:
jmp b18
//SEG29 main::@18
b18:
//SEG30 [17] call screen_fill
//SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
screen_fill_from_b18:
jsr screen_fill
//SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
b1_from_b18:
//SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1
lda #0
sta i
jmp b1
//SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
b1_from_b21:
//SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy
jmp b1
//SEG36 main::@1
b1:
//SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2
// (byte) point_init::point_idx#0 = (byte) main::i#2 // register copy zp ZP_BYTE:2
//SEG38 [20] call point_init
jsr point_init
jmp b20
//SEG39 main::@20
b20:
//SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1
lda i
lsr
tax
//SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2
ldy i
lda x_start,y
sta bitmap_plot.x
lda x_start+1,y
sta bitmap_plot.x+1
//SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx
ldy y_start,x
//SEG43 [24] call bitmap_plot
jsr bitmap_plot
jmp b21
//SEG44 main::@21
b21:
//SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2
lda i
clc
adc #2
sta i
//SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
lda i
cmp #8
bne b1_from_b21
jmp b5
//SEG47 main::@5
b5:
//SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
lda RASTER
cmp #$ff
bne b5
jmp b7
//SEG49 main::@7
b7:
//SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
inc BORDERCOL
jmp b5
}
//SEG51 bitmap_plot
bitmap_plot: {
.label _1 = 7
.label x = 3
.label plotter = 5
.label _3 = 5
//SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
lda bitmap_plot_yhi,y
sta _3+1
lda bitmap_plot_ylo,y
sta _3
//SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1
lda x
and #<$fff8
sta _1
lda x+1
and #>$fff8
sta _1+1
//SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2
lda plotter
clc
adc _1
sta plotter
lda plotter+1
adc _1+1
sta plotter+1
//SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1
lda x
//SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa
tay
lda bitmap_plot_bit,y
ldy #0
ora (plotter),y
ldy #0
sta (plotter),y
jmp breturn
//SEG57 bitmap_plot::@return
breturn:
//SEG58 [34] return
rts
}
//SEG59 point_init
point_init: {
.label _4 = 7
.label _5 = 3
.label _16 = 3
.label _17 = 3
.label _18 = 3
.label point_idx = 2
.label point_idx1 = $b
.label y_diff = 7
.label abs16s1__2 = 3
.label abs16s1_return = 3
.label abs16s2__2 = 5
.label abs16s2_return = 5
.label x_stepf = 5
.label x_diff = 9
//SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1
lda point_idx
lsr
sta point_idx1
//SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2
ldy point_idx
sec
lda x_end,y
sbc x_start,y
sta x_diff
lda x_end+1,y
sbc x_start+1,y
sta x_diff+1
//SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
ldy point_idx1
lda y_end,y
sta _4
lda #0
sta _4+1
//SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
ldy point_idx1
lda y_start,y
sta _5
lda #0
sta _5+1
//SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2
lda y_diff
sec
sbc _5
sta y_diff
lda y_diff+1
sbc _5+1
sta y_diff+1
jmp abs16s1
//SEG65 point_init::abs16s1
abs16s1:
//SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1
lda x_diff+1
bmi abs16s1_b1
jmp b12
//SEG67 point_init::@12
b12:
//SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2
lda x_diff
sta abs16s1_return
lda x_diff+1
sta abs16s1_return+1
//SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
abs16s1_breturn_from_b12:
abs16s1_breturn_from_abs16s1_b1:
//SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy
jmp abs16s1_breturn
//SEG71 point_init::abs16s1_@return
abs16s1_breturn:
jmp abs16s2
//SEG72 point_init::abs16s2
abs16s2:
//SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1
lda y_diff+1
bmi abs16s2_b1
jmp b13
//SEG74 point_init::@13
b13:
//SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2
lda y_diff
sta abs16s2_return
lda y_diff+1
sta abs16s2_return+1
//SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
abs16s2_breturn_from_b13:
abs16s2_breturn_from_abs16s2_b1:
//SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy
jmp abs16s2_breturn
//SEG78 point_init::abs16s2_@return
abs16s2_breturn:
jmp b10
//SEG79 point_init::@10
b10:
//SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1
lda abs16s1_return
cmp abs16s2_return
lda abs16s1_return+1
sbc abs16s2_return+1
bvc !+
eor #$80
!:
bpl b1
jmp b2
//SEG81 point_init::@2
b2:
//SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4
ldy point_idx
lda x_start,y
sta _16
lda x_start+1,y
sta _16+1
asl _16
rol _16+1
asl _16
rol _16+1
asl _16
rol _16+1
asl _16
rol _16+1
//SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2
ldy point_idx
lda _16
sta x_cur,y
lda _16+1
sta x_cur+1,y
//SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2
ldy point_idx1
lda y_start,y
sta _17
lda #0
sta _17+1
//SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4
asl _18
rol _18+1
asl _18
rol _18+1
asl _18
rol _18+1
asl _18
rol _18+1
//SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2
ldy point_idx
lda _18
sta y_cur,y
lda _18+1
sta y_cur+1,y
//SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2
ldy point_idx1
lda #DELAY
sta delay,y
jmp breturn
//SEG88 point_init::@return
breturn:
//SEG89 [53] return
rts
//SEG90 point_init::@1
b1:
//SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1
lda x_diff+1
bmi b3
jmp b7
//SEG92 point_init::@7
b7:
//SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2
ldy point_idx
lda #$10
sta x_add,y
jmp b4
//SEG94 point_init::@4
b4:
//SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
// (signed word) divr16s::divisor#0 = (signed word) point_init::x_diff#1 // register copy zp ZP_WORD:9
//SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
// (signed word) divr16s::rem#0 = (signed word) point_init::y_diff#0 // register copy zp ZP_WORD:7
//SEG97 [58] call divr16s
//SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
divr16s_from_b4:
jsr divr16s
//SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
// (signed word) divr16s::return#3 = (signed word) divr16s::return#2 // register copy zp ZP_WORD:5
jmp b11
//SEG100 point_init::@11
b11:
//SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
// (signed word) point_init::x_stepf#0 = (signed word) divr16s::return#3 // register copy zp ZP_WORD:5
//SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1
lda x_stepf+1
//SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4
lsr
lsr
lsr
lsr
//SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa
ldy point_idx1
sta y_add,y
jmp b2
//SEG105 point_init::@3
b3:
//SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2
ldy point_idx
lda #-$10
sta x_add,y
jmp b4
//SEG107 point_init::abs16s2_@1
abs16s2_b1:
//SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2
sec
lda y_diff
eor #$ff
adc #0
sta abs16s2__2
lda y_diff+1
eor #$ff
adc #0
sta abs16s2__2+1
//SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
// (word~) point_init::abs16s2_return#5 = (word)(signed word) point_init::abs16s2_$2#0 // register copy zp ZP_WORD:5
jmp abs16s2_breturn_from_abs16s2_b1
//SEG110 point_init::abs16s1_@1
abs16s1_b1:
//SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2
sec
lda x_diff
eor #$ff
adc #0
sta abs16s1__2
lda x_diff+1
eor #$ff
adc #0
sta abs16s1__2+1
//SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
// (word~) point_init::abs16s1_return#5 = (word)(signed word) point_init::abs16s1_$2#0 // register copy zp ZP_WORD:3
jmp abs16s1_breturn_from_abs16s1_b1
}
//SEG113 divr16s
divr16s: {
.const dividend = 0
.label _7 = 7
.label _11 = 9
.label resultu = 5
.label return = 5
.label divisor = 9
.label rem = 7
.label dividendu = 3
.label divisoru = 9
.label remu = 7
jmp b16
//SEG114 divr16s::@16
b16:
//SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1
lda rem+1
bmi b1
jmp b17
//SEG116 divr16s::@17
b17:
//SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
// (word~) divr16s::remu#8 = (word)(signed word) divr16s::rem#0 // register copy zp ZP_WORD:7
//SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
b2_from_b17:
//SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy
//SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1
lda #<dividend
sta dividendu
lda #>dividend
sta dividendu+1
//SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1
ldy #0
jmp b2
//SEG122 divr16s::@2
b2:
//SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1
lda divisor+1
bmi b3
jmp b18
//SEG124 divr16s::@18
b18:
//SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
// (word~) divr16s::divisoru#5 = (word)(signed word) divr16s::divisor#0 // register copy zp ZP_WORD:9
//SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
b4_from_b18:
b4_from_b3:
//SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy
//SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy
jmp b4
//SEG129 divr16s::@4
b4:
//SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
// (word) divr16u::dividend#1 = (word) divr16s::dividendu#3 // register copy zp ZP_WORD:3
//SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
// (word) divr16u::divisor#0 = (word) divr16s::divisoru#3 // register copy zp ZP_WORD:9
//SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3
// (word) divr16u::rem#3 = (word) divr16s::remu#3 // register copy zp ZP_WORD:7
//SEG133 [79] call divr16u
//SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
divr16u_from_b4:
jsr divr16u
//SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0
// (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:5
jmp b15
//SEG136 divr16s::@15
b15:
//SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2
// (word) divr16s::resultu#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:5
//SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1
cpy #0
beq b19
jmp b11
//SEG139 divr16s::@11
b11:
//SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1
sec
lda return
eor #$ff
adc #0
sta return
lda return+1
eor #$ff
adc #0
sta return+1
//SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
breturn_from_b11:
breturn_from_b19:
//SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy
jmp breturn
//SEG143 divr16s::@return
breturn:
//SEG144 [85] return
rts
//SEG145 divr16s::@19
b19:
//SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
// (signed word~) divr16s::return#7 = (signed word)(word) divr16s::resultu#0 // register copy zp ZP_WORD:5
jmp breturn_from_b19
//SEG147 divr16s::@3
b3:
//SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1
sec
lda _11
eor #$ff
adc #0
sta _11
lda _11+1
eor #$ff
adc #0
sta _11+1
//SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1
tya
eor #1
tay
//SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
// (word~) divr16s::divisoru#4 = (word)(signed word~) divr16s::$11 // register copy zp ZP_WORD:9
jmp b4_from_b3
//SEG151 divr16s::@1
b1:
//SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1
sec
lda _7
eor #$ff
adc #0
sta _7
lda _7+1
eor #$ff
adc #0
sta _7+1
//SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
// (word~) divr16s::remu#7 = (word)(signed word~) divr16s::$7 // register copy zp ZP_WORD:7
//SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
b2_from_b1:
//SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy
//SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1
lda #<-dividend
sta dividendu
lda #>-dividend
sta dividendu+1
//SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1
ldy #1
jmp b2
}
//SEG158 divr16u
divr16u: {
.label rem = 7
.label dividend = 3
.label quotient = 5
.label return = 5
.label divisor = 9
//SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
b1_from_divr16u:
//SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1
ldx #0
//SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1
lda #<0
sta quotient
lda #>0
sta quotient+1
//SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy
//SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy
jmp b1
//SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
b1_from_b3:
//SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
//SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
//SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
//SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
jmp b1
//SEG169 divr16u::@1
b1:
//SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl rem
rol rem+1
//SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1
lda dividend+1
//SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1
and #$80
//SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1
cmp #0
beq b2_from_b1
jmp b4
//SEG174 divr16u::@4
b4:
//SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1
lda #1
ora rem
sta rem
//SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
b2_from_b1:
b2_from_b4:
//SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
jmp b2
//SEG178 divr16u::@2
b2:
//SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl dividend
rol dividend+1
//SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl quotient
rol quotient+1
//SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1
lda rem+1
cmp divisor+1
bcc b3_from_b2
bne !+
lda rem
cmp divisor
bcc b3_from_b2
!:
jmp b5
//SEG182 divr16u::@5
b5:
//SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
inc quotient
bne !+
inc quotient+1
!:
//SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2
lda rem
sec
sbc divisor
sta rem
lda rem+1
sbc divisor+1
sta rem+1
//SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
b3_from_b2:
b3_from_b5:
//SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
//SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
jmp b3
//SEG188 divr16u::@3
b3:
//SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx
inx
//SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1
cpx #$10
bne b1_from_b3
jmp breturn
//SEG191 divr16u::@return
breturn:
//SEG192 [108] return
rts
}
//SEG193 screen_fill
screen_fill: {
.const ch = $10
.label screen = 3
.label y = 2
//SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
b1_from_screen_fill:
//SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1
lda #0
sta y
//SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1
lda #<SCREEN
sta screen
lda #>SCREEN
sta screen+1
jmp b1
//SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
b1_from_b3:
//SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy
//SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy
jmp b1
//SEG200 screen_fill::@1
b1:
//SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
b2_from_b1:
//SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1
ldx #0
//SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy
jmp b2
//SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
b2_from_b2:
//SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy
//SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy
jmp b2
//SEG207 screen_fill::@2
b2:
//SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1
lda #ch
ldy #0
sta (screen),y
//SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1
inc screen
bne !+
inc screen+1
!:
//SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx
inx
//SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1
cpx #$28
bne b2_from_b2
jmp b3
//SEG212 screen_fill::@3
b3:
//SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1
inc y
//SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1
lda y
cmp #$19
bne b1_from_b3
jmp breturn
//SEG215 screen_fill::@return
breturn:
//SEG216 [118] return
rts
}
//SEG217 bitmap_clear
bitmap_clear: {
.label bitmap = 3
.label y = 2
.label _3 = 3
//SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2
lda bitmap_plot_ylo
sta _3
lda bitmap_plot_yhi
sta _3+1
//SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
// (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3
//SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
b1_from_bitmap_clear:
//SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1
lda #0
sta y
//SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy
jmp b1
//SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
b1_from_b3:
//SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy
//SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy
jmp b1
//SEG226 bitmap_clear::@1
b1:
//SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
b2_from_b1:
//SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1
ldx #0
//SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy
jmp b2
//SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
b2_from_b2:
//SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy
//SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy
jmp b2
//SEG233 bitmap_clear::@2
b2:
//SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1
lda #0
ldy #0
sta (bitmap),y
//SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1
inc bitmap
bne !+
inc bitmap+1
!:
//SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx
inx
//SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1
cpx #$c8
bne b2_from_b2
jmp b3
//SEG238 bitmap_clear::@3
b3:
//SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
inc y
//SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
lda y
cmp #$28
bne b1_from_b3
jmp breturn
//SEG241 bitmap_clear::@return
breturn:
//SEG242 [129] return
rts
}
//SEG243 bitmap_init
bitmap_init: {
.label _3 = 2
.label yoffs = 3
//SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
b1_from_bitmap_init:
//SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
ldx #0
//SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1
lda #$80
jmp b1
//SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
b1_from_b2:
//SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
//SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
jmp b1
//SEG250 bitmap_init::@1
b1:
//SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa
sta bitmap_plot_bit,x
//SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1
lsr
//SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1
cmp #0
bne b10_from_b1
//SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
b2_from_b1:
//SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1
lda #$80
jmp b2
//SEG256 bitmap_init::@2
b2:
//SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx
inx
//SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1
cpx #0
bne b1_from_b2
//SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
b3_from_b2:
//SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
lda #<BITMAP
sta yoffs
lda #>BITMAP
sta yoffs+1
//SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1
ldx #0
jmp b3
//SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
b3_from_b4:
//SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
//SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
jmp b3
//SEG265 bitmap_init::@3
b3:
//SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
txa
and #7
sta _3
//SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
lda yoffs
//SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
ora _3
//SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
sta bitmap_plot_ylo,x
//SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
lda yoffs+1
//SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
sta bitmap_plot_yhi,x
//SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1
txa
and #7
//SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1
cmp #7
bne b4_from_b3
jmp b7
//SEG274 bitmap_init::@7
b7:
//SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1
clc
lda yoffs
adc #<$28*8
sta yoffs
lda yoffs+1
adc #>$28*8
sta yoffs+1
//SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
b4_from_b3:
b4_from_b7:
//SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy
jmp b4
//SEG278 bitmap_init::@4
b4:
//SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx
inx
//SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1
cpx #0
bne b3_from_b4
jmp breturn
//SEG281 bitmap_init::@return
breturn:
//SEG282 [151] return
rts
//SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
b10_from_b1:
jmp b10
//SEG284 bitmap_init::@10
b10:
//SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
b2_from_b10:
//SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy
jmp b2
}
x_start: .word $a, $14, $1e, $1e
y_start: .byte $a, $a, $a, $14
x_end: .word $14, $a, $14, $14
y_end: .byte $14, $14, $a, $14
x_cur: .fill 2*4, 0
y_cur: .fill 2*4, 0
x_add: .fill 4, 0
y_add: .fill 4, 0
delay: .fill 4, 0
bitmap_plot_ylo: .fill $100, 0
bitmap_plot_yhi: .fill $100, 0
bitmap_plot_bit: .fill $100, 0
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b18
Removing instruction jmp bend
Removing instruction jmp vicSelectGfxBank1
Removing instruction jmp vicSelectGfxBank1_toDd001
Removing instruction jmp vicSelectGfxBank1_b1
Removing instruction jmp toD0181
Removing instruction jmp b16
Removing instruction jmp b17
Removing instruction jmp b18
Removing instruction jmp b1
Removing instruction jmp b20
Removing instruction jmp b21
Removing instruction jmp b5
Removing instruction jmp b7
Removing instruction jmp breturn
Removing instruction jmp abs16s1
Removing instruction jmp b12
Removing instruction jmp abs16s1_breturn
Removing instruction jmp abs16s2
Removing instruction jmp b13
Removing instruction jmp abs16s2_breturn
Removing instruction jmp b10
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b7
Removing instruction jmp b4
Removing instruction jmp b11
Removing instruction jmp b16
Removing instruction jmp b17
Removing instruction jmp b2
Removing instruction jmp b18
Removing instruction jmp b4
Removing instruction jmp b15
Removing instruction jmp b11
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b4
Removing instruction jmp b2
Removing instruction jmp b5
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b7
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b10
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda i
Removing instruction ldy #0
Removing instruction ldy point_idx1
Removing instruction ldy point_idx
Replacing instruction lda #<0 with TXA
Removing instruction lda #>0
Replacing instruction ldy #0 with TAY
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b21 with b1
Replacing label abs16s2_breturn_from_abs16s2_b1 with b10
Replacing label abs16s1_breturn_from_abs16s1_b1 with abs16s2
Replacing label breturn_from_b19 with breturn
Replacing label b4_from_b3 with b4
Replacing label b2_from_b1 with b2
Replacing label b3_from_b2 with b3
Replacing label b3_from_b2 with b3
Replacing label b1_from_b3 with b1
Replacing label b2_from_b2 with b2
Replacing label b1_from_b3 with b1
Replacing label b2_from_b2 with b2
Replacing label b1_from_b3 with b1
Replacing label b10_from_b1 with b10
Replacing label b1_from_b2 with b1
Replacing label b4_from_b3 with b4
Replacing label b3_from_b4 with b3
Removing instruction bbegin:
Removing instruction b18_from_bbegin:
Removing instruction bend_from_b18:
Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
Removing instruction vicSelectGfxBank1_toDd001:
Removing instruction toD0181_from_vicSelectGfxBank1_b1:
Removing instruction toD0181:
Removing instruction b17_from_b16:
Removing instruction b18_from_b17:
Removing instruction screen_fill_from_b18:
Removing instruction b1_from_b21:
Removing instruction abs16s1_breturn_from_b12:
Removing instruction abs16s1_breturn_from_abs16s1_b1:
Removing instruction abs16s1_breturn:
Removing instruction abs16s2_breturn_from_b13:
Removing instruction abs16s2_breturn_from_abs16s2_b1:
Removing instruction abs16s2_breturn:
Removing instruction b4_from_b18:
Removing instruction b4_from_b3:
Removing instruction breturn_from_b11:
Removing instruction breturn_from_b19:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b4:
Removing instruction b3_from_b2:
Removing instruction b3_from_b5:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b2:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b2:
Removing instruction b1_from_b2:
Removing instruction b3_from_b4:
Removing instruction b4_from_b3:
Removing instruction b4_from_b7:
Removing instruction b10_from_b1:
Removing instruction b2_from_b10:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b18:
Removing instruction bend:
Removing instruction vicSelectGfxBank1:
Removing instruction vicSelectGfxBank1_b1:
Removing instruction b16:
Removing instruction bitmap_init_from_b16:
Removing instruction b17:
Removing instruction b18:
Removing instruction b1_from_b18:
Removing instruction b20:
Removing instruction b21:
Removing instruction b7:
Removing instruction breturn:
Removing instruction abs16s1:
Removing instruction b12:
Removing instruction b13:
Removing instruction breturn:
Removing instruction b7:
Removing instruction divr16s_from_b4:
Removing instruction b11:
Removing instruction b16:
Removing instruction b17:
Removing instruction b2_from_b17:
Removing instruction b18:
Removing instruction divr16u_from_b4:
Removing instruction b15:
Removing instruction b11:
Removing instruction b2_from_b1:
Removing instruction b1_from_divr16u:
Removing instruction b4:
Removing instruction b5:
Removing instruction breturn:
Removing instruction b1_from_screen_fill:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b1_from_bitmap_clear:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b1_from_bitmap_init:
Removing instruction b2_from_b1:
Removing instruction b3_from_b2:
Removing instruction b7:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Skipping double jump to breturn in beq b19
Skipping double jump to b2 in bne b10
Succesful ASM optimization Pass5DoubleJumpElimination
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b3
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction b19:
Removing instruction b10:
Succesful ASM optimization Pass5UnusedLabelElimination
Removing unreachable instruction jmp breturn
Removing unreachable instruction jmp b2
Succesful ASM optimization Pass5UnreachableCodeElimination
Fixing long branch [140] bmi abs16s1_b1 to bpl
Fixing long branch [149] bmi abs16s2_b1 to bpl
FINAL SYMBOL TABLE
(label) @18
(label) @begin
(label) @end
(byte*) BITMAP
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/dword/signed dword) 40960
(byte*) BORDERCOL
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
(byte*) CIA2_PORT_A
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
(byte*) CIA2_PORT_A_DDR
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
(byte*) D011
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
(byte*) D018
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
(byte) DELAY
(const byte) DELAY#0 DELAY = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
(byte*) PROCPORT_DDR
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
(byte) PROCPORT_DDR_MEMORY_MASK
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
(byte) PROCPORT_RAM_IO
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 34816
(byte) VIC_BMM
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
(byte) VIC_DEN
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
(byte) VIC_RSEL
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
(void()) bitmap_clear()
(word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0
(label) bitmap_clear::@1
(label) bitmap_clear::@2
(label) bitmap_clear::@3
(label) bitmap_clear::@return
(byte*) bitmap_clear::bitmap
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:3 42.599999999999994
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:3 157.0
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:3 24.0
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:3 4.0
(byte) bitmap_clear::x
(byte) bitmap_clear::x#1 reg byte x 151.5
(byte) bitmap_clear::x#2 reg byte x 67.33333333333333
(byte) bitmap_clear::y
(byte) bitmap_clear::y#1 y zp ZP_BYTE:2 16.5
(byte) bitmap_clear::y#4 y zp ZP_BYTE:2 3.6666666666666665
(void()) bitmap_init((byte*) bitmap_init::bitmap)
(byte~) bitmap_init::$3 $3 zp ZP_BYTE:2 11.0
(byte~) bitmap_init::$4 reg byte a 22.0
(byte~) bitmap_init::$5 reg byte a 22.0
(byte~) bitmap_init::$6 reg byte a 22.0
(byte~) bitmap_init::$7 reg byte a 22.0
(label) bitmap_init::@1
(label) bitmap_init::@10
(label) bitmap_init::@2
(label) bitmap_init::@3
(label) bitmap_init::@4
(label) bitmap_init::@7
(label) bitmap_init::@return
(byte*) bitmap_init::bitmap
(byte) bitmap_init::bits
(byte) bitmap_init::bits#1 reg byte a 11.0
(byte) bitmap_init::bits#3 reg byte a 16.5
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
(byte) bitmap_init::x
(byte) bitmap_init::x#1 reg byte x 16.5
(byte) bitmap_init::x#2 reg byte x 5.5
(byte) bitmap_init::y
(byte) bitmap_init::y#1 reg byte x 16.5
(byte) bitmap_init::y#2 reg byte x 6.0
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:3 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 6.111111111111112
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 11.0
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 $1 zp ZP_WORD:7 4.0
(byte~) bitmap_plot::$2 reg byte a 4.0
(word~) bitmap_plot::$3 $3 zp ZP_WORD:5 1.0
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:5 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 x zp ZP_WORD:3 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte y 15.0
(byte[256]) bitmap_plot_bit
(const byte[256]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( 256, 0) }
(byte[256]) bitmap_plot_yhi
(const byte[256]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( 256, 0) }
(byte[256]) bitmap_plot_ylo
(const byte[256]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( 256, 0) }
(byte[4]) delay
(const byte[4]) delay#0 delay = { fill( 4, 0) }
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(signed word~) divr16s::$11 $11 zp ZP_WORD:9 1.0
(signed word~) divr16s::$7 $7 zp ZP_WORD:7 2.0
(label) divr16s::@1
(label) divr16s::@11
(label) divr16s::@15
(label) divr16s::@16
(label) divr16s::@17
(label) divr16s::@18
(label) divr16s::@19
(label) divr16s::@2
(label) divr16s::@3
(label) divr16s::@4
(label) divr16s::@return
(signed word) divr16s::dividend
(const signed word) divr16s::dividend#0 dividend = (byte/signed byte/word/signed word/dword/signed dword) 0
(word) divr16s::dividendu
(word) divr16s::dividendu#3 dividendu zp ZP_WORD:3 0.2857142857142857
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0 divisor zp ZP_WORD:9 0.6666666666666666
(word) divr16s::divisoru
(word) divr16s::divisoru#3 divisoru zp ZP_WORD:9 3.0
(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:9 4.0
(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:9 4.0
(byte) divr16s::neg
(byte) divr16s::neg#2 reg byte y 2.0
(byte) divr16s::neg#3 reg byte y 1.0
(byte) divr16s::neg#4 reg byte y 0.8571428571428571
(signed word) divr16s::rem
(signed word) divr16s::rem#0 rem zp ZP_WORD:7 2.0
(word) divr16s::remu
(word) divr16s::remu#3 remu zp ZP_WORD:7 0.6666666666666666
(word~) divr16s::remu#7 remu zp ZP_WORD:7 4.0
(word~) divr16s::remu#8 remu zp ZP_WORD:7 4.0
(word) divr16s::resultu
(word) divr16s::resultu#0 resultu zp ZP_WORD:5 1.0
(signed word) divr16s::return
(signed word) divr16s::return#1 return zp ZP_WORD:5 4.0
(signed word) divr16s::return#2 return zp ZP_WORD:5 2.0
(signed word) divr16s::return#3 return zp ZP_WORD:5 4.0
(signed word~) divr16s::return#7 return zp ZP_WORD:5 4.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 202.0
(byte~) divr16u::$2 reg byte a 202.0
(label) divr16u::@1
(label) divr16u::@2
(label) divr16u::@3
(label) divr16u::@4
(label) divr16u::@5
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:3 25.25
(word) divr16u::dividend#1 dividend zp ZP_WORD:3 1.0
(word) divr16u::dividend#2 dividend zp ZP_WORD:3 43.57142857142858
(word) divr16u::divisor
(word) divr16u::divisor#0 divisor zp ZP_WORD:9 11.333333333333332
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 151.5
(byte) divr16u::i#2 reg byte x 15.538461538461538
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:5 151.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:5 101.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:5 25.25
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:7 75.75
(word) divr16u::rem#1 rem zp ZP_WORD:7 202.0
(word) divr16u::rem#2 rem zp ZP_WORD:7 202.0
(word) divr16u::rem#3 rem zp ZP_WORD:7 2.0
(word) divr16u::rem#4 rem zp ZP_WORD:7 204.0
(word) divr16u::rem#5 rem zp ZP_WORD:7 101.0
(word) divr16u::rem#9 rem zp ZP_WORD:7 101.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:5 61.0
(word) divr16u::return#2 return zp ZP_WORD:5 4.0
(void()) main()
(byte~) main::$9 reg byte x 11.0
(label) main::@1
(label) main::@16
(label) main::@17
(label) main::@18
(label) main::@20
(label) main::@21
(label) main::@5
(label) main::@7
(byte) main::i
(byte) main::i#1 i zp ZP_BYTE:2 16.5
(byte) main::i#2 i zp ZP_BYTE:2 7.857142857142857
(label) main::toD0181
(word~) main::toD0181_$0
(word~) main::toD0181_$1
(word~) main::toD0181_$2
(byte~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(byte~) main::toD0181_$6
(byte~) main::toD0181_$7
(byte~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
(byte*) main::toD0181_screen
(label) main::vicSelectGfxBank1
(byte~) main::vicSelectGfxBank1_$0
(label) main::vicSelectGfxBank1_@1
(byte*) main::vicSelectGfxBank1_gfx
(label) main::vicSelectGfxBank1_toDd001
(word~) main::vicSelectGfxBank1_toDd001_$0
(byte~) main::vicSelectGfxBank1_toDd001_$1
(byte~) main::vicSelectGfxBank1_toDd001_$2
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
(byte*) main::vicSelectGfxBank1_toDd001_gfx
(byte) main::vicSelectGfxBank1_toDd001_return
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
(void()) point_init((byte) point_init::point_idx)
(byte~) point_init::$13 reg byte a 4.0
(byte~) point_init::$14 reg byte a 2.0
(word~) point_init::$16 $16 zp ZP_WORD:3 4.0
(word~) point_init::$17 $17 zp ZP_WORD:3 4.0
(word~) point_init::$18 $18 zp ZP_WORD:3 4.0
(signed word~) point_init::$4 $4 zp ZP_WORD:7 2.0
(signed word~) point_init::$5 $5 zp ZP_WORD:3 4.0
(label) point_init::@1
(label) point_init::@10
(label) point_init::@11
(label) point_init::@12
(label) point_init::@13
(label) point_init::@2
(label) point_init::@3
(label) point_init::@4
(label) point_init::@7
(label) point_init::@return
(label) point_init::abs16s1
(bool~) point_init::abs16s1_$0
(word~) point_init::abs16s1_$1
(signed word~) point_init::abs16s1_$2
(signed word) point_init::abs16s1_$2#0 abs16s1_$2 zp ZP_WORD:3 2.0
(word~) point_init::abs16s1_$3
(label) point_init::abs16s1_@1
(label) point_init::abs16s1_@return
(word) point_init::abs16s1_return
(word) point_init::abs16s1_return#2 abs16s1_return zp ZP_WORD:3 1.0
(word~) point_init::abs16s1_return#5 abs16s1_return zp ZP_WORD:3 4.0
(word~) point_init::abs16s1_return#6 abs16s1_return zp ZP_WORD:3 4.0
(signed word) point_init::abs16s1_w
(label) point_init::abs16s2
(bool~) point_init::abs16s2_$0
(word~) point_init::abs16s2_$1
(signed word~) point_init::abs16s2_$2
(signed word) point_init::abs16s2_$2#0 abs16s2_$2 zp ZP_WORD:5 2.0
(word~) point_init::abs16s2_$3
(label) point_init::abs16s2_@1
(label) point_init::abs16s2_@return
(word) point_init::abs16s2_return
(word) point_init::abs16s2_return#2 abs16s2_return zp ZP_WORD:5 6.0
(word~) point_init::abs16s2_return#5 abs16s2_return zp ZP_WORD:5 4.0
(word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:5 4.0
(signed word) point_init::abs16s2_w
(byte) point_init::point_idx
(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.71875
(byte) point_init::point_idx1
(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:11 0.375
(signed word) point_init::x_diff
(signed word) point_init::x_diff#1 x_diff zp ZP_WORD:9 0.5555555555555556
(signed word) point_init::x_stepf
(signed word) point_init::x_stepf#0 x_stepf zp ZP_WORD:5 4.0
(signed word) point_init::y_diff
(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:7 0.5
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
(label) screen_fill::@1
(label) screen_fill::@2
(label) screen_fill::@3
(label) screen_fill::@return
(byte) screen_fill::ch
(const byte) screen_fill::ch#0 ch = (byte/signed byte/word/signed word/dword/signed dword) 16
(byte*) screen_fill::screen
(byte*) screen_fill::screen#1 screen zp ZP_WORD:3 42.599999999999994
(byte*) screen_fill::screen#2 screen zp ZP_WORD:3 157.0
(byte*) screen_fill::screen#3 screen zp ZP_WORD:3 22.0
(byte) screen_fill::x
(byte) screen_fill::x#1 reg byte x 151.5
(byte) screen_fill::x#2 reg byte x 67.33333333333333
(byte) screen_fill::y
(byte) screen_fill::y#1 y zp ZP_BYTE:2 16.5
(byte) screen_fill::y#4 y zp ZP_BYTE:2 3.6666666666666665
(signed byte[4]) x_add
(const signed byte[4]) x_add#0 x_add = { fill( 4, 0) }
(word[4]) x_cur
(const word[4]) x_cur#0 x_cur = { fill( 4, 0) }
(word[4]) x_end
(const word[4]) x_end#0 x_end = { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(word[4]) x_start
(const word[4]) x_start#0 x_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 }
(signed byte[4]) y_add
(const signed byte[4]) y_add#0 y_add = { fill( 4, 0) }
(word[4]) y_cur
(const word[4]) y_cur#0 y_cur = { fill( 4, 0) }
(byte[4]) y_end
(const byte[4]) y_end#0 y_end = { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(byte[4]) y_start
(const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ]
zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$16 point_init::$17 point_init::$18 ]
zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::$3 bitmap_plot::plotter#1 ]
zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ]
zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ]
reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte x [ screen_fill::x#2 screen_fill::x#1 ]
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
reg byte x [ main::$9 ]
reg byte y [ bitmap_plot::y#0 ]
reg byte a [ bitmap_plot::$2 ]
zp ZP_BYTE:11 [ point_init::point_idx1#0 ]
reg byte a [ point_init::$13 ]
reg byte a [ point_init::$14 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]
reg byte a [ bitmap_init::$7 ]
FINAL ASSEMBLER
Score: 21471
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
.label PROCPORT_DDR = 0
.const PROCPORT_DDR_MEMORY_MASK = 7
.label PROCPORT = 1
.const PROCPORT_RAM_IO = $35
.label RASTER = $d012
.label BORDERCOL = $d020
.label D011 = $d011
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.label D018 = $d018
.label CIA2_PORT_A = $dd00
.label CIA2_PORT_A_DDR = $dd02
.label BITMAP = $a000
.label SCREEN = $8800
.const DELAY = 8
//SEG2 @begin
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
//SEG4 @18
//SEG5 [2] call main
jsr main
//SEG6 [3] phi from @18 to @end [phi:@18->@end]
//SEG7 @end
//SEG8 main
main: {
.const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
.const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
.label i = 2
//SEG9 asm { sei }
sei
//SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
lda #PROCPORT_DDR_MEMORY_MASK
sta PROCPORT_DDR
//SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta PROCPORT
//SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
sta D011
//SEG13 main::vicSelectGfxBank1
//SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
lda #3
sta CIA2_PORT_A_DDR
//SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
//SEG16 main::vicSelectGfxBank1_toDd001
//SEG17 main::vicSelectGfxBank1_@1
//SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2
lda #vicSelectGfxBank1_toDd001_return
sta CIA2_PORT_A
//SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
//SEG20 main::toD0181
//SEG21 main::@16
//SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
lda #toD0181_return
sta D018
//SEG23 [13] call bitmap_init
//SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
jsr bitmap_init
//SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
//SEG26 main::@17
//SEG27 [15] call bitmap_clear
jsr bitmap_clear
//SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
//SEG29 main::@18
//SEG30 [17] call screen_fill
//SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
jsr screen_fill
//SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
//SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1
lda #0
sta i
//SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
//SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy
//SEG36 main::@1
b1:
//SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2
// (byte) point_init::point_idx#0 = (byte) main::i#2 // register copy zp ZP_BYTE:2
//SEG38 [20] call point_init
jsr point_init
//SEG39 main::@20
//SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1
lda i
lsr
tax
//SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2
ldy i
lda x_start,y
sta bitmap_plot.x
lda x_start+1,y
sta bitmap_plot.x+1
//SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx
ldy y_start,x
//SEG43 [24] call bitmap_plot
jsr bitmap_plot
//SEG44 main::@21
//SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2
lda i
clc
adc #2
sta i
//SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
cmp #8
bne b1
//SEG47 main::@5
b5:
//SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
lda RASTER
cmp #$ff
bne b5
//SEG49 main::@7
//SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
inc BORDERCOL
jmp b5
}
//SEG51 bitmap_plot
bitmap_plot: {
.label _1 = 7
.label x = 3
.label plotter = 5
.label _3 = 5
//SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
lda bitmap_plot_yhi,y
sta _3+1
lda bitmap_plot_ylo,y
sta _3
//SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1
lda x
and #<$fff8
sta _1
lda x+1
and #>$fff8
sta _1+1
//SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2
lda plotter
clc
adc _1
sta plotter
lda plotter+1
adc _1+1
sta plotter+1
//SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1
lda x
//SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa
tay
lda bitmap_plot_bit,y
ldy #0
ora (plotter),y
sta (plotter),y
//SEG57 bitmap_plot::@return
//SEG58 [34] return
rts
}
//SEG59 point_init
point_init: {
.label _4 = 7
.label _5 = 3
.label _16 = 3
.label _17 = 3
.label _18 = 3
.label point_idx = 2
.label point_idx1 = $b
.label y_diff = 7
.label abs16s1__2 = 3
.label abs16s1_return = 3
.label abs16s2__2 = 5
.label abs16s2_return = 5
.label x_stepf = 5
.label x_diff = 9
//SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1
lda point_idx
lsr
sta point_idx1
//SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2
ldy point_idx
sec
lda x_end,y
sbc x_start,y
sta x_diff
lda x_end+1,y
sbc x_start+1,y
sta x_diff+1
//SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
ldy point_idx1
lda y_end,y
sta _4
lda #0
sta _4+1
//SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
lda y_start,y
sta _5
lda #0
sta _5+1
//SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2
lda y_diff
sec
sbc _5
sta y_diff
lda y_diff+1
sbc _5+1
sta y_diff+1
//SEG65 point_init::abs16s1
//SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1
lda x_diff+1
bpl !abs16s1_b1+
jmp abs16s1_b1
!abs16s1_b1:
//SEG67 point_init::@12
//SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2
lda x_diff
sta abs16s1_return
lda x_diff+1
sta abs16s1_return+1
//SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
//SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy
//SEG71 point_init::abs16s1_@return
//SEG72 point_init::abs16s2
abs16s2:
//SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1
lda y_diff+1
bpl !abs16s2_b1+
jmp abs16s2_b1
!abs16s2_b1:
//SEG74 point_init::@13
//SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2
lda y_diff
sta abs16s2_return
lda y_diff+1
sta abs16s2_return+1
//SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
//SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy
//SEG78 point_init::abs16s2_@return
//SEG79 point_init::@10
b10:
//SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1
lda abs16s1_return
cmp abs16s2_return
lda abs16s1_return+1
sbc abs16s2_return+1
bvc !+
eor #$80
!:
bpl b1
//SEG81 point_init::@2
b2:
//SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4
ldy point_idx
lda x_start,y
sta _16
lda x_start+1,y
sta _16+1
asl _16
rol _16+1
asl _16
rol _16+1
asl _16
rol _16+1
asl _16
rol _16+1
//SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2
lda _16
sta x_cur,y
lda _16+1
sta x_cur+1,y
//SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2
ldy point_idx1
lda y_start,y
sta _17
lda #0
sta _17+1
//SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4
asl _18
rol _18+1
asl _18
rol _18+1
asl _18
rol _18+1
asl _18
rol _18+1
//SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2
ldy point_idx
lda _18
sta y_cur,y
lda _18+1
sta y_cur+1,y
//SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2
ldy point_idx1
lda #DELAY
sta delay,y
//SEG88 point_init::@return
//SEG89 [53] return
rts
//SEG90 point_init::@1
b1:
//SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1
lda x_diff+1
bmi b3
//SEG92 point_init::@7
//SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2
ldy point_idx
lda #$10
sta x_add,y
//SEG94 point_init::@4
b4:
//SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
// (signed word) divr16s::divisor#0 = (signed word) point_init::x_diff#1 // register copy zp ZP_WORD:9
//SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
// (signed word) divr16s::rem#0 = (signed word) point_init::y_diff#0 // register copy zp ZP_WORD:7
//SEG97 [58] call divr16s
//SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
jsr divr16s
//SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
// (signed word) divr16s::return#3 = (signed word) divr16s::return#2 // register copy zp ZP_WORD:5
//SEG100 point_init::@11
//SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
// (signed word) point_init::x_stepf#0 = (signed word) divr16s::return#3 // register copy zp ZP_WORD:5
//SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1
lda x_stepf+1
//SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4
lsr
lsr
lsr
lsr
//SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa
ldy point_idx1
sta y_add,y
jmp b2
//SEG105 point_init::@3
b3:
//SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2
ldy point_idx
lda #-$10
sta x_add,y
jmp b4
//SEG107 point_init::abs16s2_@1
abs16s2_b1:
//SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2
sec
lda y_diff
eor #$ff
adc #0
sta abs16s2__2
lda y_diff+1
eor #$ff
adc #0
sta abs16s2__2+1
//SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
// (word~) point_init::abs16s2_return#5 = (word)(signed word) point_init::abs16s2_$2#0 // register copy zp ZP_WORD:5
jmp b10
//SEG110 point_init::abs16s1_@1
abs16s1_b1:
//SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2
sec
lda x_diff
eor #$ff
adc #0
sta abs16s1__2
lda x_diff+1
eor #$ff
adc #0
sta abs16s1__2+1
//SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
// (word~) point_init::abs16s1_return#5 = (word)(signed word) point_init::abs16s1_$2#0 // register copy zp ZP_WORD:3
jmp abs16s2
}
//SEG113 divr16s
divr16s: {
.const dividend = 0
.label _7 = 7
.label _11 = 9
.label resultu = 5
.label return = 5
.label divisor = 9
.label rem = 7
.label dividendu = 3
.label divisoru = 9
.label remu = 7
//SEG114 divr16s::@16
//SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1
lda rem+1
bmi b1
//SEG116 divr16s::@17
//SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
// (word~) divr16s::remu#8 = (word)(signed word) divr16s::rem#0 // register copy zp ZP_WORD:7
//SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
//SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy
//SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1
lda #<dividend
sta dividendu
lda #>dividend
sta dividendu+1
//SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1
ldy #0
//SEG122 divr16s::@2
b2:
//SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1
lda divisor+1
bmi b3
//SEG124 divr16s::@18
//SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
// (word~) divr16s::divisoru#5 = (word)(signed word) divr16s::divisor#0 // register copy zp ZP_WORD:9
//SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
//SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy
//SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy
//SEG129 divr16s::@4
b4:
//SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
// (word) divr16u::dividend#1 = (word) divr16s::dividendu#3 // register copy zp ZP_WORD:3
//SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
// (word) divr16u::divisor#0 = (word) divr16s::divisoru#3 // register copy zp ZP_WORD:9
//SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3
// (word) divr16u::rem#3 = (word) divr16s::remu#3 // register copy zp ZP_WORD:7
//SEG133 [79] call divr16u
//SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
jsr divr16u
//SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0
// (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:5
//SEG136 divr16s::@15
//SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2
// (word) divr16s::resultu#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:5
//SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1
cpy #0
beq breturn
//SEG139 divr16s::@11
//SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1
sec
lda return
eor #$ff
adc #0
sta return
lda return+1
eor #$ff
adc #0
sta return+1
//SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
//SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy
//SEG143 divr16s::@return
breturn:
//SEG144 [85] return
rts
//SEG145 divr16s::@19
//SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
// (signed word~) divr16s::return#7 = (signed word)(word) divr16s::resultu#0 // register copy zp ZP_WORD:5
//SEG147 divr16s::@3
b3:
//SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1
sec
lda _11
eor #$ff
adc #0
sta _11
lda _11+1
eor #$ff
adc #0
sta _11+1
//SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1
tya
eor #1
tay
//SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
// (word~) divr16s::divisoru#4 = (word)(signed word~) divr16s::$11 // register copy zp ZP_WORD:9
jmp b4
//SEG151 divr16s::@1
b1:
//SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1
sec
lda _7
eor #$ff
adc #0
sta _7
lda _7+1
eor #$ff
adc #0
sta _7+1
//SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
// (word~) divr16s::remu#7 = (word)(signed word~) divr16s::$7 // register copy zp ZP_WORD:7
//SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
//SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy
//SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1
lda #<-dividend
sta dividendu
lda #>-dividend
sta dividendu+1
//SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1
ldy #1
jmp b2
}
//SEG158 divr16u
divr16u: {
.label rem = 7
.label dividend = 3
.label quotient = 5
.label return = 5
.label divisor = 9
//SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
//SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1
ldx #0
//SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1
txa
sta quotient
sta quotient+1
//SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy
//SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy
//SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
//SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
//SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
//SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
//SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
//SEG169 divr16u::@1
b1:
//SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl rem
rol rem+1
//SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1
lda dividend+1
//SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1
and #$80
//SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1
cmp #0
beq b2
//SEG174 divr16u::@4
//SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1
lda #1
ora rem
sta rem
//SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
//SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
//SEG178 divr16u::@2
b2:
//SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl dividend
rol dividend+1
//SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
asl quotient
rol quotient+1
//SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1
lda rem+1
cmp divisor+1
bcc b3
bne !+
lda rem
cmp divisor
bcc b3
!:
//SEG182 divr16u::@5
//SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
inc quotient
bne !+
inc quotient+1
!:
//SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2
lda rem
sec
sbc divisor
sta rem
lda rem+1
sbc divisor+1
sta rem+1
//SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
//SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
//SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
//SEG188 divr16u::@3
b3:
//SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx
inx
//SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1
cpx #$10
bne b1
//SEG191 divr16u::@return
//SEG192 [108] return
rts
}
//SEG193 screen_fill
screen_fill: {
.const ch = $10
.label screen = 3
.label y = 2
//SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
//SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1
lda #0
sta y
//SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1
lda #<SCREEN
sta screen
lda #>SCREEN
sta screen+1
//SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
//SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy
//SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy
//SEG200 screen_fill::@1
b1:
//SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
//SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1
ldx #0
//SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy
//SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
//SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy
//SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy
//SEG207 screen_fill::@2
b2:
//SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1
lda #ch
ldy #0
sta (screen),y
//SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1
inc screen
bne !+
inc screen+1
!:
//SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx
inx
//SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1
cpx #$28
bne b2
//SEG212 screen_fill::@3
//SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1
inc y
//SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1
lda y
cmp #$19
bne b1
//SEG215 screen_fill::@return
//SEG216 [118] return
rts
}
//SEG217 bitmap_clear
bitmap_clear: {
.label bitmap = 3
.label y = 2
.label _3 = 3
//SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2
lda bitmap_plot_ylo
sta _3
lda bitmap_plot_yhi
sta _3+1
//SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
// (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3
//SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
//SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1
lda #0
sta y
//SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy
//SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
//SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy
//SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy
//SEG226 bitmap_clear::@1
b1:
//SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
//SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1
ldx #0
//SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy
//SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
//SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy
//SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy
//SEG233 bitmap_clear::@2
b2:
//SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1
lda #0
tay
sta (bitmap),y
//SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1
inc bitmap
bne !+
inc bitmap+1
!:
//SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx
inx
//SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1
cpx #$c8
bne b2
//SEG238 bitmap_clear::@3
//SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
inc y
//SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
lda y
cmp #$28
bne b1
//SEG241 bitmap_clear::@return
//SEG242 [129] return
rts
}
//SEG243 bitmap_init
bitmap_init: {
.label _3 = 2
.label yoffs = 3
//SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
//SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
ldx #0
//SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1
lda #$80
//SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
//SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
//SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
//SEG250 bitmap_init::@1
b1:
//SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa
sta bitmap_plot_bit,x
//SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1
lsr
//SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1
cmp #0
bne b2
//SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
//SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1
lda #$80
//SEG256 bitmap_init::@2
b2:
//SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx
inx
//SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1
cpx #0
bne b1
//SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
//SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
lda #<BITMAP
sta yoffs
lda #>BITMAP
sta yoffs+1
//SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1
ldx #0
//SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
//SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
//SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
//SEG265 bitmap_init::@3
b3:
//SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
txa
and #7
sta _3
//SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
lda yoffs
//SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
ora _3
//SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
sta bitmap_plot_ylo,x
//SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
lda yoffs+1
//SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
sta bitmap_plot_yhi,x
//SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1
txa
and #7
//SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1
cmp #7
bne b4
//SEG274 bitmap_init::@7
//SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1
clc
lda yoffs
adc #<$28*8
sta yoffs
lda yoffs+1
adc #>$28*8
sta yoffs+1
//SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
//SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy
//SEG278 bitmap_init::@4
b4:
//SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx
inx
//SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1
cpx #0
bne b3
//SEG281 bitmap_init::@return
//SEG282 [151] return
rts
//SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
//SEG284 bitmap_init::@10
//SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
//SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy
}
x_start: .word $a, $14, $1e, $1e
y_start: .byte $a, $a, $a, $14
x_end: .word $14, $a, $14, $14
y_end: .byte $14, $14, $a, $14
x_cur: .fill 2*4, 0
y_cur: .fill 2*4, 0
x_add: .fill 4, 0
y_add: .fill 4, 0
delay: .fill 4, 0
bitmap_plot_ylo: .fill $100, 0
bitmap_plot_yhi: .fill $100, 0
bitmap_plot_bit: .fill $100, 0