Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + (number) 1
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
Identified constant variable (byte*) HEAP_TOP
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Inlined call (byte~) main::$1 ← call toD018 (const byte*) SCREEN1 (const byte*) CHARSET 
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) @5
Culled Empty Block (label) @6
Culled Empty Block (label) memset::@7
Culled Empty Block (label) memset::@6
Culled Empty Block (label) memset::@8
Culled Empty Block (label) memset::@9
Culled Empty Block (label) memset::@3
Culled Empty Block (label) @7
Culled Empty Block (label) @8
Culled Empty Block (label) @9
Culled Empty Block (label) @10
Culled Empty Block (label) @11
Culled Empty Block (label) @12
Culled Empty Block (label) @13
Culled Empty Block (label) @14
Culled Empty Block (label) @15
Culled Empty Block (label) @16
Culled Empty Block (label) @18
Culled Empty Block (label) @19
Culled Empty Block (label) @20
Culled Empty Block (label) @21
Culled Empty Block (label) @22
Culled Empty Block (label) @23
Culled Empty Block (label) @24
Culled Empty Block (label) @25
Culled Empty Block (label) @26
Culled Empty Block (label) @27
Culled Empty Block (label) @28
Culled Empty Block (label) @29
Culled Empty Block (label) @30
Culled Empty Block (label) @31
Culled Empty Block (label) @32
Culled Empty Block (label) @33
Culled Empty Block (label) @34
Culled Empty Block (label) @35
Culled Empty Block (label) @36
Culled Empty Block (label) @37
Culled Empty Block (label) @38
Culled Empty Block (label) @39
Culled Empty Block (label) @40
Culled Empty Block (label) @41
Culled Empty Block (label) @42
Culled Empty Block (label) sid_rnd::@1
Culled Empty Block (label) @43
Culled Empty Block (label) main::toD0181_@1
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@7
Culled Empty Block (label) main::@8
Culled Empty Block (label) doplasma::@4
Culled Empty Block (label) doplasma::@5
Culled Empty Block (label) doplasma::@6
Culled Empty Block (label) doplasma::@10
Culled Empty Block (label) doplasma::@11
Culled Empty Block (label) doplasma::@12
Culled Empty Block (label) doplasma::@23
Culled Empty Block (label) doplasma::@15
Culled Empty Block (label) doplasma::@24
Culled Empty Block (label) doplasma::@19
Culled Empty Block (label) doplasma::@20
Culled Empty Block (label) doplasma::@21
Culled Empty Block (label) doplasma::@22
Culled Empty Block (label) @45
Culled Empty Block (label) makecharset::@20
Culled Empty Block (label) makecharset::@3
Culled Empty Block (label) makecharset::@21
Culled Empty Block (label) makecharset::@16
Culled Empty Block (label) makecharset::@17
Culled Empty Block (label) makecharset::@11
Culled Empty Block (label) makecharset::@12
Culled Empty Block (label) makecharset::@14
Culled Empty Block (label) makecharset::@15
Culled Empty Block (label) makecharset::@22

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  to:@17

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  (byte) memset::c#4 ← phi( print_cls/(byte) memset::c#0 )
  (void*) memset::str#3 ← phi( print_cls/(void*) memset::str#0 )
  (word) memset::num#1 ← phi( print_cls/(word) memset::num#0 )
  (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
  (bool~) memset::$1 ← ! (bool~) memset::$0
  if((bool~) memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@4
  (void*) memset::str#1 ← phi( memset/(void*) memset::str#3 memset::@4/(void*) memset::str#4 )
  (void*) memset::return#0 ← (void*) memset::str#1
  to:memset::@return
memset::@2: scope:[memset]  from memset
  (byte) memset::c#3 ← phi( memset/(byte) memset::c#4 )
  (word) memset::num#2 ← phi( memset/(word) memset::num#1 )
  (void*) memset::str#2 ← phi( memset/(void*) memset::str#3 )
  (byte*~) memset::$2 ← ((byte*)) (void*) memset::str#2
  (byte*~) memset::$3 ← (byte*~) memset::$2 + (word) memset::num#2
  (byte*) memset::end#0 ← (byte*~) memset::$3
  (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#2
  to:memset::@4
memset::@4: scope:[memset]  from memset::@2 memset::@5
  (byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@5/(byte) memset::c#1 )
  (void*) memset::str#4 ← phi( memset::@2/(void*) memset::str#2 memset::@5/(void*) memset::str#5 )
  (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@5/(byte*) memset::end#2 )
  (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@5/(byte*) memset::dst#1 )
  (bool~) memset::$4 ← (byte*) memset::dst#2 != (byte*) memset::end#1
  if((bool~) memset::$4) goto memset::@5
  to:memset::@1
memset::@5: scope:[memset]  from memset::@4
  (void*) memset::str#5 ← phi( memset::@4/(void*) memset::str#4 )
  (byte*) memset::end#2 ← phi( memset::@4/(byte*) memset::end#1 )
  (byte*) memset::dst#3 ← phi( memset::@4/(byte*) memset::dst#2 )
  (byte) memset::c#1 ← phi( memset::@4/(byte) memset::c#2 )
  *((byte*) memset::dst#3) ← (byte) memset::c#1
  (byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
  to:memset::@4
memset::@return: scope:[memset]  from memset::@1
  (void*) memset::return#3 ← phi( memset::@1/(void*) memset::return#0 )
  (void*) memset::return#1 ← (void*) memset::return#3
  return 
  to:@return
@17: scope:[]  from @begin
  (byte*) print_screen#0 ← (byte*)(number) $400
  (byte*) print_line_cursor#0 ← (byte*) print_screen#0
  (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
  to:@44

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from makecharset::@18
  (byte*) print_char_cursor#11 ← phi( makecharset::@18/(byte*) print_char_cursor#20 )
  (byte) print_char::ch#1 ← phi( makecharset::@18/(byte) print_char::ch#0 )
  *((byte*) print_char_cursor#11) ← (byte) print_char::ch#1
  (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#11
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  (byte*) print_char_cursor#12 ← phi( print_char/(byte*) print_char_cursor#1 )
  (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#12
  return 
  to:@return

(void()) print_cls()
print_cls: scope:[print_cls]  from makecharset::@23
  (byte*) print_screen#1 ← phi( makecharset::@23/(byte*) print_screen#3 )
  (void*) memset::str#0 ← (void*)(byte*) print_screen#1
  (byte) memset::c#0 ← (byte) ' '
  (word) memset::num#0 ← (number) $3e8
  call memset 
  (void*) memset::return#2 ← (void*) memset::return#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls
  (byte*) print_screen#2 ← phi( print_cls/(byte*) print_screen#1 )
  (byte*) print_line_cursor#1 ← (byte*) print_screen#2
  (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#1
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  (byte*) print_char_cursor#13 ← phi( print_cls::@1/(byte*) print_char_cursor#3 )
  (byte*) print_line_cursor#8 ← phi( print_cls::@1/(byte*) print_line_cursor#1 )
  (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#8
  (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#13
  return 
  to:@return

(void()) sid_rnd_init()
sid_rnd_init: scope:[sid_rnd_init]  from makecharset
  *((const word*) SID_VOICE3_FREQ) ← (number) $ffff
  *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE
  to:sid_rnd_init::@return
sid_rnd_init::@return: scope:[sid_rnd_init]  from sid_rnd_init
  return 
  to:@return

(byte()) sid_rnd()
sid_rnd: scope:[sid_rnd]  from makecharset::@8
  (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC)
  to:sid_rnd::@return
sid_rnd::@return: scope:[sid_rnd]  from sid_rnd
  (byte) sid_rnd::return#3 ← phi( sid_rnd/(byte) sid_rnd::return#0 )
  (byte) sid_rnd::return#1 ← (byte) sid_rnd::return#3
  return 
  to:@return

(void()) main()
main: scope:[main]  from @46
  (byte) c2B#31 ← phi( @46/(byte) c2B#17 )
  (byte) c2A#31 ← phi( @46/(byte) c2A#17 )
  (byte) c1B#31 ← phi( @46/(byte) c1B#16 )
  (byte) c1A#31 ← phi( @46/(byte) c1A#16 )
  (byte*) print_screen#7 ← phi( @46/(byte*) print_screen#8 )
  (byte*) print_char_cursor#33 ← phi( @46/(byte*) print_char_cursor#25 )
  (byte*) print_line_cursor#25 ← phi( @46/(byte*) print_line_cursor#18 )
  asm { sei  }
  *((const byte*) BORDERCOL) ← (const byte) BLUE
  *((const byte*) BGCOL) ← (const byte) BLUE
  (byte*) main::col#0 ← (const byte*) COLS
  to:main::@1
main::@1: scope:[main]  from main main::@1
  (byte) c2B#30 ← phi( main/(byte) c2B#31 main::@1/(byte) c2B#30 )
  (byte) c2A#30 ← phi( main/(byte) c2A#31 main::@1/(byte) c2A#30 )
  (byte) c1B#30 ← phi( main/(byte) c1B#31 main::@1/(byte) c1B#30 )
  (byte) c1A#30 ← phi( main/(byte) c1A#31 main::@1/(byte) c1A#30 )
  (byte*) print_screen#6 ← phi( main/(byte*) print_screen#7 main::@1/(byte*) print_screen#6 )
  (byte*) print_char_cursor#26 ← phi( main/(byte*) print_char_cursor#33 main::@1/(byte*) print_char_cursor#26 )
  (byte*) print_line_cursor#19 ← phi( main/(byte*) print_line_cursor#25 main::@1/(byte*) print_line_cursor#19 )
  (byte*) main::col#2 ← phi( main/(byte*) main::col#0 main::@1/(byte*) main::col#1 )
  *((byte*) main::col#2) ← (const byte) BLACK
  (byte*) main::col#1 ← (byte*) main::col#2 + rangenext(COLS,COLS+$3e8)
  (bool~) main::$2 ← (byte*) main::col#1 != rangelast(COLS,COLS+$3e8)
  if((bool~) main::$2) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte) c2B#29 ← phi( main::@1/(byte) c2B#30 )
  (byte) c2A#29 ← phi( main::@1/(byte) c2A#30 )
  (byte) c1B#29 ← phi( main::@1/(byte) c1B#30 )
  (byte) c1A#29 ← phi( main::@1/(byte) c1A#30 )
  (byte*) print_screen#5 ← phi( main::@1/(byte*) print_screen#6 )
  (byte*) print_char_cursor#21 ← phi( main::@1/(byte*) print_char_cursor#26 )
  (byte*) print_line_cursor#14 ← phi( main::@1/(byte*) print_line_cursor#19 )
  (byte*) makecharset::charset#0 ← (const byte*) CHARSET
  call makecharset 
  to:main::@10
main::@10: scope:[main]  from main::@2
  (byte) c2B#28 ← phi( main::@2/(byte) c2B#29 )
  (byte) c2A#28 ← phi( main::@2/(byte) c2A#29 )
  (byte) c1B#28 ← phi( main::@2/(byte) c1B#29 )
  (byte) c1A#28 ← phi( main::@2/(byte) c1A#29 )
  (byte*) print_char_cursor#14 ← phi( main::@2/(byte*) print_char_cursor#9 )
  (byte*) print_line_cursor#9 ← phi( main::@2/(byte*) print_line_cursor#6 )
  (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#9
  (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#14
  (byte*) main::toD0181_screen#0 ← (const byte*) SCREEN1
  (byte*) main::toD0181_gfx#0 ← (const byte*) CHARSET
  to:main::toD0181
main::toD0181: scope:[main]  from main::@10
  (byte) c2B#25 ← phi( main::@10/(byte) c2B#28 )
  (byte) c2A#25 ← phi( main::@10/(byte) c2A#28 )
  (byte) c1B#24 ← phi( main::@10/(byte) c1B#28 )
  (byte) c1A#24 ← phi( main::@10/(byte) c1A#28 )
  (byte*) print_char_cursor#37 ← phi( main::@10/(byte*) print_char_cursor#5 )
  (byte*) print_line_cursor#30 ← phi( main::@10/(byte*) print_line_cursor#3 )
  (byte*) main::toD0181_gfx#1 ← phi( main::@10/(byte*) main::toD0181_gfx#0 )
  (byte*) main::toD0181_screen#1 ← phi( main::@10/(byte*) main::toD0181_screen#0 )
  (word~) main::toD0181_$0 ← ((word)) (byte*) main::toD0181_screen#1
  (number~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (number) $3fff
  (number~) main::toD0181_$2 ← (number~) main::toD0181_$1 * (number) 4
  (number~) main::toD0181_$3 ← > (number~) main::toD0181_$2
  (word~) main::toD0181_$4 ← ((word)) (byte*) main::toD0181_gfx#1
  (byte~) main::toD0181_$5 ← > (word~) main::toD0181_$4
  (number~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (number) 4
  (number~) main::toD0181_$7 ← (number~) main::toD0181_$6 & (number) $f
  (number~) main::toD0181_$8 ← (number~) main::toD0181_$3 | (number~) main::toD0181_$7
  (byte) main::toD0181_return#0 ← (number~) main::toD0181_$8
  to:main::toD0181_@return
main::toD0181_@return: scope:[main]  from main::toD0181
  (byte) c2B#23 ← phi( main::toD0181/(byte) c2B#25 )
  (byte) c2A#23 ← phi( main::toD0181/(byte) c2A#25 )
  (byte) c1B#21 ← phi( main::toD0181/(byte) c1B#24 )
  (byte) c1A#21 ← phi( main::toD0181/(byte) c1A#24 )
  (byte*) print_char_cursor#34 ← phi( main::toD0181/(byte*) print_char_cursor#37 )
  (byte*) print_line_cursor#26 ← phi( main::toD0181/(byte*) print_line_cursor#30 )
  (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::@9
main::@9: scope:[main]  from main::toD0181_@return
  (byte) c2B#18 ← phi( main::toD0181_@return/(byte) c2B#23 )
  (byte) c2A#18 ← phi( main::toD0181_@return/(byte) c2A#23 )
  (byte) c1B#17 ← phi( main::toD0181_@return/(byte) c1B#21 )
  (byte) c1A#17 ← phi( main::toD0181_@return/(byte) c1A#21 )
  (byte*) print_char_cursor#28 ← phi( main::toD0181_@return/(byte*) print_char_cursor#34 )
  (byte*) print_line_cursor#21 ← phi( main::toD0181_@return/(byte*) print_line_cursor#26 )
  (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
  (byte~) main::$1 ← (byte) main::toD0181_return#3
  *((const byte*) D018) ← (byte~) main::$1
  to:main::@3
main::@3: scope:[main]  from main::@11 main::@9
  (byte) c2B#13 ← phi( main::@11/(byte) c2B#0 main::@9/(byte) c2B#18 )
  (byte) c2A#13 ← phi( main::@11/(byte) c2A#0 main::@9/(byte) c2A#18 )
  (byte) c1B#13 ← phi( main::@11/(byte) c1B#0 main::@9/(byte) c1B#17 )
  (byte) c1A#13 ← phi( main::@11/(byte) c1A#0 main::@9/(byte) c1A#17 )
  (byte*) print_char_cursor#22 ← phi( main::@11/(byte*) print_char_cursor#27 main::@9/(byte*) print_char_cursor#28 )
  (byte*) print_line_cursor#15 ← phi( main::@11/(byte*) print_line_cursor#20 main::@9/(byte*) print_line_cursor#21 )
  if(true) goto main::@4
  to:main::@return
main::@4: scope:[main]  from main::@3
  (byte*) print_char_cursor#35 ← phi( main::@3/(byte*) print_char_cursor#22 )
  (byte*) print_line_cursor#27 ← phi( main::@3/(byte*) print_line_cursor#15 )
  (byte) c2B#12 ← phi( main::@3/(byte) c2B#13 )
  (byte) c2A#12 ← phi( main::@3/(byte) c2A#13 )
  (byte) c1B#12 ← phi( main::@3/(byte) c1B#13 )
  (byte) c1A#12 ← phi( main::@3/(byte) c1A#13 )
  (byte*) doplasma::screen#0 ← (const byte*) SCREEN1
  call doplasma 
  to:main::@11
main::@11: scope:[main]  from main::@4
  (byte*) print_char_cursor#27 ← phi( main::@4/(byte*) print_char_cursor#35 )
  (byte*) print_line_cursor#20 ← phi( main::@4/(byte*) print_line_cursor#27 )
  (byte) c2B#6 ← phi( main::@4/(byte) c2B#4 )
  (byte) c2A#6 ← phi( main::@4/(byte) c2A#4 )
  (byte) c1B#6 ← phi( main::@4/(byte) c1B#4 )
  (byte) c1A#6 ← phi( main::@4/(byte) c1A#4 )
  (byte) c1A#0 ← (byte) c1A#6
  (byte) c1B#0 ← (byte) c1B#6
  (byte) c2A#0 ← (byte) c2A#6
  (byte) c2B#0 ← (byte) c2B#6
  to:main::@3
main::@return: scope:[main]  from main::@3
  (byte) c2B#7 ← phi( main::@3/(byte) c2B#13 )
  (byte) c2A#7 ← phi( main::@3/(byte) c2A#13 )
  (byte) c1B#7 ← phi( main::@3/(byte) c1B#13 )
  (byte) c1A#7 ← phi( main::@3/(byte) c1A#13 )
  (byte*) print_char_cursor#15 ← phi( main::@3/(byte*) print_char_cursor#22 )
  (byte*) print_line_cursor#10 ← phi( main::@3/(byte*) print_line_cursor#15 )
  (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10
  (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#15
  (byte) c1A#1 ← (byte) c1A#7
  (byte) c1B#1 ← (byte) c1B#7
  (byte) c2A#1 ← (byte) c2A#7
  (byte) c2B#1 ← (byte) c2B#7
  return 
  to:@return
@44: scope:[]  from @17
  (byte*) print_screen#9 ← phi( @17/(byte*) print_screen#0 )
  (byte*) print_char_cursor#32 ← phi( @17/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#24 ← phi( @17/(byte*) print_line_cursor#0 )
  (byte) c1A#2 ← (byte) 0
  (byte) c1B#2 ← (byte) 0
  (byte) c2A#2 ← (byte) 0
  (byte) c2B#2 ← (byte) 0
  to:@46

(void()) doplasma((byte*) doplasma::screen)
doplasma: scope:[doplasma]  from main::@4
  (byte*) doplasma::screen#11 ← phi( main::@4/(byte*) doplasma::screen#0 )
  (byte) c2B#19 ← phi( main::@4/(byte) c2B#12 )
  (byte) c2A#19 ← phi( main::@4/(byte) c2A#12 )
  (byte) c1B#8 ← phi( main::@4/(byte) c1B#12 )
  (byte) c1A#8 ← phi( main::@4/(byte) c1A#12 )
  (byte) doplasma::c1a#0 ← (byte) c1A#8
  (byte) doplasma::c1b#0 ← (byte) c1B#8
  (byte) doplasma::yprev#0 ← (byte) 0
  (byte) doplasma::i#0 ← (byte) 0
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@2
  (byte*) doplasma::screen#10 ← phi( doplasma/(byte*) doplasma::screen#11 doplasma::@2/(byte*) doplasma::screen#12 )
  (byte) c2B#14 ← phi( doplasma/(byte) c2B#19 doplasma::@2/(byte) c2B#20 )
  (byte) c2A#14 ← phi( doplasma/(byte) c2A#19 doplasma::@2/(byte) c2A#20 )
  (byte) c1B#14 ← phi( doplasma/(byte) c1B#8 doplasma::@2/(byte) c1B#18 )
  (byte) c1A#14 ← phi( doplasma/(byte) c1A#8 doplasma::@2/(byte) c1A#18 )
  (byte) doplasma::yprev#3 ← phi( doplasma/(byte) doplasma::yprev#0 doplasma::@2/(byte) doplasma::yprev#1 )
  (byte) doplasma::c1b#3 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@2/(byte) doplasma::c1b#1 )
  (byte) doplasma::c1a#3 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@2/(byte) doplasma::c1a#1 )
  (byte) doplasma::i#2 ← phi( doplasma/(byte) doplasma::i#0 doplasma::@2/(byte) doplasma::i#1 )
  (bool~) doplasma::$0 ← (byte) doplasma::i#2 < (number) $19
  if((bool~) doplasma::$0) goto doplasma::@2
  to:doplasma::@3
doplasma::@2: scope:[doplasma]  from doplasma::@1
  (byte*) doplasma::screen#12 ← phi( doplasma::@1/(byte*) doplasma::screen#10 )
  (byte) c2B#20 ← phi( doplasma::@1/(byte) c2B#14 )
  (byte) c2A#20 ← phi( doplasma::@1/(byte) c2A#14 )
  (byte) c1B#18 ← phi( doplasma::@1/(byte) c1B#14 )
  (byte) c1A#18 ← phi( doplasma::@1/(byte) c1A#14 )
  (byte) doplasma::i#3 ← phi( doplasma::@1/(byte) doplasma::i#2 )
  (byte) doplasma::yprev#2 ← phi( doplasma::@1/(byte) doplasma::yprev#3 )
  (byte) doplasma::c1b#2 ← phi( doplasma::@1/(byte) doplasma::c1b#3 )
  (byte) doplasma::c1a#2 ← phi( doplasma::@1/(byte) doplasma::c1a#3 )
  (byte~) doplasma::$1 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2)
  (byte) doplasma::yval#0 ← (byte~) doplasma::$1
  (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2
  *((const byte*) doplasma::ybuf + (byte) doplasma::i#3) ← (byte~) doplasma::$2
  (byte) doplasma::yprev#1 ← (byte) doplasma::yval#0
  (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (number) 4
  (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (number) 9
  (byte) doplasma::i#1 ← ++ (byte) doplasma::i#3
  to:doplasma::@1
doplasma::@3: scope:[doplasma]  from doplasma::@1
  (byte*) doplasma::screen#8 ← phi( doplasma::@1/(byte*) doplasma::screen#10 )
  (byte) c2B#8 ← phi( doplasma::@1/(byte) c2B#14 )
  (byte) c2A#8 ← phi( doplasma::@1/(byte) c2A#14 )
  (byte) c1B#9 ← phi( doplasma::@1/(byte) c1B#14 )
  (byte) c1A#9 ← phi( doplasma::@1/(byte) c1A#14 )
  (byte) c1A#3 ← (byte) c1A#9 + (number) 3
  (byte) c1B#3 ← (byte) c1B#9 - (number) 5
  (byte) doplasma::c2a#0 ← (byte) c2A#8
  (byte) doplasma::c2b#0 ← (byte) c2B#8
  (byte) doplasma::i1#0 ← (byte) 0
  to:doplasma::@7
doplasma::@7: scope:[doplasma]  from doplasma::@3 doplasma::@8
  (byte*) doplasma::screen#7 ← phi( doplasma::@3/(byte*) doplasma::screen#8 doplasma::@8/(byte*) doplasma::screen#9 )
  (byte) c1B#22 ← phi( doplasma::@3/(byte) c1B#3 doplasma::@8/(byte) c1B#25 )
  (byte) c1A#22 ← phi( doplasma::@3/(byte) c1A#3 doplasma::@8/(byte) c1A#25 )
  (byte) c2B#15 ← phi( doplasma::@3/(byte) c2B#8 doplasma::@8/(byte) c2B#21 )
  (byte) c2A#15 ← phi( doplasma::@3/(byte) c2A#8 doplasma::@8/(byte) c2A#21 )
  (byte) doplasma::c2b#3 ← phi( doplasma::@3/(byte) doplasma::c2b#0 doplasma::@8/(byte) doplasma::c2b#1 )
  (byte) doplasma::c2a#3 ← phi( doplasma::@3/(byte) doplasma::c2a#0 doplasma::@8/(byte) doplasma::c2a#1 )
  (byte) doplasma::i1#2 ← phi( doplasma::@3/(byte) doplasma::i1#0 doplasma::@8/(byte) doplasma::i1#1 )
  (bool~) doplasma::$3 ← (byte) doplasma::i1#2 < (number) $28
  if((bool~) doplasma::$3) goto doplasma::@8
  to:doplasma::@9
doplasma::@8: scope:[doplasma]  from doplasma::@7
  (byte*) doplasma::screen#9 ← phi( doplasma::@7/(byte*) doplasma::screen#7 )
  (byte) c1B#25 ← phi( doplasma::@7/(byte) c1B#22 )
  (byte) c1A#25 ← phi( doplasma::@7/(byte) c1A#22 )
  (byte) c2B#21 ← phi( doplasma::@7/(byte) c2B#15 )
  (byte) c2A#21 ← phi( doplasma::@7/(byte) c2A#15 )
  (byte) doplasma::i1#3 ← phi( doplasma::@7/(byte) doplasma::i1#2 )
  (byte) doplasma::c2b#2 ← phi( doplasma::@7/(byte) doplasma::c2b#3 )
  (byte) doplasma::c2a#2 ← phi( doplasma::@7/(byte) doplasma::c2a#3 )
  (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2)
  *((const byte*) doplasma::xbuf + (byte) doplasma::i1#3) ← (byte~) doplasma::$4
  (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (number) 3
  (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (number) 7
  (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#3
  to:doplasma::@7
doplasma::@9: scope:[doplasma]  from doplasma::@7
  (byte*) doplasma::screen#6 ← phi( doplasma::@7/(byte*) doplasma::screen#7 )
  (byte) c1B#20 ← phi( doplasma::@7/(byte) c1B#22 )
  (byte) c1A#20 ← phi( doplasma::@7/(byte) c1A#22 )
  (byte) c2B#9 ← phi( doplasma::@7/(byte) c2B#15 )
  (byte) c2A#9 ← phi( doplasma::@7/(byte) c2A#15 )
  (byte) c2A#3 ← (byte) c2A#9 + (number) 2
  (byte) c2B#3 ← (byte) c2B#9 - (number) 3
  (byte) doplasma::i2#0 ← (byte) 0
  to:doplasma::@13
doplasma::@13: scope:[doplasma]  from doplasma::@18 doplasma::@9
  (byte*) doplasma::screen#4 ← phi( doplasma::@18/(byte*) doplasma::screen#5 doplasma::@9/(byte*) doplasma::screen#6 )
  (byte) c2B#16 ← phi( doplasma::@18/(byte) c2B#22 doplasma::@9/(byte) c2B#3 )
  (byte) c2A#16 ← phi( doplasma::@18/(byte) c2A#22 doplasma::@9/(byte) c2A#3 )
  (byte) c1B#15 ← phi( doplasma::@18/(byte) c1B#19 doplasma::@9/(byte) c1B#20 )
  (byte) c1A#15 ← phi( doplasma::@18/(byte) c1A#19 doplasma::@9/(byte) c1A#20 )
  (byte) doplasma::i2#2 ← phi( doplasma::@18/(byte) doplasma::i2#1 doplasma::@9/(byte) doplasma::i2#0 )
  (bool~) doplasma::$5 ← (byte) doplasma::i2#2 < (number) $28
  if((bool~) doplasma::$5) goto doplasma::@14
  to:doplasma::@return
doplasma::@14: scope:[doplasma]  from doplasma::@13
  (byte) c2B#26 ← phi( doplasma::@13/(byte) c2B#16 )
  (byte) c2A#26 ← phi( doplasma::@13/(byte) c2A#16 )
  (byte) c1B#26 ← phi( doplasma::@13/(byte) c1B#15 )
  (byte) c1A#26 ← phi( doplasma::@13/(byte) c1A#15 )
  (byte*) doplasma::screen#3 ← phi( doplasma::@13/(byte*) doplasma::screen#4 )
  (byte) doplasma::i2#3 ← phi( doplasma::@13/(byte) doplasma::i2#2 )
  (byte) doplasma::val#0 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#3)
  (byte) doplasma::ii#0 ← (byte) 0
  to:doplasma::@16
doplasma::@16: scope:[doplasma]  from doplasma::@14 doplasma::@17
  (byte) c2B#24 ← phi( doplasma::@14/(byte) c2B#26 doplasma::@17/(byte) c2B#27 )
  (byte) c2A#24 ← phi( doplasma::@14/(byte) c2A#26 doplasma::@17/(byte) c2A#27 )
  (byte) c1B#23 ← phi( doplasma::@14/(byte) c1B#26 doplasma::@17/(byte) c1B#27 )
  (byte) c1A#23 ← phi( doplasma::@14/(byte) c1A#26 doplasma::@17/(byte) c1A#27 )
  (byte) doplasma::i2#6 ← phi( doplasma::@14/(byte) doplasma::i2#3 doplasma::@17/(byte) doplasma::i2#4 )
  (byte*) doplasma::screen#2 ← phi( doplasma::@14/(byte*) doplasma::screen#3 doplasma::@17/(byte*) doplasma::screen#1 )
  (byte) doplasma::val#3 ← phi( doplasma::@14/(byte) doplasma::val#0 doplasma::@17/(byte) doplasma::val#1 )
  (byte) doplasma::ii#2 ← phi( doplasma::@14/(byte) doplasma::ii#0 doplasma::@17/(byte) doplasma::ii#1 )
  (bool~) doplasma::$6 ← (byte) doplasma::ii#2 < (number) $19
  unroll if((bool~) doplasma::$6) goto doplasma::@17
  to:doplasma::@18
doplasma::@17: scope:[doplasma]  from doplasma::@16
  (byte) c2B#27 ← phi( doplasma::@16/(byte) c2B#24 )
  (byte) c2A#27 ← phi( doplasma::@16/(byte) c2A#24 )
  (byte) c1B#27 ← phi( doplasma::@16/(byte) c1B#23 )
  (byte) c1A#27 ← phi( doplasma::@16/(byte) c1A#23 )
  (byte) doplasma::i2#4 ← phi( doplasma::@16/(byte) doplasma::i2#6 )
  (byte*) doplasma::screen#1 ← phi( doplasma::@16/(byte*) doplasma::screen#2 )
  (byte) doplasma::ii#3 ← phi( doplasma::@16/(byte) doplasma::ii#2 )
  (byte) doplasma::val#2 ← phi( doplasma::@16/(byte) doplasma::val#3 )
  (byte) doplasma::val#1 ← (byte) doplasma::val#2 + *((const byte*) doplasma::ybuf + (byte) doplasma::ii#3)
  (number~) doplasma::$7 ← (byte) doplasma::ii#3 * (number) $28
  (byte*~) doplasma::$8 ← (byte*) doplasma::screen#1 + (number~) doplasma::$7
  *((byte*~) doplasma::$8 + (byte) doplasma::i2#4) ← (byte) doplasma::val#1
  (byte) doplasma::ii#1 ← ++ (byte) doplasma::ii#3
  to:doplasma::@16
doplasma::@18: scope:[doplasma]  from doplasma::@16
  (byte*) doplasma::screen#5 ← phi( doplasma::@16/(byte*) doplasma::screen#2 )
  (byte) c2B#22 ← phi( doplasma::@16/(byte) c2B#24 )
  (byte) c2A#22 ← phi( doplasma::@16/(byte) c2A#24 )
  (byte) c1B#19 ← phi( doplasma::@16/(byte) c1B#23 )
  (byte) c1A#19 ← phi( doplasma::@16/(byte) c1A#23 )
  (byte) doplasma::i2#5 ← phi( doplasma::@16/(byte) doplasma::i2#6 )
  (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#5
  to:doplasma::@13
doplasma::@return: scope:[doplasma]  from doplasma::@13
  (byte) c2B#10 ← phi( doplasma::@13/(byte) c2B#16 )
  (byte) c2A#10 ← phi( doplasma::@13/(byte) c2A#16 )
  (byte) c1B#10 ← phi( doplasma::@13/(byte) c1B#15 )
  (byte) c1A#10 ← phi( doplasma::@13/(byte) c1A#15 )
  (byte) c1A#4 ← (byte) c1A#10
  (byte) c1B#4 ← (byte) c1B#10
  (byte) c2A#4 ← (byte) c2A#10
  (byte) c2B#4 ← (byte) c2B#10
  return 
  to:@return

(void()) makecharset((byte*) makecharset::charset)
makecharset: scope:[makecharset]  from main::@2
  (byte*) makecharset::charset#16 ← phi( main::@2/(byte*) makecharset::charset#0 )
  (byte*) print_char_cursor#29 ← phi( main::@2/(byte*) print_char_cursor#21 )
  (byte*) print_line_cursor#22 ← phi( main::@2/(byte*) print_line_cursor#14 )
  (byte*) print_screen#4 ← phi( main::@2/(byte*) print_screen#5 )
  call sid_rnd_init 
  to:makecharset::@23
makecharset::@23: scope:[makecharset]  from makecharset
  (byte*) makecharset::charset#13 ← phi( makecharset/(byte*) makecharset::charset#16 )
  (byte*) print_char_cursor#23 ← phi( makecharset/(byte*) print_char_cursor#29 )
  (byte*) print_line_cursor#16 ← phi( makecharset/(byte*) print_line_cursor#22 )
  (byte*) print_screen#3 ← phi( makecharset/(byte*) print_screen#4 )
  call print_cls 
  to:makecharset::@24
makecharset::@24: scope:[makecharset]  from makecharset::@23
  (byte*) makecharset::charset#12 ← phi( makecharset::@23/(byte*) makecharset::charset#13 )
  (byte*) print_char_cursor#16 ← phi( makecharset::@23/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#11 ← phi( makecharset::@23/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#11
  (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#16
  (word) makecharset::c#0 ← (word) 0
  to:makecharset::@1
makecharset::@1: scope:[makecharset]  from makecharset::@19 makecharset::@24
  (byte*) makecharset::charset#10 ← phi( makecharset::@19/(byte*) makecharset::charset#11 makecharset::@24/(byte*) makecharset::charset#12 )
  (byte*) print_char_cursor#24 ← phi( makecharset::@19/(byte*) print_char_cursor#30 makecharset::@24/(byte*) print_char_cursor#7 )
  (byte*) print_line_cursor#17 ← phi( makecharset::@19/(byte*) print_line_cursor#23 makecharset::@24/(byte*) print_line_cursor#5 )
  (word) makecharset::c#2 ← phi( makecharset::@19/(word) makecharset::c#1 makecharset::@24/(word) makecharset::c#0 )
  (bool~) makecharset::$2 ← (word) makecharset::c#2 < (number) $100
  if((bool~) makecharset::$2) goto makecharset::@2
  to:makecharset::@return
makecharset::@2: scope:[makecharset]  from makecharset::@1
  (byte*) print_line_cursor#33 ← phi( makecharset::@1/(byte*) print_line_cursor#17 )
  (byte*) print_char_cursor#38 ← phi( makecharset::@1/(byte*) print_char_cursor#24 )
  (byte*) makecharset::charset#8 ← phi( makecharset::@1/(byte*) makecharset::charset#10 )
  (word) makecharset::c#3 ← phi( makecharset::@1/(word) makecharset::c#2 )
  (byte~) makecharset::$3 ← < (word) makecharset::c#3
  (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3)
  (byte) makecharset::i#0 ← (byte) 0
  to:makecharset::@4
makecharset::@4: scope:[makecharset]  from makecharset::@2 makecharset::@9
  (byte*) print_line_cursor#31 ← phi( makecharset::@2/(byte*) print_line_cursor#33 makecharset::@9/(byte*) print_line_cursor#34 )
  (byte) makecharset::s#6 ← phi( makecharset::@2/(byte) makecharset::s#0 makecharset::@9/(byte) makecharset::s#8 )
  (byte*) print_char_cursor#36 ← phi( makecharset::@2/(byte*) print_char_cursor#38 makecharset::@9/(byte*) print_char_cursor#39 )
  (byte*) makecharset::charset#5 ← phi( makecharset::@2/(byte*) makecharset::charset#8 makecharset::@9/(byte*) makecharset::charset#1 )
  (word) makecharset::c#7 ← phi( makecharset::@2/(word) makecharset::c#3 makecharset::@9/(word) makecharset::c#5 )
  (byte) makecharset::i#2 ← phi( makecharset::@2/(byte) makecharset::i#0 makecharset::@9/(byte) makecharset::i#1 )
  (bool~) makecharset::$4 ← (byte) makecharset::i#2 < (number) 8
  if((bool~) makecharset::$4) goto makecharset::@5
  to:makecharset::@6
makecharset::@5: scope:[makecharset]  from makecharset::@4
  (byte*) print_line_cursor#37 ← phi( makecharset::@4/(byte*) print_line_cursor#31 )
  (byte*) print_char_cursor#42 ← phi( makecharset::@4/(byte*) print_char_cursor#36 )
  (byte) makecharset::s#5 ← phi( makecharset::@4/(byte) makecharset::s#6 )
  (byte*) makecharset::charset#4 ← phi( makecharset::@4/(byte*) makecharset::charset#5 )
  (byte) makecharset::i#6 ← phi( makecharset::@4/(byte) makecharset::i#2 )
  (word) makecharset::c#11 ← phi( makecharset::@4/(word) makecharset::c#7 )
  (byte) makecharset::b#0 ← (byte) 0
  (byte) makecharset::ii#0 ← (byte) 0
  to:makecharset::@7
makecharset::@6: scope:[makecharset]  from makecharset::@4
  (byte*) makecharset::charset#15 ← phi( makecharset::@4/(byte*) makecharset::charset#5 )
  (byte*) print_line_cursor#29 ← phi( makecharset::@4/(byte*) print_line_cursor#31 )
  (byte*) print_char_cursor#31 ← phi( makecharset::@4/(byte*) print_char_cursor#36 )
  (word) makecharset::c#4 ← phi( makecharset::@4/(word) makecharset::c#7 )
  (number~) makecharset::$12 ← (word) makecharset::c#4 & (number) 7
  (bool~) makecharset::$13 ← (number~) makecharset::$12 == (number) 0
  (bool~) makecharset::$14 ← ! (bool~) makecharset::$13
  if((bool~) makecharset::$14) goto makecharset::@19
  to:makecharset::@18
makecharset::@7: scope:[makecharset]  from makecharset::@10 makecharset::@5
  (byte*) print_line_cursor#35 ← phi( makecharset::@10/(byte*) print_line_cursor#36 makecharset::@5/(byte*) print_line_cursor#37 )
  (byte*) print_char_cursor#40 ← phi( makecharset::@10/(byte*) print_char_cursor#41 makecharset::@5/(byte*) print_char_cursor#42 )
  (byte) makecharset::s#3 ← phi( makecharset::@10/(byte) makecharset::s#4 makecharset::@5/(byte) makecharset::s#5 )
  (byte*) makecharset::charset#2 ← phi( makecharset::@10/(byte*) makecharset::charset#3 makecharset::@5/(byte*) makecharset::charset#4 )
  (byte) makecharset::b#4 ← phi( makecharset::@10/(byte) makecharset::b#6 makecharset::@5/(byte) makecharset::b#0 )
  (byte) makecharset::i#4 ← phi( makecharset::@10/(byte) makecharset::i#5 makecharset::@5/(byte) makecharset::i#6 )
  (word) makecharset::c#8 ← phi( makecharset::@10/(word) makecharset::c#10 makecharset::@5/(word) makecharset::c#11 )
  (byte) makecharset::ii#2 ← phi( makecharset::@10/(byte) makecharset::ii#1 makecharset::@5/(byte) makecharset::ii#0 )
  (bool~) makecharset::$5 ← (byte) makecharset::ii#2 < (number) 8
  if((bool~) makecharset::$5) goto makecharset::@8
  to:makecharset::@9
makecharset::@8: scope:[makecharset]  from makecharset::@7
  (byte*) print_line_cursor#40 ← phi( makecharset::@7/(byte*) print_line_cursor#35 )
  (byte*) print_char_cursor#45 ← phi( makecharset::@7/(byte*) print_char_cursor#40 )
  (byte*) makecharset::charset#9 ← phi( makecharset::@7/(byte*) makecharset::charset#2 )
  (byte) makecharset::i#9 ← phi( makecharset::@7/(byte) makecharset::i#4 )
  (word) makecharset::c#15 ← phi( makecharset::@7/(word) makecharset::c#8 )
  (byte) makecharset::b#7 ← phi( makecharset::@7/(byte) makecharset::b#4 )
  (byte) makecharset::ii#6 ← phi( makecharset::@7/(byte) makecharset::ii#2 )
  (byte) makecharset::s#2 ← phi( makecharset::@7/(byte) makecharset::s#3 )
  call sid_rnd 
  (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#1
  to:makecharset::@25
makecharset::@25: scope:[makecharset]  from makecharset::@8
  (byte*) print_line_cursor#39 ← phi( makecharset::@8/(byte*) print_line_cursor#40 )
  (byte*) print_char_cursor#44 ← phi( makecharset::@8/(byte*) print_char_cursor#45 )
  (byte*) makecharset::charset#7 ← phi( makecharset::@8/(byte*) makecharset::charset#9 )
  (byte) makecharset::i#8 ← phi( makecharset::@8/(byte) makecharset::i#9 )
  (word) makecharset::c#14 ← phi( makecharset::@8/(word) makecharset::c#15 )
  (byte) makecharset::b#5 ← phi( makecharset::@8/(byte) makecharset::b#7 )
  (byte) makecharset::ii#5 ← phi( makecharset::@8/(byte) makecharset::ii#6 )
  (byte) makecharset::s#1 ← phi( makecharset::@8/(byte) makecharset::s#2 )
  (byte) sid_rnd::return#4 ← phi( makecharset::@8/(byte) sid_rnd::return#2 )
  (byte~) makecharset::$6 ← (byte) sid_rnd::return#4
  (number~) makecharset::$7 ← (byte~) makecharset::$6 & (number) $ff
  (bool~) makecharset::$8 ← (number~) makecharset::$7 > (byte) makecharset::s#1
  (bool~) makecharset::$9 ← ! (bool~) makecharset::$8
  if((bool~) makecharset::$9) goto makecharset::@10
  to:makecharset::@13
makecharset::@9: scope:[makecharset]  from makecharset::@7
  (byte*) print_line_cursor#34 ← phi( makecharset::@7/(byte*) print_line_cursor#35 )
  (byte) makecharset::s#8 ← phi( makecharset::@7/(byte) makecharset::s#3 )
  (byte*) print_char_cursor#39 ← phi( makecharset::@7/(byte*) print_char_cursor#40 )
  (byte*) makecharset::charset#1 ← phi( makecharset::@7/(byte*) makecharset::charset#2 )
  (byte) makecharset::b#2 ← phi( makecharset::@7/(byte) makecharset::b#4 )
  (byte) makecharset::i#3 ← phi( makecharset::@7/(byte) makecharset::i#4 )
  (word) makecharset::c#5 ← phi( makecharset::@7/(word) makecharset::c#8 )
  (number~) makecharset::$10 ← (word) makecharset::c#5 * (number) 8
  (number~) makecharset::$11 ← (number~) makecharset::$10 + (byte) makecharset::i#3
  *((byte*) makecharset::charset#1 + (number~) makecharset::$11) ← (byte) makecharset::b#2
  (byte) makecharset::i#1 ← ++ (byte) makecharset::i#3
  to:makecharset::@4
makecharset::@10: scope:[makecharset]  from makecharset::@13 makecharset::@25
  (byte*) print_line_cursor#36 ← phi( makecharset::@13/(byte*) print_line_cursor#38 makecharset::@25/(byte*) print_line_cursor#39 )
  (byte*) print_char_cursor#41 ← phi( makecharset::@13/(byte*) print_char_cursor#43 makecharset::@25/(byte*) print_char_cursor#44 )
  (byte) makecharset::s#4 ← phi( makecharset::@13/(byte) makecharset::s#7 makecharset::@25/(byte) makecharset::s#1 )
  (byte*) makecharset::charset#3 ← phi( makecharset::@13/(byte*) makecharset::charset#6 makecharset::@25/(byte*) makecharset::charset#7 )
  (byte) makecharset::b#6 ← phi( makecharset::@13/(byte) makecharset::b#1 makecharset::@25/(byte) makecharset::b#5 )
  (byte) makecharset::i#5 ← phi( makecharset::@13/(byte) makecharset::i#7 makecharset::@25/(byte) makecharset::i#8 )
  (word) makecharset::c#10 ← phi( makecharset::@13/(word) makecharset::c#13 makecharset::@25/(word) makecharset::c#14 )
  (byte) makecharset::ii#3 ← phi( makecharset::@13/(byte) makecharset::ii#4 makecharset::@25/(byte) makecharset::ii#5 )
  (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#3
  to:makecharset::@7
makecharset::@13: scope:[makecharset]  from makecharset::@25
  (byte*) print_line_cursor#38 ← phi( makecharset::@25/(byte*) print_line_cursor#39 )
  (byte*) print_char_cursor#43 ← phi( makecharset::@25/(byte*) print_char_cursor#44 )
  (byte) makecharset::s#7 ← phi( makecharset::@25/(byte) makecharset::s#1 )
  (byte*) makecharset::charset#6 ← phi( makecharset::@25/(byte*) makecharset::charset#7 )
  (byte) makecharset::i#7 ← phi( makecharset::@25/(byte) makecharset::i#8 )
  (word) makecharset::c#13 ← phi( makecharset::@25/(word) makecharset::c#14 )
  (byte) makecharset::ii#4 ← phi( makecharset::@25/(byte) makecharset::ii#5 )
  (byte) makecharset::b#3 ← phi( makecharset::@25/(byte) makecharset::b#5 )
  (byte) makecharset::b#1 ← (byte) makecharset::b#3 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#4)
  to:makecharset::@10
makecharset::@19: scope:[makecharset]  from makecharset::@26 makecharset::@6
  (byte*) makecharset::charset#11 ← phi( makecharset::@26/(byte*) makecharset::charset#14 makecharset::@6/(byte*) makecharset::charset#15 )
  (byte*) print_char_cursor#30 ← phi( makecharset::@26/(byte*) print_char_cursor#8 makecharset::@6/(byte*) print_char_cursor#31 )
  (byte*) print_line_cursor#23 ← phi( makecharset::@26/(byte*) print_line_cursor#28 makecharset::@6/(byte*) print_line_cursor#29 )
  (word) makecharset::c#6 ← phi( makecharset::@26/(word) makecharset::c#9 makecharset::@6/(word) makecharset::c#4 )
  (word) makecharset::c#1 ← ++ (word) makecharset::c#6
  to:makecharset::@1
makecharset::@18: scope:[makecharset]  from makecharset::@6
  (byte*) makecharset::charset#17 ← phi( makecharset::@6/(byte*) makecharset::charset#15 )
  (byte*) print_line_cursor#32 ← phi( makecharset::@6/(byte*) print_line_cursor#29 )
  (word) makecharset::c#12 ← phi( makecharset::@6/(word) makecharset::c#4 )
  (byte*) print_char_cursor#20 ← phi( makecharset::@6/(byte*) print_char_cursor#31 )
  (byte) print_char::ch#0 ← (byte) '.'
  call print_char 
  to:makecharset::@26
makecharset::@26: scope:[makecharset]  from makecharset::@18
  (byte*) makecharset::charset#14 ← phi( makecharset::@18/(byte*) makecharset::charset#17 )
  (byte*) print_line_cursor#28 ← phi( makecharset::@18/(byte*) print_line_cursor#32 )
  (word) makecharset::c#9 ← phi( makecharset::@18/(word) makecharset::c#12 )
  (byte*) print_char_cursor#17 ← phi( makecharset::@18/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#17
  to:makecharset::@19
makecharset::@return: scope:[makecharset]  from makecharset::@1
  (byte*) print_char_cursor#18 ← phi( makecharset::@1/(byte*) print_char_cursor#24 )
  (byte*) print_line_cursor#12 ← phi( makecharset::@1/(byte*) print_line_cursor#17 )
  (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#12
  (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#18
  return 
  to:@return
@46: scope:[]  from @44
  (byte*) print_screen#8 ← phi( @44/(byte*) print_screen#9 )
  (byte) c2B#17 ← phi( @44/(byte) c2B#2 )
  (byte) c2A#17 ← phi( @44/(byte) c2A#2 )
  (byte) c1B#16 ← phi( @44/(byte) c1B#2 )
  (byte) c1A#16 ← phi( @44/(byte) c1A#2 )
  (byte*) print_char_cursor#25 ← phi( @44/(byte*) print_char_cursor#32 )
  (byte*) print_line_cursor#18 ← phi( @44/(byte*) print_line_cursor#24 )
  call main 
  to:@47
@47: scope:[]  from @46
  (byte) c2B#11 ← phi( @46/(byte) c2B#1 )
  (byte) c2A#11 ← phi( @46/(byte) c2A#1 )
  (byte) c1B#11 ← phi( @46/(byte) c1B#1 )
  (byte) c1A#11 ← phi( @46/(byte) c1A#1 )
  (byte*) print_char_cursor#19 ← phi( @46/(byte*) print_char_cursor#6 )
  (byte*) print_line_cursor#13 ← phi( @46/(byte*) print_line_cursor#4 )
  (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#13
  (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#19
  (byte) c1A#5 ← (byte) c1A#11
  (byte) c1B#5 ← (byte) c1B#11
  (byte) c2A#5 ← (byte) c2A#11
  (byte) c2B#5 ← (byte) c2B#11
  to:@end
@end: scope:[]  from @47

SYMBOL TABLE SSA
(label) @17
(label) @44
(label) @46
(label) @47
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*)(number) $d021
(const byte) BLACK = (byte) 0
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) CHARSET = (byte*)(number) $2000
(const byte*) COLS = (byte*)(number) $d800
(const byte*) D018 = (byte*)(number) $d018
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN1 = (byte*)(number) $2800
(const byte) SID_CONTROL_NOISE = (byte) $80
(const byte*) SID_VOICE3_CONTROL = (byte*)(number) $d412
(const word*) SID_VOICE3_FREQ = (word*)(number) $d40e
(const byte*) SID_VOICE3_OSC = (byte*)(number) $d41b
(const byte*) SINTABLE[(number) $100]  = kickasm {{ .for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(toRadians(360*i/256)))
 }}
(byte) c1A
(byte) c1A#0
(byte) c1A#1
(byte) c1A#10
(byte) c1A#11
(byte) c1A#12
(byte) c1A#13
(byte) c1A#14
(byte) c1A#15
(byte) c1A#16
(byte) c1A#17
(byte) c1A#18
(byte) c1A#19
(byte) c1A#2
(byte) c1A#20
(byte) c1A#21
(byte) c1A#22
(byte) c1A#23
(byte) c1A#24
(byte) c1A#25
(byte) c1A#26
(byte) c1A#27
(byte) c1A#28
(byte) c1A#29
(byte) c1A#3
(byte) c1A#30
(byte) c1A#31
(byte) c1A#4
(byte) c1A#5
(byte) c1A#6
(byte) c1A#7
(byte) c1A#8
(byte) c1A#9
(byte) c1B
(byte) c1B#0
(byte) c1B#1
(byte) c1B#10
(byte) c1B#11
(byte) c1B#12
(byte) c1B#13
(byte) c1B#14
(byte) c1B#15
(byte) c1B#16
(byte) c1B#17
(byte) c1B#18
(byte) c1B#19
(byte) c1B#2
(byte) c1B#20
(byte) c1B#21
(byte) c1B#22
(byte) c1B#23
(byte) c1B#24
(byte) c1B#25
(byte) c1B#26
(byte) c1B#27
(byte) c1B#28
(byte) c1B#29
(byte) c1B#3
(byte) c1B#30
(byte) c1B#31
(byte) c1B#4
(byte) c1B#5
(byte) c1B#6
(byte) c1B#7
(byte) c1B#8
(byte) c1B#9
(byte) c2A
(byte) c2A#0
(byte) c2A#1
(byte) c2A#10
(byte) c2A#11
(byte) c2A#12
(byte) c2A#13
(byte) c2A#14
(byte) c2A#15
(byte) c2A#16
(byte) c2A#17
(byte) c2A#18
(byte) c2A#19
(byte) c2A#2
(byte) c2A#20
(byte) c2A#21
(byte) c2A#22
(byte) c2A#23
(byte) c2A#24
(byte) c2A#25
(byte) c2A#26
(byte) c2A#27
(byte) c2A#28
(byte) c2A#29
(byte) c2A#3
(byte) c2A#30
(byte) c2A#31
(byte) c2A#4
(byte) c2A#5
(byte) c2A#6
(byte) c2A#7
(byte) c2A#8
(byte) c2A#9
(byte) c2B
(byte) c2B#0
(byte) c2B#1
(byte) c2B#10
(byte) c2B#11
(byte) c2B#12
(byte) c2B#13
(byte) c2B#14
(byte) c2B#15
(byte) c2B#16
(byte) c2B#17
(byte) c2B#18
(byte) c2B#19
(byte) c2B#2
(byte) c2B#20
(byte) c2B#21
(byte) c2B#22
(byte) c2B#23
(byte) c2B#24
(byte) c2B#25
(byte) c2B#26
(byte) c2B#27
(byte) c2B#28
(byte) c2B#29
(byte) c2B#3
(byte) c2B#30
(byte) c2B#31
(byte) c2B#4
(byte) c2B#5
(byte) c2B#6
(byte) c2B#7
(byte) c2B#8
(byte) c2B#9
(void()) doplasma((byte*) doplasma::screen)
(bool~) doplasma::$0
(byte~) doplasma::$1
(byte~) doplasma::$2
(bool~) doplasma::$3
(byte~) doplasma::$4
(bool~) doplasma::$5
(bool~) doplasma::$6
(number~) doplasma::$7
(byte*~) doplasma::$8
(label) doplasma::@1
(label) doplasma::@13
(label) doplasma::@14
(label) doplasma::@16
(label) doplasma::@17
(label) doplasma::@18
(label) doplasma::@2
(label) doplasma::@3
(label) doplasma::@7
(label) doplasma::@8
(label) doplasma::@9
(label) doplasma::@return
(byte) doplasma::c1a
(byte) doplasma::c1a#0
(byte) doplasma::c1a#1
(byte) doplasma::c1a#2
(byte) doplasma::c1a#3
(byte) doplasma::c1b
(byte) doplasma::c1b#0
(byte) doplasma::c1b#1
(byte) doplasma::c1b#2
(byte) doplasma::c1b#3
(byte) doplasma::c2a
(byte) doplasma::c2a#0
(byte) doplasma::c2a#1
(byte) doplasma::c2a#2
(byte) doplasma::c2a#3
(byte) doplasma::c2b
(byte) doplasma::c2b#0
(byte) doplasma::c2b#1
(byte) doplasma::c2b#2
(byte) doplasma::c2b#3
(byte) doplasma::i
(byte) doplasma::i#0
(byte) doplasma::i#1
(byte) doplasma::i#2
(byte) doplasma::i#3
(byte) doplasma::i1
(byte) doplasma::i1#0
(byte) doplasma::i1#1
(byte) doplasma::i1#2
(byte) doplasma::i1#3
(byte) doplasma::i2
(byte) doplasma::i2#0
(byte) doplasma::i2#1
(byte) doplasma::i2#2
(byte) doplasma::i2#3
(byte) doplasma::i2#4
(byte) doplasma::i2#5
(byte) doplasma::i2#6
(byte) doplasma::ii
(byte) doplasma::ii#0
(byte) doplasma::ii#1
(byte) doplasma::ii#2
(byte) doplasma::ii#3
(byte*) doplasma::screen
(byte*) doplasma::screen#0
(byte*) doplasma::screen#1
(byte*) doplasma::screen#10
(byte*) doplasma::screen#11
(byte*) doplasma::screen#12
(byte*) doplasma::screen#2
(byte*) doplasma::screen#3
(byte*) doplasma::screen#4
(byte*) doplasma::screen#5
(byte*) doplasma::screen#6
(byte*) doplasma::screen#7
(byte*) doplasma::screen#8
(byte*) doplasma::screen#9
(byte) doplasma::val
(byte) doplasma::val#0
(byte) doplasma::val#1
(byte) doplasma::val#2
(byte) doplasma::val#3
(const byte*) doplasma::xbuf[(number) $28]  = { fill( $28, 0) }
(const byte*) doplasma::ybuf[(number) $19]  = { fill( $19, 0) }
(byte) doplasma::yprev
(byte) doplasma::yprev#0
(byte) doplasma::yprev#1
(byte) doplasma::yprev#2
(byte) doplasma::yprev#3
(byte) doplasma::yval
(byte) doplasma::yval#0
(void()) main()
(byte~) main::$1
(bool~) main::$2
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@9
(label) main::@return
(byte*) main::col
(byte*) main::col#0
(byte*) main::col#1
(byte*) main::col#2
(label) main::toD0181
(word~) main::toD0181_$0
(number~) main::toD0181_$1
(number~) main::toD0181_$2
(number~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(number~) main::toD0181_$6
(number~) main::toD0181_$7
(number~) main::toD0181_$8
(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
(void()) makecharset((byte*) makecharset::charset)
(number~) makecharset::$10
(number~) makecharset::$11
(number~) makecharset::$12
(bool~) makecharset::$13
(bool~) makecharset::$14
(bool~) makecharset::$2
(byte~) makecharset::$3
(bool~) makecharset::$4
(bool~) makecharset::$5
(byte~) makecharset::$6
(number~) makecharset::$7
(bool~) makecharset::$8
(bool~) makecharset::$9
(label) makecharset::@1
(label) makecharset::@10
(label) makecharset::@13
(label) makecharset::@18
(label) makecharset::@19
(label) makecharset::@2
(label) makecharset::@23
(label) makecharset::@24
(label) makecharset::@25
(label) makecharset::@26
(label) makecharset::@4
(label) makecharset::@5
(label) makecharset::@6
(label) makecharset::@7
(label) makecharset::@8
(label) makecharset::@9
(label) makecharset::@return
(byte) makecharset::b
(byte) makecharset::b#0
(byte) makecharset::b#1
(byte) makecharset::b#2
(byte) makecharset::b#3
(byte) makecharset::b#4
(byte) makecharset::b#5
(byte) makecharset::b#6
(byte) makecharset::b#7
(const byte*) makecharset::bittab[(number) 8]  = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(word) makecharset::c
(word) makecharset::c#0
(word) makecharset::c#1
(word) makecharset::c#10
(word) makecharset::c#11
(word) makecharset::c#12
(word) makecharset::c#13
(word) makecharset::c#14
(word) makecharset::c#15
(word) makecharset::c#2
(word) makecharset::c#3
(word) makecharset::c#4
(word) makecharset::c#5
(word) makecharset::c#6
(word) makecharset::c#7
(word) makecharset::c#8
(word) makecharset::c#9
(byte*) makecharset::charset
(byte*) makecharset::charset#0
(byte*) makecharset::charset#1
(byte*) makecharset::charset#10
(byte*) makecharset::charset#11
(byte*) makecharset::charset#12
(byte*) makecharset::charset#13
(byte*) makecharset::charset#14
(byte*) makecharset::charset#15
(byte*) makecharset::charset#16
(byte*) makecharset::charset#17
(byte*) makecharset::charset#2
(byte*) makecharset::charset#3
(byte*) makecharset::charset#4
(byte*) makecharset::charset#5
(byte*) makecharset::charset#6
(byte*) makecharset::charset#7
(byte*) makecharset::charset#8
(byte*) makecharset::charset#9
(byte) makecharset::i
(byte) makecharset::i#0
(byte) makecharset::i#1
(byte) makecharset::i#2
(byte) makecharset::i#3
(byte) makecharset::i#4
(byte) makecharset::i#5
(byte) makecharset::i#6
(byte) makecharset::i#7
(byte) makecharset::i#8
(byte) makecharset::i#9
(byte) makecharset::ii
(byte) makecharset::ii#0
(byte) makecharset::ii#1
(byte) makecharset::ii#2
(byte) makecharset::ii#3
(byte) makecharset::ii#4
(byte) makecharset::ii#5
(byte) makecharset::ii#6
(byte) makecharset::s
(byte) makecharset::s#0
(byte) makecharset::s#1
(byte) makecharset::s#2
(byte) makecharset::s#3
(byte) makecharset::s#4
(byte) makecharset::s#5
(byte) makecharset::s#6
(byte) makecharset::s#7
(byte) makecharset::s#8
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
(byte*~) memset::$2
(byte*~) memset::$3
(bool~) memset::$4
(label) memset::@1
(label) memset::@2
(label) memset::@4
(label) memset::@5
(label) memset::@return
(byte) memset::c
(byte) memset::c#0
(byte) memset::c#1
(byte) memset::c#2
(byte) memset::c#3
(byte) memset::c#4
(byte*) memset::dst
(byte*) memset::dst#0
(byte*) memset::dst#1
(byte*) memset::dst#2
(byte*) memset::dst#3
(byte*) memset::end
(byte*) memset::end#0
(byte*) memset::end#1
(byte*) memset::end#2
(word) memset::num
(word) memset::num#0
(word) memset::num#1
(word) memset::num#2
(void*) memset::return
(void*) memset::return#0
(void*) memset::return#1
(void*) memset::return#2
(void*) memset::return#3
(void*) memset::str
(void*) memset::str#0
(void*) memset::str#1
(void*) memset::str#2
(void*) memset::str#3
(void*) memset::str#4
(void*) memset::str#5
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#0
(byte) print_char::ch#1
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
(byte*) print_char_cursor#10
(byte*) print_char_cursor#11
(byte*) print_char_cursor#12
(byte*) print_char_cursor#13
(byte*) print_char_cursor#14
(byte*) print_char_cursor#15
(byte*) print_char_cursor#16
(byte*) print_char_cursor#17
(byte*) print_char_cursor#18
(byte*) print_char_cursor#19
(byte*) print_char_cursor#2
(byte*) print_char_cursor#20
(byte*) print_char_cursor#21
(byte*) print_char_cursor#22
(byte*) print_char_cursor#23
(byte*) print_char_cursor#24
(byte*) print_char_cursor#25
(byte*) print_char_cursor#26
(byte*) print_char_cursor#27
(byte*) print_char_cursor#28
(byte*) print_char_cursor#29
(byte*) print_char_cursor#3
(byte*) print_char_cursor#30
(byte*) print_char_cursor#31
(byte*) print_char_cursor#32
(byte*) print_char_cursor#33
(byte*) print_char_cursor#34
(byte*) print_char_cursor#35
(byte*) print_char_cursor#36
(byte*) print_char_cursor#37
(byte*) print_char_cursor#38
(byte*) print_char_cursor#39
(byte*) print_char_cursor#4
(byte*) print_char_cursor#40
(byte*) print_char_cursor#41
(byte*) print_char_cursor#42
(byte*) print_char_cursor#43
(byte*) print_char_cursor#44
(byte*) print_char_cursor#45
(byte*) print_char_cursor#5
(byte*) print_char_cursor#6
(byte*) print_char_cursor#7
(byte*) print_char_cursor#8
(byte*) print_char_cursor#9
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
(byte*) print_line_cursor#10
(byte*) print_line_cursor#11
(byte*) print_line_cursor#12
(byte*) print_line_cursor#13
(byte*) print_line_cursor#14
(byte*) print_line_cursor#15
(byte*) print_line_cursor#16
(byte*) print_line_cursor#17
(byte*) print_line_cursor#18
(byte*) print_line_cursor#19
(byte*) print_line_cursor#2
(byte*) print_line_cursor#20
(byte*) print_line_cursor#21
(byte*) print_line_cursor#22
(byte*) print_line_cursor#23
(byte*) print_line_cursor#24
(byte*) print_line_cursor#25
(byte*) print_line_cursor#26
(byte*) print_line_cursor#27
(byte*) print_line_cursor#28
(byte*) print_line_cursor#29
(byte*) print_line_cursor#3
(byte*) print_line_cursor#30
(byte*) print_line_cursor#31
(byte*) print_line_cursor#32
(byte*) print_line_cursor#33
(byte*) print_line_cursor#34
(byte*) print_line_cursor#35
(byte*) print_line_cursor#36
(byte*) print_line_cursor#37
(byte*) print_line_cursor#38
(byte*) print_line_cursor#39
(byte*) print_line_cursor#4
(byte*) print_line_cursor#40
(byte*) print_line_cursor#5
(byte*) print_line_cursor#6
(byte*) print_line_cursor#7
(byte*) print_line_cursor#8
(byte*) print_line_cursor#9
(byte*) print_screen
(byte*) print_screen#0
(byte*) print_screen#1
(byte*) print_screen#2
(byte*) print_screen#3
(byte*) print_screen#4
(byte*) print_screen#5
(byte*) print_screen#6
(byte*) print_screen#7
(byte*) print_screen#8
(byte*) print_screen#9
(byte()) sid_rnd()
(label) sid_rnd::@return
(byte) sid_rnd::return
(byte) sid_rnd::return#0
(byte) sid_rnd::return#1
(byte) sid_rnd::return#2
(byte) sid_rnd::return#3
(byte) sid_rnd::return#4
(void()) sid_rnd_init()
(label) sid_rnd_init::@return

Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Adding number conversion cast (unumber) $ffff in *((const word*) SID_VOICE3_FREQ) ← (number) $ffff
Adding number conversion cast (unumber) $3e8 in (byte*) main::col#1 ← (byte*) main::col#2 + rangenext(COLS,COLS+$3e8)
Adding number conversion cast (unumber) $3fff in (number~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (number) $3fff
Adding number conversion cast (unumber) main::toD0181_$1 in (number~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (unumber)(number) $3fff
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$2 ← (unumber~) main::toD0181_$1 * (number) 4
Adding number conversion cast (unumber) main::toD0181_$2 in (number~) main::toD0181_$2 ← (unumber~) main::toD0181_$1 * (unumber)(number) 4
Adding number conversion cast (unumber) main::toD0181_$3 in (number~) main::toD0181_$3 ← > (unumber~) main::toD0181_$2
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (number) 4
Adding number conversion cast (unumber) main::toD0181_$6 in (number~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (unumber)(number) 4
Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (number) $f
Adding number conversion cast (unumber) main::toD0181_$7 in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (unumber)(number) $f
Adding number conversion cast (unumber) main::toD0181_$8 in (number~) main::toD0181_$8 ← (unumber~) main::toD0181_$3 | (unumber~) main::toD0181_$7
Adding number conversion cast (unumber) $19 in (bool~) doplasma::$0 ← (byte) doplasma::i#2 < (number) $19
Adding number conversion cast (unumber) 4 in (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (number) 4
Adding number conversion cast (unumber) 9 in (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (number) 9
Adding number conversion cast (unumber) 3 in (byte) c1A#3 ← (byte) c1A#9 + (number) 3
Adding number conversion cast (unumber) 5 in (byte) c1B#3 ← (byte) c1B#9 - (number) 5
Adding number conversion cast (unumber) $28 in (bool~) doplasma::$3 ← (byte) doplasma::i1#2 < (number) $28
Adding number conversion cast (unumber) 3 in (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (number) 3
Adding number conversion cast (unumber) 7 in (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (number) 7
Adding number conversion cast (unumber) 2 in (byte) c2A#3 ← (byte) c2A#9 + (number) 2
Adding number conversion cast (unumber) 3 in (byte) c2B#3 ← (byte) c2B#9 - (number) 3
Adding number conversion cast (unumber) $28 in (bool~) doplasma::$5 ← (byte) doplasma::i2#2 < (number) $28
Adding number conversion cast (unumber) $19 in (bool~) doplasma::$6 ← (byte) doplasma::ii#2 < (number) $19
Adding number conversion cast (unumber) $28 in (number~) doplasma::$7 ← (byte) doplasma::ii#3 * (number) $28
Adding number conversion cast (unumber) doplasma::$7 in (number~) doplasma::$7 ← (byte) doplasma::ii#3 * (unumber)(number) $28
Adding number conversion cast (unumber) $100 in (bool~) makecharset::$2 ← (word) makecharset::c#2 < (number) $100
Adding number conversion cast (unumber) 8 in (bool~) makecharset::$4 ← (byte) makecharset::i#2 < (number) 8
Adding number conversion cast (unumber) 7 in (number~) makecharset::$12 ← (word) makecharset::c#4 & (number) 7
Adding number conversion cast (unumber) makecharset::$12 in (number~) makecharset::$12 ← (word) makecharset::c#4 & (unumber)(number) 7
Adding number conversion cast (unumber) 0 in (bool~) makecharset::$13 ← (unumber~) makecharset::$12 == (number) 0
Adding number conversion cast (unumber) 8 in (bool~) makecharset::$5 ← (byte) makecharset::ii#2 < (number) 8
Adding number conversion cast (unumber) $ff in (number~) makecharset::$7 ← (byte~) makecharset::$6 & (number) $ff
Adding number conversion cast (unumber) makecharset::$7 in (number~) makecharset::$7 ← (byte~) makecharset::$6 & (unumber)(number) $ff
Adding number conversion cast (unumber) 8 in (number~) makecharset::$10 ← (word) makecharset::c#5 * (number) 8
Adding number conversion cast (unumber) makecharset::$10 in (number~) makecharset::$10 ← (word) makecharset::c#5 * (unumber)(number) 8
Adding number conversion cast (unumber) makecharset::$11 in (number~) makecharset::$11 ← (unumber~) makecharset::$10 + (byte) makecharset::i#3
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast *((const word*) SID_VOICE3_FREQ) ← (unumber)(number) $ffff
Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1
Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53280
Simplifying constant pointer cast (byte*) 53281
Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 55296
Simplifying constant pointer cast (word*) 54286
Simplifying constant pointer cast (byte*) 54290
Simplifying constant pointer cast (byte*) 54299
Simplifying constant pointer cast (byte*) 10240
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $3e8
Simplifying constant integer cast $ffff
Simplifying constant integer cast $3e8
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $19
Simplifying constant integer cast 4
Simplifying constant integer cast 9
Simplifying constant integer cast 3
Simplifying constant integer cast 5
Simplifying constant integer cast $28
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast $28
Simplifying constant integer cast $19
Simplifying constant integer cast $28
Simplifying constant integer cast $100
Simplifying constant integer cast 8
Simplifying constant integer cast 7
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast $ff
Simplifying constant integer cast 8
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (word) $ffff
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) $19
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 9
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $19
Finalized unsigned number type (byte) $28
Finalized unsigned number type (word) $100
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to word in (unumber~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (word) $3fff
Inferred type updated to word in (unumber~) main::toD0181_$2 ← (word~) main::toD0181_$1 * (byte) 4
Inferred type updated to byte in (unumber~) main::toD0181_$3 ← > (word~) main::toD0181_$2
Inferred type updated to byte in (unumber~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (byte) 4
Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::toD0181_$6 & (byte) $f
Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7
Inferred type updated to byte in (unumber~) doplasma::$7 ← (byte) doplasma::ii#3 * (byte) $28
Inferred type updated to byte in (unumber~) makecharset::$12 ← (word) makecharset::c#4 & (byte) 7
Inferred type updated to byte in (unumber~) makecharset::$7 ← (byte~) makecharset::$6 & (byte) $ff
Inferred type updated to word in (unumber~) makecharset::$10 ← (word) makecharset::c#5 * (byte) 8
Inferred type updated to word in (unumber~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#3
Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0
Inversing boolean not [189] (bool~) makecharset::$14 ← (byte~) makecharset::$12 != (byte) 0 from [188] (bool~) makecharset::$13 ← (byte~) makecharset::$12 == (byte) 0
Inversing boolean not [201] (bool~) makecharset::$9 ← (byte~) makecharset::$7 <= (byte) makecharset::s#1 from [200] (bool~) makecharset::$8 ← (byte~) makecharset::$7 > (byte) makecharset::s#1
Successful SSA optimization Pass2UnaryNotSimplification
Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 
Alias (void*) memset::str#2 = (void*) memset::str#3 
Alias (word) memset::num#1 = (word) memset::num#2 
Alias (byte) memset::c#3 = (byte) memset::c#4 
Alias (byte*) memset::end#0 = (byte*~) memset::$3 
Alias (byte) memset::c#1 = (byte) memset::c#2 
Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 
Alias (byte*) memset::end#1 = (byte*) memset::end#2 
Alias (void*) memset::str#4 = (void*) memset::str#5 
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#32 (byte*) print_screen#9 (byte*) print_line_cursor#18 (byte*) print_char_cursor#25 (byte*) print_screen#8 
Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#12 (byte*) print_char_cursor#2 
Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#3 (byte*) print_line_cursor#8 (byte*) print_char_cursor#13 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 
Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 
Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#19 
Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#26 
Alias (byte*) print_screen#5 = (byte*) print_screen#6 
Alias (byte) c1A#17 = (byte) c1A#29 (byte) c1A#30 (byte) c1A#28 (byte) c1A#24 (byte) c1A#21 
Alias (byte) c1B#17 = (byte) c1B#29 (byte) c1B#30 (byte) c1B#28 (byte) c1B#24 (byte) c1B#21 
Alias (byte) c2A#18 = (byte) c2A#29 (byte) c2A#30 (byte) c2A#28 (byte) c2A#25 (byte) c2A#23 
Alias (byte) c2B#18 = (byte) c2B#29 (byte) c2B#30 (byte) c2B#28 (byte) c2B#25 (byte) c2B#23 
Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 (byte*) print_line_cursor#30 (byte*) print_line_cursor#26 
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#37 (byte*) print_char_cursor#34 (byte*) print_char_cursor#28 
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 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$1 
Alias (byte) c1A#1 = (byte) c1A#12 (byte) c1A#13 (byte) c1A#7 
Alias (byte) c1B#1 = (byte) c1B#12 (byte) c1B#13 (byte) c1B#7 
Alias (byte) c2A#1 = (byte) c2A#12 (byte) c2A#13 (byte) c2A#7 
Alias (byte) c2B#1 = (byte) c2B#12 (byte) c2B#13 (byte) c2B#7 
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#15 (byte*) print_line_cursor#20 (byte*) print_line_cursor#4 
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#22 (byte*) print_char_cursor#27 (byte*) print_char_cursor#6 
Alias (byte) c1A#0 = (byte) c1A#6 
Alias (byte) c1B#0 = (byte) c1B#6 
Alias (byte) c2A#0 = (byte) c2A#6 
Alias (byte) c2B#0 = (byte) c2B#6 
Alias (byte) doplasma::c1a#2 = (byte) doplasma::c1a#3 
Alias (byte) doplasma::c1b#2 = (byte) doplasma::c1b#3 
Alias (byte) doplasma::yprev#2 = (byte) doplasma::yprev#3 
Alias (byte) doplasma::i#2 = (byte) doplasma::i#3 
Alias (byte) c1A#14 = (byte) c1A#18 (byte) c1A#9 
Alias (byte) c1B#14 = (byte) c1B#18 (byte) c1B#9 
Alias (byte) c2A#14 = (byte) c2A#20 (byte) c2A#8 
Alias (byte) c2B#14 = (byte) c2B#20 (byte) c2B#8 
Alias (byte*) doplasma::screen#10 = (byte*) doplasma::screen#12 (byte*) doplasma::screen#8 
Alias (byte) doplasma::yval#0 = (byte~) doplasma::$1 (byte) doplasma::yprev#1 
Alias (byte) doplasma::c2a#2 = (byte) doplasma::c2a#3 
Alias (byte) doplasma::c2b#2 = (byte) doplasma::c2b#3 
Alias (byte) doplasma::i1#2 = (byte) doplasma::i1#3 
Alias (byte) c2A#15 = (byte) c2A#21 (byte) c2A#9 
Alias (byte) c2B#15 = (byte) c2B#21 (byte) c2B#9 
Alias (byte) c1A#20 = (byte) c1A#25 (byte) c1A#22 
Alias (byte) c1B#20 = (byte) c1B#25 (byte) c1B#22 
Alias (byte*) doplasma::screen#6 = (byte*) doplasma::screen#9 (byte*) doplasma::screen#7 
Alias (byte) doplasma::i2#2 = (byte) doplasma::i2#3 
Alias (byte*) doplasma::screen#3 = (byte*) doplasma::screen#4 
Alias (byte) c1A#10 = (byte) c1A#26 (byte) c1A#15 (byte) c1A#4 
Alias (byte) c1B#10 = (byte) c1B#26 (byte) c1B#15 (byte) c1B#4 
Alias (byte) c2A#10 = (byte) c2A#26 (byte) c2A#16 (byte) c2A#4 
Alias (byte) c2B#10 = (byte) c2B#26 (byte) c2B#16 (byte) c2B#4 
Alias (byte) doplasma::val#2 = (byte) doplasma::val#3 
Alias (byte) doplasma::ii#2 = (byte) doplasma::ii#3 
Alias (byte*) doplasma::screen#1 = (byte*) doplasma::screen#2 (byte*) doplasma::screen#5 
Alias (byte) doplasma::i2#4 = (byte) doplasma::i2#6 (byte) doplasma::i2#5 
Alias (byte) c1A#19 = (byte) c1A#27 (byte) c1A#23 
Alias (byte) c1B#19 = (byte) c1B#27 (byte) c1B#23 
Alias (byte) c2A#22 = (byte) c2A#27 (byte) c2A#24 
Alias (byte) c2B#22 = (byte) c2B#27 (byte) c2B#24 
Alias (byte*) print_screen#3 = (byte*) print_screen#4 
Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#22 
Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#29 
Alias (byte*) makecharset::charset#12 = (byte*) makecharset::charset#13 (byte*) makecharset::charset#16 
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#7 
Alias (word) makecharset::c#2 = (word) makecharset::c#3 
Alias (byte*) makecharset::charset#10 = (byte*) makecharset::charset#8 
Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#24 (byte*) print_char_cursor#9 
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#33 (byte*) print_line_cursor#17 (byte*) print_line_cursor#6 
Alias (word) makecharset::c#11 = (word) makecharset::c#7 (word) makecharset::c#4 (word) makecharset::c#12 (word) makecharset::c#9 
Alias (byte) makecharset::i#2 = (byte) makecharset::i#6 
Alias (byte*) makecharset::charset#14 = (byte*) makecharset::charset#4 (byte*) makecharset::charset#5 (byte*) makecharset::charset#15 (byte*) makecharset::charset#17 
Alias (byte) makecharset::s#5 = (byte) makecharset::s#6 
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#36 (byte*) print_char_cursor#31 
Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#37 (byte*) print_line_cursor#31 (byte*) print_line_cursor#29 (byte*) print_line_cursor#32 
Alias (byte) makecharset::s#1 = (byte) makecharset::s#2 (byte) makecharset::s#3 (byte) makecharset::s#8 (byte) makecharset::s#7 
Alias (byte) makecharset::ii#2 = (byte) makecharset::ii#6 (byte) makecharset::ii#5 (byte) makecharset::ii#4 
Alias (byte) makecharset::b#2 = (byte) makecharset::b#7 (byte) makecharset::b#4 (byte) makecharset::b#5 (byte) makecharset::b#3 
Alias (word) makecharset::c#13 = (word) makecharset::c#15 (word) makecharset::c#8 (word) makecharset::c#14 (word) makecharset::c#5 
Alias (byte) makecharset::i#3 = (byte) makecharset::i#9 (byte) makecharset::i#4 (byte) makecharset::i#8 (byte) makecharset::i#7 
Alias (byte*) makecharset::charset#1 = (byte*) makecharset::charset#9 (byte*) makecharset::charset#2 (byte*) makecharset::charset#7 (byte*) makecharset::charset#6 
Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#40 (byte*) print_char_cursor#44 (byte*) print_char_cursor#43 
Alias (byte*) print_line_cursor#34 = (byte*) print_line_cursor#40 (byte*) print_line_cursor#35 (byte*) print_line_cursor#39 (byte*) print_line_cursor#38 
Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#8 
Alias (byte) c1A#16 = (byte) c1A#2 
Alias (byte) c1B#16 = (byte) c1B#2 
Alias (byte) c2A#17 = (byte) c2A#2 
Alias (byte) c2B#17 = (byte) c2B#2 
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7 
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#19 
Alias (byte) c1A#11 = (byte) c1A#5 
Alias (byte) c1B#11 = (byte) c1B#5 
Alias (byte) c2A#11 = (byte) c2A#5 
Alias (byte) c2B#11 = (byte) c2B#5 
Successful SSA optimization Pass2AliasElimination
Alias (byte) makecharset::ii#2 = (byte) makecharset::ii#3 
Alias (word) makecharset::c#10 = (word) makecharset::c#13 
Alias (byte) makecharset::i#3 = (byte) makecharset::i#5 
Alias (byte*) makecharset::charset#1 = (byte*) makecharset::charset#3 
Alias (byte) makecharset::s#1 = (byte) makecharset::s#4 
Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#41 
Alias (byte*) print_line_cursor#34 = (byte*) print_line_cursor#36 
Alias (word) makecharset::c#11 = (word) makecharset::c#6 
Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#28 
Alias (byte*) makecharset::charset#11 = (byte*) makecharset::charset#14 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (word) memset::num#1 (word) memset::num#0
Identical Phi Values (void*) memset::str#2 (void*) memset::str#0
Identical Phi Values (byte) memset::c#3 (byte) memset::c#0
Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0
Identical Phi Values (void*) memset::str#4 (void*) memset::str#2
Identical Phi Values (byte) memset::c#1 (byte) memset::c#3
Identical Phi Values (byte) print_char::ch#1 (byte) print_char::ch#0
Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#20
Identical Phi Values (byte*) print_line_cursor#1 (byte*) print_screen#3
Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_screen#7 (byte*) print_line_cursor#0
Identical Phi Values (byte) c1A#31 (byte) c1A#16
Identical Phi Values (byte) c1B#31 (byte) c1B#16
Identical Phi Values (byte) c2A#31 (byte) c2A#17
Identical Phi Values (byte) c2B#31 (byte) c2B#17
Identical Phi Values (byte*) print_line_cursor#14 (byte*) print_line_cursor#25
Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#33
Identical Phi Values (byte*) print_screen#5 (byte*) print_screen#7
Identical Phi Values (byte) c1A#17 (byte) c1A#31
Identical Phi Values (byte) c1B#17 (byte) c1B#31
Identical Phi Values (byte) c2A#18 (byte) c2A#31
Identical Phi Values (byte) c2B#18 (byte) c2B#31
Identical Phi Values (byte*) print_line_cursor#21 (byte*) print_line_cursor#12
Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#18
Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#21
Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#14
Identical Phi Values (byte) c1A#0 (byte) c1A#10
Identical Phi Values (byte) c1B#0 (byte) c1B#10
Identical Phi Values (byte) c2A#0 (byte) c2A#10
Identical Phi Values (byte) c2B#0 (byte) c2B#10
Identical Phi Values (byte) c1A#8 (byte) c1A#1
Identical Phi Values (byte) c1B#8 (byte) c1B#1
Identical Phi Values (byte) c2A#19 (byte) c2A#1
Identical Phi Values (byte) c2B#19 (byte) c2B#1
Identical Phi Values (byte*) doplasma::screen#11 (byte*) doplasma::screen#0
Identical Phi Values (byte) c1A#14 (byte) c1A#8
Identical Phi Values (byte) c1B#14 (byte) c1B#8
Identical Phi Values (byte) c2A#14 (byte) c2A#19
Identical Phi Values (byte) c2B#14 (byte) c2B#19
Identical Phi Values (byte*) doplasma::screen#10 (byte*) doplasma::screen#11
Identical Phi Values (byte) c2A#15 (byte) c2A#14
Identical Phi Values (byte) c2B#15 (byte) c2B#14
Identical Phi Values (byte) c1A#20 (byte) c1A#3
Identical Phi Values (byte) c1B#20 (byte) c1B#3
Identical Phi Values (byte*) doplasma::screen#6 (byte*) doplasma::screen#10
Identical Phi Values (byte*) doplasma::screen#1 (byte*) doplasma::screen#3
Identical Phi Values (byte) doplasma::i2#4 (byte) doplasma::i2#2
Identical Phi Values (byte) c1A#19 (byte) c1A#10
Identical Phi Values (byte) c1B#19 (byte) c1B#10
Identical Phi Values (byte) c2A#22 (byte) c2A#10
Identical Phi Values (byte) c2B#22 (byte) c2B#10
Identical Phi Values (byte*) print_screen#3 (byte*) print_screen#5
Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#14
Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#21
Identical Phi Values (byte*) makecharset::charset#12 (byte*) makecharset::charset#0
Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_line_cursor#1
Identical Phi Values (word) makecharset::c#10 (word) makecharset::c#11
Identical Phi Values (byte) makecharset::i#3 (byte) makecharset::i#2
Identical Phi Values (byte*) makecharset::charset#1 (byte*) makecharset::charset#11
Identical Phi Values (byte) makecharset::s#1 (byte) makecharset::s#5
Identical Phi Values (byte*) print_char_cursor#39 (byte*) print_char_cursor#20
Identical Phi Values (byte*) print_line_cursor#34 (byte*) print_line_cursor#23
Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#1
Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#10
Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#15
Identical Phi Values (byte) c1A#11 (byte) c1A#1
Identical Phi Values (byte) c1B#11 (byte) c1B#1
Identical Phi Values (byte) c2A#11 (byte) c2A#1
Identical Phi Values (byte) c2B#11 (byte) c2B#1
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (void*) memset::return#0 (void*) memset::str#0
Identical Phi Values (byte) c1A#10 (byte) c1A#3
Identical Phi Values (byte) c1B#10 (byte) c1B#3
Identical Phi Values (byte) c2A#10 (byte) c2A#3
Identical Phi Values (byte) c2B#10 (byte) c2B#3
Identical Phi Values (byte*) doplasma::screen#3 (byte*) doplasma::screen#0
Identical Phi Values (word) makecharset::c#11 (word) makecharset::c#2
Identical Phi Values (byte*) makecharset::charset#11 (byte*) makecharset::charset#10
Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#18
Identical Phi Values (byte) makecharset::s#5 (byte) makecharset::s#0
Identical Phi Values (byte*) print_line_cursor#23 (byte*) print_line_cursor#12
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#0
Identical Phi Values (byte*) makecharset::charset#10 (byte*) makecharset::charset#0
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) main::$2 [58] if((byte*) main::col#1!=rangelast(COLS,COLS+$3e8)) goto main::@1
Simple Condition (bool~) doplasma::$0 [113] if((byte) doplasma::i#2<(byte) $19) goto doplasma::@2
Simple Condition (bool~) doplasma::$3 [131] if((byte) doplasma::i1#2<(byte) $28) goto doplasma::@8
Simple Condition (bool~) doplasma::$5 [144] if((byte) doplasma::i2#2<(byte) $28) goto doplasma::@14
Simple Condition (bool~) doplasma::$6 [150] unroll if((byte) doplasma::ii#2<(byte) $19) goto doplasma::@17
Simple Condition (bool~) makecharset::$2 [175] if((word) makecharset::c#2<(word) $100) goto makecharset::@2
Simple Condition (bool~) makecharset::$4 [182] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5
Simple Condition (bool~) makecharset::$14 [190] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@19
Simple Condition (bool~) makecharset::$5 [193] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@8
Simple Condition (bool~) makecharset::$9 [202] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@10
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) print_line_cursor#0 = (byte*) 1024
Constant (const byte) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const byte*) main::col#0 = COLS
Constant (const byte*) makecharset::charset#0 = CHARSET
Constant (const byte*) main::toD0181_screen#0 = SCREEN1
Constant (const byte*) main::toD0181_gfx#0 = CHARSET
Constant (const byte*) doplasma::screen#0 = SCREEN1
Constant (const byte) c1A#16 = 0
Constant (const byte) c1B#16 = 0
Constant (const byte) c2A#17 = 0
Constant (const byte) c2B#17 = 0
Constant (const byte) doplasma::yprev#0 = 0
Constant (const byte) doplasma::i#0 = 0
Constant (const byte) doplasma::i1#0 = 0
Constant (const byte) doplasma::i2#0 = 0
Constant (const byte) doplasma::ii#0 = 0
Constant (const word) makecharset::c#0 = 0
Constant (const byte) makecharset::i#0 = 0
Constant (const byte) makecharset::b#0 = 0
Constant (const byte) makecharset::ii#0 = 0
Constant (const byte) print_char::ch#0 = '.'
Successful SSA optimization Pass2ConstantIdentification
Constant (const void*) memset::str#0 = (void*)print_line_cursor#0
Constant (const word) main::toD0181_$0 = (word)main::toD0181_screen#0
Constant (const word) main::toD0181_$4 = (word)main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) memset::$2 = (byte*)memset::str#0
Constant (const byte*) memset::dst#0 = (byte*)memset::str#0
Constant (const void*) memset::return#2 = memset::str#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1
if() condition always true - replacing block destination [84] if(true) goto main::@4
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [56] main::col#1 ← ++ main::col#2 to ++
Resolved ranged comparison value [58] if(main::col#1!=rangelast(COLS,COLS+$3e8)) goto main::@1 to (byte*)(const byte*) COLS+(word) $3e8+(number) 1
De-inlining pointer[w] to *(pointer+w)   [206] *((const byte*) makecharset::charset#0 + (word~) makecharset::$11) ← (byte) makecharset::b#2
Successful SSA optimization Pass2DeInlineWordDerefIdx
Eliminating unused constant (const void*) memset::return#2
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) 1 in if((byte*) main::col#1!=(byte*)(const byte*) COLS+(word) $3e8+(number) 1) goto main::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast (const byte*) COLS+(word) $3e8+(unumber)(number) 1
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0
Constant right-side identified [24] (word~) main::toD0181_$1 ← (const word) main::toD0181_$0 & (word) $3fff
Constant right-side identified [27] (byte~) main::toD0181_$5 ← > (const word) main::toD0181_$4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) memset::end#0 = memset::$2+memset::num#0
Constant (const word) main::toD0181_$1 = main::toD0181_$0&$3fff
Constant (const byte) main::toD0181_$5 = >main::toD0181_$4
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [23] (word~) main::toD0181_$2 ← (const word) main::toD0181_$1 * (byte) 4
Constant right-side identified [25] (byte~) main::toD0181_$6 ← (const byte) main::toD0181_$5 / (byte) 4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const word) main::toD0181_$2 = main::toD0181_$1*4
Constant (const byte) main::toD0181_$6 = main::toD0181_$5/4
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [23] (byte~) main::toD0181_$3 ← > (const word) main::toD0181_$2
Constant right-side identified [24] (byte~) main::toD0181_$7 ← (const byte) main::toD0181_$6 & (byte) $f
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::toD0181_$3 = >main::toD0181_$2
Constant (const byte) main::toD0181_$7 = main::toD0181_$6&$f
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [23] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::toD0181_return#0 = main::toD0181_$3|main::toD0181_$7
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16 tails: doplasma::@17 blocks: doplasma::@17 doplasma::@16 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#0 = (byte) doplasma::val#2 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#2 (const byte) doplasma::ii#0
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [55] (byte~) doplasma::$7 ← (const byte) doplasma::ii#0 * (byte) $28
Constant right-side identified [58] (byte) doplasma::ii#1 ← ++ (const byte) doplasma::ii#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$7 = doplasma::ii#0*$28
Constant (const byte) doplasma::ii#1 = ++doplasma::ii#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [53] if((const byte) doplasma::ii#0<(byte) $19) goto doplasma::@17
Successful SSA optimization Pass2ConstantIfs
Simplifying constant evaluating to zero (const byte) doplasma::ii#0*(byte) $28 in 
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero doplasma::ybuf in [54] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf + (const byte) doplasma::ii#0)
Simplifying expression containing zero doplasma::screen#0 in [56] (byte*~) doplasma::$8 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$7
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused constant (const byte) doplasma::$7
Successful SSA optimization PassNEliminateUnusedVars
Constant (const byte*) doplasma::$8 = doplasma::screen#0
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_1 tails: doplasma::@17_1 blocks: doplasma::@17_1 doplasma::@16_1 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#1 = (byte) doplasma::val#4 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#4 (const byte) doplasma::ii#1
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [35] (byte~) doplasma::$9 ← (const byte) doplasma::ii#1 * (byte) $28
Constant right-side identified [38] (byte) doplasma::ii#5 ← ++ (const byte) doplasma::ii#1
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$9 = doplasma::ii#1*$28
Constant (const byte) doplasma::ii#5 = ++doplasma::ii#1
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [31] if((const byte) doplasma::ii#1<(byte) $19) goto doplasma::@17_1
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [32] (byte*~) doplasma::$10 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$9
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$10 = doplasma::screen#0+doplasma::$9
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_2 tails: doplasma::@17_2 blocks: doplasma::@17_2 doplasma::@16_2 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#5 = (byte) doplasma::val#6 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#6 (const byte) doplasma::ii#5
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [37] (byte~) doplasma::$11 ← (const byte) doplasma::ii#5 * (byte) $28
Constant right-side identified [40] (byte) doplasma::ii#7 ← ++ (const byte) doplasma::ii#5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$11 = doplasma::ii#5*$28
Constant (const byte) doplasma::ii#7 = ++doplasma::ii#5
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [33] if((const byte) doplasma::ii#5<(byte) $19) goto doplasma::@17_2
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [34] (byte*~) doplasma::$12 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$11
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$12 = doplasma::screen#0+doplasma::$11
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_3 tails: doplasma::@17_3 blocks: doplasma::@17_3 doplasma::@16_3 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#7 = (byte) doplasma::val#8 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#8 (const byte) doplasma::ii#7
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [39] (byte~) doplasma::$13 ← (const byte) doplasma::ii#7 * (byte) $28
Constant right-side identified [42] (byte) doplasma::ii#9 ← ++ (const byte) doplasma::ii#7
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$13 = doplasma::ii#7*$28
Constant (const byte) doplasma::ii#9 = ++doplasma::ii#7
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [35] if((const byte) doplasma::ii#7<(byte) $19) goto doplasma::@17_3
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [36] (byte*~) doplasma::$14 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$13
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$14 = doplasma::screen#0+doplasma::$13
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_4 tails: doplasma::@17_4 blocks: doplasma::@17_4 doplasma::@16_4 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#10 = (byte) doplasma::val#9 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#10 (const byte) doplasma::ii#9
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [41] (byte~) doplasma::$15 ← (const byte) doplasma::ii#9 * (byte) $28
Constant right-side identified [44] (byte) doplasma::ii#11 ← ++ (const byte) doplasma::ii#9
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$15 = doplasma::ii#9*$28
Constant (const byte) doplasma::ii#11 = ++doplasma::ii#9
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [37] if((const byte) doplasma::ii#9<(byte) $19) goto doplasma::@17_4
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [38] (byte*~) doplasma::$16 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$15
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$16 = doplasma::screen#0+doplasma::$15
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_5 tails: doplasma::@17_5 blocks: doplasma::@17_5 doplasma::@16_5 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#11 = (byte) doplasma::val#12 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#12 (const byte) doplasma::ii#11
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [43] (byte~) doplasma::$17 ← (const byte) doplasma::ii#11 * (byte) $28
Constant right-side identified [46] (byte) doplasma::ii#13 ← ++ (const byte) doplasma::ii#11
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$17 = doplasma::ii#11*$28
Constant (const byte) doplasma::ii#13 = ++doplasma::ii#11
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [39] if((const byte) doplasma::ii#11<(byte) $19) goto doplasma::@17_5
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [40] (byte*~) doplasma::$18 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$17
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$18 = doplasma::screen#0+doplasma::$17
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_6 tails: doplasma::@17_6 blocks: doplasma::@17_6 doplasma::@16_6 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#13 = (byte) doplasma::val#14 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#14 (const byte) doplasma::ii#13
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [45] (byte~) doplasma::$19 ← (const byte) doplasma::ii#13 * (byte) $28
Constant right-side identified [48] (byte) doplasma::ii#15 ← ++ (const byte) doplasma::ii#13
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$19 = doplasma::ii#13*$28
Constant (const byte) doplasma::ii#15 = ++doplasma::ii#13
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [41] if((const byte) doplasma::ii#13<(byte) $19) goto doplasma::@17_6
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [42] (byte*~) doplasma::$20 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$19
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$20 = doplasma::screen#0+doplasma::$19
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_7 tails: doplasma::@17_7 blocks: doplasma::@17_7 doplasma::@16_7 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#15 = (byte) doplasma::val#16 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#16 (const byte) doplasma::ii#15
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [47] (byte~) doplasma::$21 ← (const byte) doplasma::ii#15 * (byte) $28
Constant right-side identified [50] (byte) doplasma::ii#17 ← ++ (const byte) doplasma::ii#15
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$21 = doplasma::ii#15*$28
Constant (const byte) doplasma::ii#17 = ++doplasma::ii#15
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [43] if((const byte) doplasma::ii#15<(byte) $19) goto doplasma::@17_7
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [44] (byte*~) doplasma::$22 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$21
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$22 = doplasma::screen#0+doplasma::$21
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_8 tails: doplasma::@17_8 blocks: doplasma::@17_8 doplasma::@16_8 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#17 = (byte) doplasma::val#18 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#18 (const byte) doplasma::ii#17
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [49] (byte~) doplasma::$23 ← (const byte) doplasma::ii#17 * (byte) $28
Constant right-side identified [52] (byte) doplasma::ii#19 ← ++ (const byte) doplasma::ii#17
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$23 = doplasma::ii#17*$28
Constant (const byte) doplasma::ii#19 = ++doplasma::ii#17
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [45] if((const byte) doplasma::ii#17<(byte) $19) goto doplasma::@17_8
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [46] (byte*~) doplasma::$24 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$23
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$24 = doplasma::screen#0+doplasma::$23
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_9 tails: doplasma::@17_9 blocks: doplasma::@17_9 doplasma::@16_9 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#19 = (byte) doplasma::val#20 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#20 (const byte) doplasma::ii#19
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [51] (byte~) doplasma::$25 ← (const byte) doplasma::ii#19 * (byte) $28
Constant right-side identified [54] (byte) doplasma::ii#21 ← ++ (const byte) doplasma::ii#19
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$25 = doplasma::ii#19*$28
Constant (const byte) doplasma::ii#21 = ++doplasma::ii#19
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [47] if((const byte) doplasma::ii#19<(byte) $19) goto doplasma::@17_9
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [48] (byte*~) doplasma::$26 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$25
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$26 = doplasma::screen#0+doplasma::$25
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_10 tails: doplasma::@17_10 blocks: doplasma::@17_10 doplasma::@16_10 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#21 = (byte) doplasma::val#22 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#22 (const byte) doplasma::ii#21
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [53] (byte~) doplasma::$27 ← (const byte) doplasma::ii#21 * (byte) $28
Constant right-side identified [56] (byte) doplasma::ii#23 ← ++ (const byte) doplasma::ii#21
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$27 = doplasma::ii#21*$28
Constant (const byte) doplasma::ii#23 = ++doplasma::ii#21
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [49] if((const byte) doplasma::ii#21<(byte) $19) goto doplasma::@17_10
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [50] (byte*~) doplasma::$28 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$27
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$28 = doplasma::screen#0+doplasma::$27
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_11 tails: doplasma::@17_11 blocks: doplasma::@17_11 doplasma::@16_11 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#23 = (byte) doplasma::val#24 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#24 (const byte) doplasma::ii#23
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [55] (byte~) doplasma::$29 ← (const byte) doplasma::ii#23 * (byte) $28
Constant right-side identified [58] (byte) doplasma::ii#25 ← ++ (const byte) doplasma::ii#23
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$29 = doplasma::ii#23*$28
Constant (const byte) doplasma::ii#25 = ++doplasma::ii#23
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [51] if((const byte) doplasma::ii#23<(byte) $19) goto doplasma::@17_11
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [52] (byte*~) doplasma::$30 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$29
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$30 = doplasma::screen#0+doplasma::$29
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_12 tails: doplasma::@17_12 blocks: doplasma::@17_12 doplasma::@16_12 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#25 = (byte) doplasma::val#26 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#26 (const byte) doplasma::ii#25
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [57] (byte~) doplasma::$31 ← (const byte) doplasma::ii#25 * (byte) $28
Constant right-side identified [60] (byte) doplasma::ii#27 ← ++ (const byte) doplasma::ii#25
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$31 = doplasma::ii#25*$28
Constant (const byte) doplasma::ii#27 = ++doplasma::ii#25
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [53] if((const byte) doplasma::ii#25<(byte) $19) goto doplasma::@17_12
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [54] (byte*~) doplasma::$32 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$31
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$32 = doplasma::screen#0+doplasma::$31
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_13 tails: doplasma::@17_13 blocks: doplasma::@17_13 doplasma::@16_13 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#27 = (byte) doplasma::val#28 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#28 (const byte) doplasma::ii#27
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [59] (byte~) doplasma::$33 ← (const byte) doplasma::ii#27 * (byte) $28
Constant right-side identified [62] (byte) doplasma::ii#29 ← ++ (const byte) doplasma::ii#27
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$33 = doplasma::ii#27*$28
Constant (const byte) doplasma::ii#29 = ++doplasma::ii#27
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [55] if((const byte) doplasma::ii#27<(byte) $19) goto doplasma::@17_13
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [56] (byte*~) doplasma::$34 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$33
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$34 = doplasma::screen#0+doplasma::$33
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_14 tails: doplasma::@17_14 blocks: doplasma::@17_14 doplasma::@16_14 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#29 = (byte) doplasma::val#30 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#30 (const byte) doplasma::ii#29
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [61] (byte~) doplasma::$35 ← (const byte) doplasma::ii#29 * (byte) $28
Constant right-side identified [64] (byte) doplasma::ii#31 ← ++ (const byte) doplasma::ii#29
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$35 = doplasma::ii#29*$28
Constant (const byte) doplasma::ii#31 = ++doplasma::ii#29
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [57] if((const byte) doplasma::ii#29<(byte) $19) goto doplasma::@17_14
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [58] (byte*~) doplasma::$36 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$35
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$36 = doplasma::screen#0+doplasma::$35
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_15 tails: doplasma::@17_15 blocks: doplasma::@17_15 doplasma::@16_15 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#31 = (byte) doplasma::val#32 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#32 (const byte) doplasma::ii#31
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [63] (byte~) doplasma::$37 ← (const byte) doplasma::ii#31 * (byte) $28
Constant right-side identified [66] (byte) doplasma::ii#33 ← ++ (const byte) doplasma::ii#31
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$37 = doplasma::ii#31*$28
Constant (const byte) doplasma::ii#33 = ++doplasma::ii#31
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [59] if((const byte) doplasma::ii#31<(byte) $19) goto doplasma::@17_15
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [60] (byte*~) doplasma::$38 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$37
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$38 = doplasma::screen#0+doplasma::$37
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_16 tails: doplasma::@17_16 blocks: doplasma::@17_16 doplasma::@16_16 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#33 = (byte) doplasma::val#34 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#34 (const byte) doplasma::ii#33
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [65] (byte~) doplasma::$39 ← (const byte) doplasma::ii#33 * (byte) $28
Constant right-side identified [68] (byte) doplasma::ii#35 ← ++ (const byte) doplasma::ii#33
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$39 = doplasma::ii#33*$28
Constant (const byte) doplasma::ii#35 = ++doplasma::ii#33
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [61] if((const byte) doplasma::ii#33<(byte) $19) goto doplasma::@17_16
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [62] (byte*~) doplasma::$40 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$39
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$40 = doplasma::screen#0+doplasma::$39
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_17 tails: doplasma::@17_17 blocks: doplasma::@17_17 doplasma::@16_17 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#35 = (byte) doplasma::val#36 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#36 (const byte) doplasma::ii#35
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [67] (byte~) doplasma::$41 ← (const byte) doplasma::ii#35 * (byte) $28
Constant right-side identified [70] (byte) doplasma::ii#37 ← ++ (const byte) doplasma::ii#35
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$41 = doplasma::ii#35*$28
Constant (const byte) doplasma::ii#37 = ++doplasma::ii#35
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [63] if((const byte) doplasma::ii#35<(byte) $19) goto doplasma::@17_17
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [64] (byte*~) doplasma::$42 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$41
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$42 = doplasma::screen#0+doplasma::$41
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_18 tails: doplasma::@17_18 blocks: doplasma::@17_18 doplasma::@16_18 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#37 = (byte) doplasma::val#38 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#38 (const byte) doplasma::ii#37
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [69] (byte~) doplasma::$43 ← (const byte) doplasma::ii#37 * (byte) $28
Constant right-side identified [72] (byte) doplasma::ii#39 ← ++ (const byte) doplasma::ii#37
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$43 = doplasma::ii#37*$28
Constant (const byte) doplasma::ii#39 = ++doplasma::ii#37
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [65] if((const byte) doplasma::ii#37<(byte) $19) goto doplasma::@17_18
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [66] (byte*~) doplasma::$44 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$43
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$44 = doplasma::screen#0+doplasma::$43
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_19 tails: doplasma::@17_19 blocks: doplasma::@17_19 doplasma::@16_19 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#39 = (byte) doplasma::val#40 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#40 (const byte) doplasma::ii#39
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [71] (byte~) doplasma::$45 ← (const byte) doplasma::ii#39 * (byte) $28
Constant right-side identified [74] (byte) doplasma::ii#41 ← ++ (const byte) doplasma::ii#39
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$45 = doplasma::ii#39*$28
Constant (const byte) doplasma::ii#41 = ++doplasma::ii#39
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [67] if((const byte) doplasma::ii#39<(byte) $19) goto doplasma::@17_19
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [68] (byte*~) doplasma::$46 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$45
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$46 = doplasma::screen#0+doplasma::$45
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_20 tails: doplasma::@17_20 blocks: doplasma::@17_20 doplasma::@16_20 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#41 = (byte) doplasma::val#42 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#42 (const byte) doplasma::ii#41
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [73] (byte~) doplasma::$47 ← (const byte) doplasma::ii#41 * (byte) $28
Constant right-side identified [76] (byte) doplasma::ii#43 ← ++ (const byte) doplasma::ii#41
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$47 = doplasma::ii#41*$28
Constant (const byte) doplasma::ii#43 = ++doplasma::ii#41
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [69] if((const byte) doplasma::ii#41<(byte) $19) goto doplasma::@17_20
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [70] (byte*~) doplasma::$48 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$47
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$48 = doplasma::screen#0+doplasma::$47
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_21 tails: doplasma::@17_21 blocks: doplasma::@17_21 doplasma::@16_21 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#43 = (byte) doplasma::val#44 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#44 (const byte) doplasma::ii#43
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [75] (byte~) doplasma::$49 ← (const byte) doplasma::ii#43 * (byte) $28
Constant right-side identified [78] (byte) doplasma::ii#45 ← ++ (const byte) doplasma::ii#43
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$49 = doplasma::ii#43*$28
Constant (const byte) doplasma::ii#45 = ++doplasma::ii#43
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [71] if((const byte) doplasma::ii#43<(byte) $19) goto doplasma::@17_21
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [72] (byte*~) doplasma::$50 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$49
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$50 = doplasma::screen#0+doplasma::$49
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_22 tails: doplasma::@17_22 blocks: doplasma::@17_22 doplasma::@16_22 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#45 = (byte) doplasma::val#46 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#46 (const byte) doplasma::ii#45
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [77] (byte~) doplasma::$51 ← (const byte) doplasma::ii#45 * (byte) $28
Constant right-side identified [80] (byte) doplasma::ii#47 ← ++ (const byte) doplasma::ii#45
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$51 = doplasma::ii#45*$28
Constant (const byte) doplasma::ii#47 = ++doplasma::ii#45
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [73] if((const byte) doplasma::ii#45<(byte) $19) goto doplasma::@17_22
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [74] (byte*~) doplasma::$52 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$51
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$52 = doplasma::screen#0+doplasma::$51
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_23 tails: doplasma::@17_23 blocks: doplasma::@17_23 doplasma::@16_23 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#47 = (byte) doplasma::val#48 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#48 (const byte) doplasma::ii#47
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [79] (byte~) doplasma::$53 ← (const byte) doplasma::ii#47 * (byte) $28
Constant right-side identified [82] (byte) doplasma::ii#49 ← ++ (const byte) doplasma::ii#47
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$53 = doplasma::ii#47*$28
Constant (const byte) doplasma::ii#49 = ++doplasma::ii#47
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [75] if((const byte) doplasma::ii#47<(byte) $19) goto doplasma::@17_23
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [76] (byte*~) doplasma::$54 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$53
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$54 = doplasma::screen#0+doplasma::$53
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_24 tails: doplasma::@17_24 blocks: doplasma::@17_24 doplasma::@16_24 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#49 = (byte) doplasma::val#50 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#50 (const byte) doplasma::ii#49
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [81] (byte~) doplasma::$55 ← (const byte) doplasma::ii#49 * (byte) $28
Constant right-side identified [84] (byte) doplasma::ii#51 ← ++ (const byte) doplasma::ii#49
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$55 = doplasma::ii#49*$28
Constant (const byte) doplasma::ii#51 = ++doplasma::ii#49
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [77] if((const byte) doplasma::ii#49<(byte) $19) goto doplasma::@17_24
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [78] (byte*~) doplasma::$56 ← (const byte*) doplasma::screen#0 + (const byte) doplasma::$55
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) doplasma::$56 = doplasma::screen#0+doplasma::$55
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@16_25 tails: doplasma::@17_25 blocks: doplasma::@17_25 doplasma::@16_25 
Successful SSA optimization Pass2LoopUnroll
Alias (byte) doplasma::val#51 = (byte) doplasma::val#52 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) doplasma::ii#52 (const byte) doplasma::ii#51
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [83] (byte~) doplasma::$57 ← (const byte) doplasma::ii#51 * (byte) $28
Constant right-side identified [86] (byte) doplasma::ii#53 ← ++ (const byte) doplasma::ii#51
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) doplasma::$57 = doplasma::ii#51*$28
Constant (const byte) doplasma::ii#53 = ++doplasma::ii#51
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [79] if((const byte) doplasma::ii#51<(byte) $19) goto doplasma::@17_25
Successful SSA optimization Pass2ConstantIfs
Eliminating variable (byte) doplasma::val#53 from unused block doplasma::@17_25
Eliminating variable (byte*~) doplasma::$58 from unused block doplasma::@17_25
Eliminating variable (byte) doplasma::ii#54 from unused block doplasma::@16_26
Eliminating variable (byte) doplasma::val#54 from unused block doplasma::@16_26
Eliminating variable (byte) doplasma::val#55 from unused block doplasma::@17_26
Eliminating variable (byte~) doplasma::$59 from unused block doplasma::@17_26
Eliminating variable (byte*~) doplasma::$60 from unused block doplasma::@17_26
Eliminating variable (byte) doplasma::ii#55 from unused block doplasma::@17_26
Removing PHI-reference to removed block (doplasma::@17_25) in block doplasma::@16_26
Removing PHI-reference to removed block (doplasma::@17_25) in block doplasma::@16_26
Removing unused block doplasma::@17_25
Removing unused block doplasma::@16_26
Removing unused block doplasma::@17_26
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused constant (const byte) doplasma::$57
Eliminating unused constant (const byte) doplasma::ii#53
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant (const byte) doplasma::ii#51
Successful SSA optimization PassNEliminateUnusedVars
Rewriting multiplication to use shift [106] (word~) makecharset::$10 ← (word) makecharset::c#2 * (byte) 8
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings (const byte*) memset::dst#0
Inlining constant with var siblings (const byte*) main::col#0
Inlining constant with var siblings (const byte) doplasma::yprev#0
Inlining constant with var siblings (const byte) doplasma::i#0
Inlining constant with var siblings (const byte) doplasma::i1#0
Inlining constant with var siblings (const byte) doplasma::i2#0
Inlining constant with different constant siblings (const byte) doplasma::ii#0
Inlining constant with different constant siblings (const byte) doplasma::ii#1
Inlining constant with different constant siblings (const byte) doplasma::ii#5
Inlining constant with different constant siblings (const byte) doplasma::ii#7
Inlining constant with different constant siblings (const byte) doplasma::ii#9
Inlining constant with different constant siblings (const byte) doplasma::ii#11
Inlining constant with different constant siblings (const byte) doplasma::ii#13
Inlining constant with different constant siblings (const byte) doplasma::ii#15
Inlining constant with different constant siblings (const byte) doplasma::ii#17
Inlining constant with different constant siblings (const byte) doplasma::ii#19
Inlining constant with different constant siblings (const byte) doplasma::ii#21
Inlining constant with different constant siblings (const byte) doplasma::ii#23
Inlining constant with different constant siblings (const byte) doplasma::ii#25
Inlining constant with different constant siblings (const byte) doplasma::ii#27
Inlining constant with different constant siblings (const byte) doplasma::ii#29
Inlining constant with different constant siblings (const byte) doplasma::ii#31
Inlining constant with different constant siblings (const byte) doplasma::ii#33
Inlining constant with different constant siblings (const byte) doplasma::ii#35
Inlining constant with different constant siblings (const byte) doplasma::ii#37
Inlining constant with different constant siblings (const byte) doplasma::ii#39
Inlining constant with different constant siblings (const byte) doplasma::ii#41
Inlining constant with different constant siblings (const byte) doplasma::ii#43
Inlining constant with different constant siblings (const byte) doplasma::ii#45
Inlining constant with different constant siblings (const byte) doplasma::ii#47
Inlining constant with different constant siblings (const byte) doplasma::ii#49
Inlining constant with var siblings (const word) makecharset::c#0
Inlining constant with var siblings (const byte) makecharset::i#0
Inlining constant with var siblings (const byte) makecharset::b#0
Inlining constant with var siblings (const byte) makecharset::ii#0
Inlining constant with var siblings (const byte) c1A#16
Inlining constant with var siblings (const byte) c1B#16
Inlining constant with var siblings (const byte) c2A#17
Inlining constant with var siblings (const byte) c2B#17
Constant inlined doplasma::ii#47 = ++++++++++++++++++++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#49 = ++++++++++++++++++++++++++++++++++++++++++++++++(byte) 0
Constant inlined main::col#0 = (const byte*) COLS
Constant inlined doplasma::ii#41 = ++++++++++++++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#43 = ++++++++++++++++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#45 = ++++++++++++++++++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#7 = ++++++(byte) 0
Constant inlined doplasma::ii#9 = ++++++++(byte) 0
Constant inlined c1A#16 = (byte) 0
Constant inlined main::toD0181_$7 = >(word)(const byte*) CHARSET/(byte) 4&(byte) $f
Constant inlined main::toD0181_$2 = (word)(const byte*) SCREEN1&(word) $3fff*(byte) 4
Constant inlined main::toD0181_$1 = (word)(const byte*) SCREEN1&(word) $3fff
Constant inlined main::toD0181_$0 = (word)(const byte*) SCREEN1
Constant inlined doplasma::ii#0 = (byte) 0
Constant inlined doplasma::ii#1 = ++(byte) 0
Constant inlined main::toD0181_$6 = >(word)(const byte*) CHARSET/(byte) 4
Constant inlined main::toD0181_$5 = >(word)(const byte*) CHARSET
Constant inlined main::toD0181_$4 = (word)(const byte*) CHARSET
Constant inlined main::toD0181_$3 = >(word)(const byte*) SCREEN1&(word) $3fff*(byte) 4
Constant inlined doplasma::ii#5 = ++++(byte) 0
Constant inlined doplasma::$56 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$53 = ++++++++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$52 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$55 = ++++++++++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined makecharset::c#0 = (word) 0
Constant inlined doplasma::$54 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$51 = ++++++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$50 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::ii#25 = ++++++++++++++++++++++++(byte) 0
Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN1
Constant inlined doplasma::ii#27 = ++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#29 = ++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#21 = ++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#23 = ++++++++++++++++++++++(byte) 0
Constant inlined doplasma::$9 = ++(byte) 0*(byte) $28
Constant inlined doplasma::$8 = (const byte*) SCREEN1
Constant inlined doplasma::ii#35 = ++++++++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#37 = ++++++++++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#39 = ++++++++++++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#31 = ++++++++++++++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#33 = ++++++++++++++++++++++++++++++++(byte) 0
Constant inlined c2B#17 = (byte) 0
Constant inlined doplasma::i2#0 = (byte) 0
Constant inlined doplasma::$28 = (const byte*) SCREEN1+++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$27 = ++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$29 = ++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$24 = (const byte*) SCREEN1+++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$23 = ++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$26 = (const byte*) SCREEN1+++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$25 = ++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$20 = (const byte*) SCREEN1+++++++++++++(byte) 0*(byte) $28
Constant inlined c2A#17 = (byte) 0
Constant inlined doplasma::$22 = (const byte*) SCREEN1+++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$21 = ++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::ii#13 = ++++++++++++(byte) 0
Constant inlined doplasma::ii#15 = ++++++++++++++(byte) 0
Constant inlined doplasma::ii#17 = ++++++++++++++++(byte) 0
Constant inlined doplasma::ii#19 = ++++++++++++++++++(byte) 0
Constant inlined doplasma::ii#11 = ++++++++++(byte) 0
Constant inlined makecharset::ii#0 = (byte) 0
Constant inlined doplasma::$17 = ++++++++++(byte) 0*(byte) $28
Constant inlined makecharset::i#0 = (byte) 0
Constant inlined makecharset::charset#0 = (const byte*) CHARSET
Constant inlined doplasma::$16 = (const byte*) SCREEN1+++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$19 = ++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$18 = (const byte*) SCREEN1+++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::screen#0 = (const byte*) SCREEN1
Constant inlined doplasma::$13 = ++++++(byte) 0*(byte) $28
Constant inlined doplasma::$12 = (const byte*) SCREEN1+++++(byte) 0*(byte) $28
Constant inlined doplasma::$15 = ++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$14 = (const byte*) SCREEN1+++++++(byte) 0*(byte) $28
Constant inlined doplasma::$11 = ++++(byte) 0*(byte) $28
Constant inlined memset::dst#0 = (byte*)(const void*) memset::str#0
Constant inlined doplasma::$10 = (const byte*) SCREEN1+++(byte) 0*(byte) $28
Constant inlined main::toD0181_gfx#0 = (const byte*) CHARSET
Constant inlined doplasma::i#0 = (byte) 0
Constant inlined doplasma::i1#0 = (byte) 0
Constant inlined doplasma::yprev#0 = (byte) 0
Constant inlined doplasma::$49 = ++++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined memset::$2 = (byte*)(const void*) memset::str#0
Constant inlined doplasma::$46 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$45 = ++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$48 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$47 = ++++++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$42 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$41 = ++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$44 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$43 = ++++++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$40 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$39 = ++++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$38 = (const byte*) SCREEN1+++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$35 = ++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined c1B#16 = (byte) 0
Constant inlined doplasma::$34 = (const byte*) SCREEN1+++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$37 = ++++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$36 = (const byte*) SCREEN1+++++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$31 = ++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$30 = (const byte*) SCREEN1+++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined makecharset::b#0 = (byte) 0
Constant inlined doplasma::$33 = ++++++++++++++++++++++++++(byte) 0*(byte) $28
Constant inlined doplasma::$32 = (const byte*) SCREEN1+++++++++++++++++++++++++(byte) 0*(byte) $28
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in *(doplasma::ybuf+++0)
Consolidated array index constant in *(doplasma::ybuf+++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++++++++++++++++0)
Consolidated array index constant in *(doplasma::ybuf+++++++++++++++++++++++++++++++++++++++++++++++++0)
Successful SSA optimization Pass2ConstantAdditionElimination
Simplifying constant integer increment ++0
Simplifying constant integer increment ++0
Simplifying constant integer increment ++0
Simplifying constant integer increment ++1
Simplifying constant integer increment ++1
Simplifying constant integer increment ++2
Simplifying constant integer increment ++2
Simplifying constant integer increment ++3
Simplifying constant integer increment ++3
Simplifying constant integer increment ++4
Simplifying constant integer increment ++4
Simplifying constant integer increment ++5
Simplifying constant integer increment ++5
Simplifying constant integer increment ++6
Simplifying constant integer increment ++6
Simplifying constant integer increment ++7
Simplifying constant integer increment ++7
Simplifying constant integer increment ++8
Simplifying constant integer increment ++8
Simplifying constant integer increment ++9
Simplifying constant integer increment ++9
Simplifying constant integer increment ++$a
Simplifying constant integer increment ++$a
Simplifying constant integer increment ++$b
Simplifying constant integer increment ++$b
Simplifying constant integer increment ++$c
Simplifying constant integer increment ++$c
Simplifying constant integer increment ++$d
Simplifying constant integer increment ++$d
Simplifying constant integer increment ++$e
Simplifying constant integer increment ++$e
Simplifying constant integer increment ++$f
Simplifying constant integer increment ++$f
Simplifying constant integer increment ++$10
Simplifying constant integer increment ++$10
Simplifying constant integer increment ++$11
Simplifying constant integer increment ++$11
Simplifying constant integer increment ++$12
Simplifying constant integer increment ++$12
Simplifying constant integer increment ++$13
Simplifying constant integer increment ++$13
Simplifying constant integer increment ++$14
Simplifying constant integer increment ++$14
Simplifying constant integer increment ++$15
Simplifying constant integer increment ++$15
Simplifying constant integer increment ++$16
Simplifying constant integer increment ++$16
Simplifying constant integer increment ++$17
Successful SSA optimization Pass2ConstantSimplification
Simplifying constant integer increment ++1
Simplifying constant integer increment ++2
Simplifying constant integer increment ++3
Simplifying constant integer increment ++4
Simplifying constant integer increment ++5
Simplifying constant integer increment ++6
Simplifying constant integer increment ++7
Simplifying constant integer increment ++8
Simplifying constant integer increment ++9
Simplifying constant integer increment ++$a
Simplifying constant integer increment ++$b
Simplifying constant integer increment ++$c
Simplifying constant integer increment ++$d
Simplifying constant integer increment ++$e
Simplifying constant integer increment ++$f
Simplifying constant integer increment ++$10
Simplifying constant integer increment ++$11
Simplifying constant integer increment ++$12
Simplifying constant integer increment ++$13
Simplifying constant integer increment ++$14
Simplifying constant integer increment ++$15
Simplifying constant integer increment ++$16
Simplifying constant integer increment ++$17
Successful SSA optimization Pass2ConstantSimplification
Added new block during phi lifting main::@12(between main::@1 and main::@1)
Added new block during phi lifting makecharset::@27(between makecharset::@6 and makecharset::@19)
Added new block during phi lifting makecharset::@28(between makecharset::@25 and makecharset::@10)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @17
Adding NOP phi() at start of @44
Adding NOP phi() at start of @46
Adding NOP phi() at start of @47
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::@10
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::toD0181_@return
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of doplasma::@16
Adding NOP phi() at start of doplasma::@16_1
Adding NOP phi() at start of doplasma::@16_2
Adding NOP phi() at start of doplasma::@16_3
Adding NOP phi() at start of doplasma::@16_4
Adding NOP phi() at start of doplasma::@16_5
Adding NOP phi() at start of doplasma::@16_6
Adding NOP phi() at start of doplasma::@16_7
Adding NOP phi() at start of doplasma::@16_8
Adding NOP phi() at start of doplasma::@16_9
Adding NOP phi() at start of doplasma::@16_10
Adding NOP phi() at start of doplasma::@16_11
Adding NOP phi() at start of doplasma::@16_12
Adding NOP phi() at start of doplasma::@16_13
Adding NOP phi() at start of doplasma::@16_14
Adding NOP phi() at start of doplasma::@16_15
Adding NOP phi() at start of doplasma::@16_16
Adding NOP phi() at start of doplasma::@16_17
Adding NOP phi() at start of doplasma::@16_18
Adding NOP phi() at start of doplasma::@16_19
Adding NOP phi() at start of doplasma::@16_20
Adding NOP phi() at start of doplasma::@16_21
Adding NOP phi() at start of doplasma::@16_22
Adding NOP phi() at start of doplasma::@16_23
Adding NOP phi() at start of doplasma::@16_24
Adding NOP phi() at start of doplasma::@16_25
Adding NOP phi() at start of makecharset
Adding NOP phi() at start of makecharset::@23
Adding NOP phi() at start of makecharset::@24
Adding NOP phi() at start of makecharset::@18
Adding NOP phi() at start of makecharset::@5
Adding NOP phi() at start of makecharset::@8
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of print_cls::@1
Adding NOP phi() at start of memset
Adding NOP phi() at start of memset::@2
Adding NOP phi() at start of memset::@1
CALL GRAPH
Calls in [] to main:4 
Calls in [main] to makecharset:15 doplasma:22 
Calls in [makecharset] to sid_rnd_init:145 print_cls:147 print_char:159 sid_rnd:176 
Calls in [print_cls] to memset:194 

Created 21 initial phi equivalence classes
Coalesced [23] c1A#32 ← c1A#3
Coalesced [24] c1B#32 ← c1B#3
Coalesced [25] c2A#32 ← c2A#3
Coalesced [26] c2B#32 ← c2B#3
Coalesced [27] main::col#3 ← main::col#1
Coalesced [30] doplasma::c1a#4 ← doplasma::c1a#0
Coalesced [31] doplasma::c1b#4 ← doplasma::c1b#0
Coalesced [38] doplasma::c2a#4 ← doplasma::c2a#0
Coalesced [39] doplasma::c2b#4 ← doplasma::c2b#0
Coalesced [125] doplasma::i2#7 ← doplasma::i2#1
Coalesced [131] doplasma::i1#4 ← doplasma::i1#1
Coalesced [132] doplasma::c2a#5 ← doplasma::c2a#1
Coalesced [133] doplasma::c2b#5 ← doplasma::c2b#1
Coalesced [140] doplasma::i#4 ← doplasma::i#1
Coalesced [141] doplasma::c1a#5 ← doplasma::c1a#1
Coalesced [142] doplasma::c1b#5 ← doplasma::c1b#1
Not coalescing [143] doplasma::yprev#4 ← doplasma::yval#0
Coalesced [160] print_char_cursor#47 ← print_char_cursor#1
Coalesced [163] makecharset::c#16 ← makecharset::c#1
Coalesced [164] print_char_cursor#46 ← print_char_cursor#30
Coalesced (already) [165] print_char_cursor#48 ← print_char_cursor#18
Coalesced [174] makecharset::i#10 ← makecharset::i#1
Coalesced [182] makecharset::b#9 ← makecharset::b#1
Coalesced [185] makecharset::ii#7 ← makecharset::ii#1
Coalesced [186] makecharset::b#8 ← makecharset::b#6
Coalesced (already) [187] makecharset::b#10 ← makecharset::b#2
Coalesced [205] memset::dst#4 ← memset::dst#1
Coalesced down to 20 phi equivalence classes
Culled Empty Block (label) @17
Culled Empty Block (label) @44
Culled Empty Block (label) @47
Culled Empty Block (label) main::@10
Culled Empty Block (label) main::toD0181_@return
Culled Empty Block (label) main::@11
Culled Empty Block (label) main::@12
Culled Empty Block (label) doplasma::@16
Culled Empty Block (label) doplasma::@16_1
Culled Empty Block (label) doplasma::@16_2
Culled Empty Block (label) doplasma::@16_3
Culled Empty Block (label) doplasma::@16_4
Culled Empty Block (label) doplasma::@16_5
Culled Empty Block (label) doplasma::@16_6
Culled Empty Block (label) doplasma::@16_7
Culled Empty Block (label) doplasma::@16_8
Culled Empty Block (label) doplasma::@16_9
Culled Empty Block (label) doplasma::@16_10
Culled Empty Block (label) doplasma::@16_11
Culled Empty Block (label) doplasma::@16_12
Culled Empty Block (label) doplasma::@16_13
Culled Empty Block (label) doplasma::@16_14
Culled Empty Block (label) doplasma::@16_15
Culled Empty Block (label) doplasma::@16_16
Culled Empty Block (label) doplasma::@16_17
Culled Empty Block (label) doplasma::@16_18
Culled Empty Block (label) doplasma::@16_19
Culled Empty Block (label) doplasma::@16_20
Culled Empty Block (label) doplasma::@16_21
Culled Empty Block (label) doplasma::@16_22
Culled Empty Block (label) doplasma::@16_23
Culled Empty Block (label) doplasma::@16_24
Culled Empty Block (label) doplasma::@16_25
Culled Empty Block (label) makecharset::@24
Culled Empty Block (label) makecharset::@26
Culled Empty Block (label) makecharset::@27
Culled Empty Block (label) makecharset::@5
Culled Empty Block (label) makecharset::@28
Culled Empty Block (label) print_cls::@1
Culled Empty Block (label) memset::@2
Culled Empty Block (label) memset::@1
Renumbering block @46 to @1
Renumbering block memset::@4 to memset::@1
Renumbering block memset::@5 to memset::@2
Renumbering block main::@9 to main::@5
Renumbering block doplasma::@7 to doplasma::@4
Renumbering block doplasma::@8 to doplasma::@5
Renumbering block doplasma::@9 to doplasma::@6
Renumbering block doplasma::@13 to doplasma::@7
Renumbering block doplasma::@14 to doplasma::@8
Renumbering block doplasma::@17 to doplasma::@9
Renumbering block doplasma::@18 to doplasma::@10
Renumbering block makecharset::@4 to makecharset::@3
Renumbering block makecharset::@6 to makecharset::@4
Renumbering block makecharset::@7 to makecharset::@5
Renumbering block makecharset::@8 to makecharset::@6
Renumbering block makecharset::@9 to makecharset::@7
Renumbering block makecharset::@10 to makecharset::@8
Renumbering block makecharset::@13 to makecharset::@9
Renumbering block makecharset::@18 to makecharset::@10
Renumbering block makecharset::@19 to makecharset::@11
Renumbering block makecharset::@23 to makecharset::@12
Renumbering block makecharset::@25 to makecharset::@13
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of makecharset
Adding NOP phi() at start of makecharset::@12
Adding NOP phi() at start of makecharset::@10
Adding NOP phi() at start of makecharset::@6
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of memset

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  asm { sei  }
  [5] *((const byte*) BORDERCOL) ← (const byte) BLUE
  [6] *((const byte*) BGCOL) ← (const byte) BLUE
  to:main::@1
main::@1: scope:[main]  from main main::@1
  [7] (byte*) main::col#2 ← phi( main/(const byte*) COLS main::@1/(byte*) main::col#1 )
  [8] *((byte*) main::col#2) ← (const byte) BLACK
  [9] (byte*) main::col#1 ← ++ (byte*) main::col#2
  [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  [11] phi()
  [12] call makecharset 
  to:main::toD0181
main::toD0181: scope:[main]  from main::@2
  [13] phi()
  to:main::@5
main::@5: scope:[main]  from main::toD0181
  [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0
  to:main::@3
main::@3: scope:[main]  from main::@4 main::@5
  [15] (byte) c2B#1 ← phi( main::@4/(byte) c2B#3 main::@5/(byte) 0 )
  [15] (byte) c2A#1 ← phi( main::@4/(byte) c2A#3 main::@5/(byte) 0 )
  [15] (byte) c1B#1 ← phi( main::@4/(byte) c1B#3 main::@5/(byte) 0 )
  [15] (byte) c1A#1 ← phi( main::@4/(byte) c1A#3 main::@5/(byte) 0 )
  to:main::@4
main::@4: scope:[main]  from main::@3
  [16] phi()
  [17] call doplasma 
  to:main::@3

(void()) doplasma((byte*) doplasma::screen)
doplasma: scope:[doplasma]  from main::@4
  [18] (byte) doplasma::c1a#0 ← (byte) c1A#1
  [19] (byte) doplasma::c1b#0 ← (byte) c1B#1
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@2
  [20] (byte) doplasma::yprev#2 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::yprev#4 )
  [20] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@2/(byte) doplasma::c1b#1 )
  [20] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@2/(byte) doplasma::c1a#1 )
  [20] (byte) doplasma::i#2 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::i#1 )
  [21] if((byte) doplasma::i#2<(byte) $19) goto doplasma::@2
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@1
  [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3
  [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5
  [24] (byte) doplasma::c2a#0 ← (byte) c2A#1
  [25] (byte) doplasma::c2b#0 ← (byte) c2B#1
  to:doplasma::@4
doplasma::@4: scope:[doplasma]  from doplasma::@3 doplasma::@5
  [26] (byte) doplasma::c2b#2 ← phi( doplasma::@3/(byte) doplasma::c2b#0 doplasma::@5/(byte) doplasma::c2b#1 )
  [26] (byte) doplasma::c2a#2 ← phi( doplasma::@3/(byte) doplasma::c2a#0 doplasma::@5/(byte) doplasma::c2a#1 )
  [26] (byte) doplasma::i1#2 ← phi( doplasma::@3/(byte) 0 doplasma::@5/(byte) doplasma::i1#1 )
  [27] if((byte) doplasma::i1#2<(byte) $28) goto doplasma::@5
  to:doplasma::@6
doplasma::@6: scope:[doplasma]  from doplasma::@4
  [28] (byte) c2A#3 ← (byte) c2A#1 + (byte) 2
  [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3
  to:doplasma::@7
doplasma::@7: scope:[doplasma]  from doplasma::@10 doplasma::@6
  [30] (byte) doplasma::i2#2 ← phi( doplasma::@10/(byte) doplasma::i2#1 doplasma::@6/(byte) 0 )
  [31] if((byte) doplasma::i2#2<(byte) $28) goto doplasma::@8
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@7
  [32] return 
  to:@return
doplasma::@8: scope:[doplasma]  from doplasma::@7
  [33] (byte) doplasma::val#0 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2)
  to:doplasma::@9
doplasma::@9: scope:[doplasma]  from doplasma::@8
  [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf)
  [35] *((const byte*) SCREEN1 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1
  to:doplasma::@17_1
doplasma::@17_1: scope:[doplasma]  from doplasma::@9
  [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1)
  [37] *((const byte*) SCREEN1+(byte) 1*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#5
  to:doplasma::@17_2
doplasma::@17_2: scope:[doplasma]  from doplasma::@17_1
  [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2)
  [39] *((const byte*) SCREEN1+(byte) 2*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#7
  to:doplasma::@17_3
doplasma::@17_3: scope:[doplasma]  from doplasma::@17_2
  [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3)
  [41] *((const byte*) SCREEN1+(byte) 3*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10
  to:doplasma::@17_4
doplasma::@17_4: scope:[doplasma]  from doplasma::@17_3
  [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4)
  [43] *((const byte*) SCREEN1+(byte) 4*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#11
  to:doplasma::@17_5
doplasma::@17_5: scope:[doplasma]  from doplasma::@17_4
  [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5)
  [45] *((const byte*) SCREEN1+(byte) 5*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#13
  to:doplasma::@17_6
doplasma::@17_6: scope:[doplasma]  from doplasma::@17_5
  [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6)
  [47] *((const byte*) SCREEN1+(byte) 6*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#15
  to:doplasma::@17_7
doplasma::@17_7: scope:[doplasma]  from doplasma::@17_6
  [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7)
  [49] *((const byte*) SCREEN1+(byte) 7*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#17
  to:doplasma::@17_8
doplasma::@17_8: scope:[doplasma]  from doplasma::@17_7
  [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8)
  [51] *((const byte*) SCREEN1+(byte) 8*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#19
  to:doplasma::@17_9
doplasma::@17_9: scope:[doplasma]  from doplasma::@17_8
  [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9)
  [53] *((const byte*) SCREEN1+(byte) 9*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#21
  to:doplasma::@17_10
doplasma::@17_10: scope:[doplasma]  from doplasma::@17_9
  [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a)
  [55] *((const byte*) SCREEN1+(byte) $a*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#23
  to:doplasma::@17_11
doplasma::@17_11: scope:[doplasma]  from doplasma::@17_10
  [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b)
  [57] *((const byte*) SCREEN1+(byte) $b*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#25
  to:doplasma::@17_12
doplasma::@17_12: scope:[doplasma]  from doplasma::@17_11
  [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c)
  [59] *((const byte*) SCREEN1+(byte) $c*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#27
  to:doplasma::@17_13
doplasma::@17_13: scope:[doplasma]  from doplasma::@17_12
  [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d)
  [61] *((const byte*) SCREEN1+(byte) $d*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#29
  to:doplasma::@17_14
doplasma::@17_14: scope:[doplasma]  from doplasma::@17_13
  [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e)
  [63] *((const byte*) SCREEN1+(byte) $e*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#31
  to:doplasma::@17_15
doplasma::@17_15: scope:[doplasma]  from doplasma::@17_14
  [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f)
  [65] *((const byte*) SCREEN1+(byte) $f*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#33
  to:doplasma::@17_16
doplasma::@17_16: scope:[doplasma]  from doplasma::@17_15
  [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10)
  [67] *((const byte*) SCREEN1+(byte) $10*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#35
  to:doplasma::@17_17
doplasma::@17_17: scope:[doplasma]  from doplasma::@17_16
  [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11)
  [69] *((const byte*) SCREEN1+(byte) $11*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#37
  to:doplasma::@17_18
doplasma::@17_18: scope:[doplasma]  from doplasma::@17_17
  [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12)
  [71] *((const byte*) SCREEN1+(byte) $12*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#39
  to:doplasma::@17_19
doplasma::@17_19: scope:[doplasma]  from doplasma::@17_18
  [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13)
  [73] *((const byte*) SCREEN1+(byte) $13*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#41
  to:doplasma::@17_20
doplasma::@17_20: scope:[doplasma]  from doplasma::@17_19
  [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14)
  [75] *((const byte*) SCREEN1+(byte) $14*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#43
  to:doplasma::@17_21
doplasma::@17_21: scope:[doplasma]  from doplasma::@17_20
  [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15)
  [77] *((const byte*) SCREEN1+(byte) $15*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#45
  to:doplasma::@17_22
doplasma::@17_22: scope:[doplasma]  from doplasma::@17_21
  [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16)
  [79] *((const byte*) SCREEN1+(byte) $16*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#47
  to:doplasma::@17_23
doplasma::@17_23: scope:[doplasma]  from doplasma::@17_22
  [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17)
  [81] *((const byte*) SCREEN1+(byte) $17*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#49
  to:doplasma::@17_24
doplasma::@17_24: scope:[doplasma]  from doplasma::@17_23
  [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18)
  [83] *((const byte*) SCREEN1+(byte) $18*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#51
  to:doplasma::@10
doplasma::@10: scope:[doplasma]  from doplasma::@17_24
  [84] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2
  to:doplasma::@7
doplasma::@5: scope:[doplasma]  from doplasma::@4
  [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2)
  [86] *((const byte*) doplasma::xbuf + (byte) doplasma::i1#2) ← (byte~) doplasma::$4
  [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3
  [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7
  [89] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2
  to:doplasma::@4
doplasma::@2: scope:[doplasma]  from doplasma::@1
  [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2)
  [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2
  [92] *((const byte*) doplasma::ybuf + (byte) doplasma::i#2) ← (byte~) doplasma::$2
  [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4
  [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9
  [95] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2
  [96] (byte) doplasma::yprev#4 ← (byte) doplasma::yval#0
  to:doplasma::@1

(void()) makecharset((byte*) makecharset::charset)
makecharset: scope:[makecharset]  from main::@2
  [97] phi()
  [98] call sid_rnd_init 
  to:makecharset::@12
makecharset::@12: scope:[makecharset]  from makecharset
  [99] phi()
  [100] call print_cls 
  to:makecharset::@1
makecharset::@1: scope:[makecharset]  from makecharset::@11 makecharset::@12
  [101] (byte*) print_char_cursor#18 ← phi( makecharset::@11/(byte*) print_char_cursor#30 makecharset::@12/(const byte*) print_line_cursor#0 )
  [101] (word) makecharset::c#2 ← phi( makecharset::@11/(word) makecharset::c#1 makecharset::@12/(word) 0 )
  [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2
  to:makecharset::@return
makecharset::@return: scope:[makecharset]  from makecharset::@1
  [103] return 
  to:@return
makecharset::@2: scope:[makecharset]  from makecharset::@1
  [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2
  [105] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3)
  to:makecharset::@3
makecharset::@3: scope:[makecharset]  from makecharset::@2 makecharset::@7
  [106] (byte) makecharset::i#2 ← phi( makecharset::@2/(byte) 0 makecharset::@7/(byte) makecharset::i#1 )
  [107] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5
  to:makecharset::@4
makecharset::@4: scope:[makecharset]  from makecharset::@3
  [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7
  [109] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@11
  to:makecharset::@10
makecharset::@10: scope:[makecharset]  from makecharset::@4
  [110] phi()
  [111] call print_char 
  to:makecharset::@11
makecharset::@11: scope:[makecharset]  from makecharset::@10 makecharset::@4
  [112] (byte*) print_char_cursor#30 ← phi( makecharset::@10/(byte*) print_char_cursor#1 makecharset::@4/(byte*) print_char_cursor#18 )
  [113] (word) makecharset::c#1 ← ++ (word) makecharset::c#2
  to:makecharset::@1
makecharset::@5: scope:[makecharset]  from makecharset::@3 makecharset::@8
  [114] (byte) makecharset::b#2 ← phi( makecharset::@8/(byte) makecharset::b#6 makecharset::@3/(byte) 0 )
  [114] (byte) makecharset::ii#2 ← phi( makecharset::@8/(byte) makecharset::ii#1 makecharset::@3/(byte) 0 )
  [115] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@6
  to:makecharset::@7
makecharset::@7: scope:[makecharset]  from makecharset::@5
  [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3
  [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2
  [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11
  [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2
  [120] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#2
  to:makecharset::@3
makecharset::@6: scope:[makecharset]  from makecharset::@5
  [121] phi()
  [122] call sid_rnd 
  [123] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
  to:makecharset::@13
makecharset::@13: scope:[makecharset]  from makecharset::@6
  [124] (byte~) makecharset::$6 ← (byte) sid_rnd::return#2
  [125] (byte~) makecharset::$7 ← (byte~) makecharset::$6 & (byte) $ff
  [126] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@8
  to:makecharset::@9
makecharset::@9: scope:[makecharset]  from makecharset::@13
  [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2)
  to:makecharset::@8
makecharset::@8: scope:[makecharset]  from makecharset::@13 makecharset::@9
  [128] (byte) makecharset::b#6 ← phi( makecharset::@9/(byte) makecharset::b#1 makecharset::@13/(byte) makecharset::b#2 )
  [129] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2
  to:makecharset::@5

(byte()) sid_rnd()
sid_rnd: scope:[sid_rnd]  from makecharset::@6
  [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC)
  to:sid_rnd::@return
sid_rnd::@return: scope:[sid_rnd]  from sid_rnd
  [131] return 
  to:@return

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from makecharset::@10
  [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0
  [133] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#18
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [134] return 
  to:@return

(void()) print_cls()
print_cls: scope:[print_cls]  from makecharset::@12
  [135] phi()
  [136] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [137] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  [138] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [139] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
  [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [141] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@1

(void()) sid_rnd_init()
sid_rnd_init: scope:[sid_rnd_init]  from makecharset
  [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff
  [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE
  to:sid_rnd_init::@return
sid_rnd_init::@return: scope:[sid_rnd_init]  from sid_rnd_init
  [146] return 
  to:@return


VARIABLE REGISTER WEIGHTS
(byte) c1A
(byte) c1A#1 1.1538461538461537
(byte) c1A#3 0.18840579710144925
(byte) c1B
(byte) c1B#1 1.0714285714285714
(byte) c1B#3 0.1911764705882353
(byte) c2A
(byte) c2A#1 0.625
(byte) c2A#3 0.22413793103448276
(byte) c2B
(byte) c2B#1 0.6
(byte) c2B#3 0.22807017543859648
(void()) doplasma((byte*) doplasma::screen)
(byte~) doplasma::$2 202.0
(byte~) doplasma::$4 202.0
(byte) doplasma::c1a
(byte) doplasma::c1a#0 2.0
(byte) doplasma::c1a#1 50.5
(byte) doplasma::c1a#2 61.0
(byte) doplasma::c1b
(byte) doplasma::c1b#0 4.0
(byte) doplasma::c1b#1 67.33333333333333
(byte) doplasma::c1b#2 50.83333333333333
(byte) doplasma::c2a
(byte) doplasma::c2a#0 2.0
(byte) doplasma::c2a#1 67.33333333333333
(byte) doplasma::c2a#2 76.25
(byte) doplasma::c2b
(byte) doplasma::c2b#0 4.0
(byte) doplasma::c2b#1 101.0
(byte) doplasma::c2b#2 61.0
(byte) doplasma::i
(byte) doplasma::i#1 101.0
(byte) doplasma::i#2 57.714285714285715
(byte) doplasma::i1
(byte) doplasma::i1#1 202.0
(byte) doplasma::i1#2 67.33333333333333
(byte) doplasma::i2
(byte) doplasma::i2#1 202.0
(byte) doplasma::i2#2 55.26415094339627
(byte) doplasma::ii
(byte*) doplasma::screen
(byte) doplasma::val
(byte) doplasma::val#0 202.0
(byte) doplasma::val#1 151.5
(byte) doplasma::val#10 151.5
(byte) doplasma::val#11 151.5
(byte) doplasma::val#13 151.5
(byte) doplasma::val#15 151.5
(byte) doplasma::val#17 151.5
(byte) doplasma::val#19 151.5
(byte) doplasma::val#21 151.5
(byte) doplasma::val#23 151.5
(byte) doplasma::val#25 151.5
(byte) doplasma::val#27 151.5
(byte) doplasma::val#29 151.5
(byte) doplasma::val#31 151.5
(byte) doplasma::val#33 151.5
(byte) doplasma::val#35 151.5
(byte) doplasma::val#37 151.5
(byte) doplasma::val#39 151.5
(byte) doplasma::val#41 151.5
(byte) doplasma::val#43 151.5
(byte) doplasma::val#45 151.5
(byte) doplasma::val#47 151.5
(byte) doplasma::val#49 151.5
(byte) doplasma::val#5 151.5
(byte) doplasma::val#51 202.0
(byte) doplasma::val#7 151.5
(byte) doplasma::yprev
(byte) doplasma::yprev#2 67.33333333333333
(byte) doplasma::yprev#4 202.0
(byte) doplasma::yval
(byte) doplasma::yval#0 50.5
(void()) main()
(byte*) main::col
(byte*) main::col#1 16.5
(byte*) main::col#2 16.5
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(byte*) main::toD0181_screen
(void()) makecharset((byte*) makecharset::charset)
(word~) makecharset::$10 202.0
(word~) makecharset::$11 202.0
(byte~) makecharset::$12 22.0
(byte*~) makecharset::$16 202.0
(byte~) makecharset::$3 22.0
(byte~) makecharset::$6 2002.0
(byte~) makecharset::$7 2002.0
(byte) makecharset::b
(byte) makecharset::b#1 2002.0
(byte) makecharset::b#2 282.1818181818182
(byte) makecharset::b#6 1501.5
(word) makecharset::c
(word) makecharset::c#1 22.0
(word) makecharset::c#2 5.777777777777778
(byte*) makecharset::charset
(byte) makecharset::i
(byte) makecharset::i#1 202.0
(byte) makecharset::i#2 23.764705882352942
(byte) makecharset::ii
(byte) makecharset::ii#1 2002.0
(byte) makecharset::ii#2 400.4
(byte) makecharset::s
(byte) makecharset::s#0 53.26315789473684
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(byte) memset::c
(byte*) memset::dst
(byte*) memset::dst#1 22.0
(byte*) memset::dst#2 14.666666666666666
(byte*) memset::end
(word) memset::num
(void*) memset::return
(void*) memset::str
(void()) print_char((byte) print_char::ch)
(byte) print_char::ch
(byte*) print_char_cursor
(byte*) print_char_cursor#1 4.333333333333333
(byte*) print_char_cursor#18 1.0
(byte*) print_char_cursor#30 16.5
(void()) print_cls()
(byte*) print_line_cursor
(byte*) print_screen
(byte()) sid_rnd()
(byte) sid_rnd::return
(byte) sid_rnd::return#0 334.33333333333337
(byte) sid_rnd::return#2 2002.0
(void()) sid_rnd_init()

Initial phi equivalence classes
[ main::col#2 main::col#1 ]
[ c1A#1 c1A#3 ]
[ c1B#1 c1B#3 ]
[ c2A#1 c2A#3 ]
[ c2B#1 c2B#3 ]
[ doplasma::i#2 doplasma::i#1 ]
[ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
[ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
[ doplasma::yprev#2 doplasma::yprev#4 ]
[ doplasma::i1#2 doplasma::i1#1 ]
[ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
[ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
[ doplasma::i2#2 doplasma::i2#1 ]
[ makecharset::c#2 makecharset::c#1 ]
[ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ]
[ makecharset::i#2 makecharset::i#1 ]
[ makecharset::ii#2 makecharset::ii#1 ]
[ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
[ memset::dst#2 memset::dst#1 ]
Added variable doplasma::val#0 to live range equivalence class [ doplasma::val#0 ]
Added variable doplasma::val#1 to live range equivalence class [ doplasma::val#1 ]
Added variable doplasma::val#5 to live range equivalence class [ doplasma::val#5 ]
Added variable doplasma::val#7 to live range equivalence class [ doplasma::val#7 ]
Added variable doplasma::val#10 to live range equivalence class [ doplasma::val#10 ]
Added variable doplasma::val#11 to live range equivalence class [ doplasma::val#11 ]
Added variable doplasma::val#13 to live range equivalence class [ doplasma::val#13 ]
Added variable doplasma::val#15 to live range equivalence class [ doplasma::val#15 ]
Added variable doplasma::val#17 to live range equivalence class [ doplasma::val#17 ]
Added variable doplasma::val#19 to live range equivalence class [ doplasma::val#19 ]
Added variable doplasma::val#21 to live range equivalence class [ doplasma::val#21 ]
Added variable doplasma::val#23 to live range equivalence class [ doplasma::val#23 ]
Added variable doplasma::val#25 to live range equivalence class [ doplasma::val#25 ]
Added variable doplasma::val#27 to live range equivalence class [ doplasma::val#27 ]
Added variable doplasma::val#29 to live range equivalence class [ doplasma::val#29 ]
Added variable doplasma::val#31 to live range equivalence class [ doplasma::val#31 ]
Added variable doplasma::val#33 to live range equivalence class [ doplasma::val#33 ]
Added variable doplasma::val#35 to live range equivalence class [ doplasma::val#35 ]
Added variable doplasma::val#37 to live range equivalence class [ doplasma::val#37 ]
Added variable doplasma::val#39 to live range equivalence class [ doplasma::val#39 ]
Added variable doplasma::val#41 to live range equivalence class [ doplasma::val#41 ]
Added variable doplasma::val#43 to live range equivalence class [ doplasma::val#43 ]
Added variable doplasma::val#45 to live range equivalence class [ doplasma::val#45 ]
Added variable doplasma::val#47 to live range equivalence class [ doplasma::val#47 ]
Added variable doplasma::val#49 to live range equivalence class [ doplasma::val#49 ]
Added variable doplasma::val#51 to live range equivalence class [ doplasma::val#51 ]
Added variable doplasma::$4 to live range equivalence class [ doplasma::$4 ]
Added variable doplasma::yval#0 to live range equivalence class [ doplasma::yval#0 ]
Added variable doplasma::$2 to live range equivalence class [ doplasma::$2 ]
Added variable makecharset::$3 to live range equivalence class [ makecharset::$3 ]
Added variable makecharset::s#0 to live range equivalence class [ makecharset::s#0 ]
Added variable makecharset::$12 to live range equivalence class [ makecharset::$12 ]
Added variable makecharset::$10 to live range equivalence class [ makecharset::$10 ]
Added variable makecharset::$11 to live range equivalence class [ makecharset::$11 ]
Added variable makecharset::$16 to live range equivalence class [ makecharset::$16 ]
Added variable sid_rnd::return#2 to live range equivalence class [ sid_rnd::return#2 ]
Added variable makecharset::$6 to live range equivalence class [ makecharset::$6 ]
Added variable makecharset::$7 to live range equivalence class [ makecharset::$7 ]
Added variable sid_rnd::return#0 to live range equivalence class [ sid_rnd::return#0 ]
Complete equivalence classes
[ main::col#2 main::col#1 ]
[ c1A#1 c1A#3 ]
[ c1B#1 c1B#3 ]
[ c2A#1 c2A#3 ]
[ c2B#1 c2B#3 ]
[ doplasma::i#2 doplasma::i#1 ]
[ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
[ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
[ doplasma::yprev#2 doplasma::yprev#4 ]
[ doplasma::i1#2 doplasma::i1#1 ]
[ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
[ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
[ doplasma::i2#2 doplasma::i2#1 ]
[ makecharset::c#2 makecharset::c#1 ]
[ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ]
[ makecharset::i#2 makecharset::i#1 ]
[ makecharset::ii#2 makecharset::ii#1 ]
[ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
[ memset::dst#2 memset::dst#1 ]
[ doplasma::val#0 ]
[ doplasma::val#1 ]
[ doplasma::val#5 ]
[ doplasma::val#7 ]
[ doplasma::val#10 ]
[ doplasma::val#11 ]
[ doplasma::val#13 ]
[ doplasma::val#15 ]
[ doplasma::val#17 ]
[ doplasma::val#19 ]
[ doplasma::val#21 ]
[ doplasma::val#23 ]
[ doplasma::val#25 ]
[ doplasma::val#27 ]
[ doplasma::val#29 ]
[ doplasma::val#31 ]
[ doplasma::val#33 ]
[ doplasma::val#35 ]
[ doplasma::val#37 ]
[ doplasma::val#39 ]
[ doplasma::val#41 ]
[ doplasma::val#43 ]
[ doplasma::val#45 ]
[ doplasma::val#47 ]
[ doplasma::val#49 ]
[ doplasma::val#51 ]
[ doplasma::$4 ]
[ doplasma::yval#0 ]
[ doplasma::$2 ]
[ makecharset::$3 ]
[ makecharset::s#0 ]
[ makecharset::$12 ]
[ makecharset::$10 ]
[ makecharset::$11 ]
[ makecharset::$16 ]
[ sid_rnd::return#2 ]
[ makecharset::$6 ]
[ makecharset::$7 ]
[ sid_rnd::return#0 ]
Allocated zp[2]:2 [ main::col#2 main::col#1 ]
Allocated zp[1]:4 [ c1A#1 c1A#3 ]
Allocated zp[1]:5 [ c1B#1 c1B#3 ]
Allocated zp[1]:6 [ c2A#1 c2A#3 ]
Allocated zp[1]:7 [ c2B#1 c2B#3 ]
Allocated zp[1]:8 [ doplasma::i#2 doplasma::i#1 ]
Allocated zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
Allocated zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
Allocated zp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ]
Allocated zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ]
Allocated zp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
Allocated zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
Allocated zp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ]
Allocated zp[2]:16 [ makecharset::c#2 makecharset::c#1 ]
Allocated zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ]
Allocated zp[1]:20 [ makecharset::i#2 makecharset::i#1 ]
Allocated zp[1]:21 [ makecharset::ii#2 makecharset::ii#1 ]
Allocated zp[1]:22 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
Allocated zp[2]:23 [ memset::dst#2 memset::dst#1 ]
Allocated zp[1]:25 [ doplasma::val#0 ]
Allocated zp[1]:26 [ doplasma::val#1 ]
Allocated zp[1]:27 [ doplasma::val#5 ]
Allocated zp[1]:28 [ doplasma::val#7 ]
Allocated zp[1]:29 [ doplasma::val#10 ]
Allocated zp[1]:30 [ doplasma::val#11 ]
Allocated zp[1]:31 [ doplasma::val#13 ]
Allocated zp[1]:32 [ doplasma::val#15 ]
Allocated zp[1]:33 [ doplasma::val#17 ]
Allocated zp[1]:34 [ doplasma::val#19 ]
Allocated zp[1]:35 [ doplasma::val#21 ]
Allocated zp[1]:36 [ doplasma::val#23 ]
Allocated zp[1]:37 [ doplasma::val#25 ]
Allocated zp[1]:38 [ doplasma::val#27 ]
Allocated zp[1]:39 [ doplasma::val#29 ]
Allocated zp[1]:40 [ doplasma::val#31 ]
Allocated zp[1]:41 [ doplasma::val#33 ]
Allocated zp[1]:42 [ doplasma::val#35 ]
Allocated zp[1]:43 [ doplasma::val#37 ]
Allocated zp[1]:44 [ doplasma::val#39 ]
Allocated zp[1]:45 [ doplasma::val#41 ]
Allocated zp[1]:46 [ doplasma::val#43 ]
Allocated zp[1]:47 [ doplasma::val#45 ]
Allocated zp[1]:48 [ doplasma::val#47 ]
Allocated zp[1]:49 [ doplasma::val#49 ]
Allocated zp[1]:50 [ doplasma::val#51 ]
Allocated zp[1]:51 [ doplasma::$4 ]
Allocated zp[1]:52 [ doplasma::yval#0 ]
Allocated zp[1]:53 [ doplasma::$2 ]
Allocated zp[1]:54 [ makecharset::$3 ]
Allocated zp[1]:55 [ makecharset::s#0 ]
Allocated zp[1]:56 [ makecharset::$12 ]
Allocated zp[2]:57 [ makecharset::$10 ]
Allocated zp[2]:59 [ makecharset::$11 ]
Allocated zp[2]:61 [ makecharset::$16 ]
Allocated zp[1]:63 [ sid_rnd::return#2 ]
Allocated zp[1]:64 [ makecharset::$6 ]
Allocated zp[1]:65 [ makecharset::$7 ]
Allocated zp[1]:66 [ sid_rnd::return#0 ]

INITIAL ASM
Target platform is c64basic / MOS6502X
  // File Comments
// A KickC version of the plasma routine from the CC65 samples
// This version has an unrolled inner loop to reach 50+FPS
// This version also optimizes the inner loop by calculating the Y buffer as a set of differences
// (w)2001 by groepaz/hitmen
// Cleanup and porting to CC65 by Ullrich von Bassewitz.
// Ported to KickC by Jesper Gravgaard.
// Original source https://github.com/cc65/cc65/blob/master/samples/plasma.c
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label BORDERCOL = $d020
  .label BGCOL = $d021
  .label D018 = $d018
  // Color Ram
  .label COLS = $d800
  // The colors of the C64
  .const BLACK = 0
  .const BLUE = 6
  // SID registers for random number generation
  .label SID_VOICE3_FREQ = $d40e
  .label SID_VOICE3_CONTROL = $d412
  .const SID_CONTROL_NOISE = $80
  .label SID_VOICE3_OSC = $d41b
  .label SCREEN1 = $2800
  .label CHARSET = $2000
  .label print_line_cursor = $400
  .label print_char_cursor = $12
  // Plasma state variables
  .label c1A = 4
  .label c1B = 5
  .label c2A = 6
  .label c2B = 7
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .label col = 2
    // asm { sei  }
    sei
    // [5] *((const byte*) BORDERCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta BORDERCOL
    // [6] *((const byte*) BGCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta BGCOL
    // [7] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [7] phi (byte*) main::col#2 = (const byte*) COLS [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<COLS
    sta.z col
    lda #>COLS
    sta.z col+1
    jmp __b1
    // [7] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
  __b1_from___b1:
    // [7] phi (byte*) main::col#2 = (byte*) main::col#1 [phi:main::@1->main::@1#0] -- register_copy 
    jmp __b1
    // main::@1
  __b1:
    // [8] *((byte*) main::col#2) ← (const byte) BLACK -- _deref_pbuz1=vbuc1 
    lda #BLACK
    ldy #0
    sta (col),y
    // [9] (byte*) main::col#1 ← ++ (byte*) main::col#2 -- pbuz1=_inc_pbuz1 
    inc.z col
    bne !+
    inc.z col+1
  !:
    // [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda.z col+1
    cmp #>COLS+$3e8+1
    bne __b1_from___b1
    lda.z col
    cmp #<COLS+$3e8+1
    bne __b1_from___b1
    // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [12] call makecharset 
    // [97] phi from main::@2 to makecharset [phi:main::@2->makecharset]
  makecharset_from___b2:
    jsr makecharset
    // [13] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
  toD0181_from___b2:
    jmp toD0181
    // main::toD0181
  toD0181:
    jmp __b5
    // main::@5
  __b5:
    // [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [15] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
  __b3_from___b5:
    // [15] phi (byte) c2B#1 = (byte) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c2B
    // [15] phi (byte) c2A#1 = (byte) 0 [phi:main::@5->main::@3#1] -- vbuz1=vbuc1 
    lda #0
    sta.z c2A
    // [15] phi (byte) c1B#1 = (byte) 0 [phi:main::@5->main::@3#2] -- vbuz1=vbuc1 
    lda #0
    sta.z c1B
    // [15] phi (byte) c1A#1 = (byte) 0 [phi:main::@5->main::@3#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c1A
    jmp __b3
    // main::@3
  __b3:
    // [16] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [17] call doplasma 
    jsr doplasma
    // [15] phi from main::@4 to main::@3 [phi:main::@4->main::@3]
  __b3_from___b4:
    // [15] phi (byte) c2B#1 = (byte) c2B#3 [phi:main::@4->main::@3#0] -- register_copy 
    // [15] phi (byte) c2A#1 = (byte) c2A#3 [phi:main::@4->main::@3#1] -- register_copy 
    // [15] phi (byte) c1B#1 = (byte) c1B#3 [phi:main::@4->main::@3#2] -- register_copy 
    // [15] phi (byte) c1A#1 = (byte) c1A#3 [phi:main::@4->main::@3#3] -- register_copy 
    jmp __b3
}
  // doplasma
// Render plasma to the passed screen
doplasma: {
    .label __2 = $35
    .label __4 = $33
    .label c1a = 9
    .label c1b = $a
    .label yval = $34
    .label i = 8
    .label c2a = $d
    .label c2b = $e
    .label i1 = $c
    .label val = $19
    .label val_1 = $1a
    .label i2 = $f
    .label yprev = $b
    .label val_2 = $1b
    .label val_3 = $1c
    .label val_4 = $1d
    .label val_5 = $1e
    .label val_6 = $1f
    .label val_7 = $20
    .label val_8 = $21
    .label val_9 = $22
    .label val_10 = $23
    .label val_11 = $24
    .label val_12 = $25
    .label val_13 = $26
    .label val_14 = $27
    .label val_15 = $28
    .label val_16 = $29
    .label val_17 = $2a
    .label val_18 = $2b
    .label val_19 = $2c
    .label val_20 = $2d
    .label val_21 = $2e
    .label val_22 = $2f
    .label val_23 = $30
    .label val_24 = $31
    .label val_25 = $32
    // [18] (byte) doplasma::c1a#0 ← (byte) c1A#1 -- vbuz1=vbuz2 
    lda.z c1A
    sta.z c1a
    // [19] (byte) doplasma::c1b#0 ← (byte) c1B#1 -- vbuz1=vbuz2 
    lda.z c1B
    sta.z c1b
    // [20] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
  __b1_from_doplasma:
    // [20] phi (byte) doplasma::yprev#2 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z yprev
    // [20] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [20] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [20] phi (byte) doplasma::i#2 = (byte) 0 [phi:doplasma->doplasma::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
  // Calculate ybuff as a bunch of differences
    // doplasma::@1
  __b1:
    // [21] if((byte) doplasma::i#2<(byte) $19) goto doplasma::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #$19
    bcc __b2
    jmp __b3
    // doplasma::@3
  __b3:
    // [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1A
    axs #-[3]
    stx.z c1A
    // [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c1B
    axs #5
    stx.z c1B
    // [24] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 
    lda.z c2A
    sta.z c2a
    // [25] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 
    lda.z c2B
    sta.z c2b
    // [26] phi from doplasma::@3 to doplasma::@4 [phi:doplasma::@3->doplasma::@4]
  __b4_from___b3:
    // [26] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@3->doplasma::@4#0] -- register_copy 
    // [26] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@3->doplasma::@4#1] -- register_copy 
    // [26] phi (byte) doplasma::i1#2 = (byte) 0 [phi:doplasma::@3->doplasma::@4#2] -- vbuz1=vbuc1 
    lda #0
    sta.z i1
    jmp __b4
    // doplasma::@4
  __b4:
    // [27] if((byte) doplasma::i1#2<(byte) $28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i1
    cmp #$28
    bcc __b5
    jmp __b6
    // doplasma::@6
  __b6:
    // [28] (byte) c2A#3 ← (byte) c2A#1 + (byte) 2 -- vbuz1=vbuz1_plus_2 
    lda.z c2A
    clc
    adc #2
    sta.z c2A
    // [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c2B
    axs #3
    stx.z c2B
    // [30] phi from doplasma::@6 to doplasma::@7 [phi:doplasma::@6->doplasma::@7]
  __b7_from___b6:
    // [30] phi (byte) doplasma::i2#2 = (byte) 0 [phi:doplasma::@6->doplasma::@7#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i2
    jmp __b7
    // doplasma::@7
  __b7:
    // [31] if((byte) doplasma::i2#2<(byte) $28) goto doplasma::@8 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i2
    cmp #$28
    bcc __b8
    jmp __breturn
    // doplasma::@return
  __breturn:
    // [32] return 
    rts
    // doplasma::@8
  __b8:
    // [33] (byte) doplasma::val#0 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2) -- vbuz1=pbuc1_derefidx_vbuz2 
    // Find the first value on the row
    ldy.z i2
    lda xbuf,y
    sta.z val
    jmp __b9
    // doplasma::@9
  __b9:
    // [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf
    clc
    adc.z val
    sta.z val_1
    // [35] *((const byte*) SCREEN1 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_1
    ldy.z i2
    sta SCREEN1,y
    jmp __b17_1
    // doplasma::@17_1
  __b17_1:
    // [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+1
    clc
    adc.z val_1
    sta.z val_2
    // [37] *((const byte*) SCREEN1+(byte) 1*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#5 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_2
    ldy.z i2
    sta SCREEN1+1*$28,y
    jmp __b17_2
    // doplasma::@17_2
  __b17_2:
    // [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+2
    clc
    adc.z val_2
    sta.z val_3
    // [39] *((const byte*) SCREEN1+(byte) 2*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#7 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_3
    ldy.z i2
    sta SCREEN1+2*$28,y
    jmp __b17_3
    // doplasma::@17_3
  __b17_3:
    // [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+3
    clc
    adc.z val_3
    sta.z val_4
    // [41] *((const byte*) SCREEN1+(byte) 3*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_4
    ldy.z i2
    sta SCREEN1+3*$28,y
    jmp __b17_4
    // doplasma::@17_4
  __b17_4:
    // [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+4
    clc
    adc.z val_4
    sta.z val_5
    // [43] *((const byte*) SCREEN1+(byte) 4*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#11 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_5
    ldy.z i2
    sta SCREEN1+4*$28,y
    jmp __b17_5
    // doplasma::@17_5
  __b17_5:
    // [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+5
    clc
    adc.z val_5
    sta.z val_6
    // [45] *((const byte*) SCREEN1+(byte) 5*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#13 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_6
    ldy.z i2
    sta SCREEN1+5*$28,y
    jmp __b17_6
    // doplasma::@17_6
  __b17_6:
    // [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+6
    clc
    adc.z val_6
    sta.z val_7
    // [47] *((const byte*) SCREEN1+(byte) 6*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#15 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_7
    ldy.z i2
    sta SCREEN1+6*$28,y
    jmp __b17_7
    // doplasma::@17_7
  __b17_7:
    // [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+7
    clc
    adc.z val_7
    sta.z val_8
    // [49] *((const byte*) SCREEN1+(byte) 7*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#17 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_8
    ldy.z i2
    sta SCREEN1+7*$28,y
    jmp __b17_8
    // doplasma::@17_8
  __b17_8:
    // [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+8
    clc
    adc.z val_8
    sta.z val_9
    // [51] *((const byte*) SCREEN1+(byte) 8*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#19 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_9
    ldy.z i2
    sta SCREEN1+8*$28,y
    jmp __b17_9
    // doplasma::@17_9
  __b17_9:
    // [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+9
    clc
    adc.z val_9
    sta.z val_10
    // [53] *((const byte*) SCREEN1+(byte) 9*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#21 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_10
    ldy.z i2
    sta SCREEN1+9*$28,y
    jmp __b17_10
    // doplasma::@17_10
  __b17_10:
    // [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$a
    clc
    adc.z val_10
    sta.z val_11
    // [55] *((const byte*) SCREEN1+(byte) $a*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#23 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_11
    ldy.z i2
    sta SCREEN1+$a*$28,y
    jmp __b17_11
    // doplasma::@17_11
  __b17_11:
    // [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$b
    clc
    adc.z val_11
    sta.z val_12
    // [57] *((const byte*) SCREEN1+(byte) $b*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#25 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_12
    ldy.z i2
    sta SCREEN1+$b*$28,y
    jmp __b17_12
    // doplasma::@17_12
  __b17_12:
    // [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$c
    clc
    adc.z val_12
    sta.z val_13
    // [59] *((const byte*) SCREEN1+(byte) $c*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#27 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_13
    ldy.z i2
    sta SCREEN1+$c*$28,y
    jmp __b17_13
    // doplasma::@17_13
  __b17_13:
    // [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$d
    clc
    adc.z val_13
    sta.z val_14
    // [61] *((const byte*) SCREEN1+(byte) $d*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#29 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_14
    ldy.z i2
    sta SCREEN1+$d*$28,y
    jmp __b17_14
    // doplasma::@17_14
  __b17_14:
    // [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$e
    clc
    adc.z val_14
    sta.z val_15
    // [63] *((const byte*) SCREEN1+(byte) $e*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#31 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_15
    ldy.z i2
    sta SCREEN1+$e*$28,y
    jmp __b17_15
    // doplasma::@17_15
  __b17_15:
    // [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$f
    clc
    adc.z val_15
    sta.z val_16
    // [65] *((const byte*) SCREEN1+(byte) $f*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#33 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_16
    ldy.z i2
    sta SCREEN1+$f*$28,y
    jmp __b17_16
    // doplasma::@17_16
  __b17_16:
    // [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$10
    clc
    adc.z val_16
    sta.z val_17
    // [67] *((const byte*) SCREEN1+(byte) $10*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#35 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_17
    ldy.z i2
    sta SCREEN1+$10*$28,y
    jmp __b17_17
    // doplasma::@17_17
  __b17_17:
    // [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$11
    clc
    adc.z val_17
    sta.z val_18
    // [69] *((const byte*) SCREEN1+(byte) $11*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#37 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_18
    ldy.z i2
    sta SCREEN1+$11*$28,y
    jmp __b17_18
    // doplasma::@17_18
  __b17_18:
    // [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$12
    clc
    adc.z val_18
    sta.z val_19
    // [71] *((const byte*) SCREEN1+(byte) $12*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#39 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_19
    ldy.z i2
    sta SCREEN1+$12*$28,y
    jmp __b17_19
    // doplasma::@17_19
  __b17_19:
    // [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$13
    clc
    adc.z val_19
    sta.z val_20
    // [73] *((const byte*) SCREEN1+(byte) $13*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#41 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_20
    ldy.z i2
    sta SCREEN1+$13*$28,y
    jmp __b17_20
    // doplasma::@17_20
  __b17_20:
    // [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$14
    clc
    adc.z val_20
    sta.z val_21
    // [75] *((const byte*) SCREEN1+(byte) $14*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#43 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_21
    ldy.z i2
    sta SCREEN1+$14*$28,y
    jmp __b17_21
    // doplasma::@17_21
  __b17_21:
    // [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$15
    clc
    adc.z val_21
    sta.z val_22
    // [77] *((const byte*) SCREEN1+(byte) $15*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#45 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_22
    ldy.z i2
    sta SCREEN1+$15*$28,y
    jmp __b17_22
    // doplasma::@17_22
  __b17_22:
    // [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$16
    clc
    adc.z val_22
    sta.z val_23
    // [79] *((const byte*) SCREEN1+(byte) $16*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#47 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_23
    ldy.z i2
    sta SCREEN1+$16*$28,y
    jmp __b17_23
    // doplasma::@17_23
  __b17_23:
    // [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$17
    clc
    adc.z val_23
    sta.z val_24
    // [81] *((const byte*) SCREEN1+(byte) $17*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#49 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_24
    ldy.z i2
    sta SCREEN1+$17*$28,y
    jmp __b17_24
    // doplasma::@17_24
  __b17_24:
    // [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) -- vbuz1=vbuz2_plus__deref_pbuc1 
    lda ybuf+$18
    clc
    adc.z val_24
    sta.z val_25
    // [83] *((const byte*) SCREEN1+(byte) $18*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#51 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z val_25
    ldy.z i2
    sta SCREEN1+$18*$28,y
    jmp __b10
    // doplasma::@10
  __b10:
    // [84] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuz1=_inc_vbuz1 
    inc.z i2
    // [30] phi from doplasma::@10 to doplasma::@7 [phi:doplasma::@10->doplasma::@7]
  __b7_from___b10:
    // [30] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@10->doplasma::@7#0] -- register_copy 
    jmp __b7
    // doplasma::@5
  __b5:
    // [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 
    ldy.z c2a
    lda SINTABLE,y
    ldy.z c2b
    clc
    adc SINTABLE,y
    sta.z __4
    // [86] *((const byte*) doplasma::xbuf + (byte) doplasma::i1#2) ← (byte~) doplasma::$4 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z __4
    ldy.z i1
    sta xbuf,y
    // [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2a
    axs #-[3]
    stx.z c2a
    // [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2b
    axs #-[7]
    stx.z c2b
    // [89] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 
    inc.z i1
    // [26] phi from doplasma::@5 to doplasma::@4 [phi:doplasma::@5->doplasma::@4]
  __b4_from___b5:
    // [26] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@5->doplasma::@4#0] -- register_copy 
    // [26] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@5->doplasma::@4#1] -- register_copy 
    // [26] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@5->doplasma::@4#2] -- register_copy 
    jmp __b4
    // doplasma::@2
  __b2:
    // [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 
    ldy.z c1a
    lda SINTABLE,y
    ldy.z c1b
    clc
    adc SINTABLE,y
    sta.z yval
    // [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 -- vbuz1=vbuz2_minus_vbuz3 
    lda.z yval
    sec
    sbc.z yprev
    sta.z __2
    // [92] *((const byte*) doplasma::ybuf + (byte) doplasma::i#2) ← (byte~) doplasma::$2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z __2
    ldy.z i
    sta ybuf,y
    // [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1a
    axs #-[4]
    stx.z c1a
    // [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1b
    axs #-[9]
    stx.z c1b
    // [95] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [96] (byte) doplasma::yprev#4 ← (byte) doplasma::yval#0 -- vbuz1=vbuz2 
    lda.z yval
    sta.z yprev
    // [20] phi from doplasma::@2 to doplasma::@1 [phi:doplasma::@2->doplasma::@1]
  __b1_from___b2:
    // [20] phi (byte) doplasma::yprev#2 = (byte) doplasma::yprev#4 [phi:doplasma::@2->doplasma::@1#0] -- register_copy 
    // [20] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@2->doplasma::@1#1] -- register_copy 
    // [20] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@2->doplasma::@1#2] -- register_copy 
    // [20] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@2->doplasma::@1#3] -- register_copy 
    jmp __b1
    xbuf: .fill $28, 0
    ybuf: .fill $19, 0
}
  // makecharset
// Make a plasma-friendly charset where the chars are randomly filled
makecharset: {
    .label __3 = $36
    .label __6 = $40
    .label __7 = $41
    .label __10 = $39
    .label __11 = $3b
    .label __12 = $38
    .label s = $37
    .label i = $14
    .label ii = $15
    .label b = $16
    .label c = $10
    .label __16 = $3d
    // [98] call sid_rnd_init 
    jsr sid_rnd_init
    // [99] phi from makecharset to makecharset::@12 [phi:makecharset->makecharset::@12]
  __b12_from_makecharset:
    jmp __b12
    // makecharset::@12
  __b12:
    // [100] call print_cls 
    // [135] phi from makecharset::@12 to print_cls [phi:makecharset::@12->print_cls]
  print_cls_from___b12:
    jsr print_cls
    // [101] phi from makecharset::@12 to makecharset::@1 [phi:makecharset::@12->makecharset::@1]
  __b1_from___b12:
    // [101] phi (byte*) print_char_cursor#18 = (const byte*) print_line_cursor#0 [phi:makecharset::@12->makecharset::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta.z print_char_cursor
    lda #>print_line_cursor
    sta.z print_char_cursor+1
    // [101] phi (word) makecharset::c#2 = (word) 0 [phi:makecharset::@12->makecharset::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z c
    lda #>0
    sta.z c+1
    jmp __b1
    // makecharset::@1
  __b1:
    // [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 -- vwuz1_lt_vwuc1_then_la1 
    lda.z c+1
    cmp #>$100
    bcc __b2
    bne !+
    lda.z c
    cmp #<$100
    bcc __b2
  !:
    jmp __breturn
    // makecharset::@return
  __breturn:
    // [103] return 
    rts
    // makecharset::@2
  __b2:
    // [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 -- vbuz1=_lo_vwuz2 
    lda.z c
    sta.z __3
    // [105] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z __3
    lda SINTABLE,y
    sta.z s
    // [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3]
  __b3_from___b2:
    // [106] phi (byte) makecharset::i#2 = (byte) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b3
    // makecharset::@3
  __b3:
    // [107] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #8
    bcc __b5_from___b3
    jmp __b4
    // makecharset::@4
  __b4:
    // [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 -- vbuz1=vwuz2_band_vbuc1 
    lda #7
    and.z c
    sta.z __12
    // [109] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@11 -- vbuz1_neq_0_then_la1 
    lda.z __12
    cmp #0
    bne __b11_from___b4
    // [110] phi from makecharset::@4 to makecharset::@10 [phi:makecharset::@4->makecharset::@10]
  __b10_from___b4:
    jmp __b10
    // makecharset::@10
  __b10:
    // [111] call print_char 
    jsr print_char
    // [112] phi from makecharset::@10 makecharset::@4 to makecharset::@11 [phi:makecharset::@10/makecharset::@4->makecharset::@11]
  __b11_from___b10:
  __b11_from___b4:
    // [112] phi (byte*) print_char_cursor#30 = (byte*) print_char_cursor#1 [phi:makecharset::@10/makecharset::@4->makecharset::@11#0] -- register_copy 
    jmp __b11
    // makecharset::@11
  __b11:
    // [113] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 
    inc.z c
    bne !+
    inc.z c+1
  !:
    // [101] phi from makecharset::@11 to makecharset::@1 [phi:makecharset::@11->makecharset::@1]
  __b1_from___b11:
    // [101] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#30 [phi:makecharset::@11->makecharset::@1#0] -- register_copy 
    // [101] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@11->makecharset::@1#1] -- register_copy 
    jmp __b1
    // [114] phi from makecharset::@3 to makecharset::@5 [phi:makecharset::@3->makecharset::@5]
  __b5_from___b3:
    // [114] phi (byte) makecharset::b#2 = (byte) 0 [phi:makecharset::@3->makecharset::@5#0] -- vbuz1=vbuc1 
    lda #0
    sta.z b
    // [114] phi (byte) makecharset::ii#2 = (byte) 0 [phi:makecharset::@3->makecharset::@5#1] -- vbuz1=vbuc1 
    lda #0
    sta.z ii
    jmp __b5
    // makecharset::@5
  __b5:
    // [115] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@6 -- vbuz1_lt_vbuc1_then_la1 
    lda.z ii
    cmp #8
    bcc __b6_from___b5
    jmp __b7
    // makecharset::@7
  __b7:
    // [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 -- vwuz1=vwuz2_rol_3 
    lda.z c
    asl
    sta.z __10
    lda.z c+1
    rol
    sta.z __10+1
    asl.z __10
    rol.z __10+1
    asl.z __10
    rol.z __10+1
    // [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 -- vwuz1=vwuz2_plus_vbuz3 
    lda.z i
    clc
    adc.z __10
    sta.z __11
    lda #0
    adc.z __10+1
    sta.z __11+1
    // [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 -- pbuz1=pbuc1_plus_vwuz2 
    lda.z __11
    clc
    adc #<CHARSET
    sta.z __16
    lda.z __11+1
    adc #>CHARSET
    sta.z __16+1
    // [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 -- _deref_pbuz1=vbuz2 
    lda.z b
    ldy #0
    sta (__16),y
    // [120] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [106] phi from makecharset::@7 to makecharset::@3 [phi:makecharset::@7->makecharset::@3]
  __b3_from___b7:
    // [106] phi (byte) makecharset::i#2 = (byte) makecharset::i#1 [phi:makecharset::@7->makecharset::@3#0] -- register_copy 
    jmp __b3
    // [121] phi from makecharset::@5 to makecharset::@6 [phi:makecharset::@5->makecharset::@6]
  __b6_from___b5:
    jmp __b6
    // makecharset::@6
  __b6:
    // [122] call sid_rnd 
    jsr sid_rnd
    // [123] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 
    lda.z sid_rnd.return
    sta.z sid_rnd.return_1
    jmp __b13
    // makecharset::@13
  __b13:
    // [124] (byte~) makecharset::$6 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 
    lda.z sid_rnd.return_1
    sta.z __6
    // [125] (byte~) makecharset::$7 ← (byte~) makecharset::$6 & (byte) $ff -- vbuz1=vbuz2_band_vbuc1 
    lda #$ff
    and.z __6
    sta.z __7
    // [126] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@8 -- vbuz1_le_vbuz2_then_la1 
    lda.z s
    cmp.z __7
    bcs __b8_from___b13
    jmp __b9
    // makecharset::@9
  __b9:
    // [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuz2 
    lda.z b
    ldy.z ii
    ora bittab,y
    sta.z b
    // [128] phi from makecharset::@13 makecharset::@9 to makecharset::@8 [phi:makecharset::@13/makecharset::@9->makecharset::@8]
  __b8_from___b13:
  __b8_from___b9:
    // [128] phi (byte) makecharset::b#6 = (byte) makecharset::b#2 [phi:makecharset::@13/makecharset::@9->makecharset::@8#0] -- register_copy 
    jmp __b8
    // makecharset::@8
  __b8:
    // [129] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuz1=_inc_vbuz1 
    inc.z ii
    // [114] phi from makecharset::@8 to makecharset::@5 [phi:makecharset::@8->makecharset::@5]
  __b5_from___b8:
    // [114] phi (byte) makecharset::b#2 = (byte) makecharset::b#6 [phi:makecharset::@8->makecharset::@5#0] -- register_copy 
    // [114] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@8->makecharset::@5#1] -- register_copy 
    jmp __b5
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
  // sid_rnd
// Get a random number from the SID voice 3,
// Must be initialized with sid_rnd_init()
sid_rnd: {
    .label return = $42
    .label return_1 = $3f
    // [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC) -- vbuz1=_deref_pbuc1 
    lda SID_VOICE3_OSC
    sta.z return
    jmp __breturn
    // sid_rnd::@return
  __breturn:
    // [131] return 
    rts
}
  // print_char
// Print a single char
print_char: {
    .const ch = '.'
    // [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // [133] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#18 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp __breturn
    // print_char::@return
  __breturn:
    // [134] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [136] call memset 
    // [138] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [137] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = print_line_cursor
    .label end = str+num
    .label dst = $17
    // [139] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [139] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp __b1
    // memset::@1
  __b1:
    // [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne __b2
    lda.z dst
    cmp #<end
    bne __b2
    jmp __breturn
    // memset::@return
  __breturn:
    // [141] return 
    rts
    // memset::@2
  __b2:
    // [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [139] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [139] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // sid_rnd_init
// Initialize SID voice 3 for random number generation
sid_rnd_init: {
    // [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID_VOICE3_FREQ
    lda #>$ffff
    sta SID_VOICE3_FREQ+1
    // [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID_VOICE3_CONTROL
    jmp __breturn
    // sid_rnd_init::@return
  __breturn:
    // [146] return 
    rts
}
  // File Data
  .align $100
SINTABLE:
.for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(toRadians(360*i/256)))


REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] ) always clobbers reg byte a reg byte y 
Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] ) always clobbers reg byte a 
Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:2::doplasma:17 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:5 [ c1B#1 c1B#3 ]
Removing always clobbered register reg byte a as potential for zp[1]:6 [ c2A#1 c2A#3 ]
Removing always clobbered register reg byte a as potential for zp[1]:7 [ c2B#1 c2B#3 ]
Statement [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ c1A#1 c1A#3 ]
Statement [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a 
Statement [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ]
Statement [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ) always clobbers reg byte a 
Statement [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ) always clobbers reg byte a 
Statement [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ) always clobbers reg byte a 
Statement [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ) always clobbers reg byte a 
Statement [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ) always clobbers reg byte a 
Statement [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ) always clobbers reg byte a 
Statement [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ) always clobbers reg byte a 
Statement [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ) always clobbers reg byte a 
Statement [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ) always clobbers reg byte a 
Statement [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ) always clobbers reg byte a 
Statement [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ) always clobbers reg byte a 
Statement [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ) always clobbers reg byte a 
Statement [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ) always clobbers reg byte a 
Statement [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ) always clobbers reg byte a 
Statement [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ) always clobbers reg byte a 
Statement [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ) always clobbers reg byte a 
Statement [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ) always clobbers reg byte a 
Statement [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ) always clobbers reg byte a 
Statement [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ) always clobbers reg byte a 
Statement [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ) always clobbers reg byte a 
Statement [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ) always clobbers reg byte a 
Statement [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ) always clobbers reg byte a 
Statement [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ) always clobbers reg byte a 
Statement [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ) always clobbers reg byte a 
Statement [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
Statement [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ) always clobbers reg byte a 
Statement [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a 
Statement [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:8 [ doplasma::i#2 doplasma::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ]
Statement [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:52 [ doplasma::yval#0 ]
Statement [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ) always clobbers reg byte a 
Statement [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ) always clobbers reg byte a 
Statement [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a 
Statement [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ) always clobbers reg byte a 
Statement [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ) always clobbers reg byte a 
Statement [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:55 [ makecharset::s#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:20 [ makecharset::i#2 makecharset::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:22 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
Statement [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ) always clobbers reg byte a 
Statement [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ) always clobbers reg byte a 
Statement [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:55 [ makecharset::s#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:20 [ makecharset::i#2 makecharset::i#1 ]
Statement [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:21 [ makecharset::ii#2 makecharset::ii#1 ]
Statement [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:111 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y 
Statement [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] ) always clobbers reg byte a 
Statement [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] ) always clobbers reg byte a 
Statement [5] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [6] *((const byte*) BGCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [8] *((byte*) main::col#2) ← (const byte) BLACK [ main::col#2 ] ( main:2 [ main::col#2 ] ) always clobbers reg byte a reg byte y 
Statement [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 [ main::col#1 ] ( main:2 [ main::col#1 ] ) always clobbers reg byte a 
Statement [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ( main:2::doplasma:17 [ c1B#1 c2A#1 c2B#1 c1A#3 ] ) always clobbers reg byte a 
Statement [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 ] ) always clobbers reg byte a 
Statement [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a 
Statement [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#1 ] ) always clobbers reg byte a 
Statement [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#5 ] ) always clobbers reg byte a 
Statement [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#7 ] ) always clobbers reg byte a 
Statement [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#10 ] ) always clobbers reg byte a 
Statement [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#11 ] ) always clobbers reg byte a 
Statement [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#13 ] ) always clobbers reg byte a 
Statement [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#15 ] ) always clobbers reg byte a 
Statement [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#17 ] ) always clobbers reg byte a 
Statement [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#19 ] ) always clobbers reg byte a 
Statement [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#21 ] ) always clobbers reg byte a 
Statement [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#23 ] ) always clobbers reg byte a 
Statement [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#25 ] ) always clobbers reg byte a 
Statement [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#27 ] ) always clobbers reg byte a 
Statement [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#29 ] ) always clobbers reg byte a 
Statement [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#31 ] ) always clobbers reg byte a 
Statement [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#33 ] ) always clobbers reg byte a 
Statement [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#35 ] ) always clobbers reg byte a 
Statement [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#37 ] ) always clobbers reg byte a 
Statement [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#39 ] ) always clobbers reg byte a 
Statement [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#41 ] ) always clobbers reg byte a 
Statement [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#43 ] ) always clobbers reg byte a 
Statement [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#45 ] ) always clobbers reg byte a 
Statement [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#47 ] ) always clobbers reg byte a 
Statement [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#49 ] ) always clobbers reg byte a 
Statement [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ( main:2::doplasma:17 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::val#51 ] ) always clobbers reg byte a 
Statement [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ) always clobbers reg byte a 
Statement [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ) always clobbers reg byte a 
Statement [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:2::doplasma:17 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a 
Statement [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yval#0 ] ) always clobbers reg byte a 
Statement [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yval#0 doplasma::$2 ] ) always clobbers reg byte a 
Statement [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yval#0 ] ) always clobbers reg byte a 
Statement [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ( main:2::doplasma:17 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yval#0 ] ) always clobbers reg byte a 
Statement [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#18 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a 
Statement [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$3 ] ) always clobbers reg byte a 
Statement [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::$12 ] ) always clobbers reg byte a 
Statement [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ) always clobbers reg byte a 
Statement [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ) always clobbers reg byte a 
Statement [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ) always clobbers reg byte a 
Statement [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( main:2::makecharset:12 [ makecharset::c#2 print_char_cursor#18 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a 
Statement [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 [ print_char_cursor#18 ] ( main:2::makecharset:12::print_char:111 [ makecharset::c#2 print_char_cursor#18 ] ) always clobbers reg byte a reg byte y 
Statement [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::makecharset:12::print_cls:100::memset:136 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] ) always clobbers reg byte a 
Statement [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE [ ] ( main:2::makecharset:12::sid_rnd_init:98 [ ] ) always clobbers reg byte a 
Potential registers zp[2]:2 [ main::col#2 main::col#1 ] : zp[2]:2 , 
Potential registers zp[1]:4 [ c1A#1 c1A#3 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[1]:5 [ c1B#1 c1B#3 ] : zp[1]:5 , reg byte x , reg byte y , 
Potential registers zp[1]:6 [ c2A#1 c2A#3 ] : zp[1]:6 , reg byte x , reg byte y , 
Potential registers zp[1]:7 [ c2B#1 c2B#3 ] : zp[1]:7 , reg byte x , reg byte y , 
Potential registers zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] : zp[1]:8 , reg byte x , reg byte y , 
Potential registers zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] : zp[1]:9 , reg byte x , reg byte y , 
Potential registers zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] : zp[1]:10 , reg byte x , reg byte y , 
Potential registers zp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ] : zp[1]:11 , reg byte x , reg byte y , 
Potential registers zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ] : zp[1]:12 , reg byte x , reg byte y , 
Potential registers zp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] : zp[1]:13 , reg byte x , reg byte y , 
Potential registers zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] : zp[1]:14 , reg byte x , reg byte y , 
Potential registers zp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ] : zp[1]:15 , reg byte x , reg byte y , 
Potential registers zp[2]:16 [ makecharset::c#2 makecharset::c#1 ] : zp[2]:16 , 
Potential registers zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] : zp[2]:18 , 
Potential registers zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] : zp[1]:20 , reg byte x , 
Potential registers zp[1]:21 [ makecharset::ii#2 makecharset::ii#1 ] : zp[1]:21 , reg byte x , reg byte y , 
Potential registers zp[1]:22 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] : zp[1]:22 , reg byte x , reg byte y , 
Potential registers zp[2]:23 [ memset::dst#2 memset::dst#1 ] : zp[2]:23 , 
Potential registers zp[1]:25 [ doplasma::val#0 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:26 [ doplasma::val#1 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:27 [ doplasma::val#5 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:28 [ doplasma::val#7 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:29 [ doplasma::val#10 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:30 [ doplasma::val#11 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:31 [ doplasma::val#13 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:32 [ doplasma::val#15 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:33 [ doplasma::val#17 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:34 [ doplasma::val#19 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:35 [ doplasma::val#21 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:36 [ doplasma::val#23 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:37 [ doplasma::val#25 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:38 [ doplasma::val#27 ] : zp[1]:38 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:39 [ doplasma::val#29 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:40 [ doplasma::val#31 ] : zp[1]:40 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:41 [ doplasma::val#33 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:42 [ doplasma::val#35 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:43 [ doplasma::val#37 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:44 [ doplasma::val#39 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:45 [ doplasma::val#41 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:46 [ doplasma::val#43 ] : zp[1]:46 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:47 [ doplasma::val#45 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:48 [ doplasma::val#47 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:49 [ doplasma::val#49 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:50 [ doplasma::val#51 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:51 [ doplasma::$4 ] : zp[1]:51 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:52 [ doplasma::yval#0 ] : zp[1]:52 , reg byte x , reg byte y , 
Potential registers zp[1]:53 [ doplasma::$2 ] : zp[1]:53 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:54 [ makecharset::$3 ] : zp[1]:54 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:55 [ makecharset::s#0 ] : zp[1]:55 , reg byte x , 
Potential registers zp[1]:56 [ makecharset::$12 ] : zp[1]:56 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:57 [ makecharset::$10 ] : zp[2]:57 , 
Potential registers zp[2]:59 [ makecharset::$11 ] : zp[2]:59 , 
Potential registers zp[2]:61 [ makecharset::$16 ] : zp[2]:61 , 
Potential registers zp[1]:63 [ sid_rnd::return#2 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:64 [ makecharset::$6 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:65 [ makecharset::$7 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:66 [ sid_rnd::return#0 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [makecharset] 3,785.68: zp[1]:22 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] 2,402.4: zp[1]:21 [ makecharset::ii#2 makecharset::ii#1 ] 2,002: zp[1]:64 [ makecharset::$6 ] 2,002: zp[1]:65 [ makecharset::$7 ] 225.76: zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] 202: zp[2]:57 [ makecharset::$10 ] 202: zp[2]:59 [ makecharset::$11 ] 202: zp[2]:61 [ makecharset::$16 ] 53.26: zp[1]:55 [ makecharset::s#0 ] 27.78: zp[2]:16 [ makecharset::c#2 makecharset::c#1 ] 22: zp[1]:54 [ makecharset::$3 ] 22: zp[1]:56 [ makecharset::$12 ] 
Uplift Scope [doplasma] 269.33: zp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ] 269.33: zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ] 257.26: zp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ] 202: zp[1]:25 [ doplasma::val#0 ] 202: zp[1]:50 [ doplasma::val#51 ] 202: zp[1]:51 [ doplasma::$4 ] 202: zp[1]:53 [ doplasma::$2 ] 166: zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 158.71: zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] 151.5: zp[1]:26 [ doplasma::val#1 ] 151.5: zp[1]:27 [ doplasma::val#5 ] 151.5: zp[1]:28 [ doplasma::val#7 ] 151.5: zp[1]:29 [ doplasma::val#10 ] 151.5: zp[1]:30 [ doplasma::val#11 ] 151.5: zp[1]:31 [ doplasma::val#13 ] 151.5: zp[1]:32 [ doplasma::val#15 ] 151.5: zp[1]:33 [ doplasma::val#17 ] 151.5: zp[1]:34 [ doplasma::val#19 ] 151.5: zp[1]:35 [ doplasma::val#21 ] 151.5: zp[1]:36 [ doplasma::val#23 ] 151.5: zp[1]:37 [ doplasma::val#25 ] 151.5: zp[1]:38 [ doplasma::val#27 ] 151.5: zp[1]:39 [ doplasma::val#29 ] 151.5: zp[1]:40 [ doplasma::val#31 ] 151.5: zp[1]:41 [ doplasma::val#33 ] 151.5: zp[1]:42 [ doplasma::val#35 ] 151.5: zp[1]:43 [ doplasma::val#37 ] 151.5: zp[1]:44 [ doplasma::val#39 ] 151.5: zp[1]:45 [ doplasma::val#41 ] 151.5: zp[1]:46 [ doplasma::val#43 ] 151.5: zp[1]:47 [ doplasma::val#45 ] 151.5: zp[1]:48 [ doplasma::val#47 ] 151.5: zp[1]:49 [ doplasma::val#49 ] 145.58: zp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 122.17: zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 113.5: zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 50.5: zp[1]:52 [ doplasma::yval#0 ] 
Uplift Scope [sid_rnd] 2,002: zp[1]:63 [ sid_rnd::return#2 ] 334.33: zp[1]:66 [ sid_rnd::return#0 ] 
Uplift Scope [memset] 36.67: zp[2]:23 [ memset::dst#2 memset::dst#1 ] 
Uplift Scope [main] 33: zp[2]:2 [ main::col#2 main::col#1 ] 
Uplift Scope [] 21.83: zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] 1.34: zp[1]:4 [ c1A#1 c1A#3 ] 1.26: zp[1]:5 [ c1B#1 c1B#3 ] 0.85: zp[1]:6 [ c2A#1 c2A#3 ] 0.83: zp[1]:7 [ c2B#1 c2B#3 ] 
Uplift Scope [RADIX] 
Uplift Scope [print_char] 
Uplift Scope [print_cls] 
Uplift Scope [sid_rnd_init] 

Uplifting [makecharset] best 168084 combination reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] reg byte a [ makecharset::$6 ] zp[1]:65 [ makecharset::$7 ] zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] zp[2]:57 [ makecharset::$10 ] zp[2]:59 [ makecharset::$11 ] zp[2]:61 [ makecharset::$16 ] zp[1]:55 [ makecharset::s#0 ] zp[2]:16 [ makecharset::c#2 makecharset::c#1 ] zp[1]:54 [ makecharset::$3 ] zp[1]:56 [ makecharset::$12 ] 
Limited combination testing to 100 combinations of 9216 possible.
Uplifting [sid_rnd] best 159081 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] 
Uplifting [memset] best 159081 combination zp[2]:23 [ memset::dst#2 memset::dst#1 ] 
Uplifting [main] best 159081 combination zp[2]:2 [ main::col#2 main::col#1 ] 
Uplifting [] best 159081 combination zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] zp[1]:4 [ c1A#1 c1A#3 ] zp[1]:5 [ c1B#1 c1B#3 ] zp[1]:6 [ c2A#1 c2A#3 ] zp[1]:7 [ c2B#1 c2B#3 ] 
Uplifting [RADIX] best 159081 combination 
Uplifting [print_char] best 159081 combination 
Uplifting [print_cls] best 159081 combination 
Uplifting [sid_rnd_init] best 159081 combination 
Attempting to uplift remaining variables inzp[1]:65 [ makecharset::$7 ]
Uplifting [makecharset] best 159081 combination zp[1]:65 [ makecharset::$7 ] 
Attempting to uplift remaining variables inzp[1]:11 [ doplasma::yprev#2 doplasma::yprev#4 ]
Uplifting [doplasma] best 158581 combination reg byte x [ doplasma::yprev#2 doplasma::yprev#4 ] 
Attempting to uplift remaining variables inzp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ]
Uplifting [doplasma] best 158581 combination zp[1]:12 [ doplasma::i1#2 doplasma::i1#1 ] 
Attempting to uplift remaining variables inzp[1]:15 [ doplasma::i2#2 doplasma::i2#1 ]
Uplifting [doplasma] best 149881 combination reg byte x [ doplasma::i2#2 doplasma::i2#1 ] 
Attempting to uplift remaining variables inzp[1]:20 [ makecharset::i#2 makecharset::i#1 ]
Uplifting [makecharset] best 149881 combination zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] 
Attempting to uplift remaining variables inzp[1]:25 [ doplasma::val#0 ]
Uplifting [doplasma] best 149281 combination reg byte a [ doplasma::val#0 ] 
Attempting to uplift remaining variables inzp[1]:50 [ doplasma::val#51 ]
Uplifting [doplasma] best 148681 combination reg byte a [ doplasma::val#51 ] 
Attempting to uplift remaining variables inzp[1]:51 [ doplasma::$4 ]
Uplifting [doplasma] best 148081 combination reg byte a [ doplasma::$4 ] 
Attempting to uplift remaining variables inzp[1]:53 [ doplasma::$2 ]
Uplifting [doplasma] best 147481 combination reg byte a [ doplasma::$2 ] 
Attempting to uplift remaining variables inzp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
Uplifting [doplasma] best 147481 combination zp[1]:14 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 
Attempting to uplift remaining variables inzp[1]:8 [ doplasma::i#2 doplasma::i#1 ]
Uplifting [doplasma] best 147481 combination zp[1]:8 [ doplasma::i#2 doplasma::i#1 ] 
Attempting to uplift remaining variables inzp[1]:26 [ doplasma::val#1 ]
Uplifting [doplasma] best 146581 combination reg byte a [ doplasma::val#1 ] 
Attempting to uplift remaining variables inzp[1]:27 [ doplasma::val#5 ]
Uplifting [doplasma] best 145681 combination reg byte a [ doplasma::val#5 ] 
Attempting to uplift remaining variables inzp[1]:28 [ doplasma::val#7 ]
Uplifting [doplasma] best 144781 combination reg byte a [ doplasma::val#7 ] 
Attempting to uplift remaining variables inzp[1]:29 [ doplasma::val#10 ]
Uplifting [doplasma] best 143881 combination reg byte a [ doplasma::val#10 ] 
Attempting to uplift remaining variables inzp[1]:30 [ doplasma::val#11 ]
Uplifting [doplasma] best 142981 combination reg byte a [ doplasma::val#11 ] 
Attempting to uplift remaining variables inzp[1]:31 [ doplasma::val#13 ]
Uplifting [doplasma] best 142081 combination reg byte a [ doplasma::val#13 ] 
Attempting to uplift remaining variables inzp[1]:32 [ doplasma::val#15 ]
Uplifting [doplasma] best 141181 combination reg byte a [ doplasma::val#15 ] 
Attempting to uplift remaining variables inzp[1]:33 [ doplasma::val#17 ]
Uplifting [doplasma] best 140281 combination reg byte a [ doplasma::val#17 ] 
Attempting to uplift remaining variables inzp[1]:34 [ doplasma::val#19 ]
Uplifting [doplasma] best 139381 combination reg byte a [ doplasma::val#19 ] 
Attempting to uplift remaining variables inzp[1]:35 [ doplasma::val#21 ]
Uplifting [doplasma] best 138481 combination reg byte a [ doplasma::val#21 ] 
Attempting to uplift remaining variables inzp[1]:36 [ doplasma::val#23 ]
Uplifting [doplasma] best 137581 combination reg byte a [ doplasma::val#23 ] 
Attempting to uplift remaining variables inzp[1]:37 [ doplasma::val#25 ]
Uplifting [doplasma] best 136681 combination reg byte a [ doplasma::val#25 ] 
Attempting to uplift remaining variables inzp[1]:38 [ doplasma::val#27 ]
Uplifting [doplasma] best 135781 combination reg byte a [ doplasma::val#27 ] 
Attempting to uplift remaining variables inzp[1]:39 [ doplasma::val#29 ]
Uplifting [doplasma] best 134881 combination reg byte a [ doplasma::val#29 ] 
Attempting to uplift remaining variables inzp[1]:40 [ doplasma::val#31 ]
Uplifting [doplasma] best 133981 combination reg byte a [ doplasma::val#31 ] 
Attempting to uplift remaining variables inzp[1]:41 [ doplasma::val#33 ]
Uplifting [doplasma] best 133081 combination reg byte a [ doplasma::val#33 ] 
Attempting to uplift remaining variables inzp[1]:42 [ doplasma::val#35 ]
Uplifting [doplasma] best 132181 combination reg byte a [ doplasma::val#35 ] 
Attempting to uplift remaining variables inzp[1]:43 [ doplasma::val#37 ]
Uplifting [doplasma] best 131281 combination reg byte a [ doplasma::val#37 ] 
Attempting to uplift remaining variables inzp[1]:44 [ doplasma::val#39 ]
Uplifting [doplasma] best 130381 combination reg byte a [ doplasma::val#39 ] 
Attempting to uplift remaining variables inzp[1]:45 [ doplasma::val#41 ]
Uplifting [doplasma] best 129481 combination reg byte a [ doplasma::val#41 ] 
Attempting to uplift remaining variables inzp[1]:46 [ doplasma::val#43 ]
Uplifting [doplasma] best 128581 combination reg byte a [ doplasma::val#43 ] 
Attempting to uplift remaining variables inzp[1]:47 [ doplasma::val#45 ]
Uplifting [doplasma] best 127681 combination reg byte a [ doplasma::val#45 ] 
Attempting to uplift remaining variables inzp[1]:48 [ doplasma::val#47 ]
Uplifting [doplasma] best 126781 combination reg byte a [ doplasma::val#47 ] 
Attempting to uplift remaining variables inzp[1]:49 [ doplasma::val#49 ]
Uplifting [doplasma] best 125881 combination reg byte a [ doplasma::val#49 ] 
Attempting to uplift remaining variables inzp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
Uplifting [doplasma] best 125881 combination zp[1]:13 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 
Attempting to uplift remaining variables inzp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
Uplifting [doplasma] best 125881 combination zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 
Attempting to uplift remaining variables inzp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
Uplifting [doplasma] best 125881 combination zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 
Attempting to uplift remaining variables inzp[1]:55 [ makecharset::s#0 ]
Uplifting [makecharset] best 125881 combination zp[1]:55 [ makecharset::s#0 ] 
Attempting to uplift remaining variables inzp[1]:52 [ doplasma::yval#0 ]
Uplifting [doplasma] best 125881 combination zp[1]:52 [ doplasma::yval#0 ] 
Attempting to uplift remaining variables inzp[1]:54 [ makecharset::$3 ]
Uplifting [makecharset] best 125841 combination reg byte a [ makecharset::$3 ] 
Attempting to uplift remaining variables inzp[1]:56 [ makecharset::$12 ]
Uplifting [makecharset] best 125781 combination reg byte a [ makecharset::$12 ] 
Attempting to uplift remaining variables inzp[1]:4 [ c1A#1 c1A#3 ]
Uplifting [] best 125781 combination zp[1]:4 [ c1A#1 c1A#3 ] 
Attempting to uplift remaining variables inzp[1]:5 [ c1B#1 c1B#3 ]
Uplifting [] best 125781 combination zp[1]:5 [ c1B#1 c1B#3 ] 
Attempting to uplift remaining variables inzp[1]:6 [ c2A#1 c2A#3 ]
Uplifting [] best 125781 combination zp[1]:6 [ c2A#1 c2A#3 ] 
Attempting to uplift remaining variables inzp[1]:7 [ c2B#1 c2B#3 ]
Uplifting [] best 125781 combination zp[1]:7 [ c2B#1 c2B#3 ] 
Coalescing zero page register [ zp[2]:57 [ makecharset::$10 ] ] with [ zp[2]:59 [ makecharset::$11 ] ] - score: 1
Coalescing zero page register [ zp[2]:57 [ makecharset::$10 makecharset::$11 ] ] with [ zp[2]:61 [ makecharset::$16 ] ] - score: 1
Coalescing zero page register [ zp[2]:16 [ makecharset::c#2 makecharset::c#1 ] ] with [ zp[2]:2 [ main::col#2 main::col#1 ] ]
Coalescing zero page register [ zp[1]:20 [ makecharset::i#2 makecharset::i#1 ] ] with [ zp[1]:4 [ c1A#1 c1A#3 ] ]
Coalescing zero page register [ zp[2]:23 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:18 [ print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ] ]
Coalescing zero page register [ zp[1]:55 [ makecharset::s#0 ] ] with [ zp[1]:5 [ c1B#1 c1B#3 ] ]
Coalescing zero page register [ zp[1]:65 [ makecharset::$7 ] ] with [ zp[1]:6 [ c2A#1 c2A#3 ] ]
Allocated (was zp[1]:7) zp[1]:2 [ c2B#1 c2B#3 ]
Allocated (was zp[1]:8) zp[1]:3 [ doplasma::i#2 doplasma::i#1 ]
Allocated (was zp[1]:9) zp[1]:4 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
Allocated (was zp[1]:10) zp[1]:5 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
Allocated (was zp[1]:12) zp[1]:6 [ doplasma::i1#2 doplasma::i1#1 ]
Allocated (was zp[1]:13) zp[1]:7 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
Allocated (was zp[1]:14) zp[1]:8 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
Allocated (was zp[2]:16) zp[2]:9 [ makecharset::c#2 makecharset::c#1 main::col#2 main::col#1 ]
Allocated (was zp[1]:20) zp[1]:11 [ makecharset::i#2 makecharset::i#1 c1A#1 c1A#3 ]
Allocated (was zp[2]:23) zp[2]:12 [ memset::dst#2 memset::dst#1 print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ]
Allocated (was zp[1]:52) zp[1]:14 [ doplasma::yval#0 ]
Allocated (was zp[1]:55) zp[1]:15 [ makecharset::s#0 c1B#1 c1B#3 ]
Allocated (was zp[2]:57) zp[2]:16 [ makecharset::$10 makecharset::$11 makecharset::$16 ]
Allocated (was zp[1]:65) zp[1]:18 [ makecharset::$7 c2A#1 c2A#3 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// A KickC version of the plasma routine from the CC65 samples
// This version has an unrolled inner loop to reach 50+FPS
// This version also optimizes the inner loop by calculating the Y buffer as a set of differences
// (w)2001 by groepaz/hitmen
// Cleanup and porting to CC65 by Ullrich von Bassewitz.
// Ported to KickC by Jesper Gravgaard.
// Original source https://github.com/cc65/cc65/blob/master/samples/plasma.c
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label BORDERCOL = $d020
  .label BGCOL = $d021
  .label D018 = $d018
  // Color Ram
  .label COLS = $d800
  // The colors of the C64
  .const BLACK = 0
  .const BLUE = 6
  // SID registers for random number generation
  .label SID_VOICE3_FREQ = $d40e
  .label SID_VOICE3_CONTROL = $d412
  .const SID_CONTROL_NOISE = $80
  .label SID_VOICE3_OSC = $d41b
  .label SCREEN1 = $2800
  .label CHARSET = $2000
  .label print_line_cursor = $400
  .label print_char_cursor = $c
  // Plasma state variables
  .label c1A = $b
  .label c1B = $f
  .label c2A = $12
  .label c2B = 2
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .label col = 9
    // asm { sei  }
    sei
    // [5] *((const byte*) BORDERCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta BORDERCOL
    // [6] *((const byte*) BGCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta BGCOL
    // [7] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [7] phi (byte*) main::col#2 = (const byte*) COLS [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<COLS
    sta.z col
    lda #>COLS
    sta.z col+1
    jmp __b1
    // [7] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
  __b1_from___b1:
    // [7] phi (byte*) main::col#2 = (byte*) main::col#1 [phi:main::@1->main::@1#0] -- register_copy 
    jmp __b1
    // main::@1
  __b1:
    // [8] *((byte*) main::col#2) ← (const byte) BLACK -- _deref_pbuz1=vbuc1 
    lda #BLACK
    ldy #0
    sta (col),y
    // [9] (byte*) main::col#1 ← ++ (byte*) main::col#2 -- pbuz1=_inc_pbuz1 
    inc.z col
    bne !+
    inc.z col+1
  !:
    // [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda.z col+1
    cmp #>COLS+$3e8+1
    bne __b1_from___b1
    lda.z col
    cmp #<COLS+$3e8+1
    bne __b1_from___b1
    // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [12] call makecharset 
    // [97] phi from main::@2 to makecharset [phi:main::@2->makecharset]
  makecharset_from___b2:
    jsr makecharset
    // [13] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
  toD0181_from___b2:
    jmp toD0181
    // main::toD0181
  toD0181:
    jmp __b5
    // main::@5
  __b5:
    // [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [15] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
  __b3_from___b5:
    // [15] phi (byte) c2B#1 = (byte) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c2B
    // [15] phi (byte) c2A#1 = (byte) 0 [phi:main::@5->main::@3#1] -- vbuz1=vbuc1 
    lda #0
    sta.z c2A
    // [15] phi (byte) c1B#1 = (byte) 0 [phi:main::@5->main::@3#2] -- vbuz1=vbuc1 
    lda #0
    sta.z c1B
    // [15] phi (byte) c1A#1 = (byte) 0 [phi:main::@5->main::@3#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c1A
    jmp __b3
    // main::@3
  __b3:
    // [16] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [17] call doplasma 
    jsr doplasma
    // [15] phi from main::@4 to main::@3 [phi:main::@4->main::@3]
  __b3_from___b4:
    // [15] phi (byte) c2B#1 = (byte) c2B#3 [phi:main::@4->main::@3#0] -- register_copy 
    // [15] phi (byte) c2A#1 = (byte) c2A#3 [phi:main::@4->main::@3#1] -- register_copy 
    // [15] phi (byte) c1B#1 = (byte) c1B#3 [phi:main::@4->main::@3#2] -- register_copy 
    // [15] phi (byte) c1A#1 = (byte) c1A#3 [phi:main::@4->main::@3#3] -- register_copy 
    jmp __b3
}
  // doplasma
// Render plasma to the passed screen
doplasma: {
    .label c1a = 4
    .label c1b = 5
    .label yval = $e
    .label i = 3
    .label c2a = 7
    .label c2b = 8
    .label i1 = 6
    // [18] (byte) doplasma::c1a#0 ← (byte) c1A#1 -- vbuz1=vbuz2 
    lda.z c1A
    sta.z c1a
    // [19] (byte) doplasma::c1b#0 ← (byte) c1B#1 -- vbuz1=vbuz2 
    lda.z c1B
    sta.z c1b
    // [20] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
  __b1_from_doplasma:
    // [20] phi (byte) doplasma::yprev#2 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [20] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [20] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [20] phi (byte) doplasma::i#2 = (byte) 0 [phi:doplasma->doplasma::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
  // Calculate ybuff as a bunch of differences
    // doplasma::@1
  __b1:
    // [21] if((byte) doplasma::i#2<(byte) $19) goto doplasma::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #$19
    bcc __b2
    jmp __b3
    // doplasma::@3
  __b3:
    // [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1A
    axs #-[3]
    stx.z c1A
    // [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c1B
    axs #5
    stx.z c1B
    // [24] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 
    lda.z c2A
    sta.z c2a
    // [25] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 
    lda.z c2B
    sta.z c2b
    // [26] phi from doplasma::@3 to doplasma::@4 [phi:doplasma::@3->doplasma::@4]
  __b4_from___b3:
    // [26] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@3->doplasma::@4#0] -- register_copy 
    // [26] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@3->doplasma::@4#1] -- register_copy 
    // [26] phi (byte) doplasma::i1#2 = (byte) 0 [phi:doplasma::@3->doplasma::@4#2] -- vbuz1=vbuc1 
    lda #0
    sta.z i1
    jmp __b4
    // doplasma::@4
  __b4:
    // [27] if((byte) doplasma::i1#2<(byte) $28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i1
    cmp #$28
    bcc __b5
    jmp __b6
    // doplasma::@6
  __b6:
    // [28] (byte) c2A#3 ← (byte) c2A#1 + (byte) 2 -- vbuz1=vbuz1_plus_2 
    lda.z c2A
    clc
    adc #2
    sta.z c2A
    // [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c2B
    axs #3
    stx.z c2B
    // [30] phi from doplasma::@6 to doplasma::@7 [phi:doplasma::@6->doplasma::@7]
  __b7_from___b6:
    // [30] phi (byte) doplasma::i2#2 = (byte) 0 [phi:doplasma::@6->doplasma::@7#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b7
    // doplasma::@7
  __b7:
    // [31] if((byte) doplasma::i2#2<(byte) $28) goto doplasma::@8 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$28
    bcc __b8
    jmp __breturn
    // doplasma::@return
  __breturn:
    // [32] return 
    rts
    // doplasma::@8
  __b8:
    // [33] (byte) doplasma::val#0 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2) -- vbuaa=pbuc1_derefidx_vbuxx 
    // Find the first value on the row
    lda xbuf,x
    jmp __b9
    // doplasma::@9
  __b9:
    // [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf
    // [35] *((const byte*) SCREEN1 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1,x
    jmp __b17_1
    // doplasma::@17_1
  __b17_1:
    // [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+1
    // [37] *((const byte*) SCREEN1+(byte) 1*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#5 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+1*$28,x
    jmp __b17_2
    // doplasma::@17_2
  __b17_2:
    // [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+2
    // [39] *((const byte*) SCREEN1+(byte) 2*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#7 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+2*$28,x
    jmp __b17_3
    // doplasma::@17_3
  __b17_3:
    // [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+3
    // [41] *((const byte*) SCREEN1+(byte) 3*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+3*$28,x
    jmp __b17_4
    // doplasma::@17_4
  __b17_4:
    // [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+4
    // [43] *((const byte*) SCREEN1+(byte) 4*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#11 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+4*$28,x
    jmp __b17_5
    // doplasma::@17_5
  __b17_5:
    // [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+5
    // [45] *((const byte*) SCREEN1+(byte) 5*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#13 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+5*$28,x
    jmp __b17_6
    // doplasma::@17_6
  __b17_6:
    // [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+6
    // [47] *((const byte*) SCREEN1+(byte) 6*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#15 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+6*$28,x
    jmp __b17_7
    // doplasma::@17_7
  __b17_7:
    // [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+7
    // [49] *((const byte*) SCREEN1+(byte) 7*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#17 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+7*$28,x
    jmp __b17_8
    // doplasma::@17_8
  __b17_8:
    // [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+8
    // [51] *((const byte*) SCREEN1+(byte) 8*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#19 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+8*$28,x
    jmp __b17_9
    // doplasma::@17_9
  __b17_9:
    // [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+9
    // [53] *((const byte*) SCREEN1+(byte) 9*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#21 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+9*$28,x
    jmp __b17_10
    // doplasma::@17_10
  __b17_10:
    // [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$a
    // [55] *((const byte*) SCREEN1+(byte) $a*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#23 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$a*$28,x
    jmp __b17_11
    // doplasma::@17_11
  __b17_11:
    // [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$b
    // [57] *((const byte*) SCREEN1+(byte) $b*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#25 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$b*$28,x
    jmp __b17_12
    // doplasma::@17_12
  __b17_12:
    // [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$c
    // [59] *((const byte*) SCREEN1+(byte) $c*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#27 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$c*$28,x
    jmp __b17_13
    // doplasma::@17_13
  __b17_13:
    // [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$d
    // [61] *((const byte*) SCREEN1+(byte) $d*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#29 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$d*$28,x
    jmp __b17_14
    // doplasma::@17_14
  __b17_14:
    // [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$e
    // [63] *((const byte*) SCREEN1+(byte) $e*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#31 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$e*$28,x
    jmp __b17_15
    // doplasma::@17_15
  __b17_15:
    // [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$f
    // [65] *((const byte*) SCREEN1+(byte) $f*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#33 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$f*$28,x
    jmp __b17_16
    // doplasma::@17_16
  __b17_16:
    // [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$10
    // [67] *((const byte*) SCREEN1+(byte) $10*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#35 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$10*$28,x
    jmp __b17_17
    // doplasma::@17_17
  __b17_17:
    // [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$11
    // [69] *((const byte*) SCREEN1+(byte) $11*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#37 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$11*$28,x
    jmp __b17_18
    // doplasma::@17_18
  __b17_18:
    // [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$12
    // [71] *((const byte*) SCREEN1+(byte) $12*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#39 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$12*$28,x
    jmp __b17_19
    // doplasma::@17_19
  __b17_19:
    // [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$13
    // [73] *((const byte*) SCREEN1+(byte) $13*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#41 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$13*$28,x
    jmp __b17_20
    // doplasma::@17_20
  __b17_20:
    // [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$14
    // [75] *((const byte*) SCREEN1+(byte) $14*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#43 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$14*$28,x
    jmp __b17_21
    // doplasma::@17_21
  __b17_21:
    // [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$15
    // [77] *((const byte*) SCREEN1+(byte) $15*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#45 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$15*$28,x
    jmp __b17_22
    // doplasma::@17_22
  __b17_22:
    // [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$16
    // [79] *((const byte*) SCREEN1+(byte) $16*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#47 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$16*$28,x
    jmp __b17_23
    // doplasma::@17_23
  __b17_23:
    // [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$17
    // [81] *((const byte*) SCREEN1+(byte) $17*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#49 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$17*$28,x
    jmp __b17_24
    // doplasma::@17_24
  __b17_24:
    // [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$18
    // [83] *((const byte*) SCREEN1+(byte) $18*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#51 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$18*$28,x
    jmp __b10
    // doplasma::@10
  __b10:
    // [84] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuxx=_inc_vbuxx 
    inx
    // [30] phi from doplasma::@10 to doplasma::@7 [phi:doplasma::@10->doplasma::@7]
  __b7_from___b10:
    // [30] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@10->doplasma::@7#0] -- register_copy 
    jmp __b7
    // doplasma::@5
  __b5:
    // [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 
    ldy.z c2a
    lda SINTABLE,y
    ldy.z c2b
    clc
    adc SINTABLE,y
    // [86] *((const byte*) doplasma::xbuf + (byte) doplasma::i1#2) ← (byte~) doplasma::$4 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z i1
    sta xbuf,y
    // [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2a
    axs #-[3]
    stx.z c2a
    // [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2b
    axs #-[7]
    stx.z c2b
    // [89] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 
    inc.z i1
    // [26] phi from doplasma::@5 to doplasma::@4 [phi:doplasma::@5->doplasma::@4]
  __b4_from___b5:
    // [26] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@5->doplasma::@4#0] -- register_copy 
    // [26] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@5->doplasma::@4#1] -- register_copy 
    // [26] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@5->doplasma::@4#2] -- register_copy 
    jmp __b4
    // doplasma::@2
  __b2:
    // [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 
    ldy.z c1a
    lda SINTABLE,y
    ldy.z c1b
    clc
    adc SINTABLE,y
    sta.z yval
    // [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 -- vbuaa=vbuz1_minus_vbuxx 
    txa
    eor #$ff
    sec
    adc.z yval
    // [92] *((const byte*) doplasma::ybuf + (byte) doplasma::i#2) ← (byte~) doplasma::$2 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z i
    sta ybuf,y
    // [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1a
    axs #-[4]
    stx.z c1a
    // [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1b
    axs #-[9]
    stx.z c1b
    // [95] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [96] (byte) doplasma::yprev#4 ← (byte) doplasma::yval#0 -- vbuxx=vbuz1 
    ldx.z yval
    // [20] phi from doplasma::@2 to doplasma::@1 [phi:doplasma::@2->doplasma::@1]
  __b1_from___b2:
    // [20] phi (byte) doplasma::yprev#2 = (byte) doplasma::yprev#4 [phi:doplasma::@2->doplasma::@1#0] -- register_copy 
    // [20] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@2->doplasma::@1#1] -- register_copy 
    // [20] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@2->doplasma::@1#2] -- register_copy 
    // [20] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@2->doplasma::@1#3] -- register_copy 
    jmp __b1
    xbuf: .fill $28, 0
    ybuf: .fill $19, 0
}
  // makecharset
// Make a plasma-friendly charset where the chars are randomly filled
makecharset: {
    .label __7 = $12
    .label __10 = $10
    .label __11 = $10
    .label s = $f
    .label i = $b
    .label c = 9
    .label __16 = $10
    // [98] call sid_rnd_init 
    jsr sid_rnd_init
    // [99] phi from makecharset to makecharset::@12 [phi:makecharset->makecharset::@12]
  __b12_from_makecharset:
    jmp __b12
    // makecharset::@12
  __b12:
    // [100] call print_cls 
    // [135] phi from makecharset::@12 to print_cls [phi:makecharset::@12->print_cls]
  print_cls_from___b12:
    jsr print_cls
    // [101] phi from makecharset::@12 to makecharset::@1 [phi:makecharset::@12->makecharset::@1]
  __b1_from___b12:
    // [101] phi (byte*) print_char_cursor#18 = (const byte*) print_line_cursor#0 [phi:makecharset::@12->makecharset::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta.z print_char_cursor
    lda #>print_line_cursor
    sta.z print_char_cursor+1
    // [101] phi (word) makecharset::c#2 = (word) 0 [phi:makecharset::@12->makecharset::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z c
    lda #>0
    sta.z c+1
    jmp __b1
    // makecharset::@1
  __b1:
    // [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 -- vwuz1_lt_vwuc1_then_la1 
    lda.z c+1
    cmp #>$100
    bcc __b2
    bne !+
    lda.z c
    cmp #<$100
    bcc __b2
  !:
    jmp __breturn
    // makecharset::@return
  __breturn:
    // [103] return 
    rts
    // makecharset::@2
  __b2:
    // [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 
    lda.z c
    // [105] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3) -- vbuz1=pbuc1_derefidx_vbuaa 
    tay
    lda SINTABLE,y
    sta.z s
    // [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3]
  __b3_from___b2:
    // [106] phi (byte) makecharset::i#2 = (byte) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b3
    // makecharset::@3
  __b3:
    // [107] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #8
    bcc __b5_from___b3
    jmp __b4
    // makecharset::@4
  __b4:
    // [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 -- vbuaa=vwuz1_band_vbuc1 
    lda #7
    and.z c
    // [109] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@11 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b11_from___b4
    // [110] phi from makecharset::@4 to makecharset::@10 [phi:makecharset::@4->makecharset::@10]
  __b10_from___b4:
    jmp __b10
    // makecharset::@10
  __b10:
    // [111] call print_char 
    jsr print_char
    // [112] phi from makecharset::@10 makecharset::@4 to makecharset::@11 [phi:makecharset::@10/makecharset::@4->makecharset::@11]
  __b11_from___b10:
  __b11_from___b4:
    // [112] phi (byte*) print_char_cursor#30 = (byte*) print_char_cursor#1 [phi:makecharset::@10/makecharset::@4->makecharset::@11#0] -- register_copy 
    jmp __b11
    // makecharset::@11
  __b11:
    // [113] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 
    inc.z c
    bne !+
    inc.z c+1
  !:
    // [101] phi from makecharset::@11 to makecharset::@1 [phi:makecharset::@11->makecharset::@1]
  __b1_from___b11:
    // [101] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#30 [phi:makecharset::@11->makecharset::@1#0] -- register_copy 
    // [101] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@11->makecharset::@1#1] -- register_copy 
    jmp __b1
    // [114] phi from makecharset::@3 to makecharset::@5 [phi:makecharset::@3->makecharset::@5]
  __b5_from___b3:
    // [114] phi (byte) makecharset::b#2 = (byte) 0 [phi:makecharset::@3->makecharset::@5#0] -- vbuyy=vbuc1 
    ldy #0
    // [114] phi (byte) makecharset::ii#2 = (byte) 0 [phi:makecharset::@3->makecharset::@5#1] -- vbuxx=vbuc1 
    ldx #0
    jmp __b5
    // makecharset::@5
  __b5:
    // [115] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@6 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc __b6_from___b5
    jmp __b7
    // makecharset::@7
  __b7:
    // [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 -- vwuz1=vwuz2_rol_3 
    lda.z c
    asl
    sta.z __10
    lda.z c+1
    rol
    sta.z __10+1
    asl.z __10
    rol.z __10+1
    asl.z __10
    rol.z __10+1
    // [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda.z i
    clc
    adc.z __11
    sta.z __11
    bcc !+
    inc.z __11+1
  !:
    // [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 -- pbuz1=pbuc1_plus_vwuz1 
    clc
    lda.z __16
    adc #<CHARSET
    sta.z __16
    lda.z __16+1
    adc #>CHARSET
    sta.z __16+1
    // [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (__16),y
    // [120] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [106] phi from makecharset::@7 to makecharset::@3 [phi:makecharset::@7->makecharset::@3]
  __b3_from___b7:
    // [106] phi (byte) makecharset::i#2 = (byte) makecharset::i#1 [phi:makecharset::@7->makecharset::@3#0] -- register_copy 
    jmp __b3
    // [121] phi from makecharset::@5 to makecharset::@6 [phi:makecharset::@5->makecharset::@6]
  __b6_from___b5:
    jmp __b6
    // makecharset::@6
  __b6:
    // [122] call sid_rnd 
    jsr sid_rnd
    // [123] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
    jmp __b13
    // makecharset::@13
  __b13:
    // [124] (byte~) makecharset::$6 ← (byte) sid_rnd::return#2
    // [125] (byte~) makecharset::$7 ← (byte~) makecharset::$6 & (byte) $ff -- vbuz1=vbuaa_band_vbuc1 
    and #$ff
    sta.z __7
    // [126] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@8 -- vbuz1_le_vbuz2_then_la1 
    lda.z s
    cmp.z __7
    bcs __b8_from___b13
    jmp __b9
    // makecharset::@9
  __b9:
    // [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx 
    tya
    ora bittab,x
    tay
    // [128] phi from makecharset::@13 makecharset::@9 to makecharset::@8 [phi:makecharset::@13/makecharset::@9->makecharset::@8]
  __b8_from___b13:
  __b8_from___b9:
    // [128] phi (byte) makecharset::b#6 = (byte) makecharset::b#2 [phi:makecharset::@13/makecharset::@9->makecharset::@8#0] -- register_copy 
    jmp __b8
    // makecharset::@8
  __b8:
    // [129] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx 
    inx
    // [114] phi from makecharset::@8 to makecharset::@5 [phi:makecharset::@8->makecharset::@5]
  __b5_from___b8:
    // [114] phi (byte) makecharset::b#2 = (byte) makecharset::b#6 [phi:makecharset::@8->makecharset::@5#0] -- register_copy 
    // [114] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@8->makecharset::@5#1] -- register_copy 
    jmp __b5
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
  // sid_rnd
// Get a random number from the SID voice 3,
// Must be initialized with sid_rnd_init()
sid_rnd: {
    // [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC) -- vbuaa=_deref_pbuc1 
    lda SID_VOICE3_OSC
    jmp __breturn
    // sid_rnd::@return
  __breturn:
    // [131] return 
    rts
}
  // print_char
// Print a single char
print_char: {
    .const ch = '.'
    // [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // [133] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#18 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp __breturn
    // print_char::@return
  __breturn:
    // [134] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [136] call memset 
    // [138] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [137] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = print_line_cursor
    .label end = str+num
    .label dst = $c
    // [139] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [139] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp __b1
    // memset::@1
  __b1:
    // [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne __b2
    lda.z dst
    cmp #<end
    bne __b2
    jmp __breturn
    // memset::@return
  __breturn:
    // [141] return 
    rts
    // memset::@2
  __b2:
    // [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [139] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [139] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // sid_rnd_init
// Initialize SID voice 3 for random number generation
sid_rnd_init: {
    // [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID_VOICE3_FREQ
    lda #>$ffff
    sta SID_VOICE3_FREQ+1
    // [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID_VOICE3_CONTROL
    jmp __breturn
    // sid_rnd_init::@return
  __breturn:
    // [146] return 
    rts
}
  // File Data
  .align $100
SINTABLE:
.for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(toRadians(360*i/256)))


ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __bend
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp toD0181
Removing instruction jmp __b5
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __breturn
Removing instruction jmp __b9
Removing instruction jmp __b17_1
Removing instruction jmp __b17_2
Removing instruction jmp __b17_3
Removing instruction jmp __b17_4
Removing instruction jmp __b17_5
Removing instruction jmp __b17_6
Removing instruction jmp __b17_7
Removing instruction jmp __b17_8
Removing instruction jmp __b17_9
Removing instruction jmp __b17_10
Removing instruction jmp __b17_11
Removing instruction jmp __b17_12
Removing instruction jmp __b17_13
Removing instruction jmp __b17_14
Removing instruction jmp __b17_15
Removing instruction jmp __b17_16
Removing instruction jmp __b17_17
Removing instruction jmp __b17_18
Removing instruction jmp __b17_19
Removing instruction jmp __b17_20
Removing instruction jmp __b17_21
Removing instruction jmp __b17_22
Removing instruction jmp __b17_23
Removing instruction jmp __b17_24
Removing instruction jmp __b10
Removing instruction jmp __b12
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b5
Removing instruction jmp __b7
Removing instruction jmp __b6
Removing instruction jmp __b13
Removing instruction jmp __b9
Removing instruction jmp __b8
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #BLUE
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Replacing instruction lda #0 with TXA
Removing instruction lda #>0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __bbegin with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b3 with __b4
Replacing label __b11_from___b4 with __b11
Replacing label __b6_from___b5 with __b6
Replacing label __b8_from___b13 with __b8
Removing instruction __bbegin:
Removing instruction __b1_from___bbegin:
Removing instruction __bend_from___b1:
Removing instruction __b1_from___b1:
Removing instruction __b2_from___b1:
Removing instruction makecharset_from___b2:
Removing instruction toD0181_from___b2:
Removing instruction toD0181:
Removing instruction __b3:
Removing instruction __b4_from___b3:
Removing instruction __b12_from_makecharset:
Removing instruction print_cls_from___b12:
Removing instruction __b10_from___b4:
Removing instruction __b11_from___b10:
Removing instruction __b11_from___b4:
Removing instruction __b6_from___b5:
Removing instruction __b8_from___b13:
Removing instruction __b8_from___b9:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __bend:
Removing instruction __b1_from_main:
Removing instruction __b2:
Removing instruction __b5:
Removing instruction __b3_from___b5:
Removing instruction __b3_from___b4:
Removing instruction __b1_from_doplasma:
Removing instruction __b3:
Removing instruction __b4_from___b3:
Removing instruction __b6:
Removing instruction __b7_from___b6:
Removing instruction __breturn:
Removing instruction __b9:
Removing instruction __b17_1:
Removing instruction __b17_2:
Removing instruction __b17_3:
Removing instruction __b17_4:
Removing instruction __b17_5:
Removing instruction __b17_6:
Removing instruction __b17_7:
Removing instruction __b17_8:
Removing instruction __b17_9:
Removing instruction __b17_10:
Removing instruction __b17_11:
Removing instruction __b17_12:
Removing instruction __b17_13:
Removing instruction __b17_14:
Removing instruction __b17_15:
Removing instruction __b17_16:
Removing instruction __b17_17:
Removing instruction __b17_18:
Removing instruction __b17_19:
Removing instruction __b17_20:
Removing instruction __b17_21:
Removing instruction __b17_22:
Removing instruction __b17_23:
Removing instruction __b17_24:
Removing instruction __b10:
Removing instruction __b7_from___b10:
Removing instruction __b4_from___b5:
Removing instruction __b1_from___b2:
Removing instruction __b12:
Removing instruction __b1_from___b12:
Removing instruction __breturn:
Removing instruction __b3_from___b2:
Removing instruction __b4:
Removing instruction __b10:
Removing instruction __b1_from___b11:
Removing instruction __b7:
Removing instruction __b3_from___b7:
Removing instruction __b13:
Removing instruction __b9:
Removing instruction __b5_from___b8:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction memset_from_print_cls:
Removing instruction __breturn:
Removing instruction __b1_from_memset:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Relabelling long label __b5_from___b3 to b1
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [89] bcc __b2 to bcs
Fixing long branch [107] bcc __b5 to bcs

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte) BLACK = (byte) 0
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CHARSET = (byte*) 8192
(const byte*) COLS = (byte*) 55296
(const byte*) D018 = (byte*) 53272
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN1 = (byte*) 10240
(const byte) SID_CONTROL_NOISE = (byte) $80
(const byte*) SID_VOICE3_CONTROL = (byte*) 54290
(const word*) SID_VOICE3_FREQ = (word*) 54286
(const byte*) SID_VOICE3_OSC = (byte*) 54299
(const byte*) SINTABLE[(number) $100]  = kickasm {{ .for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(toRadians(360*i/256)))
 }}
(byte) c1A
(byte) c1A#1 c1A zp[1]:11 1.1538461538461537
(byte) c1A#3 c1A zp[1]:11 0.18840579710144925
(byte) c1B
(byte) c1B#1 c1B zp[1]:15 1.0714285714285714
(byte) c1B#3 c1B zp[1]:15 0.1911764705882353
(byte) c2A
(byte) c2A#1 c2A zp[1]:18 0.625
(byte) c2A#3 c2A zp[1]:18 0.22413793103448276
(byte) c2B
(byte) c2B#1 c2B zp[1]:2 0.6
(byte) c2B#3 c2B zp[1]:2 0.22807017543859648
(void()) doplasma((byte*) doplasma::screen)
(byte~) doplasma::$2 reg byte a 202.0
(byte~) doplasma::$4 reg byte a 202.0
(label) doplasma::@1
(label) doplasma::@10
(label) doplasma::@17_1
(label) doplasma::@17_10
(label) doplasma::@17_11
(label) doplasma::@17_12
(label) doplasma::@17_13
(label) doplasma::@17_14
(label) doplasma::@17_15
(label) doplasma::@17_16
(label) doplasma::@17_17
(label) doplasma::@17_18
(label) doplasma::@17_19
(label) doplasma::@17_2
(label) doplasma::@17_20
(label) doplasma::@17_21
(label) doplasma::@17_22
(label) doplasma::@17_23
(label) doplasma::@17_24
(label) doplasma::@17_3
(label) doplasma::@17_4
(label) doplasma::@17_5
(label) doplasma::@17_6
(label) doplasma::@17_7
(label) doplasma::@17_8
(label) doplasma::@17_9
(label) doplasma::@2
(label) doplasma::@3
(label) doplasma::@4
(label) doplasma::@5
(label) doplasma::@6
(label) doplasma::@7
(label) doplasma::@8
(label) doplasma::@9
(label) doplasma::@return
(byte) doplasma::c1a
(byte) doplasma::c1a#0 c1a zp[1]:4 2.0
(byte) doplasma::c1a#1 c1a zp[1]:4 50.5
(byte) doplasma::c1a#2 c1a zp[1]:4 61.0
(byte) doplasma::c1b
(byte) doplasma::c1b#0 c1b zp[1]:5 4.0
(byte) doplasma::c1b#1 c1b zp[1]:5 67.33333333333333
(byte) doplasma::c1b#2 c1b zp[1]:5 50.83333333333333
(byte) doplasma::c2a
(byte) doplasma::c2a#0 c2a zp[1]:7 2.0
(byte) doplasma::c2a#1 c2a zp[1]:7 67.33333333333333
(byte) doplasma::c2a#2 c2a zp[1]:7 76.25
(byte) doplasma::c2b
(byte) doplasma::c2b#0 c2b zp[1]:8 4.0
(byte) doplasma::c2b#1 c2b zp[1]:8 101.0
(byte) doplasma::c2b#2 c2b zp[1]:8 61.0
(byte) doplasma::i
(byte) doplasma::i#1 i zp[1]:3 101.0
(byte) doplasma::i#2 i zp[1]:3 57.714285714285715
(byte) doplasma::i1
(byte) doplasma::i1#1 i1 zp[1]:6 202.0
(byte) doplasma::i1#2 i1 zp[1]:6 67.33333333333333
(byte) doplasma::i2
(byte) doplasma::i2#1 reg byte x 202.0
(byte) doplasma::i2#2 reg byte x 55.26415094339627
(byte) doplasma::ii
(byte*) doplasma::screen
(byte) doplasma::val
(byte) doplasma::val#0 reg byte a 202.0
(byte) doplasma::val#1 reg byte a 151.5
(byte) doplasma::val#10 reg byte a 151.5
(byte) doplasma::val#11 reg byte a 151.5
(byte) doplasma::val#13 reg byte a 151.5
(byte) doplasma::val#15 reg byte a 151.5
(byte) doplasma::val#17 reg byte a 151.5
(byte) doplasma::val#19 reg byte a 151.5
(byte) doplasma::val#21 reg byte a 151.5
(byte) doplasma::val#23 reg byte a 151.5
(byte) doplasma::val#25 reg byte a 151.5
(byte) doplasma::val#27 reg byte a 151.5
(byte) doplasma::val#29 reg byte a 151.5
(byte) doplasma::val#31 reg byte a 151.5
(byte) doplasma::val#33 reg byte a 151.5
(byte) doplasma::val#35 reg byte a 151.5
(byte) doplasma::val#37 reg byte a 151.5
(byte) doplasma::val#39 reg byte a 151.5
(byte) doplasma::val#41 reg byte a 151.5
(byte) doplasma::val#43 reg byte a 151.5
(byte) doplasma::val#45 reg byte a 151.5
(byte) doplasma::val#47 reg byte a 151.5
(byte) doplasma::val#49 reg byte a 151.5
(byte) doplasma::val#5 reg byte a 151.5
(byte) doplasma::val#51 reg byte a 202.0
(byte) doplasma::val#7 reg byte a 151.5
(const byte*) doplasma::xbuf[(number) $28]  = { fill( $28, 0) }
(const byte*) doplasma::ybuf[(number) $19]  = { fill( $19, 0) }
(byte) doplasma::yprev
(byte) doplasma::yprev#2 reg byte x 67.33333333333333
(byte) doplasma::yprev#4 reg byte x 202.0
(byte) doplasma::yval
(byte) doplasma::yval#0 yval zp[1]:14 50.5
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(byte*) main::col
(byte*) main::col#1 col zp[2]:9 16.5
(byte*) main::col#2 col zp[2]:9 16.5
(label) main::toD0181
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN1&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET/(byte) 4&(byte) $f
(byte*) main::toD0181_screen
(void()) makecharset((byte*) makecharset::charset)
(word~) makecharset::$10 zp[2]:16 202.0
(word~) makecharset::$11 zp[2]:16 202.0
(byte~) makecharset::$12 reg byte a 22.0
(byte*~) makecharset::$16 zp[2]:16 202.0
(byte~) makecharset::$3 reg byte a 22.0
(byte~) makecharset::$6 reg byte a 2002.0
(byte~) makecharset::$7 zp[1]:18 2002.0
(label) makecharset::@1
(label) makecharset::@10
(label) makecharset::@11
(label) makecharset::@12
(label) makecharset::@13
(label) makecharset::@2
(label) makecharset::@3
(label) makecharset::@4
(label) makecharset::@5
(label) makecharset::@6
(label) makecharset::@7
(label) makecharset::@8
(label) makecharset::@9
(label) makecharset::@return
(byte) makecharset::b
(byte) makecharset::b#1 reg byte y 2002.0
(byte) makecharset::b#2 reg byte y 282.1818181818182
(byte) makecharset::b#6 reg byte y 1501.5
(const byte*) makecharset::bittab[(number) 8]  = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(word) makecharset::c
(word) makecharset::c#1 c zp[2]:9 22.0
(word) makecharset::c#2 c zp[2]:9 5.777777777777778
(byte*) makecharset::charset
(byte) makecharset::i
(byte) makecharset::i#1 i zp[1]:11 202.0
(byte) makecharset::i#2 i zp[1]:11 23.764705882352942
(byte) makecharset::ii
(byte) makecharset::ii#1 reg byte x 2002.0
(byte) makecharset::ii#2 reg byte x 400.4
(byte) makecharset::s
(byte) makecharset::s#0 s zp[1]:15 53.26315789473684
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@return
(byte) memset::c
(const byte) memset::c#0 c = (byte) ' '
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:12 22.0
(byte*) memset::dst#2 dst zp[2]:12 14.666666666666666
(byte*) memset::end
(const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0
(word) memset::num
(const word) memset::num#0 num = (word) $3e8
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(const byte*) print_line_cursor#0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(const byte) print_char::ch#0 ch = (byte) '.'
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:12 4.333333333333333
(byte*) print_char_cursor#18 print_char_cursor zp[2]:12 1.0
(byte*) print_char_cursor#30 print_char_cursor zp[2]:12 16.5
(void()) print_cls()
(label) print_cls::@return
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(byte*) print_screen
(byte()) sid_rnd()
(label) sid_rnd::@return
(byte) sid_rnd::return
(byte) sid_rnd::return#0 reg byte a 334.33333333333337
(byte) sid_rnd::return#2 reg byte a 2002.0
(void()) sid_rnd_init()
(label) sid_rnd_init::@return

zp[1]:2 [ c2B#1 c2B#3 ]
zp[1]:3 [ doplasma::i#2 doplasma::i#1 ]
zp[1]:4 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
zp[1]:5 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
reg byte x [ doplasma::yprev#2 doplasma::yprev#4 ]
zp[1]:6 [ doplasma::i1#2 doplasma::i1#1 ]
zp[1]:7 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
zp[1]:8 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
reg byte x [ doplasma::i2#2 doplasma::i2#1 ]
zp[2]:9 [ makecharset::c#2 makecharset::c#1 main::col#2 main::col#1 ]
zp[1]:11 [ makecharset::i#2 makecharset::i#1 c1A#1 c1A#3 ]
reg byte x [ makecharset::ii#2 makecharset::ii#1 ]
reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
zp[2]:12 [ memset::dst#2 memset::dst#1 print_char_cursor#18 print_char_cursor#30 print_char_cursor#1 ]
reg byte a [ doplasma::val#0 ]
reg byte a [ doplasma::val#1 ]
reg byte a [ doplasma::val#5 ]
reg byte a [ doplasma::val#7 ]
reg byte a [ doplasma::val#10 ]
reg byte a [ doplasma::val#11 ]
reg byte a [ doplasma::val#13 ]
reg byte a [ doplasma::val#15 ]
reg byte a [ doplasma::val#17 ]
reg byte a [ doplasma::val#19 ]
reg byte a [ doplasma::val#21 ]
reg byte a [ doplasma::val#23 ]
reg byte a [ doplasma::val#25 ]
reg byte a [ doplasma::val#27 ]
reg byte a [ doplasma::val#29 ]
reg byte a [ doplasma::val#31 ]
reg byte a [ doplasma::val#33 ]
reg byte a [ doplasma::val#35 ]
reg byte a [ doplasma::val#37 ]
reg byte a [ doplasma::val#39 ]
reg byte a [ doplasma::val#41 ]
reg byte a [ doplasma::val#43 ]
reg byte a [ doplasma::val#45 ]
reg byte a [ doplasma::val#47 ]
reg byte a [ doplasma::val#49 ]
reg byte a [ doplasma::val#51 ]
reg byte a [ doplasma::$4 ]
zp[1]:14 [ doplasma::yval#0 ]
reg byte a [ doplasma::$2 ]
reg byte a [ makecharset::$3 ]
zp[1]:15 [ makecharset::s#0 c1B#1 c1B#3 ]
reg byte a [ makecharset::$12 ]
zp[2]:16 [ makecharset::$10 makecharset::$11 makecharset::$16 ]
reg byte a [ sid_rnd::return#2 ]
reg byte a [ makecharset::$6 ]
zp[1]:18 [ makecharset::$7 c2A#1 c2A#3 ]
reg byte a [ sid_rnd::return#0 ]


FINAL ASSEMBLER
Score: 97686

  // File Comments
// A KickC version of the plasma routine from the CC65 samples
// This version has an unrolled inner loop to reach 50+FPS
// This version also optimizes the inner loop by calculating the Y buffer as a set of differences
// (w)2001 by groepaz/hitmen
// Cleanup and porting to CC65 by Ullrich von Bassewitz.
// Ported to KickC by Jesper Gravgaard.
// Original source https://github.com/cc65/cc65/blob/master/samples/plasma.c
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
  // Global Constants & labels
  .label BORDERCOL = $d020
  .label BGCOL = $d021
  .label D018 = $d018
  // Color Ram
  .label COLS = $d800
  // The colors of the C64
  .const BLACK = 0
  .const BLUE = 6
  // SID registers for random number generation
  .label SID_VOICE3_FREQ = $d40e
  .label SID_VOICE3_CONTROL = $d412
  .const SID_CONTROL_NOISE = $80
  .label SID_VOICE3_OSC = $d41b
  .label SCREEN1 = $2800
  .label CHARSET = $2000
  .label print_line_cursor = $400
  .label print_char_cursor = $c
  // Plasma state variables
  .label c1A = $b
  .label c1B = $f
  .label c2A = $12
  .label c2B = 2
  // @begin
  // [1] phi from @begin to @1 [phi:@begin->@1]
  // @1
  // [2] call main 
  // [3] phi from @1 to @end [phi:@1->@end]
  // @end
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .label col = 9
    // asm
    // asm { sei  }
    sei
    // *BORDERCOL = BLUE
    // [5] *((const byte*) BORDERCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta BORDERCOL
    // *BGCOL = BLUE
    // [6] *((const byte*) BGCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    sta BGCOL
    // [7] phi from main to main::@1 [phi:main->main::@1]
    // [7] phi (byte*) main::col#2 = (const byte*) COLS [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<COLS
    sta.z col
    lda #>COLS
    sta.z col+1
    // [7] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
    // [7] phi (byte*) main::col#2 = (byte*) main::col#1 [phi:main::@1->main::@1#0] -- register_copy 
    // main::@1
  __b1:
    // *col = BLACK
    // [8] *((byte*) main::col#2) ← (const byte) BLACK -- _deref_pbuz1=vbuc1 
    lda #BLACK
    ldy #0
    sta (col),y
    // for(unsigned char* col : COLS..COLS+1000)
    // [9] (byte*) main::col#1 ← ++ (byte*) main::col#2 -- pbuz1=_inc_pbuz1 
    inc.z col
    bne !+
    inc.z col+1
  !:
    // [10] if((byte*) main::col#1!=(const byte*) COLS+(word) $3e8+(byte) 1) goto main::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda.z col+1
    cmp #>COLS+$3e8+1
    bne __b1
    lda.z col
    cmp #<COLS+$3e8+1
    bne __b1
    // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
    // makecharset(CHARSET)
    // [12] call makecharset 
    // [97] phi from main::@2 to makecharset [phi:main::@2->makecharset]
    jsr makecharset
    // [13] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
    // main::toD0181
    // main::@5
    // *D018 = toD018(SCREEN1, CHARSET)
    // [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [15] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
    // [15] phi (byte) c2B#1 = (byte) 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c2B
    // [15] phi (byte) c2A#1 = (byte) 0 [phi:main::@5->main::@3#1] -- vbuz1=vbuc1 
    sta.z c2A
    // [15] phi (byte) c1B#1 = (byte) 0 [phi:main::@5->main::@3#2] -- vbuz1=vbuc1 
    sta.z c1B
    // [15] phi (byte) c1A#1 = (byte) 0 [phi:main::@5->main::@3#3] -- vbuz1=vbuc1 
    sta.z c1A
    // main::@3
    // [16] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
    // main::@4
  __b4:
    // doplasma(SCREEN1)
    // [17] call doplasma 
    jsr doplasma
    // [15] phi from main::@4 to main::@3 [phi:main::@4->main::@3]
    // [15] phi (byte) c2B#1 = (byte) c2B#3 [phi:main::@4->main::@3#0] -- register_copy 
    // [15] phi (byte) c2A#1 = (byte) c2A#3 [phi:main::@4->main::@3#1] -- register_copy 
    // [15] phi (byte) c1B#1 = (byte) c1B#3 [phi:main::@4->main::@3#2] -- register_copy 
    // [15] phi (byte) c1A#1 = (byte) c1A#3 [phi:main::@4->main::@3#3] -- register_copy 
    jmp __b4
}
  // doplasma
// Render plasma to the passed screen
doplasma: {
    .label c1a = 4
    .label c1b = 5
    .label yval = $e
    .label i = 3
    .label c2a = 7
    .label c2b = 8
    .label i1 = 6
    // c1a = c1A
    // [18] (byte) doplasma::c1a#0 ← (byte) c1A#1 -- vbuz1=vbuz2 
    lda.z c1A
    sta.z c1a
    // c1b = c1B
    // [19] (byte) doplasma::c1b#0 ← (byte) c1B#1 -- vbuz1=vbuz2 
    lda.z c1B
    sta.z c1b
    // [20] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
    // [20] phi (byte) doplasma::yprev#2 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [20] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#0 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [20] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [20] phi (byte) doplasma::i#2 = (byte) 0 [phi:doplasma->doplasma::@1#3] -- vbuz1=vbuc1 
    txa
    sta.z i
  // Calculate ybuff as a bunch of differences
    // doplasma::@1
  __b1:
    // for (unsigned char i = 0; i < 25; ++i)
    // [21] if((byte) doplasma::i#2<(byte) $19) goto doplasma::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #$19
    bcs !__b2+
    jmp __b2
  !__b2:
    // doplasma::@3
    // c1A += 3
    // [22] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1A
    axs #-[3]
    stx.z c1A
    // c1B -= 5
    // [23] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c1B
    axs #5
    stx.z c1B
    // c2a = c2A
    // [24] (byte) doplasma::c2a#0 ← (byte) c2A#1 -- vbuz1=vbuz2 
    lda.z c2A
    sta.z c2a
    // c2b = c2B
    // [25] (byte) doplasma::c2b#0 ← (byte) c2B#1 -- vbuz1=vbuz2 
    lda.z c2B
    sta.z c2b
    // [26] phi from doplasma::@3 to doplasma::@4 [phi:doplasma::@3->doplasma::@4]
    // [26] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#0 [phi:doplasma::@3->doplasma::@4#0] -- register_copy 
    // [26] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#0 [phi:doplasma::@3->doplasma::@4#1] -- register_copy 
    // [26] phi (byte) doplasma::i1#2 = (byte) 0 [phi:doplasma::@3->doplasma::@4#2] -- vbuz1=vbuc1 
    lda #0
    sta.z i1
    // doplasma::@4
  __b4:
    // for (unsigned char i = 0; i < 40; ++i)
    // [27] if((byte) doplasma::i1#2<(byte) $28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i1
    cmp #$28
    bcs !__b5+
    jmp __b5
  !__b5:
    // doplasma::@6
    // c2A += 2
    // [28] (byte) c2A#3 ← (byte) c2A#1 + (byte) 2 -- vbuz1=vbuz1_plus_2 
    lda.z c2A
    clc
    adc #2
    sta.z c2A
    // c2B -= 3
    // [29] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c2B
    axs #3
    stx.z c2B
    // [30] phi from doplasma::@6 to doplasma::@7 [phi:doplasma::@6->doplasma::@7]
    // [30] phi (byte) doplasma::i2#2 = (byte) 0 [phi:doplasma::@6->doplasma::@7#0] -- vbuxx=vbuc1 
    ldx #0
    // doplasma::@7
  __b7:
    // for (unsigned char i = 0; i < 40; ++i)
    // [31] if((byte) doplasma::i2#2<(byte) $28) goto doplasma::@8 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$28
    bcc __b8
    // doplasma::@return
    // }
    // [32] return 
    rts
    // doplasma::@8
  __b8:
    // val =  xbuf[i]
    // [33] (byte) doplasma::val#0 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2) -- vbuaa=pbuc1_derefidx_vbuxx 
    // Find the first value on the row
    lda xbuf,x
    // doplasma::@9
    // val += ybuf[ii]
    // [34] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte*) doplasma::ybuf) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf
    // (screen+ii*40)[i] = val
    // [35] *((const byte*) SCREEN1 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1,x
    // doplasma::@17_1
    // val += ybuf[ii]
    // [36] (byte) doplasma::val#5 ← (byte) doplasma::val#1 + *((const byte*) doplasma::ybuf+(byte) 1) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+1
    // (screen+ii*40)[i] = val
    // [37] *((const byte*) SCREEN1+(byte) 1*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#5 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+1*$28,x
    // doplasma::@17_2
    // val += ybuf[ii]
    // [38] (byte) doplasma::val#7 ← (byte) doplasma::val#5 + *((const byte*) doplasma::ybuf+(byte) 2) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+2
    // (screen+ii*40)[i] = val
    // [39] *((const byte*) SCREEN1+(byte) 2*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#7 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+2*$28,x
    // doplasma::@17_3
    // val += ybuf[ii]
    // [40] (byte) doplasma::val#10 ← (byte) doplasma::val#7 + *((const byte*) doplasma::ybuf+(byte) 3) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+3
    // (screen+ii*40)[i] = val
    // [41] *((const byte*) SCREEN1+(byte) 3*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+3*$28,x
    // doplasma::@17_4
    // val += ybuf[ii]
    // [42] (byte) doplasma::val#11 ← (byte) doplasma::val#10 + *((const byte*) doplasma::ybuf+(byte) 4) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+4
    // (screen+ii*40)[i] = val
    // [43] *((const byte*) SCREEN1+(byte) 4*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#11 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+4*$28,x
    // doplasma::@17_5
    // val += ybuf[ii]
    // [44] (byte) doplasma::val#13 ← (byte) doplasma::val#11 + *((const byte*) doplasma::ybuf+(byte) 5) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+5
    // (screen+ii*40)[i] = val
    // [45] *((const byte*) SCREEN1+(byte) 5*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#13 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+5*$28,x
    // doplasma::@17_6
    // val += ybuf[ii]
    // [46] (byte) doplasma::val#15 ← (byte) doplasma::val#13 + *((const byte*) doplasma::ybuf+(byte) 6) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+6
    // (screen+ii*40)[i] = val
    // [47] *((const byte*) SCREEN1+(byte) 6*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#15 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+6*$28,x
    // doplasma::@17_7
    // val += ybuf[ii]
    // [48] (byte) doplasma::val#17 ← (byte) doplasma::val#15 + *((const byte*) doplasma::ybuf+(byte) 7) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+7
    // (screen+ii*40)[i] = val
    // [49] *((const byte*) SCREEN1+(byte) 7*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#17 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+7*$28,x
    // doplasma::@17_8
    // val += ybuf[ii]
    // [50] (byte) doplasma::val#19 ← (byte) doplasma::val#17 + *((const byte*) doplasma::ybuf+(byte) 8) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+8
    // (screen+ii*40)[i] = val
    // [51] *((const byte*) SCREEN1+(byte) 8*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#19 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+8*$28,x
    // doplasma::@17_9
    // val += ybuf[ii]
    // [52] (byte) doplasma::val#21 ← (byte) doplasma::val#19 + *((const byte*) doplasma::ybuf+(byte) 9) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+9
    // (screen+ii*40)[i] = val
    // [53] *((const byte*) SCREEN1+(byte) 9*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#21 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+9*$28,x
    // doplasma::@17_10
    // val += ybuf[ii]
    // [54] (byte) doplasma::val#23 ← (byte) doplasma::val#21 + *((const byte*) doplasma::ybuf+(byte) $a) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$a
    // (screen+ii*40)[i] = val
    // [55] *((const byte*) SCREEN1+(byte) $a*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#23 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$a*$28,x
    // doplasma::@17_11
    // val += ybuf[ii]
    // [56] (byte) doplasma::val#25 ← (byte) doplasma::val#23 + *((const byte*) doplasma::ybuf+(byte) $b) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$b
    // (screen+ii*40)[i] = val
    // [57] *((const byte*) SCREEN1+(byte) $b*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#25 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$b*$28,x
    // doplasma::@17_12
    // val += ybuf[ii]
    // [58] (byte) doplasma::val#27 ← (byte) doplasma::val#25 + *((const byte*) doplasma::ybuf+(byte) $c) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$c
    // (screen+ii*40)[i] = val
    // [59] *((const byte*) SCREEN1+(byte) $c*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#27 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$c*$28,x
    // doplasma::@17_13
    // val += ybuf[ii]
    // [60] (byte) doplasma::val#29 ← (byte) doplasma::val#27 + *((const byte*) doplasma::ybuf+(byte) $d) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$d
    // (screen+ii*40)[i] = val
    // [61] *((const byte*) SCREEN1+(byte) $d*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#29 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$d*$28,x
    // doplasma::@17_14
    // val += ybuf[ii]
    // [62] (byte) doplasma::val#31 ← (byte) doplasma::val#29 + *((const byte*) doplasma::ybuf+(byte) $e) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$e
    // (screen+ii*40)[i] = val
    // [63] *((const byte*) SCREEN1+(byte) $e*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#31 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$e*$28,x
    // doplasma::@17_15
    // val += ybuf[ii]
    // [64] (byte) doplasma::val#33 ← (byte) doplasma::val#31 + *((const byte*) doplasma::ybuf+(byte) $f) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$f
    // (screen+ii*40)[i] = val
    // [65] *((const byte*) SCREEN1+(byte) $f*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#33 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$f*$28,x
    // doplasma::@17_16
    // val += ybuf[ii]
    // [66] (byte) doplasma::val#35 ← (byte) doplasma::val#33 + *((const byte*) doplasma::ybuf+(byte) $10) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$10
    // (screen+ii*40)[i] = val
    // [67] *((const byte*) SCREEN1+(byte) $10*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#35 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$10*$28,x
    // doplasma::@17_17
    // val += ybuf[ii]
    // [68] (byte) doplasma::val#37 ← (byte) doplasma::val#35 + *((const byte*) doplasma::ybuf+(byte) $11) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$11
    // (screen+ii*40)[i] = val
    // [69] *((const byte*) SCREEN1+(byte) $11*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#37 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$11*$28,x
    // doplasma::@17_18
    // val += ybuf[ii]
    // [70] (byte) doplasma::val#39 ← (byte) doplasma::val#37 + *((const byte*) doplasma::ybuf+(byte) $12) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$12
    // (screen+ii*40)[i] = val
    // [71] *((const byte*) SCREEN1+(byte) $12*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#39 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$12*$28,x
    // doplasma::@17_19
    // val += ybuf[ii]
    // [72] (byte) doplasma::val#41 ← (byte) doplasma::val#39 + *((const byte*) doplasma::ybuf+(byte) $13) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$13
    // (screen+ii*40)[i] = val
    // [73] *((const byte*) SCREEN1+(byte) $13*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#41 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$13*$28,x
    // doplasma::@17_20
    // val += ybuf[ii]
    // [74] (byte) doplasma::val#43 ← (byte) doplasma::val#41 + *((const byte*) doplasma::ybuf+(byte) $14) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$14
    // (screen+ii*40)[i] = val
    // [75] *((const byte*) SCREEN1+(byte) $14*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#43 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$14*$28,x
    // doplasma::@17_21
    // val += ybuf[ii]
    // [76] (byte) doplasma::val#45 ← (byte) doplasma::val#43 + *((const byte*) doplasma::ybuf+(byte) $15) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$15
    // (screen+ii*40)[i] = val
    // [77] *((const byte*) SCREEN1+(byte) $15*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#45 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$15*$28,x
    // doplasma::@17_22
    // val += ybuf[ii]
    // [78] (byte) doplasma::val#47 ← (byte) doplasma::val#45 + *((const byte*) doplasma::ybuf+(byte) $16) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$16
    // (screen+ii*40)[i] = val
    // [79] *((const byte*) SCREEN1+(byte) $16*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#47 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$16*$28,x
    // doplasma::@17_23
    // val += ybuf[ii]
    // [80] (byte) doplasma::val#49 ← (byte) doplasma::val#47 + *((const byte*) doplasma::ybuf+(byte) $17) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$17
    // (screen+ii*40)[i] = val
    // [81] *((const byte*) SCREEN1+(byte) $17*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#49 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$17*$28,x
    // doplasma::@17_24
    // val += ybuf[ii]
    // [82] (byte) doplasma::val#51 ← (byte) doplasma::val#49 + *((const byte*) doplasma::ybuf+(byte) $18) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$18
    // (screen+ii*40)[i] = val
    // [83] *((const byte*) SCREEN1+(byte) $18*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#51 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$18*$28,x
    // doplasma::@10
    // for (unsigned char i = 0; i < 40; ++i)
    // [84] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuxx=_inc_vbuxx 
    inx
    // [30] phi from doplasma::@10 to doplasma::@7 [phi:doplasma::@10->doplasma::@7]
    // [30] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@10->doplasma::@7#0] -- register_copy 
    jmp __b7
    // doplasma::@5
  __b5:
    // SINTABLE[c2a] + SINTABLE[c2b]
    // [85] (byte~) doplasma::$4 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 
    ldy.z c2a
    lda SINTABLE,y
    ldy.z c2b
    clc
    adc SINTABLE,y
    // xbuf[i] = (SINTABLE[c2a] + SINTABLE[c2b])
    // [86] *((const byte*) doplasma::xbuf + (byte) doplasma::i1#2) ← (byte~) doplasma::$4 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z i1
    sta xbuf,y
    // c2a += 3
    // [87] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2a
    axs #-[3]
    stx.z c2a
    // c2b += 7
    // [88] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2b
    axs #-[7]
    stx.z c2b
    // for (unsigned char i = 0; i < 40; ++i)
    // [89] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2 -- vbuz1=_inc_vbuz1 
    inc.z i1
    // [26] phi from doplasma::@5 to doplasma::@4 [phi:doplasma::@5->doplasma::@4]
    // [26] phi (byte) doplasma::c2b#2 = (byte) doplasma::c2b#1 [phi:doplasma::@5->doplasma::@4#0] -- register_copy 
    // [26] phi (byte) doplasma::c2a#2 = (byte) doplasma::c2a#1 [phi:doplasma::@5->doplasma::@4#1] -- register_copy 
    // [26] phi (byte) doplasma::i1#2 = (byte) doplasma::i1#1 [phi:doplasma::@5->doplasma::@4#2] -- register_copy 
    jmp __b4
    // doplasma::@2
  __b2:
    // SINTABLE[c1a] + SINTABLE[c1b]
    // [90] (byte) doplasma::yval#0 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3 
    ldy.z c1a
    lda SINTABLE,y
    ldy.z c1b
    clc
    adc SINTABLE,y
    sta.z yval
    // yval - yprev
    // [91] (byte~) doplasma::$2 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2 -- vbuaa=vbuz1_minus_vbuxx 
    txa
    eor #$ff
    sec
    adc.z yval
    // ybuf[i] = yval - yprev
    // [92] *((const byte*) doplasma::ybuf + (byte) doplasma::i#2) ← (byte~) doplasma::$2 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z i
    sta ybuf,y
    // c1a += 4
    // [93] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1a
    axs #-[4]
    stx.z c1a
    // c1b += 9
    // [94] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1b
    axs #-[9]
    stx.z c1b
    // for (unsigned char i = 0; i < 25; ++i)
    // [95] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [96] (byte) doplasma::yprev#4 ← (byte) doplasma::yval#0 -- vbuxx=vbuz1 
    ldx.z yval
    // [20] phi from doplasma::@2 to doplasma::@1 [phi:doplasma::@2->doplasma::@1]
    // [20] phi (byte) doplasma::yprev#2 = (byte) doplasma::yprev#4 [phi:doplasma::@2->doplasma::@1#0] -- register_copy 
    // [20] phi (byte) doplasma::c1b#2 = (byte) doplasma::c1b#1 [phi:doplasma::@2->doplasma::@1#1] -- register_copy 
    // [20] phi (byte) doplasma::c1a#2 = (byte) doplasma::c1a#1 [phi:doplasma::@2->doplasma::@1#2] -- register_copy 
    // [20] phi (byte) doplasma::i#2 = (byte) doplasma::i#1 [phi:doplasma::@2->doplasma::@1#3] -- register_copy 
    jmp __b1
    xbuf: .fill $28, 0
    ybuf: .fill $19, 0
}
  // makecharset
// Make a plasma-friendly charset where the chars are randomly filled
makecharset: {
    .label __7 = $12
    .label __10 = $10
    .label __11 = $10
    .label s = $f
    .label i = $b
    .label c = 9
    .label __16 = $10
    // sid_rnd_init()
    // [98] call sid_rnd_init 
    jsr sid_rnd_init
    // [99] phi from makecharset to makecharset::@12 [phi:makecharset->makecharset::@12]
    // makecharset::@12
    // print_cls()
    // [100] call print_cls 
    // [135] phi from makecharset::@12 to print_cls [phi:makecharset::@12->print_cls]
    jsr print_cls
    // [101] phi from makecharset::@12 to makecharset::@1 [phi:makecharset::@12->makecharset::@1]
    // [101] phi (byte*) print_char_cursor#18 = (const byte*) print_line_cursor#0 [phi:makecharset::@12->makecharset::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta.z print_char_cursor
    lda #>print_line_cursor
    sta.z print_char_cursor+1
    // [101] phi (word) makecharset::c#2 = (word) 0 [phi:makecharset::@12->makecharset::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z c
    sta.z c+1
    // makecharset::@1
  __b1:
    // for (unsigned int c = 0; c < 0x100; ++c)
    // [102] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 -- vwuz1_lt_vwuc1_then_la1 
    lda.z c+1
    cmp #>$100
    bcc __b2
    bne !+
    lda.z c
    cmp #<$100
    bcc __b2
  !:
    // makecharset::@return
    // }
    // [103] return 
    rts
    // makecharset::@2
  __b2:
    // <c
    // [104] (byte~) makecharset::$3 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 
    lda.z c
    // s = SINTABLE[<c]
    // [105] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3) -- vbuz1=pbuc1_derefidx_vbuaa 
    tay
    lda SINTABLE,y
    sta.z s
    // [106] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3]
    // [106] phi (byte) makecharset::i#2 = (byte) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // makecharset::@3
  __b3:
    // for ( unsigned char i = 0; i < 8; ++i)
    // [107] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #8
    bcc b1
    // makecharset::@4
    // c & 0x07
    // [108] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7 -- vbuaa=vwuz1_band_vbuc1 
    lda #7
    and.z c
    // if ((c & 0x07) == 0)
    // [109] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@11 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b11
    // [110] phi from makecharset::@4 to makecharset::@10 [phi:makecharset::@4->makecharset::@10]
    // makecharset::@10
    // print_char('.')
    // [111] call print_char 
    jsr print_char
    // [112] phi from makecharset::@10 makecharset::@4 to makecharset::@11 [phi:makecharset::@10/makecharset::@4->makecharset::@11]
    // [112] phi (byte*) print_char_cursor#30 = (byte*) print_char_cursor#1 [phi:makecharset::@10/makecharset::@4->makecharset::@11#0] -- register_copy 
    // makecharset::@11
  __b11:
    // for (unsigned int c = 0; c < 0x100; ++c)
    // [113] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 
    inc.z c
    bne !+
    inc.z c+1
  !:
    // [101] phi from makecharset::@11 to makecharset::@1 [phi:makecharset::@11->makecharset::@1]
    // [101] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#30 [phi:makecharset::@11->makecharset::@1#0] -- register_copy 
    // [101] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@11->makecharset::@1#1] -- register_copy 
    jmp __b1
    // [114] phi from makecharset::@3 to makecharset::@5 [phi:makecharset::@3->makecharset::@5]
  b1:
    // [114] phi (byte) makecharset::b#2 = (byte) 0 [phi:makecharset::@3->makecharset::@5#0] -- vbuyy=vbuc1 
    ldy #0
    // [114] phi (byte) makecharset::ii#2 = (byte) 0 [phi:makecharset::@3->makecharset::@5#1] -- vbuxx=vbuc1 
    ldx #0
    // makecharset::@5
  __b5:
    // for (unsigned char ii = 0; ii < 8; ++ii)
    // [115] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@6 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc __b6
    // makecharset::@7
    // c*8
    // [116] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3 -- vwuz1=vwuz2_rol_3 
    lda.z c
    asl
    sta.z __10
    lda.z c+1
    rol
    sta.z __10+1
    asl.z __10
    rol.z __10+1
    asl.z __10
    rol.z __10+1
    // (c*8) + i
    // [117] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda.z i
    clc
    adc.z __11
    sta.z __11
    bcc !+
    inc.z __11+1
  !:
    // charset[(c*8) + i] = b
    // [118] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11 -- pbuz1=pbuc1_plus_vwuz1 
    clc
    lda.z __16
    adc #<CHARSET
    sta.z __16
    lda.z __16+1
    adc #>CHARSET
    sta.z __16+1
    // [119] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (__16),y
    // for ( unsigned char i = 0; i < 8; ++i)
    // [120] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [106] phi from makecharset::@7 to makecharset::@3 [phi:makecharset::@7->makecharset::@3]
    // [106] phi (byte) makecharset::i#2 = (byte) makecharset::i#1 [phi:makecharset::@7->makecharset::@3#0] -- register_copy 
    jmp __b3
    // [121] phi from makecharset::@5 to makecharset::@6 [phi:makecharset::@5->makecharset::@6]
    // makecharset::@6
  __b6:
    // sid_rnd()
    // [122] call sid_rnd 
    jsr sid_rnd
    // [123] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
    // makecharset::@13
    // [124] (byte~) makecharset::$6 ← (byte) sid_rnd::return#2
    // sid_rnd() & 0xFF
    // [125] (byte~) makecharset::$7 ← (byte~) makecharset::$6 & (byte) $ff -- vbuz1=vbuaa_band_vbuc1 
    and #$ff
    sta.z __7
    // if ((sid_rnd() & 0xFF) > s)
    // [126] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@8 -- vbuz1_le_vbuz2_then_la1 
    lda.z s
    cmp.z __7
    bcs __b8
    // makecharset::@9
    // b |= bittab[ii]
    // [127] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte*) makecharset::bittab + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx 
    tya
    ora bittab,x
    tay
    // [128] phi from makecharset::@13 makecharset::@9 to makecharset::@8 [phi:makecharset::@13/makecharset::@9->makecharset::@8]
    // [128] phi (byte) makecharset::b#6 = (byte) makecharset::b#2 [phi:makecharset::@13/makecharset::@9->makecharset::@8#0] -- register_copy 
    // makecharset::@8
  __b8:
    // for (unsigned char ii = 0; ii < 8; ++ii)
    // [129] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx 
    inx
    // [114] phi from makecharset::@8 to makecharset::@5 [phi:makecharset::@8->makecharset::@5]
    // [114] phi (byte) makecharset::b#2 = (byte) makecharset::b#6 [phi:makecharset::@8->makecharset::@5#0] -- register_copy 
    // [114] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@8->makecharset::@5#1] -- register_copy 
    jmp __b5
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
  // sid_rnd
// Get a random number from the SID voice 3,
// Must be initialized with sid_rnd_init()
sid_rnd: {
    // return *SID_VOICE3_OSC;
    // [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC) -- vbuaa=_deref_pbuc1 
    lda SID_VOICE3_OSC
    // sid_rnd::@return
    // }
    // [131] return 
    rts
}
  // print_char
// Print a single char
print_char: {
    .const ch = '.'
    // *(print_char_cursor++) = ch
    // [132] *((byte*) print_char_cursor#18) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // *(print_char_cursor++) = ch;
    // [133] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#18 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // print_char::@return
    // }
    // [134] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // memset(print_screen, ' ', 1000)
    // [136] call memset 
    // [138] phi from print_cls to memset [phi:print_cls->memset]
    jsr memset
    // print_cls::@return
    // }
    // [137] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = print_line_cursor
    .label end = str+num
    .label dst = $c
    // [139] phi from memset to memset::@1 [phi:memset->memset::@1]
    // [139] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    // memset::@1
  __b1:
    // for(char* dst = str; dst!=end; dst++)
    // [140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne __b2
    lda.z dst
    cmp #<end
    bne __b2
    // memset::@return
    // }
    // [141] return 
    rts
    // memset::@2
  __b2:
    // *dst = c
    // [142] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [139] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
    // [139] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // sid_rnd_init
// Initialize SID voice 3 for random number generation
sid_rnd_init: {
    // *SID_VOICE3_FREQ = $ffff
    // [144] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID_VOICE3_FREQ
    lda #>$ffff
    sta SID_VOICE3_FREQ+1
    // *SID_VOICE3_CONTROL = SID_CONTROL_NOISE
    // [145] *((const byte*) SID_VOICE3_CONTROL) ← (const byte) SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID_VOICE3_CONTROL
    // sid_rnd_init::@return
    // }
    // [146] return 
    rts
}
  // File Data
  .align $100
SINTABLE:
.for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(toRadians(360*i/256)))


