__constant const char BLACK = 0
__constant char * const COLS = (char *) 55296
__constant char * const D016 = (char *) 53270
__constant char * const D018 = (char *) 53272
__constant const char DARK_GREY = $b
__constant char LOGO[6*$28*8] = kickasm {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
    .for (var y=0; y<6	; y++)
        .for (var x=0;x<40; x++)
            .for(var cp=0; cp<8; cp++)
                .byte logoPic.getMulticolorByte(x,cp+y*8)
 }}
__constant char OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
__constant char OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22
__constant char OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23
__constant char OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
__constant char OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
__constant const unsigned long PI2_u4f28 = $6487ed51
__constant const unsigned long PI_HALF_u4f28 = $1921fb54
__constant const unsigned long PI_u4f28 = $3243f6a9
__constant char *SCREEN = (char *) 1024
__constant char SIZEOF_INT = 2
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *) 53248
__constant const char VICII_MCM = $10
__constant const char WHITE = 1
__constant const unsigned int XSIN_SIZE = $200
unsigned long div32u16u(unsigned long dividend , unsigned int divisor)
unsigned long div32u16u::dividend
unsigned int div32u16u::divisor
unsigned long div32u16u::quotient
unsigned int div32u16u::quotient_hi
unsigned int div32u16u::quotient_hi#0 // quotient_hi zp[2]:32 40.4
unsigned int div32u16u::quotient_lo
unsigned int div32u16u::quotient_lo#0 // quotient_lo zp[2]:20 202.0
unsigned long div32u16u::return
unsigned long div32u16u::return#0 // return zp[4]:22 22.0
unsigned long div32u16u::return#1 // return zp[4]:22 37.33333333333333
unsigned int divr16u(unsigned int dividend , unsigned int divisor , unsigned int rem)
char divr16u::$1 // reg byte a 20002.0
char divr16u::$2 // reg byte a 20002.0
unsigned int divr16u::dividend
unsigned int divr16u::dividend#0 // dividend zp[2]:18 2500.25
unsigned int divr16u::dividend#3 // dividend zp[2]:18 4429.142857142857
unsigned int divr16u::dividend#5 // dividend zp[2]:18 1001.0
unsigned int divr16u::divisor
char divr16u::i
char divr16u::i#1 // reg byte x 15001.5
char divr16u::i#2 // reg byte x 1538.6153846153845
unsigned int divr16u::quotient
unsigned int divr16u::quotient#1 // quotient zp[2]:20 15001.5
unsigned int divr16u::quotient#2 // quotient zp[2]:20 10001.0
unsigned int divr16u::quotient#3 // quotient zp[2]:20 2500.25
unsigned int divr16u::rem
unsigned int divr16u::rem#0 // rem zp[2]:26 7500.75
unsigned int divr16u::rem#1 // rem zp[2]:26 20002.0
unsigned int divr16u::rem#10 // rem zp[2]:26 1102.0
unsigned int divr16u::rem#11 // rem zp[2]:26 10334.666666666666
unsigned int divr16u::rem#2 // rem zp[2]:26 20002.0
unsigned int divr16u::rem#4 // rem zp[2]:26 202.0
unsigned int divr16u::rem#5 // rem zp[2]:26 21003.0
unsigned int divr16u::rem#6 // rem zp[2]:26 10001.0
unsigned int divr16u::return
unsigned int divr16u::return#0 // return zp[2]:20 4315.0
unsigned int divr16u::return#2 // return zp[2]:20 202.0
unsigned int divr16u::return#3 // return zp[2]:20 202.0
void loop()
int *loop::$2 // zp[2]:26 202.0
unsigned int loop::$7 // zp[2]:26 202.0
int loop::xpos
int loop::xpos#0 // xpos zp[2]:26 202.0
void main()
char main::ch
char main::ch#1 // reg byte x 16.5
char main::ch#2 // reg byte x 22.0
char *main::toD0181_gfx
char main::toD0181_return
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)LOGO/4&$f // toD0181_return
char *main::toD0181_screen
void * memset(void *str , char c , unsigned int num)
char memset::c
char memset::c#4 // reg byte x 14.428571428571429
char *memset::dst
char *memset::dst#1 // dst zp[2]:36 202.0
char *memset::dst#2 // dst zp[2]:36 138.33333333333331
char *memset::dst#4 // dst zp[2]:36 22.0
char *memset::end
char *memset::end#0 // end zp[2]:34 18.666666666666664
unsigned int memset::num
void *memset::return
void *memset::str
void *memset::str#3 // str zp[2]:36
long mul16s(int a , int b)
unsigned int mul16s::$11 // zp[2]:34 2002.0
unsigned int mul16s::$6 // zp[2]:34 2002.0
int mul16s::a
int mul16s::a#0 // a zp[2]:26 220.39999999999998
int mul16s::b
unsigned long mul16s::m
unsigned long mul16s::m#0 // m zp[4]:12 1001.0
unsigned long mul16s::m#1 // m zp[4]:12 2002.0
unsigned long mul16s::m#4 // m zp[4]:12 2002.0
long mul16s::return
long mul16s::return#0 // return zp[4]:12 202.0
long mul16s::return#1 // return zp[4]:12 367.33333333333337
unsigned long mul16u(unsigned int a , unsigned int b)
char mul16u::$1 // reg byte a 2.0000002E7
unsigned int mul16u::a
unsigned int mul16u::a#0 // a zp[2]:34 10001.0
unsigned int mul16u::a#1 // a zp[2]:34 1.0000001E7
unsigned int mul16u::a#2 // a zp[2]:34 2002.0
unsigned int mul16u::a#3 // a zp[2]:34 6683334.166666666
unsigned int mul16u::a#6 // a zp[2]:34 55501.5
unsigned int mul16u::b
unsigned int mul16u::b#0 // b zp[2]:20 20002.0
unsigned int mul16u::b#2 // b zp[2]:20 10001.0
unsigned long mul16u::mb
unsigned long mul16u::mb#0 // mb zp[4]:28 200002.0
unsigned long mul16u::mb#1 // mb zp[4]:28 2.0000002E7
unsigned long mul16u::mb#2 // mb zp[4]:28 4300000.571428571
unsigned long mul16u::res
unsigned long mul16u::res#1 // res zp[4]:12 2.0000002E7
unsigned long mul16u::res#2 // res zp[4]:12 4287286.428571429
unsigned long mul16u::res#6 // res zp[4]:12 1.0000001E7
unsigned long mul16u::return
unsigned long mul16u::return#0 // return zp[4]:12 20002.0
unsigned long mul16u::return#3 // return zp[4]:12 2002.0
unsigned int mulu16_sel(unsigned int v1 , unsigned int v2 , char select)
unsigned long mulu16_sel::$0 // zp[4]:12 20002.0
unsigned long mulu16_sel::$1 // zp[4]:12 20002.0
unsigned int mulu16_sel::return
unsigned int mulu16_sel::return#0 // return zp[2]:34 2002.0
unsigned int mulu16_sel::return#1 // return_1 zp[2]:18 2002.0
unsigned int mulu16_sel::return#10 // return_1 zp[2]:18 2002.0
unsigned int mulu16_sel::return#11 // return zp[2]:34 2002.0
unsigned int mulu16_sel::return#12 // return zp[2]:34 2143.714285714286
unsigned int mulu16_sel::return#2 // return zp[2]:34 2002.0
char mulu16_sel::select
char mulu16_sel::select#5 // reg byte x 1666.8333333333333
unsigned int mulu16_sel::v1
unsigned int mulu16_sel::v1#0 // v1 zp[2]:18 1001.0
unsigned int mulu16_sel::v1#1 // v1 zp[2]:18 1001.0
unsigned int mulu16_sel::v1#2 // v1 zp[2]:18 2002.0
unsigned int mulu16_sel::v1#3 // v1 zp[2]:18 1001.0
unsigned int mulu16_sel::v1#4 // v1 zp[2]:18 1001.0
unsigned int mulu16_sel::v1#5 // v1 zp[2]:18 15006.0
unsigned int mulu16_sel::v2
unsigned int mulu16_sel::v2#0 // v2 zp[2]:20 2002.0
unsigned int mulu16_sel::v2#1 // v2 zp[2]:20 2002.0
unsigned int mulu16_sel::v2#3 // v2 zp[2]:20 2002.0
unsigned int mulu16_sel::v2#4 // v2 zp[2]:20 2002.0
unsigned int mulu16_sel::v2#5 // v2 zp[2]:20 7002.5
unsigned int rem16u
unsigned int rem16u#14 // rem16u zp[2]:26 220.39999999999998
void render_logo(int xpos)
char render_logo::$0 // reg byte a 2002.0
char render_logo::$1 // reg byte a 2002.0
int render_logo::$2 // zp[2]:36 1001.0
char render_logo::$25 // reg byte a 2002.0
char render_logo::$30 // reg byte a 200002.0
char render_logo::$33 // reg byte a 200002.0
char render_logo::$36 // reg byte a 200002.0
char render_logo::$39 // reg byte a 200002.0
char render_logo::$42 // reg byte a 200002.0
char render_logo::$70 // reg byte a 200002.0
char render_logo::$73 // reg byte a 200002.0
char render_logo::$76 // reg byte a 200002.0
char render_logo::$79 // reg byte a 200002.0
char render_logo::$82 // reg byte a 200002.0
char render_logo::line
char render_logo::line1
char render_logo::line2
char render_logo::line3
char render_logo::logo_idx
signed char render_logo::logo_idx#1 // reg byte a 1001.0
char render_logo::logo_idx#10 // logo_idx zp[1]:16 57143.42857142857
char render_logo::logo_idx#11 // logo_idx_1 zp[1]:17 64357.857142857145
char render_logo::logo_idx#14 // logo_idx_1 zp[1]:17 2002.0
char render_logo::logo_idx#3 // logo_idx zp[1]:16 200002.0
char render_logo::logo_idx#4 // logo_idx_1 zp[1]:17 200002.0
char render_logo::logo_start
char render_logo::screen_idx
char render_logo::screen_idx#10 // reg byte y 76923.84615384616
char render_logo::screen_idx#15 // reg byte y 125001.25
char render_logo::screen_idx#18 // reg byte y 125001.25
char render_logo::screen_idx#21 // reg byte y 69231.46153846155
char render_logo::screen_idx#3 // reg byte y 200002.0
char render_logo::screen_idx#4 // reg byte y 100001.0
char render_logo::screen_idx#5 // reg byte y 100001.0
char render_logo::screen_idx#6 // reg byte y 200002.0
signed char render_logo::x_char
signed char render_logo::x_char#0 // x_char zp[1]:38 182.0
int render_logo::xpos
int render_logo::xpos#0 // xpos zp[2]:26 300.42857142857144
int sin16s(unsigned long x)
unsigned long sin16s::$4 // zp[4]:28 2002.0
char sin16s::isUpper
char sin16s::isUpper#2 // reg byte y 30.333333333333332
int sin16s::return
int sin16s::return#0 // return zp[2]:26 202.0
int sin16s::return#1 // return zp[2]:26 701.0
int sin16s::return#5 // return zp[2]:26 2002.0
int sin16s::sinx
int sin16s::sinx#1 // sinx zp[2]:26 2002.0
unsigned int sin16s::usinx
unsigned int sin16s::usinx#0 // usinx zp[2]:26 166.83333333333334
unsigned int sin16s::usinx#1 // usinx zp[2]:26 500.5
unsigned long sin16s::x
unsigned long sin16s::x#0 // x zp[4]:8 1552.0
unsigned long sin16s::x#1 // x zp[4]:8 2002.0
unsigned long sin16s::x#2 // x zp[4]:8 2002.0
unsigned long sin16s::x#4 // x zp[4]:8 2502.5
unsigned long sin16s::x#6 // x zp[4]:8 3003.0
unsigned int sin16s::x1
unsigned int sin16s::x1#0 // x1 zp[2]:32 318.5
unsigned int sin16s::x2
unsigned int sin16s::x2#0 // x2 zp[2]:18 2002.0
unsigned int sin16s::x3
unsigned int sin16s::x3#0 // x3 zp[2]:18 500.5
unsigned int sin16s::x3_6
unsigned int sin16s::x3_6#0 // x3_6 zp[2]:34 2002.0
unsigned int sin16s::x4
unsigned int sin16s::x4#0 // x4 zp[2]:18 2002.0
unsigned int sin16s::x5
unsigned int sin16s::x5#0 // x5 zp[2]:34 2002.0
unsigned int sin16s::x5_128
unsigned int sin16s::x5_128#0 // x5_128 zp[2]:34 2002.0
void sin16s_gen2(int *sintab , unsigned int wavelength , int min , int max)
long sin16s_gen2::$6 // zp[4]:12 202.0
unsigned int sin16s_gen2::$8 // zp[2]:26 101.0
int sin16s_gen2::ampl
__constant int sin16s_gen2::ampl#0 = sin16s_gen2::max#0-sin16s_gen2::min#0 // ampl
unsigned int sin16s_gen2::i
unsigned int sin16s_gen2::i#1 // i zp[2]:36 202.0
unsigned int sin16s_gen2::i#2 // i zp[2]:36 23.307692307692307
int sin16s_gen2::max
__constant int sin16s_gen2::max#0 = $140 // max
int sin16s_gen2::min
__constant int sin16s_gen2::min#0 = -$140 // min
int sin16s_gen2::offs
int *sin16s_gen2::sintab
int *sin16s_gen2::sintab#0 // sintab zp[2]:6 67.33333333333333
int *sin16s_gen2::sintab#2 // sintab zp[2]:6 27.545454545454547
unsigned long sin16s_gen2::step
unsigned long sin16s_gen2::step#0 // step zp[4]:22 7.466666666666667
unsigned int sin16s_gen2::wavelength
unsigned long sin16s_gen2::x
unsigned long sin16s_gen2::x#1 // x zp[4]:2 101.0
unsigned long sin16s_gen2::x#2 // x zp[4]:2 25.25
__constant int xsin[XSIN_SIZE] = { fill( XSIN_SIZE, 0) }
unsigned int xsin_idx
unsigned int xsin_idx#12 // xsin_idx zp[2]:6 37.875
unsigned int xsin_idx#2 // xsin_idx zp[2]:6 101.0
unsigned int xsin_idx#21 // xsin_idx zp[2]:6 101.0

