__constant const char BLACK = 0
__constant char * const D011 = (char *) 53265
__constant const char GREEN = 5
__constant char OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
__constant char OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
__constant const char PLEX_COUNT = $20
__constant char PLEX_FREE_YPOS[8] = { fill( 8, 0) }
__constant char PLEX_PTR[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
__loadstore char * volatile PLEX_SCREEN_PTR // zp[2]:12 1402.8333333333335
__constant char PLEX_SORTED_IDX[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
__constant unsigned int PLEX_XPOS[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
__constant char PLEX_YPOS[PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
__constant char *SCREEN = (char *) 1024
__constant char SPRITE[] = kickasm {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
    .for (var y=0; y<21; y++)
        .for (var x=0;x<3; x++)
            .byte pic.getSinglecolorByte(x,y)
 }}
__constant char * const SPRITES_COLOR = (char *) 53287
__constant char * const SPRITES_XMSB = (char *) 53264
__constant char * const SPRITES_XPOS = (char *) 53248
__constant char * const SPRITES_YPOS = (char *) 53249
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *) 53248
__constant const char VICII_DEN = $10
__constant const char VICII_RSEL = 8
__constant const char VICII_RST8 = $80
__constant char YSIN[$100] = kickasm {{ .var min = 50
    .var max = 250-21
    .var ampl = max-min;
    .for(var i=0;i<256;i++)
        .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256)))
 }}
void __start()
void init()
char init::$3 // reg byte a 2002.0
char init::ss
char init::ss#1 // reg byte x 1501.5
char init::ss#2 // reg byte x 1501.5
char init::sx
char init::sx#1 // reg byte x 1501.5
char init::sx#2 // reg byte x 800.8
unsigned int init::xp
unsigned int init::xp#1 // xp zp[2]:10 667.3333333333334
unsigned int init::xp#2 // xp zp[2]:10 750.75
void loop()
char loop::$5 // reg byte a 20002.0
char loop::plexFreeNextYpos1_return
char loop::plexFreeNextYpos1_return#0 // reg byte a 55001.0
char loop::rasterY
char loop::sin_idx
char loop::sin_idx#1 // sin_idx zp[1]:14 133.46666666666667
char loop::sin_idx#6 // sin_idx zp[1]:14 333.6666666666667
char loop::ss
char loop::ss#1 // ss zp[1]:5 15001.5
char loop::ss#5 // ss zp[1]:5 3333.6666666666665
char loop::sy
char loop::sy#1 // reg byte y 15001.5
char loop::sy#2 // reg byte y 10001.0
char loop::y_idx
char loop::y_idx#1 // reg byte x 6667.333333333333
char loop::y_idx#2 // reg byte x 15502.0
char loop::y_idx#3 // reg byte x 2002.0
void main()
void plexInit(char *screen)
char plexInit::i
char plexInit::i#1 // reg byte x 15001.5
char plexInit::i#2 // reg byte x 20002.0
char *plexInit::plexSetScreen1_screen
char *plexInit::screen
void plexShowSprite()
char plexShowSprite::$10 // reg byte x 100001.0
char plexShowSprite::$2 // reg byte a 200002.0
char plexShowSprite::$4 // reg byte x 200002.0
char plexShowSprite::$5 // reg byte a 200002.0
char plexShowSprite::$8 // reg byte a 200002.0
char plexShowSprite::plexFreeAdd1_$0 // reg byte a 200002.0
char plexShowSprite::plexFreeAdd1_$1 // reg byte x 200002.0
char plexShowSprite::plexFreeAdd1_$2 // reg byte a 200002.0
char plexShowSprite::plexFreeAdd1_ypos
char plexShowSprite::plexFreeAdd1_ypos#0 // reg byte a 150001.5
char plexShowSprite::plex_sprite_idx2
char plexShowSprite::plex_sprite_idx2#0 // plex_sprite_idx2 zp[1]:2 27273.0
char plexShowSprite::xpos_idx
char plexShowSprite::xpos_idx#0 // reg byte a 200002.0
char plexShowSprite::ypos
void plexSort()
char plexSort::m
char plexSort::m#1 // m zp[1]:2 1500001.5
char plexSort::m#2 // m zp[1]:2 416667.0833333334
char plexSort::nxt_idx
char plexSort::nxt_idx#0 // nxt_idx zp[1]:4 300000.30000000005
char plexSort::nxt_y
char plexSort::nxt_y#0 // nxt_y zp[1]:3 1500000.375
char plexSort::plexFreePrepare1_s
char plexSort::plexFreePrepare1_s#1 // reg byte x 1500001.5
char plexSort::plexFreePrepare1_s#2 // reg byte x 1500001.5
char plexSort::s
char plexSort::s#1 // reg byte x 1.3666668333333332E7
char plexSort::s#2 // reg byte x 2000002.0
char plexSort::s#3 // reg byte x 2.05000025E7
char plexSort::s#6 // reg byte x 2000002.0
__loadstore volatile char plex_free_next // zp[1]:9 8648.837837837838
__loadstore volatile char plex_show_idx // zp[1]:7 10851.234042553191
__loadstore volatile char plex_sprite_idx // zp[1]:8 9318.340909090908
__loadstore volatile char plex_sprite_msb // zp[1]:6 13555.755555555555

reg byte x [ init::sx#2 init::sx#1 ]
zp[2]:10 [ init::xp#2 init::xp#1 ]
reg byte x [ init::ss#2 init::ss#1 ]
zp[1]:14 [ loop::sin_idx#6 loop::sin_idx#1 ]
reg byte x [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ]
reg byte y [ loop::sy#2 loop::sy#1 ]
zp[1]:5 [ loop::ss#5 loop::ss#1 ]
reg byte x [ plexInit::i#2 plexInit::i#1 ]
reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ]
reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ]
zp[2]:12 [ PLEX_SCREEN_PTR ]
zp[1]:7 [ plex_show_idx ]
zp[1]:8 [ plex_sprite_idx ]
zp[1]:6 [ plex_sprite_msb ]
zp[1]:9 [ plex_free_next ]
reg byte a [ init::$3 ]
reg byte a [ loop::$5 ]
reg byte a [ loop::plexFreeNextYpos1_return#0 ]
zp[1]:4 [ plexSort::nxt_idx#0 ]
zp[1]:3 [ plexSort::nxt_y#0 ]
reg byte x [ plexSort::s#2 ]
zp[1]:2 [ plexShowSprite::plex_sprite_idx2#0 plexSort::m#2 plexSort::m#1 ]
reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ]
reg byte a [ plexShowSprite::plexFreeAdd1_$0 ]
reg byte x [ plexShowSprite::plexFreeAdd1_$1 ]
reg byte a [ plexShowSprite::plexFreeAdd1_$2 ]
reg byte a [ plexShowSprite::xpos_idx#0 ]
reg byte x [ plexShowSprite::$10 ]
reg byte a [ plexShowSprite::$2 ]
reg byte a [ plexShowSprite::$8 ]
reg byte x [ plexShowSprite::$4 ]
reg byte a [ plexShowSprite::$5 ]
