(label) @1
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte*) BITMAP = (byte*) 8192
(const byte*) CIA2_PORT_A = (byte*) 56576
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte*) D011 = (byte*) 53265
(const byte*) D016 = (byte*) 53270
(const byte*) D018 = (byte*) 53272
(const dword) PI2_u4f28 = (dword) $6487ed51
(const dword) PI_HALF_u4f28 = (dword) $1921fb54
(const dword) PI_u4f28 = (dword) $3243f6a9
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const byte) PROCPORT_RAM_IO = (byte) 5
(const byte*) SCREEN = (byte*) 1024
(const word) SIN_SIZE = (word) $200
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_CSEL = (byte) 8
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(label) bitmap_clear::@1
(label) bitmap_clear::@return
(byte) bitmap_clear::bgcol
(byte) bitmap_clear::col
(const byte) bitmap_clear::col#0 col = (const byte) WHITE*(byte) $10
(byte) bitmap_clear::fgcol
(byte*) bitmap_gfx
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
(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 zp[1]:34 5.5
(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::@return
(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::gfx
(byte*) bitmap_init::screen
(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 5.5
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:16 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:16 6.875
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:16 11.0
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 zp[2]:24 4.0
(byte~) bitmap_plot::$2 reg byte a 4.0
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(word) bitmap_plot::plotter#0 plotter zp[2]:18 1.0
(byte*) bitmap_plot::plotter#1 plotter zp[2]:18 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 x zp[2]:6 11.0
(word) bitmap_plot::x#1 x zp[2]:6 11.0
(word) bitmap_plot::x#2 x zp[2]:6 6.5
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 22.0
(byte) bitmap_plot::y#1 reg byte x 22.0
(byte) bitmap_plot::y#2 reg byte x 26.0
(const byte*) bitmap_plot_bit[(number) $100]  = { fill( $100, 0) }
(const byte*) bitmap_plot_yhi[(number) $100]  = { fill( $100, 0) }
(const byte*) bitmap_plot_ylo[(number) $100]  = { fill( $100, 0) }
(byte*) bitmap_screen
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
(label) div32u16u::@2
(label) div32u16u::@return
(dword) div32u16u::dividend
(word) div32u16u::divisor
(dword) div32u16u::quotient
(word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:32 0.8
(word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:14 4.0
(dword) div32u16u::return
(dword) div32u16u::return#0 return zp[4]:20 1.3333333333333333
(dword) div32u16u::return#2 return zp[4]:20 4.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 22.0
(byte~) divr16u::$2 reg byte a 22.0
(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 dividend zp[2]:12 2.75
(word) divr16u::dividend#3 dividend zp[2]:12 5.0
(word) divr16u::dividend#5 dividend zp[2]:12 2.0
(word) divr16u::divisor
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp[2]:14 16.5
(word) divr16u::quotient#2 quotient zp[2]:14 11.0
(word) divr16u::quotient#3 quotient zp[2]:14 2.75
(word) divr16u::rem
(word) divr16u::rem#0 rem zp[2]:24 8.25
(word) divr16u::rem#1 rem zp[2]:24 22.0
(word) divr16u::rem#10 rem zp[2]:24 4.0
(word) divr16u::rem#11 rem zp[2]:24 11.666666666666666
(word) divr16u::rem#2 rem zp[2]:24 22.0
(word) divr16u::rem#4 rem zp[2]:24 4.0
(word) divr16u::rem#5 rem zp[2]:24 24.0
(word) divr16u::rem#6 rem zp[2]:24 11.0
(word) divr16u::return
(word) divr16u::return#0 return zp[2]:14 5.285714285714286
(word) divr16u::return#2 return zp[2]:14 4.0
(word) divr16u::return#3 return zp[2]:14 4.0
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::toD0181
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
(byte*) main::toD0181_screen
(label) main::vicSelectGfxBank1
(label) main::vicSelectGfxBank1_@1
(byte*) main::vicSelectGfxBank1_gfx
(label) main::vicSelectGfxBank1_toDd001
(byte*) main::vicSelectGfxBank1_toDd001_gfx
(byte) main::vicSelectGfxBank1_toDd001_return
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@3
(label) memset::@return
(byte) memset::c
(byte) memset::c#4 reg byte x 1.375
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:18 22.0
(byte*) memset::dst#2 dst zp[2]:18 15.333333333333332
(byte*) memset::dst#4 dst zp[2]:18 4.0
(byte*) memset::end
(byte*) memset::end#0 end zp[2]:16 2.1666666666666665
(word) memset::num
(word) memset::num#2 num zp[2]:16 2.0
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:18
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
(word~) mul16s::$16 zp[2]:30 4.0
(word~) mul16s::$9 zp[2]:30 4.0
(label) mul16s::@1
(label) mul16s::@2
(label) mul16s::@3
(label) mul16s::@4
(label) mul16s::@return
(signed word) mul16s::a
(signed word) mul16s::a#0 a zp[2]:12 2.6
(signed word) mul16s::b
(dword) mul16s::m
(dword) mul16s::m#0 m zp[4]:8 2.0
(dword) mul16s::m#1 m zp[4]:8 4.0
(dword) mul16s::m#4 m zp[4]:8 4.0
(signed dword) mul16s::return
(signed dword) mul16s::return#0 return zp[4]:8 4.333333333333333
(signed dword) mul16s::return#2 return zp[4]:8 22.0
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 202.0
(label) mul16u::@1
(label) mul16u::@2
(label) mul16u::@3
(label) mul16u::@4
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp[2]:24 101.0
(word) mul16u::a#1 a zp[2]:24 4.0
(word) mul16u::a#2 a zp[2]:24 2.0
(word) mul16u::a#3 a zp[2]:24 67.66666666666666
(word) mul16u::a#6 a zp[2]:24 3.0
(word) mul16u::b
(word) mul16u::b#1 b zp[2]:18 4.0
(word) mul16u::b#2 b zp[2]:18 2.0
(dword) mul16u::mb
(dword) mul16u::mb#0 mb zp[4]:26 4.0
(dword) mul16u::mb#1 mb zp[4]:26 202.0
(dword) mul16u::mb#2 mb zp[4]:26 43.57142857142858
(dword) mul16u::res
(dword) mul16u::res#1 res zp[4]:8 202.0
(dword) mul16u::res#2 res zp[4]:8 43.85714285714286
(dword) mul16u::res#6 res zp[4]:8 101.0
(dword) mul16u::return
(dword) mul16u::return#2 return zp[4]:8 4.0
(dword) mul16u::return#3 return zp[4]:8 4.0
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
(dword~) mulu16_sel::$0 zp[4]:8 4.0
(dword~) mulu16_sel::$1 zp[4]:8 4.0
(label) mulu16_sel::@1
(label) mulu16_sel::@return
(word) mulu16_sel::return
(word) mulu16_sel::return#0 return zp[2]:32 4.0
(word) mulu16_sel::return#1 return_1 zp[2]:14 4.0
(word) mulu16_sel::return#10 return_1 zp[2]:14 4.0
(word) mulu16_sel::return#11 return zp[2]:32 4.0
(word) mulu16_sel::return#12 return zp[2]:32 1.714285714285714
(word) mulu16_sel::return#2 return zp[2]:32 4.0
(byte) mulu16_sel::select
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
(word) mulu16_sel::v1
(word) mulu16_sel::v1#0 v1 zp[2]:14 2.0
(word) mulu16_sel::v1#1 v1 zp[2]:14 2.0
(word) mulu16_sel::v1#2 v1 zp[2]:14 4.0
(word) mulu16_sel::v1#3 v1 zp[2]:14 2.0
(word) mulu16_sel::v1#4 v1 zp[2]:14 2.0
(word) mulu16_sel::v1#5 v1 zp[2]:14 12.0
(word) mulu16_sel::v2
(word) mulu16_sel::v2#0 v2 zp[2]:18 4.0
(word) mulu16_sel::v2#1 v2 zp[2]:18 4.0
(word) mulu16_sel::v2#3 v2 zp[2]:18 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:18 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:18 5.0
(word) rem16u
(word) rem16u#1 rem16u zp[2]:24 0.8
(void()) render_sine()
(signed word*~) render_sine::$1 zp[2]:18 22.0
(word~) render_sine::$10 zp[2]:18 22.0
(word~) render_sine::$11 zp[2]:18 22.0
(signed word*~) render_sine::$4 zp[2]:18 22.0
(label) render_sine::@1
(label) render_sine::@2
(label) render_sine::@3
(label) render_sine::@4
(label) render_sine::@5
(label) render_sine::@6
(label) render_sine::@7
(label) render_sine::@8
(label) render_sine::@return
(signed word) render_sine::sin2_val
(signed word) render_sine::sin2_val#0 sin2_val zp[2]:18 22.0
(word) render_sine::sin_idx
(word) render_sine::sin_idx#1 sin_idx zp[2]:16 22.0
(word) render_sine::sin_idx#2 sin_idx zp[2]:16 2.1153846153846154
(signed word) render_sine::sin_val
(signed word) render_sine::sin_val#0 sin_val zp[2]:18 22.0
(word) render_sine::xpos
(word) render_sine::xpos#1 xpos zp[2]:6 11.0
(word) render_sine::xpos#3 xpos zp[2]:6 2.0
(word) render_sine::xpos#9 xpos zp[2]:6 11.0
(byte) render_sine::ypos
(byte) render_sine::ypos#0 reg byte x 11.0
(byte) render_sine::ypos2
(byte) render_sine::ypos2#0 reg byte x 11.0
(const signed word*) sin[(number) $200]  = { fill( $200, 0) }
(signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$4 zp[4]:26 4.0
(label) sin16s::@1
(label) sin16s::@10
(label) sin16s::@11
(label) sin16s::@12
(label) sin16s::@2
(label) sin16s::@3
(label) sin16s::@4
(label) sin16s::@5
(label) sin16s::@6
(label) sin16s::@7
(label) sin16s::@8
(label) sin16s::@9
(label) sin16s::@return
(byte) sin16s::isUpper
(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061
(signed word) sin16s::return
(signed word) sin16s::return#0 return zp[2]:12 22.0
(signed word) sin16s::return#1 return zp[2]:12 5.0
(signed word) sin16s::return#5 return zp[2]:12 4.0
(signed word) sin16s::sinx
(signed word) sin16s::sinx#1 sinx zp[2]:12 4.0
(word) sin16s::usinx
(word) sin16s::usinx#0 usinx zp[2]:12 0.3333333333333333
(word) sin16s::usinx#1 usinx zp[2]:12 1.0
(dword) sin16s::x
(dword) sin16s::x#0 x zp[4]:8 8.5
(dword) sin16s::x#1 x zp[4]:8 4.0
(dword) sin16s::x#2 x zp[4]:8 4.0
(dword) sin16s::x#4 x zp[4]:8 5.0
(dword) sin16s::x#6 x zp[4]:8 6.0
(word) sin16s::x1
(word) sin16s::x1#0 x1 zp[2]:30 0.6363636363636365
(word) sin16s::x2
(word) sin16s::x2#0 x2 zp[2]:14 4.0
(word) sin16s::x3
(word) sin16s::x3#0 x3 zp[2]:14 1.0
(word) sin16s::x3_6
(word) sin16s::x3_6#0 x3_6 zp[2]:32 4.0
(word) sin16s::x4
(word) sin16s::x4#0 x4 zp[2]:14 4.0
(word) sin16s::x5
(word) sin16s::x5#0 x5 zp[2]:32 4.0
(word) sin16s::x5_128
(word) sin16s::x5_128#0 x5_128 zp[2]:32 4.0
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
(signed dword~) sin16s_gen2::$6 zp[4]:8 22.0
(word~) sin16s_gen2::$9 zp[2]:24 11.0
(label) sin16s_gen2::@1
(label) sin16s_gen2::@2
(label) sin16s_gen2::@3
(label) sin16s_gen2::@4
(label) sin16s_gen2::@5
(label) sin16s_gen2::@return
(signed word) sin16s_gen2::ampl
(const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0
(word) sin16s_gen2::i
(word) sin16s_gen2::i#1 i zp[2]:16 22.0
(word) sin16s_gen2::i#2 i zp[2]:16 2.5384615384615383
(signed word) sin16s_gen2::max
(const signed word) sin16s_gen2::max#0 max = (signed word) $140
(signed word) sin16s_gen2::min
(const signed word) sin16s_gen2::min#0 min = (signed word) -$140
(signed word) sin16s_gen2::offs
(signed word*) sin16s_gen2::sintab
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:6 7.333333333333333
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:6 3.0
(dword) sin16s_gen2::step
(dword) sin16s_gen2::step#0 step zp[4]:20 0.8666666666666666
(word) sin16s_gen2::wavelength
(dword) sin16s_gen2::x
(dword) sin16s_gen2::x#1 x zp[4]:2 11.0
(dword) sin16s_gen2::x#2 x zp[4]:2 2.75
(const signed word*) sin2[(number) $200]  = kickasm {{ .for(var i=0; i<512; i++) {
  	  .word sin(toRadians([i*360]/512))*320
    }
 }}
(byte()) wrap_y((signed word) wrap_y::y)
(label) wrap_y::@1
(label) wrap_y::@2
(label) wrap_y::@3
(label) wrap_y::@4
(label) wrap_y::@5
(label) wrap_y::@return
(byte) wrap_y::return
(byte) wrap_y::return#0 reg byte a 22.0
(byte) wrap_y::return#1 reg byte a 22.0
(byte) wrap_y::return#2 reg byte a 6.0
(signed word) wrap_y::y
(signed word) wrap_y::y#0 y zp[2]:18 22.0
(signed word) wrap_y::y#1 y zp[2]:18 22.0
(signed word) wrap_y::y#2 y zp[2]:18 202.0
(signed word) wrap_y::y#3 y zp[2]:18 202.0
(signed word) wrap_y::y#4 y zp[2]:18 203.0
(signed word) wrap_y::y#6 y zp[2]:18 202.0
(signed word) wrap_y::y#9 y zp[2]:18 24.0

reg byte x [ bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#0 ]
zp[4]:2 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
zp[2]:6 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#0 ]
reg byte y [ sin16s::isUpper#2 ]
zp[4]:8 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$6 mulu16_sel::$0 mulu16_sel::$1 ]
reg byte x [ mulu16_sel::select#5 ]
zp[2]:12 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ]
zp[2]:14 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte x [ memset::c#4 ]
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 ]
zp[2]:16 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 sin16s_gen2::i#2 sin16s_gen2::i#1 render_sine::sin_idx#2 render_sine::sin_idx#1 ]
reg byte a [ wrap_y::return#0 ]
reg byte x [ render_sine::ypos#0 ]
reg byte a [ wrap_y::return#1 ]
reg byte x [ render_sine::ypos2#0 ]
zp[2]:18 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#1 wrap_y::y#0 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$10 render_sine::$1 render_sine::$11 render_sine::$4 ]
reg byte a [ bitmap_plot::$2 ]
reg byte a [ wrap_y::return#2 ]
zp[4]:20 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
zp[2]:24 [ sin16s_gen2::$9 bitmap_plot::$1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
reg byte a [ mul16u::$1 ]
zp[4]:26 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
zp[2]:30 [ sin16s::x1#0 mul16s::$9 mul16s::$16 ]
zp[2]:32 [ div32u16u::quotient_hi#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
zp[1]:34 [ bitmap_init::$7 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]