reg byte x [ main::ch#2 main::ch#1 ]
reg byte x [ memset::c#4 ]
zp[4]:2 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
zp[2]:6 [ xsin_idx#12 xsin_idx#21 xsin_idx#2 sin16s_gen2::sintab#2 sin16s_gen2::sintab#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 ]
zp[4]:12 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#3 mul16s::return#1 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#0 mul16s::return#0 sin16s_gen2::$6 mulu16_sel::$0 mulu16_sel::$1 ]
reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ]
zp[1]:16 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ]
zp[1]:17 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ]
reg byte y [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
zp[2]:18 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
zp[2]:20 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 mul16u::b#2 mul16u::b#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ]
reg byte x [ mulu16_sel::select#5 ]
zp[4]:22 [ div32u16u::return#0 sin16s_gen2::step#0 div32u16u::return#1 ]
zp[2]:26 [ loop::$7 loop::$2 loop::xpos#0 render_logo::xpos#0 sin16s_gen2::$8 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#14 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ]
zp[4]:28 [ sin16s::$4 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
zp[2]:32 [ sin16s::x1#0 div32u16u::quotient_hi#0 ]
zp[2]:34 [ mul16s::$6 mul16s::$11 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 memset::end#0 mul16u::a#3 mul16u::a#6 mul16u::a#2 mul16u::a#0 mul16u::a#1 ]
reg byte a [ render_logo::$25 ]
reg byte a [ render_logo::$0 ]
reg byte a [ render_logo::$1 ]
zp[2]:36 [ render_logo::$2 sin16s_gen2::i#2 sin16s_gen2::i#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
zp[1]:38 [ render_logo::x_char#0 ]
reg byte a [ render_logo::$30 ]
reg byte a [ render_logo::$33 ]
reg byte a [ render_logo::$36 ]
reg byte a [ render_logo::$39 ]
reg byte a [ render_logo::$42 ]
reg byte a [ render_logo::logo_idx#1 ]
reg byte a [ render_logo::$70 ]
reg byte a [ render_logo::$73 ]
reg byte a [ render_logo::$76 ]
reg byte a [ render_logo::$79 ]
reg byte a [ render_logo::$82 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
reg byte a [ mul16u::$1 ]
