Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
Inlined call main::$1 = call toD018(SCREEN1, CHARSET)
Inlined call call sid_rnd_init
Inlined call makecharset::$6 = call sid_rnd
Inlined call call __init
Eliminating unused variable with no statement memset::$2
Eliminating unused variable with no statement doplasma::$1

CONTROL FLOW GRAPH SSA

void print_char(char ch)
print_char: scope:[print_char]  from makecharset::@10
  print_char_cursor#12 = phi( makecharset::@10/print_char_cursor#22 )
  print_char::ch#1 = phi( makecharset::@10/print_char::ch#0 )
  *print_char_cursor#12 = print_char::ch#1
  print_char_cursor#0 = ++ print_char_cursor#12
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  print_char_cursor#13 = phi( print_char/print_char_cursor#0 )
  print_char_cursor#1 = print_char_cursor#13
  return 
  to:@return

void print_cls()
print_cls: scope:[print_cls]  from makecharset::@12
  print_screen#2 = phi( makecharset::@12/print_screen#5 )
  memset::str#0 = (void *)print_screen#2
  memset::c#0 = ' '
  memset::num#0 = $3e8
  call memset
  memset::return#0 = memset::return#2
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls
  print_screen#3 = phi( print_cls/print_screen#2 )
  print_line_cursor#0 = print_screen#3
  print_char_cursor#2 = print_line_cursor#0
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  print_char_cursor#14 = phi( print_cls::@1/print_char_cursor#2 )
  print_line_cursor#9 = phi( print_cls::@1/print_line_cursor#0 )
  print_line_cursor#1 = print_line_cursor#9
  print_char_cursor#3 = print_char_cursor#14
  return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from print_cls
  memset::c#4 = phi( print_cls/memset::c#0 )
  memset::str#3 = phi( print_cls/memset::str#0 )
  memset::num#1 = phi( print_cls/memset::num#0 )
  memset::$0 = memset::num#1 > 0
  memset::$1 = ! memset::$0
  if(memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@3
  memset::str#1 = phi( memset/memset::str#3, memset::@3/memset::str#4 )
  memset::return#1 = memset::str#1
  to:memset::@return
memset::@2: scope:[memset]  from memset
  memset::c#3 = phi( memset/memset::c#4 )
  memset::num#2 = phi( memset/memset::num#1 )
  memset::str#2 = phi( memset/memset::str#3 )
  memset::$4 = (char *)memset::str#2
  memset::end#0 = memset::$4 + memset::num#2
  memset::dst#0 = ((char *)) memset::str#2
  to:memset::@3
memset::@3: scope:[memset]  from memset::@2 memset::@4
  memset::c#2 = phi( memset::@2/memset::c#3, memset::@4/memset::c#1 )
  memset::str#4 = phi( memset::@2/memset::str#2, memset::@4/memset::str#5 )
  memset::end#1 = phi( memset::@2/memset::end#0, memset::@4/memset::end#2 )
  memset::dst#2 = phi( memset::@2/memset::dst#0, memset::@4/memset::dst#1 )
  memset::$3 = memset::dst#2 != memset::end#1
  if(memset::$3) goto memset::@4
  to:memset::@1
memset::@4: scope:[memset]  from memset::@3
  memset::str#5 = phi( memset::@3/memset::str#4 )
  memset::end#2 = phi( memset::@3/memset::end#1 )
  memset::dst#3 = phi( memset::@3/memset::dst#2 )
  memset::c#1 = phi( memset::@3/memset::c#2 )
  *memset::dst#3 = memset::c#1
  memset::dst#1 = ++ memset::dst#3
  to:memset::@3
memset::@return: scope:[memset]  from memset::@1
  memset::return#3 = phi( memset::@1/memset::return#1 )
  memset::return#2 = memset::return#3
  return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  c2B#33 = phi( __start::@1/c2B#19 )
  c2A#33 = phi( __start::@1/c2A#19 )
  c1B#33 = phi( __start::@1/c1B#18 )
  c1A#33 = phi( __start::@1/c1A#18 )
  print_screen#12 = phi( __start::@1/print_screen#8 )
  print_char_cursor#34 = phi( __start::@1/print_char_cursor#27 )
  print_line_cursor#26 = phi( __start::@1/print_line_cursor#20 )
  asm { sei  }
  *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLUE
  *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLUE
  main::col#0 = COLS
  to:main::@1
main::@1: scope:[main]  from main main::@1
  c2B#32 = phi( main/c2B#33, main::@1/c2B#32 )
  c2A#32 = phi( main/c2A#33, main::@1/c2A#32 )
  c1B#32 = phi( main/c1B#33, main::@1/c1B#32 )
  c1A#32 = phi( main/c1A#33, main::@1/c1A#32 )
  print_screen#11 = phi( main/print_screen#12, main::@1/print_screen#11 )
  print_char_cursor#28 = phi( main/print_char_cursor#34, main::@1/print_char_cursor#28 )
  print_line_cursor#21 = phi( main/print_line_cursor#26, main::@1/print_line_cursor#21 )
  main::col#2 = phi( main/main::col#0, main::@1/main::col#1 )
  *main::col#2 = BLACK
  main::col#1 = main::col#2 + rangenext(COLS,COLS+$3e8)
  main::$2 = main::col#1 != rangelast(COLS,COLS+$3e8)
  if(main::$2) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  c2B#31 = phi( main::@1/c2B#32 )
  c2A#31 = phi( main::@1/c2A#32 )
  c1B#31 = phi( main::@1/c1B#32 )
  c1A#31 = phi( main::@1/c1A#32 )
  print_screen#10 = phi( main::@1/print_screen#11 )
  print_char_cursor#23 = phi( main::@1/print_char_cursor#28 )
  print_line_cursor#16 = phi( main::@1/print_line_cursor#21 )
  makecharset::charset#0 = CHARSET
  call makecharset
  to:main::@6
main::@6: scope:[main]  from main::@2
  c2B#30 = phi( main::@2/c2B#31 )
  c2A#30 = phi( main::@2/c2A#31 )
  c1B#30 = phi( main::@2/c1B#31 )
  c1A#30 = phi( main::@2/c1A#31 )
  print_char_cursor#15 = phi( main::@2/print_char_cursor#8 )
  print_line_cursor#10 = phi( main::@2/print_line_cursor#5 )
  print_line_cursor#2 = print_line_cursor#10
  print_char_cursor#4 = print_char_cursor#15
  main::toD0181_screen#0 = SCREEN1
  main::toD0181_gfx#0 = CHARSET
  to:main::toD0181
main::toD0181: scope:[main]  from main::@6
  c2B#27 = phi( main::@6/c2B#30 )
  c2A#27 = phi( main::@6/c2A#30 )
  c1B#26 = phi( main::@6/c1B#30 )
  c1A#26 = phi( main::@6/c1A#30 )
  print_char_cursor#39 = phi( main::@6/print_char_cursor#4 )
  print_line_cursor#32 = phi( main::@6/print_line_cursor#2 )
  main::toD0181_gfx#1 = phi( main::@6/main::toD0181_gfx#0 )
  main::toD0181_screen#1 = phi( main::@6/main::toD0181_screen#0 )
  main::toD0181_$7 = (unsigned int)main::toD0181_screen#1
  main::toD0181_$0 = main::toD0181_$7 & $3fff
  main::toD0181_$1 = main::toD0181_$0 * 4
  main::toD0181_$2 = byte1  main::toD0181_$1
  main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#1
  main::toD0181_$4 = main::toD0181_$3 / 4
  main::toD0181_$5 = main::toD0181_$4 & $f
  main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
  main::toD0181_return#0 = main::toD0181_$6
  to:main::toD0181_@return
main::toD0181_@return: scope:[main]  from main::toD0181
  c2B#25 = phi( main::toD0181/c2B#27 )
  c2A#25 = phi( main::toD0181/c2A#27 )
  c1B#23 = phi( main::toD0181/c1B#26 )
  c1A#23 = phi( main::toD0181/c1A#26 )
  print_char_cursor#35 = phi( main::toD0181/print_char_cursor#39 )
  print_line_cursor#27 = phi( main::toD0181/print_line_cursor#32 )
  main::toD0181_return#2 = phi( main::toD0181/main::toD0181_return#0 )
  main::toD0181_return#1 = main::toD0181_return#2
  to:main::@5
main::@5: scope:[main]  from main::toD0181_@return
  c2B#20 = phi( main::toD0181_@return/c2B#25 )
  c2A#20 = phi( main::toD0181_@return/c2A#25 )
  c1B#19 = phi( main::toD0181_@return/c1B#23 )
  c1A#19 = phi( main::toD0181_@return/c1A#23 )
  print_char_cursor#29 = phi( main::toD0181_@return/print_char_cursor#35 )
  print_line_cursor#22 = phi( main::toD0181_@return/print_line_cursor#27 )
  main::toD0181_return#3 = phi( main::toD0181_@return/main::toD0181_return#1 )
  main::$1 = main::toD0181_return#3
  *D018 = main::$1
  to:main::@3
main::@3: scope:[main]  from main::@5 main::@7
  c2B#15 = phi( main::@5/c2B#20, main::@7/c2B#0 )
  c2A#15 = phi( main::@5/c2A#20, main::@7/c2A#0 )
  c1B#15 = phi( main::@5/c1B#19, main::@7/c1B#0 )
  c1A#15 = phi( main::@5/c1A#19, main::@7/c1A#0 )
  print_char_cursor#24 = phi( main::@5/print_char_cursor#29, main::@7/print_char_cursor#30 )
  print_line_cursor#17 = phi( main::@5/print_line_cursor#22, main::@7/print_line_cursor#23 )
  if(true) goto main::@4
  to:main::@return
main::@4: scope:[main]  from main::@3
  print_char_cursor#36 = phi( main::@3/print_char_cursor#24 )
  print_line_cursor#28 = phi( main::@3/print_line_cursor#17 )
  c2B#14 = phi( main::@3/c2B#15 )
  c2A#14 = phi( main::@3/c2A#15 )
  c1B#14 = phi( main::@3/c1B#15 )
  c1A#14 = phi( main::@3/c1A#15 )
  doplasma::screen#0 = SCREEN1
  call doplasma
  to:main::@7
main::@7: scope:[main]  from main::@4
  print_char_cursor#30 = phi( main::@4/print_char_cursor#36 )
  print_line_cursor#23 = phi( main::@4/print_line_cursor#28 )
  c2B#7 = phi( main::@4/c2B#3 )
  c2A#7 = phi( main::@4/c2A#3 )
  c1B#7 = phi( main::@4/c1B#3 )
  c1A#7 = phi( main::@4/c1A#3 )
  c1A#0 = c1A#7
  c1B#0 = c1B#7
  c2A#0 = c2A#7
  c2B#0 = c2B#7
  to:main::@3
main::@return: scope:[main]  from main::@3
  c2B#8 = phi( main::@3/c2B#15 )
  c2A#8 = phi( main::@3/c2A#15 )
  c1B#8 = phi( main::@3/c1B#15 )
  c1A#8 = phi( main::@3/c1A#15 )
  print_char_cursor#16 = phi( main::@3/print_char_cursor#24 )
  print_line_cursor#11 = phi( main::@3/print_line_cursor#17 )
  print_line_cursor#3 = print_line_cursor#11
  print_char_cursor#5 = print_char_cursor#16
  c1A#1 = c1A#8
  c1B#1 = c1B#8
  c2A#1 = c2A#8
  c2B#1 = c2B#8
  return 
  to:@return

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

void makecharset(char *charset)
makecharset: scope:[makecharset]  from main::@2
  makecharset::charset#19 = phi( main::@2/makecharset::charset#0 )
  print_char_cursor#37 = phi( main::@2/print_char_cursor#23 )
  print_line_cursor#29 = phi( main::@2/print_line_cursor#16 )
  print_screen#9 = phi( main::@2/print_screen#10 )
  to:makecharset::sid_rnd_init1
makecharset::sid_rnd_init1: scope:[makecharset]  from makecharset
  makecharset::charset#17 = phi( makecharset/makecharset::charset#19 )
  print_char_cursor#31 = phi( makecharset/print_char_cursor#37 )
  print_line_cursor#24 = phi( makecharset/print_line_cursor#29 )
  print_screen#7 = phi( makecharset/print_screen#9 )
  *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
  *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE
  to:makecharset::@12
makecharset::@12: scope:[makecharset]  from makecharset::sid_rnd_init1
  makecharset::charset#14 = phi( makecharset::sid_rnd_init1/makecharset::charset#17 )
  print_char_cursor#25 = phi( makecharset::sid_rnd_init1/print_char_cursor#31 )
  print_line_cursor#18 = phi( makecharset::sid_rnd_init1/print_line_cursor#24 )
  print_screen#5 = phi( makecharset::sid_rnd_init1/print_screen#7 )
  call print_cls
  to:makecharset::@14
makecharset::@14: scope:[makecharset]  from makecharset::@12
  makecharset::charset#13 = phi( makecharset::@12/makecharset::charset#14 )
  print_char_cursor#17 = phi( makecharset::@12/print_char_cursor#3 )
  print_line_cursor#12 = phi( makecharset::@12/print_line_cursor#1 )
  print_line_cursor#4 = print_line_cursor#12
  print_char_cursor#6 = print_char_cursor#17
  makecharset::c#0 = 0
  to:makecharset::@1
makecharset::@1: scope:[makecharset]  from makecharset::@11 makecharset::@14
  makecharset::charset#10 = phi( makecharset::@11/makecharset::charset#12, makecharset::@14/makecharset::charset#13 )
  print_char_cursor#26 = phi( makecharset::@11/print_char_cursor#32, makecharset::@14/print_char_cursor#6 )
  print_line_cursor#19 = phi( makecharset::@11/print_line_cursor#25, makecharset::@14/print_line_cursor#4 )
  makecharset::c#2 = phi( makecharset::@11/makecharset::c#1, makecharset::@14/makecharset::c#0 )
  makecharset::$2 = makecharset::c#2 < $100
  if(makecharset::$2) goto makecharset::@2
  to:makecharset::@return
makecharset::@2: scope:[makecharset]  from makecharset::@1
  print_line_cursor#35 = phi( makecharset::@1/print_line_cursor#19 )
  print_char_cursor#40 = phi( makecharset::@1/print_char_cursor#26 )
  makecharset::charset#8 = phi( makecharset::@1/makecharset::charset#10 )
  makecharset::c#3 = phi( makecharset::@1/makecharset::c#2 )
  makecharset::$3 = byte0  makecharset::c#3
  makecharset::s#0 = SINTABLE[makecharset::$3]
  makecharset::i#0 = 0
  to:makecharset::@3
makecharset::@3: scope:[makecharset]  from makecharset::@2 makecharset::@7
  makecharset::s#7 = phi( makecharset::@2/makecharset::s#0, makecharset::@7/makecharset::s#9 )
  print_line_cursor#33 = phi( makecharset::@2/print_line_cursor#35, makecharset::@7/print_line_cursor#36 )
  print_char_cursor#38 = phi( makecharset::@2/print_char_cursor#40, makecharset::@7/print_char_cursor#41 )
  makecharset::charset#5 = phi( makecharset::@2/makecharset::charset#8, makecharset::@7/makecharset::charset#1 )
  makecharset::c#7 = phi( makecharset::@2/makecharset::c#3, makecharset::@7/makecharset::c#5 )
  makecharset::i#2 = phi( makecharset::@2/makecharset::i#0, makecharset::@7/makecharset::i#1 )
  makecharset::$4 = makecharset::i#2 < 8
  if(makecharset::$4) goto makecharset::@4
  to:makecharset::@5
makecharset::@4: scope:[makecharset]  from makecharset::@3
  print_line_cursor#38 = phi( makecharset::@3/print_line_cursor#33 )
  print_char_cursor#43 = phi( makecharset::@3/print_char_cursor#38 )
  makecharset::s#5 = phi( makecharset::@3/makecharset::s#7 )
  makecharset::charset#3 = phi( makecharset::@3/makecharset::charset#5 )
  makecharset::i#5 = phi( makecharset::@3/makecharset::i#2 )
  makecharset::c#10 = phi( makecharset::@3/makecharset::c#7 )
  makecharset::b#0 = 0
  makecharset::ii#0 = 0
  to:makecharset::@6
makecharset::@5: scope:[makecharset]  from makecharset::@3
  makecharset::charset#16 = phi( makecharset::@3/makecharset::charset#5 )
  print_line_cursor#31 = phi( makecharset::@3/print_line_cursor#33 )
  print_char_cursor#33 = phi( makecharset::@3/print_char_cursor#38 )
  makecharset::c#4 = phi( makecharset::@3/makecharset::c#7 )
  makecharset::$12 = makecharset::c#4 & 7
  makecharset::$13 = makecharset::$12 == 0
  makecharset::$14 = ! makecharset::$13
  if(makecharset::$14) goto makecharset::@11
  to:makecharset::@10
makecharset::@6: scope:[makecharset]  from makecharset::@4 makecharset::@8
  print_line_cursor#37 = phi( makecharset::@4/print_line_cursor#38, makecharset::@8/print_line_cursor#39 )
  print_char_cursor#42 = phi( makecharset::@4/print_char_cursor#43, makecharset::@8/print_char_cursor#44 )
  makecharset::s#4 = phi( makecharset::@4/makecharset::s#5, makecharset::@8/makecharset::s#6 )
  makecharset::charset#2 = phi( makecharset::@4/makecharset::charset#3, makecharset::@8/makecharset::charset#4 )
  makecharset::b#4 = phi( makecharset::@4/makecharset::b#0, makecharset::@8/makecharset::b#6 )
  makecharset::i#4 = phi( makecharset::@4/makecharset::i#5, makecharset::@8/makecharset::i#6 )
  makecharset::c#8 = phi( makecharset::@4/makecharset::c#10, makecharset::@8/makecharset::c#11 )
  makecharset::ii#2 = phi( makecharset::@4/makecharset::ii#0, makecharset::@8/makecharset::ii#1 )
  makecharset::$5 = makecharset::ii#2 < 8
  if(makecharset::$5) goto makecharset::sid_rnd1
  to:makecharset::@7
makecharset::sid_rnd1: scope:[makecharset]  from makecharset::@6
  print_line_cursor#43 = phi( makecharset::@6/print_line_cursor#37 )
  print_char_cursor#48 = phi( makecharset::@6/print_char_cursor#42 )
  makecharset::charset#11 = phi( makecharset::@6/makecharset::charset#2 )
  makecharset::i#10 = phi( makecharset::@6/makecharset::i#4 )
  makecharset::c#16 = phi( makecharset::@6/makecharset::c#8 )
  makecharset::b#8 = phi( makecharset::@6/makecharset::b#4 )
  makecharset::ii#7 = phi( makecharset::@6/makecharset::ii#2 )
  makecharset::s#3 = phi( makecharset::@6/makecharset::s#4 )
  makecharset::sid_rnd1_return#0 = *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC)
  to:makecharset::sid_rnd1_@return
makecharset::sid_rnd1_@return: scope:[makecharset]  from makecharset::sid_rnd1
  print_line_cursor#42 = phi( makecharset::sid_rnd1/print_line_cursor#43 )
  print_char_cursor#47 = phi( makecharset::sid_rnd1/print_char_cursor#48 )
  makecharset::charset#9 = phi( makecharset::sid_rnd1/makecharset::charset#11 )
  makecharset::i#9 = phi( makecharset::sid_rnd1/makecharset::i#10 )
  makecharset::c#15 = phi( makecharset::sid_rnd1/makecharset::c#16 )
  makecharset::b#7 = phi( makecharset::sid_rnd1/makecharset::b#8 )
  makecharset::ii#6 = phi( makecharset::sid_rnd1/makecharset::ii#7 )
  makecharset::s#2 = phi( makecharset::sid_rnd1/makecharset::s#3 )
  makecharset::sid_rnd1_return#2 = phi( makecharset::sid_rnd1/makecharset::sid_rnd1_return#0 )
  makecharset::sid_rnd1_return#1 = makecharset::sid_rnd1_return#2
  to:makecharset::@13
makecharset::@13: scope:[makecharset]  from makecharset::sid_rnd1_@return
  print_line_cursor#40 = phi( makecharset::sid_rnd1_@return/print_line_cursor#42 )
  print_char_cursor#45 = phi( makecharset::sid_rnd1_@return/print_char_cursor#47 )
  makecharset::charset#6 = phi( makecharset::sid_rnd1_@return/makecharset::charset#9 )
  makecharset::i#7 = phi( makecharset::sid_rnd1_@return/makecharset::i#9 )
  makecharset::c#13 = phi( makecharset::sid_rnd1_@return/makecharset::c#15 )
  makecharset::b#5 = phi( makecharset::sid_rnd1_@return/makecharset::b#7 )
  makecharset::ii#5 = phi( makecharset::sid_rnd1_@return/makecharset::ii#6 )
  makecharset::s#1 = phi( makecharset::sid_rnd1_@return/makecharset::s#2 )
  makecharset::sid_rnd1_return#3 = phi( makecharset::sid_rnd1_@return/makecharset::sid_rnd1_return#1 )
  makecharset::$6 = makecharset::sid_rnd1_return#3
  makecharset::$7 = makecharset::$6 & $ff
  makecharset::$8 = makecharset::$7 > makecharset::s#1
  makecharset::$9 = ! makecharset::$8
  if(makecharset::$9) goto makecharset::@8
  to:makecharset::@9
makecharset::@7: scope:[makecharset]  from makecharset::@6
  makecharset::s#9 = phi( makecharset::@6/makecharset::s#4 )
  print_line_cursor#36 = phi( makecharset::@6/print_line_cursor#37 )
  print_char_cursor#41 = phi( makecharset::@6/print_char_cursor#42 )
  makecharset::charset#1 = phi( makecharset::@6/makecharset::charset#2 )
  makecharset::b#2 = phi( makecharset::@6/makecharset::b#4 )
  makecharset::i#3 = phi( makecharset::@6/makecharset::i#4 )
  makecharset::c#5 = phi( makecharset::@6/makecharset::c#8 )
  makecharset::$10 = makecharset::c#5 * 8
  makecharset::$11 = makecharset::$10 + makecharset::i#3
  makecharset::charset#1[makecharset::$11] = makecharset::b#2
  makecharset::i#1 = ++ makecharset::i#3
  to:makecharset::@3
makecharset::@8: scope:[makecharset]  from makecharset::@13 makecharset::@9
  print_line_cursor#39 = phi( makecharset::@13/print_line_cursor#40, makecharset::@9/print_line_cursor#41 )
  print_char_cursor#44 = phi( makecharset::@13/print_char_cursor#45, makecharset::@9/print_char_cursor#46 )
  makecharset::s#6 = phi( makecharset::@13/makecharset::s#1, makecharset::@9/makecharset::s#8 )
  makecharset::charset#4 = phi( makecharset::@13/makecharset::charset#6, makecharset::@9/makecharset::charset#7 )
  makecharset::b#6 = phi( makecharset::@13/makecharset::b#5, makecharset::@9/makecharset::b#1 )
  makecharset::i#6 = phi( makecharset::@13/makecharset::i#7, makecharset::@9/makecharset::i#8 )
  makecharset::c#11 = phi( makecharset::@13/makecharset::c#13, makecharset::@9/makecharset::c#14 )
  makecharset::ii#3 = phi( makecharset::@13/makecharset::ii#5, makecharset::@9/makecharset::ii#4 )
  makecharset::ii#1 = ++ makecharset::ii#3
  to:makecharset::@6
makecharset::@9: scope:[makecharset]  from makecharset::@13
  print_line_cursor#41 = phi( makecharset::@13/print_line_cursor#40 )
  print_char_cursor#46 = phi( makecharset::@13/print_char_cursor#45 )
  makecharset::s#8 = phi( makecharset::@13/makecharset::s#1 )
  makecharset::charset#7 = phi( makecharset::@13/makecharset::charset#6 )
  makecharset::i#8 = phi( makecharset::@13/makecharset::i#7 )
  makecharset::c#14 = phi( makecharset::@13/makecharset::c#13 )
  makecharset::ii#4 = phi( makecharset::@13/makecharset::ii#5 )
  makecharset::b#3 = phi( makecharset::@13/makecharset::b#5 )
  makecharset::b#1 = makecharset::b#3 | makecharset::bittab[makecharset::ii#4]
  to:makecharset::@8
makecharset::@11: scope:[makecharset]  from makecharset::@15 makecharset::@5
  makecharset::charset#12 = phi( makecharset::@15/makecharset::charset#15, makecharset::@5/makecharset::charset#16 )
  print_char_cursor#32 = phi( makecharset::@15/print_char_cursor#7, makecharset::@5/print_char_cursor#33 )
  print_line_cursor#25 = phi( makecharset::@15/print_line_cursor#30, makecharset::@5/print_line_cursor#31 )
  makecharset::c#6 = phi( makecharset::@15/makecharset::c#9, makecharset::@5/makecharset::c#4 )
  makecharset::c#1 = ++ makecharset::c#6
  to:makecharset::@1
makecharset::@10: scope:[makecharset]  from makecharset::@5
  makecharset::charset#18 = phi( makecharset::@5/makecharset::charset#16 )
  print_line_cursor#34 = phi( makecharset::@5/print_line_cursor#31 )
  makecharset::c#12 = phi( makecharset::@5/makecharset::c#4 )
  print_char_cursor#22 = phi( makecharset::@5/print_char_cursor#33 )
  print_char::ch#0 = '.'
  call print_char
  to:makecharset::@15
makecharset::@15: scope:[makecharset]  from makecharset::@10
  makecharset::charset#15 = phi( makecharset::@10/makecharset::charset#18 )
  print_line_cursor#30 = phi( makecharset::@10/print_line_cursor#34 )
  makecharset::c#9 = phi( makecharset::@10/makecharset::c#12 )
  print_char_cursor#18 = phi( makecharset::@10/print_char_cursor#1 )
  print_char_cursor#7 = print_char_cursor#18
  to:makecharset::@11
makecharset::@return: scope:[makecharset]  from makecharset::@1
  print_char_cursor#19 = phi( makecharset::@1/print_char_cursor#26 )
  print_line_cursor#13 = phi( makecharset::@1/print_line_cursor#19 )
  print_line_cursor#5 = print_line_cursor#13
  print_char_cursor#8 = print_char_cursor#19
  return 
  to:@return

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  print_screen#0 = (char *)$400
  print_line_cursor#6 = print_screen#0
  print_char_cursor#9 = print_line_cursor#6
  c1A#4 = 0
  c1B#4 = 0
  c2A#4 = 0
  c2B#4 = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  print_screen#8 = phi( __start::__init1/print_screen#0 )
  c2B#19 = phi( __start::__init1/c2B#4 )
  c2A#19 = phi( __start::__init1/c2A#4 )
  c1B#18 = phi( __start::__init1/c1B#4 )
  c1A#18 = phi( __start::__init1/c1A#4 )
  print_char_cursor#27 = phi( __start::__init1/print_char_cursor#9 )
  print_line_cursor#20 = phi( __start::__init1/print_line_cursor#6 )
  call main
  to:__start::@2
__start::@2: scope:[__start]  from __start::@1
  print_screen#6 = phi( __start::@1/print_screen#8 )
  c2B#12 = phi( __start::@1/c2B#1 )
  c2A#12 = phi( __start::@1/c2A#1 )
  c1B#12 = phi( __start::@1/c1B#1 )
  c1A#12 = phi( __start::@1/c1A#1 )
  print_char_cursor#20 = phi( __start::@1/print_char_cursor#5 )
  print_line_cursor#14 = phi( __start::@1/print_line_cursor#3 )
  print_line_cursor#7 = print_line_cursor#14
  print_char_cursor#10 = print_char_cursor#20
  c1A#5 = c1A#12
  c1B#5 = c1B#12
  c2A#5 = c2A#12
  c2B#5 = c2B#12
  to:__start::@return
__start::@return: scope:[__start]  from __start::@2
  c2B#13 = phi( __start::@2/c2B#5 )
  c2A#13 = phi( __start::@2/c2A#5 )
  c1B#13 = phi( __start::@2/c1B#5 )
  c1A#13 = phi( __start::@2/c1A#5 )
  print_char_cursor#21 = phi( __start::@2/print_char_cursor#10 )
  print_line_cursor#15 = phi( __start::@2/print_line_cursor#7 )
  print_screen#4 = phi( __start::@2/print_screen#6 )
  print_screen#1 = print_screen#4
  print_line_cursor#8 = print_line_cursor#15
  print_char_cursor#11 = print_char_cursor#21
  c1A#6 = c1A#13
  c1B#6 = c1B#13
  c2A#6 = c2A#13
  c2B#6 = c2B#13
  return 
  to:@return

SYMBOL TABLE SSA
__constant const char BLACK = 0
__constant const char BLUE = 6
__constant char * const CHARSET = (char *)$2000
__constant char * const COLS = (char *)$d800
__constant char * const D018 = (char *)$d018
__constant char OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
__constant char OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const SCREEN1 = (char *)$2800
__constant struct MOS6581_SID * const SID = (struct MOS6581_SID *)$d400
__constant const char SID_CONTROL_NOISE = $80
__constant const char SINTABLE[$100] = kickasm {{ .for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(toRadians(360*i/256)))
 }}
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *)$d000
void __start()
char c1A
char c1A#0
char c1A#1
char c1A#10
char c1A#11
char c1A#12
char c1A#13
char c1A#14
char c1A#15
char c1A#16
char c1A#17
char c1A#18
char c1A#19
char c1A#2
char c1A#20
char c1A#21
char c1A#22
char c1A#23
char c1A#24
char c1A#25
char c1A#26
char c1A#27
char c1A#28
char c1A#29
char c1A#3
char c1A#30
char c1A#31
char c1A#32
char c1A#33
char c1A#4
char c1A#5
char c1A#6
char c1A#7
char c1A#8
char c1A#9
char c1B
char c1B#0
char c1B#1
char c1B#10
char c1B#11
char c1B#12
char c1B#13
char c1B#14
char c1B#15
char c1B#16
char c1B#17
char c1B#18
char c1B#19
char c1B#2
char c1B#20
char c1B#21
char c1B#22
char c1B#23
char c1B#24
char c1B#25
char c1B#26
char c1B#27
char c1B#28
char c1B#29
char c1B#3
char c1B#30
char c1B#31
char c1B#32
char c1B#33
char c1B#4
char c1B#5
char c1B#6
char c1B#7
char c1B#8
char c1B#9
char c2A
char c2A#0
char c2A#1
char c2A#10
char c2A#11
char c2A#12
char c2A#13
char c2A#14
char c2A#15
char c2A#16
char c2A#17
char c2A#18
char c2A#19
char c2A#2
char c2A#20
char c2A#21
char c2A#22
char c2A#23
char c2A#24
char c2A#25
char c2A#26
char c2A#27
char c2A#28
char c2A#29
char c2A#3
char c2A#30
char c2A#31
char c2A#32
char c2A#33
char c2A#4
char c2A#5
char c2A#6
char c2A#7
char c2A#8
char c2A#9
char c2B
char c2B#0
char c2B#1
char c2B#10
char c2B#11
char c2B#12
char c2B#13
char c2B#14
char c2B#15
char c2B#16
char c2B#17
char c2B#18
char c2B#19
char c2B#2
char c2B#20
char c2B#21
char c2B#22
char c2B#23
char c2B#24
char c2B#25
char c2B#26
char c2B#27
char c2B#28
char c2B#29
char c2B#3
char c2B#30
char c2B#31
char c2B#32
char c2B#33
char c2B#4
char c2B#5
char c2B#6
char c2B#7
char c2B#8
char c2B#9
void doplasma(char *screen)
bool doplasma::$0
char doplasma::$2
bool doplasma::$3
char doplasma::$4
bool doplasma::$5
bool doplasma::$6
number doplasma::$7
char *doplasma::$8
char doplasma::c1a
char doplasma::c1a#0
char doplasma::c1a#1
char doplasma::c1a#2
char doplasma::c1a#3
char doplasma::c1b
char doplasma::c1b#0
char doplasma::c1b#1
char doplasma::c1b#2
char doplasma::c1b#3
char doplasma::c2a
char doplasma::c2a#0
char doplasma::c2a#1
char doplasma::c2a#2
char doplasma::c2a#3
char doplasma::c2b
char doplasma::c2b#0
char doplasma::c2b#1
char doplasma::c2b#2
char doplasma::c2b#3
char doplasma::i
char doplasma::i#0
char doplasma::i#1
char doplasma::i#2
char doplasma::i#3
char doplasma::i1
char doplasma::i1#0
char doplasma::i1#1
char doplasma::i1#2
char doplasma::i1#3
char doplasma::i2
char doplasma::i2#0
char doplasma::i2#1
char doplasma::i2#2
char doplasma::i2#3
char doplasma::i2#4
char doplasma::i2#5
char doplasma::i2#6
char doplasma::ii
char doplasma::ii#0
char doplasma::ii#1
char doplasma::ii#2
char doplasma::ii#3
char *doplasma::screen
char *doplasma::screen#0
char *doplasma::screen#1
char *doplasma::screen#10
char *doplasma::screen#11
char *doplasma::screen#12
char *doplasma::screen#2
char *doplasma::screen#3
char *doplasma::screen#4
char *doplasma::screen#5
char *doplasma::screen#6
char *doplasma::screen#7
char *doplasma::screen#8
char *doplasma::screen#9
char doplasma::val
char doplasma::val#0
char doplasma::val#1
char doplasma::val#2
char doplasma::val#3
__constant char doplasma::xbuf[$28] = { fill( $28, 0) }
__constant char doplasma::ybuf[$19] = { fill( $19, 0) }
char doplasma::yprev
char doplasma::yprev#0
char doplasma::yprev#1
char doplasma::yprev#2
char doplasma::yprev#3
char doplasma::yval
char doplasma::yval#0
void main()
char main::$1
bool main::$2
char *main::col
char *main::col#0
char *main::col#1
char *main::col#2
number main::toD0181_$0
number main::toD0181_$1
char main::toD0181_$2
char main::toD0181_$3
number main::toD0181_$4
number main::toD0181_$5
number main::toD0181_$6
unsigned int main::toD0181_$7
char *main::toD0181_gfx
char *main::toD0181_gfx#0
char *main::toD0181_gfx#1
char main::toD0181_return
char main::toD0181_return#0
char main::toD0181_return#1
char main::toD0181_return#2
char main::toD0181_return#3
char *main::toD0181_screen
char *main::toD0181_screen#0
char *main::toD0181_screen#1
void makecharset(char *charset)
number makecharset::$10
number makecharset::$11
number makecharset::$12
bool makecharset::$13
bool makecharset::$14
bool makecharset::$2
char makecharset::$3
bool makecharset::$4
bool makecharset::$5
char makecharset::$6
number makecharset::$7
bool makecharset::$8
bool makecharset::$9
char makecharset::b
char makecharset::b#0
char makecharset::b#1
char makecharset::b#2
char makecharset::b#3
char makecharset::b#4
char makecharset::b#5
char makecharset::b#6
char makecharset::b#7
char makecharset::b#8
__constant const char makecharset::bittab[8] = { 1, 2, 4, 8, $10, $20, $40, $80 }
unsigned int makecharset::c
unsigned int makecharset::c#0
unsigned int makecharset::c#1
unsigned int makecharset::c#10
unsigned int makecharset::c#11
unsigned int makecharset::c#12
unsigned int makecharset::c#13
unsigned int makecharset::c#14
unsigned int makecharset::c#15
unsigned int makecharset::c#16
unsigned int makecharset::c#2
unsigned int makecharset::c#3
unsigned int makecharset::c#4
unsigned int makecharset::c#5
unsigned int makecharset::c#6
unsigned int makecharset::c#7
unsigned int makecharset::c#8
unsigned int makecharset::c#9
char *makecharset::charset
char *makecharset::charset#0
char *makecharset::charset#1
char *makecharset::charset#10
char *makecharset::charset#11
char *makecharset::charset#12
char *makecharset::charset#13
char *makecharset::charset#14
char *makecharset::charset#15
char *makecharset::charset#16
char *makecharset::charset#17
char *makecharset::charset#18
char *makecharset::charset#19
char *makecharset::charset#2
char *makecharset::charset#3
char *makecharset::charset#4
char *makecharset::charset#5
char *makecharset::charset#6
char *makecharset::charset#7
char *makecharset::charset#8
char *makecharset::charset#9
char makecharset::i
char makecharset::i#0
char makecharset::i#1
char makecharset::i#10
char makecharset::i#2
char makecharset::i#3
char makecharset::i#4
char makecharset::i#5
char makecharset::i#6
char makecharset::i#7
char makecharset::i#8
char makecharset::i#9
char makecharset::ii
char makecharset::ii#0
char makecharset::ii#1
char makecharset::ii#2
char makecharset::ii#3
char makecharset::ii#4
char makecharset::ii#5
char makecharset::ii#6
char makecharset::ii#7
char makecharset::s
char makecharset::s#0
char makecharset::s#1
char makecharset::s#2
char makecharset::s#3
char makecharset::s#4
char makecharset::s#5
char makecharset::s#6
char makecharset::s#7
char makecharset::s#8
char makecharset::s#9
char makecharset::sid_rnd1_return
char makecharset::sid_rnd1_return#0
char makecharset::sid_rnd1_return#1
char makecharset::sid_rnd1_return#2
char makecharset::sid_rnd1_return#3
void * memset(void *str , char c , unsigned int num)
bool memset::$0
bool memset::$1
bool memset::$3
char *memset::$4
char memset::c
char memset::c#0
char memset::c#1
char memset::c#2
char memset::c#3
char memset::c#4
char *memset::dst
char *memset::dst#0
char *memset::dst#1
char *memset::dst#2
char *memset::dst#3
char *memset::end
char *memset::end#0
char *memset::end#1
char *memset::end#2
unsigned int memset::num
unsigned int memset::num#0
unsigned int memset::num#1
unsigned int 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(char ch)
char print_char::ch
char print_char::ch#0
char print_char::ch#1
char *print_char_cursor
char *print_char_cursor#0
char *print_char_cursor#1
char *print_char_cursor#10
char *print_char_cursor#11
char *print_char_cursor#12
char *print_char_cursor#13
char *print_char_cursor#14
char *print_char_cursor#15
char *print_char_cursor#16
char *print_char_cursor#17
char *print_char_cursor#18
char *print_char_cursor#19
char *print_char_cursor#2
char *print_char_cursor#20
char *print_char_cursor#21
char *print_char_cursor#22
char *print_char_cursor#23
char *print_char_cursor#24
char *print_char_cursor#25
char *print_char_cursor#26
char *print_char_cursor#27
char *print_char_cursor#28
char *print_char_cursor#29
char *print_char_cursor#3
char *print_char_cursor#30
char *print_char_cursor#31
char *print_char_cursor#32
char *print_char_cursor#33
char *print_char_cursor#34
char *print_char_cursor#35
char *print_char_cursor#36
char *print_char_cursor#37
char *print_char_cursor#38
char *print_char_cursor#39
char *print_char_cursor#4
char *print_char_cursor#40
char *print_char_cursor#41
char *print_char_cursor#42
char *print_char_cursor#43
char *print_char_cursor#44
char *print_char_cursor#45
char *print_char_cursor#46
char *print_char_cursor#47
char *print_char_cursor#48
char *print_char_cursor#5
char *print_char_cursor#6
char *print_char_cursor#7
char *print_char_cursor#8
char *print_char_cursor#9
void print_cls()
char *print_line_cursor
char *print_line_cursor#0
char *print_line_cursor#1
char *print_line_cursor#10
char *print_line_cursor#11
char *print_line_cursor#12
char *print_line_cursor#13
char *print_line_cursor#14
char *print_line_cursor#15
char *print_line_cursor#16
char *print_line_cursor#17
char *print_line_cursor#18
char *print_line_cursor#19
char *print_line_cursor#2
char *print_line_cursor#20
char *print_line_cursor#21
char *print_line_cursor#22
char *print_line_cursor#23
char *print_line_cursor#24
char *print_line_cursor#25
char *print_line_cursor#26
char *print_line_cursor#27
char *print_line_cursor#28
char *print_line_cursor#29
char *print_line_cursor#3
char *print_line_cursor#30
char *print_line_cursor#31
char *print_line_cursor#32
char *print_line_cursor#33
char *print_line_cursor#34
char *print_line_cursor#35
char *print_line_cursor#36
char *print_line_cursor#37
char *print_line_cursor#38
char *print_line_cursor#39
char *print_line_cursor#4
char *print_line_cursor#40
char *print_line_cursor#41
char *print_line_cursor#42
char *print_line_cursor#43
char *print_line_cursor#5
char *print_line_cursor#6
char *print_line_cursor#7
char *print_line_cursor#8
char *print_line_cursor#9
char *print_screen
char *print_screen#0
char *print_screen#1
char *print_screen#10
char *print_screen#11
char *print_screen#12
char *print_screen#2
char *print_screen#3
char *print_screen#4
char *print_screen#5
char *print_screen#6
char *print_screen#7
char *print_screen#8
char *print_screen#9

Adding number conversion cast (unumber) $3e8 in memset::num#0 = $3e8
Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#1 > 0
Adding number conversion cast (unumber) $3e8 in main::col#1 = main::col#2 + rangenext(COLS,COLS+$3e8)
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
Adding number conversion cast (unumber) main::toD0181_$1 in main::toD0181_$1 = main::toD0181_$0 * (unumber)4
Adding number conversion cast (unumber) 4 in main::toD0181_$4 = main::toD0181_$3 / 4
Adding number conversion cast (unumber) main::toD0181_$4 in main::toD0181_$4 = main::toD0181_$3 / (unumber)4
Adding number conversion cast (unumber) $f in main::toD0181_$5 = main::toD0181_$4 & $f
Adding number conversion cast (unumber) main::toD0181_$5 in main::toD0181_$5 = main::toD0181_$4 & (unumber)$f
Adding number conversion cast (unumber) main::toD0181_$6 in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
Adding number conversion cast (unumber) $19 in doplasma::$0 = doplasma::i#2 < $19
Adding number conversion cast (unumber) 4 in doplasma::c1a#1 = doplasma::c1a#2 + 4
Adding number conversion cast (unumber) 9 in doplasma::c1b#1 = doplasma::c1b#2 + 9
Adding number conversion cast (unumber) 3 in c1A#2 = c1A#10 + 3
Adding number conversion cast (unumber) 5 in c1B#2 = c1B#10 - 5
Adding number conversion cast (unumber) $28 in doplasma::$3 = doplasma::i1#2 < $28
Adding number conversion cast (unumber) 3 in doplasma::c2a#1 = doplasma::c2a#2 + 3
Adding number conversion cast (unumber) 7 in doplasma::c2b#1 = doplasma::c2b#2 + 7
Adding number conversion cast (unumber) 2 in c2A#2 = c2A#10 + 2
Adding number conversion cast (unumber) 3 in c2B#2 = c2B#10 - 3
Adding number conversion cast (unumber) $28 in doplasma::$5 = doplasma::i2#2 < $28
Adding number conversion cast (unumber) $19 in doplasma::$6 = doplasma::ii#2 < $19
Adding number conversion cast (unumber) $28 in doplasma::$7 = doplasma::ii#3 * $28
Adding number conversion cast (unumber) doplasma::$7 in doplasma::$7 = doplasma::ii#3 * (unumber)$28
Adding number conversion cast (unumber) $ffff in *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
Adding number conversion cast (unumber) $100 in makecharset::$2 = makecharset::c#2 < $100
Adding number conversion cast (unumber) 8 in makecharset::$4 = makecharset::i#2 < 8
Adding number conversion cast (unumber) 7 in makecharset::$12 = makecharset::c#4 & 7
Adding number conversion cast (unumber) makecharset::$12 in makecharset::$12 = makecharset::c#4 & (unumber)7
Adding number conversion cast (unumber) 0 in makecharset::$13 = makecharset::$12 == 0
Adding number conversion cast (unumber) 8 in makecharset::$5 = makecharset::ii#2 < 8
Adding number conversion cast (unumber) $ff in makecharset::$7 = makecharset::$6 & $ff
Adding number conversion cast (unumber) makecharset::$7 in makecharset::$7 = makecharset::$6 & (unumber)$ff
Adding number conversion cast (unumber) 8 in makecharset::$10 = makecharset::c#5 * 8
Adding number conversion cast (unumber) makecharset::$10 in makecharset::$10 = makecharset::c#5 * (unumber)8
Adding number conversion cast (unumber) makecharset::$11 in makecharset::$11 = makecharset::$10 + makecharset::i#3
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast memset::num#0 = (unumber)$3e8
Inlining cast memset::dst#0 = (char *)memset::str#2
Inlining cast *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = (unumber)$ffff
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (char *) 53272
Simplifying constant pointer cast (struct MOS6581_SID *) 54272
Simplifying constant pointer cast (struct MOS6569_VICII *) 53248
Simplifying constant pointer cast (char *) 55296
Simplifying constant pointer cast (char *) 10240
Simplifying constant pointer cast (char *) 8192
Simplifying constant integer cast $3e8
Simplifying constant integer cast 0
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 $ffff
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
Simplifying constant pointer cast (char *) 1024
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (unsigned int) $3e8
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $3e8
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 9
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 5
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) $28
Finalized unsigned number type (unsigned int) $ffff
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) 8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to unsigned int in main::toD0181_$0 = main::toD0181_$7 & $3fff
Inferred type updated to unsigned int in main::toD0181_$1 = main::toD0181_$0 * 4
Inferred type updated to char in main::toD0181_$4 = main::toD0181_$3 / 4
Inferred type updated to char in main::toD0181_$5 = main::toD0181_$4 & $f
Inferred type updated to char in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
Inferred type updated to char in doplasma::$7 = doplasma::ii#3 * $28
Inferred type updated to char in makecharset::$12 = makecharset::c#4 & 7
Inferred type updated to char in makecharset::$7 = makecharset::$6 & $ff
Inferred type updated to unsigned int in makecharset::$10 = makecharset::c#5 * 8
Inferred type updated to unsigned int in makecharset::$11 = makecharset::$10 + makecharset::i#3
Inversing boolean not [21] memset::$1 = memset::num#1 <= 0 from [20] memset::$0 = memset::num#1 > 0
Inversing boolean not [173] makecharset::$14 = makecharset::$12 != 0 from [172] makecharset::$13 = makecharset::$12 == 0
Inversing boolean not [186] makecharset::$9 = makecharset::$7 <= makecharset::s#1 from [185] makecharset::$8 = makecharset::$7 > makecharset::s#1
Successful SSA optimization Pass2UnaryNotSimplification
Alias print_char_cursor#0 = print_char_cursor#13 print_char_cursor#1 
Alias print_line_cursor#0 = print_screen#3 print_screen#2 print_char_cursor#2 print_line_cursor#9 print_char_cursor#14 print_line_cursor#1 print_char_cursor#3 
Alias memset::return#1 = memset::str#1 memset::return#3 memset::return#2 
Alias memset::str#2 = memset::str#3 
Alias memset::num#1 = memset::num#2 
Alias memset::c#3 = memset::c#4 
Alias memset::c#1 = memset::c#2 
Alias memset::dst#2 = memset::dst#3 
Alias memset::end#1 = memset::end#2 
Alias memset::str#4 = memset::str#5 
Alias print_line_cursor#16 = print_line_cursor#21 
Alias print_char_cursor#23 = print_char_cursor#28 
Alias print_screen#10 = print_screen#11 
Alias c1A#19 = c1A#31 c1A#32 c1A#30 c1A#26 c1A#23 
Alias c1B#19 = c1B#31 c1B#32 c1B#30 c1B#26 c1B#23 
Alias c2A#20 = c2A#31 c2A#32 c2A#30 c2A#27 c2A#25 
Alias c2B#20 = c2B#31 c2B#32 c2B#30 c2B#27 c2B#25 
Alias print_line_cursor#10 = print_line_cursor#2 print_line_cursor#32 print_line_cursor#27 print_line_cursor#22 
Alias print_char_cursor#15 = print_char_cursor#4 print_char_cursor#39 print_char_cursor#35 print_char_cursor#29 
Alias main::toD0181_screen#0 = main::toD0181_screen#1 
Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 
Alias main::toD0181_return#0 = main::toD0181_$6 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 
Alias c1A#1 = c1A#14 c1A#15 c1A#8 
Alias c1B#1 = c1B#14 c1B#15 c1B#8 
Alias c2A#1 = c2A#14 c2A#15 c2A#8 
Alias c2B#1 = c2B#14 c2B#15 c2B#8 
Alias print_line_cursor#11 = print_line_cursor#28 print_line_cursor#17 print_line_cursor#23 print_line_cursor#3 
Alias print_char_cursor#16 = print_char_cursor#36 print_char_cursor#24 print_char_cursor#30 print_char_cursor#5 
Alias c1A#0 = c1A#7 
Alias c1B#0 = c1B#7 
Alias c2A#0 = c2A#7 
Alias c2B#0 = c2B#7 
Alias doplasma::c1a#2 = doplasma::c1a#3 
Alias doplasma::c1b#2 = doplasma::c1b#3 
Alias doplasma::yprev#2 = doplasma::yprev#3 
Alias doplasma::i#2 = doplasma::i#3 
Alias c1A#10 = c1A#20 c1A#16 
Alias c1B#10 = c1B#20 c1B#16 
Alias c2A#16 = c2A#22 c2A#9 
Alias c2B#16 = c2B#22 c2B#9 
Alias doplasma::screen#10 = doplasma::screen#12 doplasma::screen#8 
Alias doplasma::yprev#1 = doplasma::yval#0 
Alias doplasma::c2a#2 = doplasma::c2a#3 
Alias doplasma::c2b#2 = doplasma::c2b#3 
Alias doplasma::i1#2 = doplasma::i1#3 
Alias c2A#10 = c2A#23 c2A#17 
Alias c2B#10 = c2B#23 c2B#17 
Alias c1A#22 = c1A#27 c1A#24 
Alias c1B#22 = c1B#27 c1B#24 
Alias doplasma::screen#6 = doplasma::screen#9 doplasma::screen#7 
Alias doplasma::i2#2 = doplasma::i2#3 
Alias doplasma::screen#3 = doplasma::screen#4 
Alias c1A#11 = c1A#29 c1A#17 c1A#3 
Alias c1B#11 = c1B#29 c1B#17 c1B#3 
Alias c2A#11 = c2A#29 c2A#18 c2A#3 
Alias c2B#11 = c2B#29 c2B#18 c2B#3 
Alias doplasma::val#2 = doplasma::val#3 
Alias doplasma::ii#2 = doplasma::ii#3 
Alias doplasma::screen#1 = doplasma::screen#2 doplasma::screen#5 
Alias doplasma::i2#4 = doplasma::i2#6 doplasma::i2#5 
Alias c1A#21 = c1A#28 c1A#25 
Alias c1B#21 = c1B#28 c1B#25 
Alias c2A#24 = c2A#28 c2A#26 
Alias c2B#24 = c2B#28 c2B#26 
Alias print_screen#5 = print_screen#7 print_screen#9 
Alias print_line_cursor#18 = print_line_cursor#24 print_line_cursor#29 
Alias print_char_cursor#25 = print_char_cursor#31 print_char_cursor#37 
Alias makecharset::charset#13 = makecharset::charset#17 makecharset::charset#19 makecharset::charset#14 
Alias print_line_cursor#12 = print_line_cursor#4 
Alias print_char_cursor#17 = print_char_cursor#6 
Alias makecharset::c#2 = makecharset::c#3 
Alias makecharset::charset#10 = makecharset::charset#8 
Alias print_char_cursor#19 = print_char_cursor#40 print_char_cursor#26 print_char_cursor#8 
Alias print_line_cursor#13 = print_line_cursor#35 print_line_cursor#19 print_line_cursor#5 
Alias makecharset::c#10 = makecharset::c#7 makecharset::c#4 makecharset::c#12 makecharset::c#9 
Alias makecharset::i#2 = makecharset::i#5 
Alias makecharset::charset#15 = makecharset::charset#3 makecharset::charset#5 makecharset::charset#16 makecharset::charset#18 
Alias makecharset::s#5 = makecharset::s#7 
Alias print_char_cursor#22 = print_char_cursor#43 print_char_cursor#38 print_char_cursor#33 
Alias print_line_cursor#30 = print_line_cursor#38 print_line_cursor#33 print_line_cursor#31 print_line_cursor#34 
Alias makecharset::s#1 = makecharset::s#3 makecharset::s#4 makecharset::s#2 makecharset::s#9 makecharset::s#8 
Alias makecharset::ii#2 = makecharset::ii#7 makecharset::ii#6 makecharset::ii#5 makecharset::ii#4 
Alias makecharset::b#2 = makecharset::b#8 makecharset::b#4 makecharset::b#7 makecharset::b#5 makecharset::b#3 
Alias makecharset::c#13 = makecharset::c#16 makecharset::c#8 makecharset::c#15 makecharset::c#5 makecharset::c#14 
Alias makecharset::i#10 = makecharset::i#4 makecharset::i#9 makecharset::i#7 makecharset::i#3 makecharset::i#8 
Alias makecharset::charset#1 = makecharset::charset#11 makecharset::charset#2 makecharset::charset#9 makecharset::charset#6 makecharset::charset#7 
Alias print_char_cursor#41 = print_char_cursor#48 print_char_cursor#42 print_char_cursor#47 print_char_cursor#45 print_char_cursor#46 
Alias print_line_cursor#36 = print_line_cursor#43 print_line_cursor#37 print_line_cursor#42 print_line_cursor#40 print_line_cursor#41 
Alias makecharset::sid_rnd1_return#0 = makecharset::sid_rnd1_return#2 makecharset::sid_rnd1_return#1 makecharset::sid_rnd1_return#3 makecharset::$6 
Alias print_char_cursor#18 = print_char_cursor#7 
Alias print_screen#0 = print_line_cursor#6 print_char_cursor#9 print_line_cursor#20 print_char_cursor#27 print_screen#8 print_screen#6 print_screen#4 print_screen#1 
Alias c1A#18 = c1A#4 
Alias c1B#18 = c1B#4 
Alias c2A#19 = c2A#4 
Alias c2B#19 = c2B#4 
Alias print_line_cursor#14 = print_line_cursor#7 print_line_cursor#15 print_line_cursor#8 
Alias print_char_cursor#10 = print_char_cursor#20 print_char_cursor#21 print_char_cursor#11 
Alias c1A#12 = c1A#5 c1A#13 c1A#6 
Alias c1B#12 = c1B#5 c1B#13 c1B#6 
Alias c2A#12 = c2A#5 c2A#13 c2A#6 
Alias c2B#12 = c2B#5 c2B#13 c2B#6 
Successful SSA optimization Pass2AliasElimination
Alias makecharset::ii#2 = makecharset::ii#3 
Alias makecharset::c#11 = makecharset::c#13 
Alias makecharset::i#10 = makecharset::i#6 
Alias makecharset::charset#1 = makecharset::charset#4 
Alias makecharset::s#1 = makecharset::s#6 
Alias print_char_cursor#41 = print_char_cursor#44 
Alias print_line_cursor#36 = print_line_cursor#39 
Alias makecharset::c#10 = makecharset::c#6 
Alias print_line_cursor#25 = print_line_cursor#30 
Alias makecharset::charset#12 = makecharset::charset#15 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values print_char::ch#1 print_char::ch#0
Identical Phi Values print_char_cursor#12 print_char_cursor#22
Identical Phi Values print_line_cursor#0 print_screen#5
Identical Phi Values memset::num#1 memset::num#0
Identical Phi Values memset::str#2 memset::str#0
Identical Phi Values memset::c#3 memset::c#0
Identical Phi Values memset::end#1 memset::end#0
Identical Phi Values memset::str#4 memset::str#2
Identical Phi Values memset::c#1 memset::c#3
Identical Phi Values print_line_cursor#26 print_screen#0
Identical Phi Values print_char_cursor#34 print_screen#0
Identical Phi Values print_screen#12 print_screen#0
Identical Phi Values c1A#33 c1A#18
Identical Phi Values c1B#33 c1B#18
Identical Phi Values c2A#33 c2A#19
Identical Phi Values c2B#33 c2B#19
Identical Phi Values print_line_cursor#16 print_line_cursor#26
Identical Phi Values print_char_cursor#23 print_char_cursor#34
Identical Phi Values print_screen#10 print_screen#12
Identical Phi Values c1A#19 c1A#33
Identical Phi Values c1B#19 c1B#33
Identical Phi Values c2A#20 c2A#33
Identical Phi Values c2B#20 c2B#33
Identical Phi Values print_line_cursor#10 print_line_cursor#13
Identical Phi Values print_char_cursor#15 print_char_cursor#19
Identical Phi Values print_line_cursor#11 print_line_cursor#10
Identical Phi Values print_char_cursor#16 print_char_cursor#15
Identical Phi Values c1A#0 c1A#11
Identical Phi Values c1B#0 c1B#11
Identical Phi Values c2A#0 c2A#11
Identical Phi Values c2B#0 c2B#11
Identical Phi Values c1A#9 c1A#1
Identical Phi Values c1B#9 c1B#1
Identical Phi Values c2A#21 c2A#1
Identical Phi Values c2B#21 c2B#1
Identical Phi Values doplasma::screen#11 doplasma::screen#0
Identical Phi Values c1A#10 c1A#9
Identical Phi Values c1B#10 c1B#9
Identical Phi Values c2A#16 c2A#21
Identical Phi Values c2B#16 c2B#21
Identical Phi Values doplasma::screen#10 doplasma::screen#11
Identical Phi Values c2A#10 c2A#16
Identical Phi Values c2B#10 c2B#16
Identical Phi Values c1A#22 c1A#2
Identical Phi Values c1B#22 c1B#2
Identical Phi Values doplasma::screen#6 doplasma::screen#10
Identical Phi Values doplasma::screen#1 doplasma::screen#3
Identical Phi Values doplasma::i2#4 doplasma::i2#2
Identical Phi Values c1A#21 c1A#11
Identical Phi Values c1B#21 c1B#11
Identical Phi Values c2A#24 c2A#11
Identical Phi Values c2B#24 c2B#11
Identical Phi Values print_screen#5 print_screen#10
Identical Phi Values print_line_cursor#18 print_line_cursor#16
Identical Phi Values print_char_cursor#25 print_char_cursor#23
Identical Phi Values makecharset::charset#13 makecharset::charset#0
Identical Phi Values print_line_cursor#12 print_line_cursor#0
Identical Phi Values print_char_cursor#17 print_line_cursor#0
Identical Phi Values makecharset::c#11 makecharset::c#10
Identical Phi Values makecharset::i#10 makecharset::i#2
Identical Phi Values makecharset::charset#1 makecharset::charset#12
Identical Phi Values makecharset::s#1 makecharset::s#5
Identical Phi Values print_char_cursor#41 print_char_cursor#22
Identical Phi Values print_line_cursor#36 print_line_cursor#25
Identical Phi Values print_char_cursor#18 print_char_cursor#0
Identical Phi Values print_line_cursor#14 print_line_cursor#11
Identical Phi Values print_char_cursor#10 print_char_cursor#16
Identical Phi Values c1A#12 c1A#1
Identical Phi Values c1B#12 c1B#1
Identical Phi Values c2A#12 c2A#1
Identical Phi Values c2B#12 c2B#1
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values memset::return#1 memset::str#0
Identical Phi Values c1A#11 c1A#2
Identical Phi Values c1B#11 c1B#2
Identical Phi Values c2A#11 c2A#2
Identical Phi Values c2B#11 c2B#2
Identical Phi Values doplasma::screen#3 doplasma::screen#0
Identical Phi Values makecharset::c#10 makecharset::c#2
Identical Phi Values makecharset::charset#12 makecharset::charset#10
Identical Phi Values print_char_cursor#22 print_char_cursor#19
Identical Phi Values print_line_cursor#25 print_line_cursor#13
Identical Phi Values makecharset::s#5 makecharset::s#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values print_line_cursor#13 print_screen#0
Identical Phi Values makecharset::charset#10 makecharset::charset#0
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition memset::$1 [13] if(memset::num#0<=0) goto memset::@1
Simple Condition memset::$3 [20] if(memset::dst#2!=memset::end#0) goto memset::@4
Simple Condition main::$2 [33] if(main::col#1!=rangelast(COLS,COLS+$3e8)) goto main::@1
Simple Condition doplasma::$0 [61] if(doplasma::i#2<$19) goto doplasma::@2
Simple Condition doplasma::$3 [75] if(doplasma::i1#2<$28) goto doplasma::@5
Simple Condition doplasma::$5 [86] if(doplasma::i2#2<$28) goto doplasma::@8
Simple Condition doplasma::$6 [91] unroll if(doplasma::ii#2<$19) goto doplasma::@10
Simple Condition makecharset::$2 [107] if(makecharset::c#2<$100) goto makecharset::@2
Simple Condition makecharset::$4 [113] if(makecharset::i#2<8) goto makecharset::@4
Simple Condition makecharset::$14 [118] if(makecharset::$12!=0) goto makecharset::@11
Simple Condition makecharset::$5 [121] if(makecharset::ii#2<8) goto makecharset::sid_rnd1
Simple Condition makecharset::$9 [125] if(makecharset::$7<=makecharset::s#0) goto makecharset::@8
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant memset::c#0 = ' '
Constant memset::num#0 = $3e8
Constant main::col#0 = COLS
Constant makecharset::charset#0 = CHARSET
Constant main::toD0181_screen#0 = SCREEN1
Constant main::toD0181_gfx#0 = CHARSET
Constant doplasma::screen#0 = SCREEN1
Constant doplasma::yprev#0 = 0
Constant doplasma::i#0 = 0
Constant doplasma::i1#0 = 0
Constant doplasma::i2#0 = 0
Constant doplasma::ii#0 = 0
Constant makecharset::c#0 = 0
Constant makecharset::i#0 = 0
Constant makecharset::b#0 = 0
Constant makecharset::ii#0 = 0
Constant print_char::ch#0 = '.'
Constant print_screen#0 = (char *) 1024
Constant c1A#18 = 0
Constant c1B#18 = 0
Constant c2A#19 = 0
Constant c2B#19 = 0
Successful SSA optimization Pass2ConstantIdentification
Constant memset::str#0 = (void *)print_screen#0
Constant main::toD0181_$7 = (unsigned int)main::toD0181_screen#0
Successful SSA optimization Pass2ConstantIdentification
Constant memset::return#0 = memset::str#0
Constant memset::$4 = (char *)memset::str#0
Constant memset::dst#0 = (char *)memset::str#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (unsigned int)main::toD0181_gfx#0 in [43] main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantValues
if() condition always false - eliminating [13] if(memset::num#0<=0) goto memset::@1
if() condition always true - replacing block destination [49] if(true) goto main::@4
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [31] main::col#1 = ++ main::col#2 to ++
Resolved ranged comparison value [33] if(main::col#1!=rangelast(COLS,COLS+$3e8)) goto main::@1 to (char *)COLS+$3e8+1
De-inlining pointer[w] to *(pointer+w)   [128] makecharset::charset#0[makecharset::$11] = makecharset::b#2
Successful SSA optimization Pass2DeInlineWordDerefIdx
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused constant memset::return#0
Successful SSA optimization PassNEliminateUnusedVars
Removing unused procedure __start
Removing unused procedure block __start
Removing unused procedure block __start::__init1
Removing unused procedure block __start::@1
Removing unused procedure block __start::@2
Removing unused procedure block __start::@return
Successful SSA optimization PassNEliminateEmptyStart
Adding number conversion cast (unumber) 1 in [17] if(main::col#1!=(char *)COLS+$3e8+1) goto main::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast COLS+$3e8+(unumber)1
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Constant right-side identified [5] memset::end#0 = memset::$4 + memset::num#0
Constant right-side identified [19] main::toD0181_$0 = main::toD0181_$7 & $3fff
Constant right-side identified [22] main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant memset::end#0 = memset::$4+memset::num#0
Constant main::toD0181_$0 = main::toD0181_$7&$3fff
Constant main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [18] main::toD0181_$1 = main::toD0181_$0 * 4
Constant right-side identified [20] main::toD0181_$4 = main::toD0181_$3 / 4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_$1 = main::toD0181_$0*4
Constant main::toD0181_$4 = main::toD0181_$3/4
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [18] main::toD0181_$2 = byte1  main::toD0181_$1
Constant right-side identified [19] main::toD0181_$5 = main::toD0181_$4 & $f
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_$2 = byte1 main::toD0181_$1
Constant main::toD0181_$5 = main::toD0181_$4&$f
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [18] main::toD0181_return#0 = main::toD0181_$2 | main::toD0181_$5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9 tails: doplasma::@10 blocks: doplasma::@10 doplasma::@9 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#0 = doplasma::val#2 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#2 doplasma::ii#0
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [50] doplasma::$7 = doplasma::ii#0 * $28
Constant right-side identified [53] doplasma::ii#1 = ++ doplasma::ii#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$7 = doplasma::ii#0*$28
Constant doplasma::ii#1 = ++doplasma::ii#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [48] if(doplasma::ii#0<$19) goto doplasma::@10
Successful SSA optimization Pass2ConstantIfs
Simplifying constant evaluating to zero doplasma::ii#0*$28 in 
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero doplasma::ybuf in [49] doplasma::val#1 = doplasma::val#0 + doplasma::ybuf[doplasma::ii#0]
Simplifying expression containing zero doplasma::screen#0 in [51] doplasma::$8 = doplasma::screen#0 + doplasma::$7
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused constant doplasma::$7
Successful SSA optimization PassNEliminateUnusedVars
Constant doplasma::$8 = doplasma::screen#0
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_1 tails: doplasma::@10_1 blocks: doplasma::@10_1 doplasma::@9_1 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#1 = doplasma::val#4 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#4 doplasma::ii#1
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [61] doplasma::$9 = doplasma::ii#1 * $28
Constant right-side identified [64] doplasma::ii#5 = ++ doplasma::ii#1
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$9 = doplasma::ii#1*$28
Constant doplasma::ii#5 = ++doplasma::ii#1
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [58] if(doplasma::ii#1<$19) goto doplasma::@10_1
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [59] doplasma::$10 = doplasma::screen#0 + doplasma::$9
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$10 = doplasma::screen#0+doplasma::$9
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_2 tails: doplasma::@10_2 blocks: doplasma::@10_2 doplasma::@9_2 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#5 = doplasma::val#6 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#6 doplasma::ii#5
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [63] doplasma::$11 = doplasma::ii#5 * $28
Constant right-side identified [66] doplasma::ii#7 = ++ doplasma::ii#5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$11 = doplasma::ii#5*$28
Constant doplasma::ii#7 = ++doplasma::ii#5
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [60] if(doplasma::ii#5<$19) goto doplasma::@10_2
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [61] doplasma::$12 = doplasma::screen#0 + doplasma::$11
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$12 = doplasma::screen#0+doplasma::$11
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_3 tails: doplasma::@10_3 blocks: doplasma::@10_3 doplasma::@9_3 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#7 = doplasma::val#8 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#8 doplasma::ii#7
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [65] doplasma::$13 = doplasma::ii#7 * $28
Constant right-side identified [68] doplasma::ii#9 = ++ doplasma::ii#7
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$13 = doplasma::ii#7*$28
Constant doplasma::ii#9 = ++doplasma::ii#7
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [62] if(doplasma::ii#7<$19) goto doplasma::@10_3
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [63] doplasma::$14 = doplasma::screen#0 + doplasma::$13
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$14 = doplasma::screen#0+doplasma::$13
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_4 tails: doplasma::@10_4 blocks: doplasma::@10_4 doplasma::@9_4 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#10 = doplasma::val#9 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#10 doplasma::ii#9
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [67] doplasma::$15 = doplasma::ii#9 * $28
Constant right-side identified [70] doplasma::ii#11 = ++ doplasma::ii#9
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$15 = doplasma::ii#9*$28
Constant doplasma::ii#11 = ++doplasma::ii#9
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [64] if(doplasma::ii#9<$19) goto doplasma::@10_4
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [65] doplasma::$16 = doplasma::screen#0 + doplasma::$15
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$16 = doplasma::screen#0+doplasma::$15
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_5 tails: doplasma::@10_5 blocks: doplasma::@10_5 doplasma::@9_5 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#11 = doplasma::val#12 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#12 doplasma::ii#11
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [69] doplasma::$17 = doplasma::ii#11 * $28
Constant right-side identified [72] doplasma::ii#13 = ++ doplasma::ii#11
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$17 = doplasma::ii#11*$28
Constant doplasma::ii#13 = ++doplasma::ii#11
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [66] if(doplasma::ii#11<$19) goto doplasma::@10_5
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [67] doplasma::$18 = doplasma::screen#0 + doplasma::$17
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$18 = doplasma::screen#0+doplasma::$17
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_6 tails: doplasma::@10_6 blocks: doplasma::@10_6 doplasma::@9_6 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#13 = doplasma::val#14 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#14 doplasma::ii#13
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [71] doplasma::$19 = doplasma::ii#13 * $28
Constant right-side identified [74] doplasma::ii#15 = ++ doplasma::ii#13
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$19 = doplasma::ii#13*$28
Constant doplasma::ii#15 = ++doplasma::ii#13
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [68] if(doplasma::ii#13<$19) goto doplasma::@10_6
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [69] doplasma::$20 = doplasma::screen#0 + doplasma::$19
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$20 = doplasma::screen#0+doplasma::$19
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_7 tails: doplasma::@10_7 blocks: doplasma::@10_7 doplasma::@9_7 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#15 = doplasma::val#16 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#16 doplasma::ii#15
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [73] doplasma::$21 = doplasma::ii#15 * $28
Constant right-side identified [76] doplasma::ii#17 = ++ doplasma::ii#15
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$21 = doplasma::ii#15*$28
Constant doplasma::ii#17 = ++doplasma::ii#15
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [70] if(doplasma::ii#15<$19) goto doplasma::@10_7
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [71] doplasma::$22 = doplasma::screen#0 + doplasma::$21
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$22 = doplasma::screen#0+doplasma::$21
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_8 tails: doplasma::@10_8 blocks: doplasma::@10_8 doplasma::@9_8 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#17 = doplasma::val#18 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#18 doplasma::ii#17
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [75] doplasma::$23 = doplasma::ii#17 * $28
Constant right-side identified [78] doplasma::ii#19 = ++ doplasma::ii#17
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$23 = doplasma::ii#17*$28
Constant doplasma::ii#19 = ++doplasma::ii#17
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [72] if(doplasma::ii#17<$19) goto doplasma::@10_8
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [73] doplasma::$24 = doplasma::screen#0 + doplasma::$23
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$24 = doplasma::screen#0+doplasma::$23
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_9 tails: doplasma::@10_9 blocks: doplasma::@10_9 doplasma::@9_9 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#19 = doplasma::val#20 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#20 doplasma::ii#19
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [77] doplasma::$25 = doplasma::ii#19 * $28
Constant right-side identified [80] doplasma::ii#21 = ++ doplasma::ii#19
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$25 = doplasma::ii#19*$28
Constant doplasma::ii#21 = ++doplasma::ii#19
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [74] if(doplasma::ii#19<$19) goto doplasma::@10_9
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [75] doplasma::$26 = doplasma::screen#0 + doplasma::$25
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$26 = doplasma::screen#0+doplasma::$25
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_10 tails: doplasma::@10_10 blocks: doplasma::@10_10 doplasma::@9_10 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#21 = doplasma::val#22 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#22 doplasma::ii#21
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [79] doplasma::$27 = doplasma::ii#21 * $28
Constant right-side identified [82] doplasma::ii#23 = ++ doplasma::ii#21
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$27 = doplasma::ii#21*$28
Constant doplasma::ii#23 = ++doplasma::ii#21
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [76] if(doplasma::ii#21<$19) goto doplasma::@10_10
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [77] doplasma::$28 = doplasma::screen#0 + doplasma::$27
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$28 = doplasma::screen#0+doplasma::$27
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_11 tails: doplasma::@10_11 blocks: doplasma::@10_11 doplasma::@9_11 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#23 = doplasma::val#24 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#24 doplasma::ii#23
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [81] doplasma::$29 = doplasma::ii#23 * $28
Constant right-side identified [84] doplasma::ii#25 = ++ doplasma::ii#23
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$29 = doplasma::ii#23*$28
Constant doplasma::ii#25 = ++doplasma::ii#23
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [78] if(doplasma::ii#23<$19) goto doplasma::@10_11
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [79] doplasma::$30 = doplasma::screen#0 + doplasma::$29
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$30 = doplasma::screen#0+doplasma::$29
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_12 tails: doplasma::@10_12 blocks: doplasma::@10_12 doplasma::@9_12 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#25 = doplasma::val#26 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#26 doplasma::ii#25
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [83] doplasma::$31 = doplasma::ii#25 * $28
Constant right-side identified [86] doplasma::ii#27 = ++ doplasma::ii#25
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$31 = doplasma::ii#25*$28
Constant doplasma::ii#27 = ++doplasma::ii#25
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [80] if(doplasma::ii#25<$19) goto doplasma::@10_12
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [81] doplasma::$32 = doplasma::screen#0 + doplasma::$31
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$32 = doplasma::screen#0+doplasma::$31
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_13 tails: doplasma::@10_13 blocks: doplasma::@10_13 doplasma::@9_13 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#27 = doplasma::val#28 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#28 doplasma::ii#27
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [85] doplasma::$33 = doplasma::ii#27 * $28
Constant right-side identified [88] doplasma::ii#29 = ++ doplasma::ii#27
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$33 = doplasma::ii#27*$28
Constant doplasma::ii#29 = ++doplasma::ii#27
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [82] if(doplasma::ii#27<$19) goto doplasma::@10_13
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [83] doplasma::$34 = doplasma::screen#0 + doplasma::$33
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$34 = doplasma::screen#0+doplasma::$33
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_14 tails: doplasma::@10_14 blocks: doplasma::@10_14 doplasma::@9_14 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#29 = doplasma::val#30 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#30 doplasma::ii#29
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [87] doplasma::$35 = doplasma::ii#29 * $28
Constant right-side identified [90] doplasma::ii#31 = ++ doplasma::ii#29
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$35 = doplasma::ii#29*$28
Constant doplasma::ii#31 = ++doplasma::ii#29
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [84] if(doplasma::ii#29<$19) goto doplasma::@10_14
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [85] doplasma::$36 = doplasma::screen#0 + doplasma::$35
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$36 = doplasma::screen#0+doplasma::$35
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_15 tails: doplasma::@10_15 blocks: doplasma::@10_15 doplasma::@9_15 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#31 = doplasma::val#32 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#32 doplasma::ii#31
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [89] doplasma::$37 = doplasma::ii#31 * $28
Constant right-side identified [92] doplasma::ii#33 = ++ doplasma::ii#31
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$37 = doplasma::ii#31*$28
Constant doplasma::ii#33 = ++doplasma::ii#31
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [86] if(doplasma::ii#31<$19) goto doplasma::@10_15
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [87] doplasma::$38 = doplasma::screen#0 + doplasma::$37
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$38 = doplasma::screen#0+doplasma::$37
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_16 tails: doplasma::@10_16 blocks: doplasma::@10_16 doplasma::@9_16 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#33 = doplasma::val#34 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#34 doplasma::ii#33
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [91] doplasma::$39 = doplasma::ii#33 * $28
Constant right-side identified [94] doplasma::ii#35 = ++ doplasma::ii#33
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$39 = doplasma::ii#33*$28
Constant doplasma::ii#35 = ++doplasma::ii#33
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [88] if(doplasma::ii#33<$19) goto doplasma::@10_16
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [89] doplasma::$40 = doplasma::screen#0 + doplasma::$39
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$40 = doplasma::screen#0+doplasma::$39
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_17 tails: doplasma::@10_17 blocks: doplasma::@10_17 doplasma::@9_17 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#35 = doplasma::val#36 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#36 doplasma::ii#35
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [93] doplasma::$41 = doplasma::ii#35 * $28
Constant right-side identified [96] doplasma::ii#37 = ++ doplasma::ii#35
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$41 = doplasma::ii#35*$28
Constant doplasma::ii#37 = ++doplasma::ii#35
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [90] if(doplasma::ii#35<$19) goto doplasma::@10_17
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [91] doplasma::$42 = doplasma::screen#0 + doplasma::$41
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$42 = doplasma::screen#0+doplasma::$41
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_18 tails: doplasma::@10_18 blocks: doplasma::@10_18 doplasma::@9_18 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#37 = doplasma::val#38 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#38 doplasma::ii#37
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [95] doplasma::$43 = doplasma::ii#37 * $28
Constant right-side identified [98] doplasma::ii#39 = ++ doplasma::ii#37
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$43 = doplasma::ii#37*$28
Constant doplasma::ii#39 = ++doplasma::ii#37
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [92] if(doplasma::ii#37<$19) goto doplasma::@10_18
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [93] doplasma::$44 = doplasma::screen#0 + doplasma::$43
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$44 = doplasma::screen#0+doplasma::$43
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_19 tails: doplasma::@10_19 blocks: doplasma::@10_19 doplasma::@9_19 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#39 = doplasma::val#40 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#40 doplasma::ii#39
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [97] doplasma::$45 = doplasma::ii#39 * $28
Constant right-side identified [100] doplasma::ii#41 = ++ doplasma::ii#39
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$45 = doplasma::ii#39*$28
Constant doplasma::ii#41 = ++doplasma::ii#39
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [94] if(doplasma::ii#39<$19) goto doplasma::@10_19
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [95] doplasma::$46 = doplasma::screen#0 + doplasma::$45
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$46 = doplasma::screen#0+doplasma::$45
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_20 tails: doplasma::@10_20 blocks: doplasma::@10_20 doplasma::@9_20 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#41 = doplasma::val#42 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#42 doplasma::ii#41
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [99] doplasma::$47 = doplasma::ii#41 * $28
Constant right-side identified [102] doplasma::ii#43 = ++ doplasma::ii#41
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$47 = doplasma::ii#41*$28
Constant doplasma::ii#43 = ++doplasma::ii#41
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [96] if(doplasma::ii#41<$19) goto doplasma::@10_20
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [97] doplasma::$48 = doplasma::screen#0 + doplasma::$47
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$48 = doplasma::screen#0+doplasma::$47
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_21 tails: doplasma::@10_21 blocks: doplasma::@10_21 doplasma::@9_21 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#43 = doplasma::val#44 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#44 doplasma::ii#43
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [101] doplasma::$49 = doplasma::ii#43 * $28
Constant right-side identified [104] doplasma::ii#45 = ++ doplasma::ii#43
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$49 = doplasma::ii#43*$28
Constant doplasma::ii#45 = ++doplasma::ii#43
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [98] if(doplasma::ii#43<$19) goto doplasma::@10_21
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [99] doplasma::$50 = doplasma::screen#0 + doplasma::$49
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$50 = doplasma::screen#0+doplasma::$49
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_22 tails: doplasma::@10_22 blocks: doplasma::@10_22 doplasma::@9_22 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#45 = doplasma::val#46 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#46 doplasma::ii#45
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [103] doplasma::$51 = doplasma::ii#45 * $28
Constant right-side identified [106] doplasma::ii#47 = ++ doplasma::ii#45
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$51 = doplasma::ii#45*$28
Constant doplasma::ii#47 = ++doplasma::ii#45
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [100] if(doplasma::ii#45<$19) goto doplasma::@10_22
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [101] doplasma::$52 = doplasma::screen#0 + doplasma::$51
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$52 = doplasma::screen#0+doplasma::$51
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_23 tails: doplasma::@10_23 blocks: doplasma::@10_23 doplasma::@9_23 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#47 = doplasma::val#48 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#48 doplasma::ii#47
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [105] doplasma::$53 = doplasma::ii#47 * $28
Constant right-side identified [108] doplasma::ii#49 = ++ doplasma::ii#47
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$53 = doplasma::ii#47*$28
Constant doplasma::ii#49 = ++doplasma::ii#47
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [102] if(doplasma::ii#47<$19) goto doplasma::@10_23
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [103] doplasma::$54 = doplasma::screen#0 + doplasma::$53
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$54 = doplasma::screen#0+doplasma::$53
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_24 tails: doplasma::@10_24 blocks: doplasma::@10_24 doplasma::@9_24 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#49 = doplasma::val#50 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#50 doplasma::ii#49
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [107] doplasma::$55 = doplasma::ii#49 * $28
Constant right-side identified [110] doplasma::ii#51 = ++ doplasma::ii#49
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$55 = doplasma::ii#49*$28
Constant doplasma::ii#51 = ++doplasma::ii#49
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [104] if(doplasma::ii#49<$19) goto doplasma::@10_24
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [105] doplasma::$56 = doplasma::screen#0 + doplasma::$55
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$56 = doplasma::screen#0+doplasma::$55
Successful SSA optimization Pass2ConstantIdentification
Unrolling loop Loop head: doplasma::@9_25 tails: doplasma::@10_25 blocks: doplasma::@10_25 doplasma::@9_25 
Successful SSA optimization Pass2LoopUnroll
Alias doplasma::val#51 = doplasma::val#52 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values doplasma::ii#52 doplasma::ii#51
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [109] doplasma::$57 = doplasma::ii#51 * $28
Constant right-side identified [112] doplasma::ii#53 = ++ doplasma::ii#51
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant doplasma::$57 = doplasma::ii#51*$28
Constant doplasma::ii#53 = ++doplasma::ii#51
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [106] if(doplasma::ii#51<$19) goto doplasma::@10_25
Successful SSA optimization Pass2ConstantIfs
Eliminating variable doplasma::val#53 from unused block doplasma::@10_25
Eliminating variable doplasma::$58 from unused block doplasma::@10_25
Eliminating variable doplasma::ii#54 from unused block doplasma::@9_26
Eliminating variable doplasma::val#54 from unused block doplasma::@9_26
Eliminating variable doplasma::val#55 from unused block doplasma::@10_26
Eliminating variable doplasma::$59 from unused block doplasma::@10_26
Eliminating variable doplasma::$60 from unused block doplasma::@10_26
Eliminating variable doplasma::ii#55 from unused block doplasma::@10_26
Removing PHI-reference to removed block (doplasma::@10_25) in block doplasma::@9_26
Removing PHI-reference to removed block (doplasma::@10_25) in block doplasma::@9_26
Removing unused block doplasma::@10_25
Removing unused block doplasma::@9_26
Removing unused block doplasma::@10_26
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused constant doplasma::$57
Eliminating unused constant doplasma::ii#53
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant doplasma::ii#51
Successful SSA optimization PassNEliminateUnusedVars
Rewriting multiplication to use shift [28] makecharset::$10 = makecharset::c#2 * 8
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings memset::dst#0
Inlining constant with var siblings main::col#0
Inlining constant with var siblings doplasma::yprev#0
Inlining constant with var siblings doplasma::i#0
Inlining constant with var siblings doplasma::i1#0
Inlining constant with var siblings doplasma::i2#0
Inlining constant with different constant siblings doplasma::ii#0
Inlining constant with different constant siblings doplasma::ii#1
Inlining constant with different constant siblings doplasma::ii#5
Inlining constant with different constant siblings doplasma::ii#7
Inlining constant with different constant siblings doplasma::ii#9
Inlining constant with different constant siblings doplasma::ii#11
Inlining constant with different constant siblings doplasma::ii#13
Inlining constant with different constant siblings doplasma::ii#15
Inlining constant with different constant siblings doplasma::ii#17
Inlining constant with different constant siblings doplasma::ii#19
Inlining constant with different constant siblings doplasma::ii#21
Inlining constant with different constant siblings doplasma::ii#23
Inlining constant with different constant siblings doplasma::ii#25
Inlining constant with different constant siblings doplasma::ii#27
Inlining constant with different constant siblings doplasma::ii#29
Inlining constant with different constant siblings doplasma::ii#31
Inlining constant with different constant siblings doplasma::ii#33
Inlining constant with different constant siblings doplasma::ii#35
Inlining constant with different constant siblings doplasma::ii#37
Inlining constant with different constant siblings doplasma::ii#39
Inlining constant with different constant siblings doplasma::ii#41
Inlining constant with different constant siblings doplasma::ii#43
Inlining constant with different constant siblings doplasma::ii#45
Inlining constant with different constant siblings doplasma::ii#47
Inlining constant with different constant siblings doplasma::ii#49
Inlining constant with var siblings makecharset::c#0
Inlining constant with var siblings makecharset::i#0
Inlining constant with var siblings makecharset::b#0
Inlining constant with var siblings makecharset::ii#0
Inlining constant with var siblings c1A#18
Inlining constant with var siblings c1B#18
Inlining constant with var siblings c2A#19
Inlining constant with var siblings c2B#19
Constant inlined doplasma::ii#47 = ++++++++++++++++++++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#49 = ++++++++++++++++++++++++++++++++++++++++++++++++0
Constant inlined main::col#0 = COLS
Constant inlined doplasma::ii#41 = ++++++++++++++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#43 = ++++++++++++++++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#45 = ++++++++++++++++++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#7 = ++++++0
Constant inlined doplasma::ii#9 = ++++++++0
Constant inlined c1A#18 = 0
Constant inlined main::toD0181_$7 = (unsigned int)SCREEN1
Constant inlined main::toD0181_$2 = byte1 (unsigned int)SCREEN1&$3fff*4
Constant inlined main::toD0181_$1 = (unsigned int)SCREEN1&$3fff*4
Constant inlined main::toD0181_$0 = (unsigned int)SCREEN1&$3fff
Constant inlined doplasma::ii#0 = 0
Constant inlined doplasma::ii#1 = ++0
Constant inlined main::toD0181_$5 = byte1 (unsigned int)CHARSET/4&$f
Constant inlined main::toD0181_$4 = byte1 (unsigned int)CHARSET/4
Constant inlined main::toD0181_$3 = byte1 (unsigned int)CHARSET
Constant inlined doplasma::ii#5 = ++++0
Constant inlined doplasma::$56 = SCREEN1+++++++++++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$53 = ++++++++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$52 = SCREEN1+++++++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$55 = ++++++++++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined makecharset::c#0 = 0
Constant inlined doplasma::$54 = SCREEN1+++++++++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$51 = ++++++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$50 = SCREEN1+++++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::ii#25 = ++++++++++++++++++++++++0
Constant inlined main::toD0181_screen#0 = SCREEN1
Constant inlined doplasma::ii#27 = ++++++++++++++++++++++++++0
Constant inlined doplasma::ii#29 = ++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#21 = ++++++++++++++++++++0
Constant inlined doplasma::ii#23 = ++++++++++++++++++++++0
Constant inlined doplasma::$9 = ++0*$28
Constant inlined doplasma::$8 = SCREEN1
Constant inlined doplasma::ii#35 = ++++++++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#37 = ++++++++++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#39 = ++++++++++++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#31 = ++++++++++++++++++++++++++++++0
Constant inlined doplasma::ii#33 = ++++++++++++++++++++++++++++++++0
Constant inlined c2B#19 = 0
Constant inlined doplasma::i2#0 = 0
Constant inlined doplasma::$28 = SCREEN1+++++++++++++++++++++0*$28
Constant inlined doplasma::$27 = ++++++++++++++++++++0*$28
Constant inlined doplasma::$29 = ++++++++++++++++++++++0*$28
Constant inlined doplasma::$24 = SCREEN1+++++++++++++++++0*$28
Constant inlined doplasma::$23 = ++++++++++++++++0*$28
Constant inlined doplasma::$26 = SCREEN1+++++++++++++++++++0*$28
Constant inlined doplasma::$25 = ++++++++++++++++++0*$28
Constant inlined c2A#19 = 0
Constant inlined doplasma::$20 = SCREEN1+++++++++++++0*$28
Constant inlined doplasma::$22 = SCREEN1+++++++++++++++0*$28
Constant inlined doplasma::$21 = ++++++++++++++0*$28
Constant inlined doplasma::ii#13 = ++++++++++++0
Constant inlined doplasma::ii#15 = ++++++++++++++0
Constant inlined doplasma::ii#17 = ++++++++++++++++0
Constant inlined doplasma::ii#19 = ++++++++++++++++++0
Constant inlined doplasma::ii#11 = ++++++++++0
Constant inlined makecharset::ii#0 = 0
Constant inlined doplasma::$17 = ++++++++++0*$28
Constant inlined makecharset::i#0 = 0
Constant inlined makecharset::charset#0 = CHARSET
Constant inlined doplasma::$16 = SCREEN1+++++++++0*$28
Constant inlined doplasma::$19 = ++++++++++++0*$28
Constant inlined doplasma::$18 = SCREEN1+++++++++++0*$28
Constant inlined doplasma::screen#0 = SCREEN1
Constant inlined doplasma::$13 = ++++++0*$28
Constant inlined doplasma::$12 = SCREEN1+++++0*$28
Constant inlined doplasma::$15 = ++++++++0*$28
Constant inlined doplasma::$14 = SCREEN1+++++++0*$28
Constant inlined doplasma::$11 = ++++0*$28
Constant inlined memset::dst#0 = (char *)memset::str#0
Constant inlined doplasma::$10 = SCREEN1+++0*$28
Constant inlined main::toD0181_gfx#0 = CHARSET
Constant inlined doplasma::i#0 = 0
Constant inlined doplasma::i1#0 = 0
Constant inlined doplasma::yprev#0 = 0
Constant inlined doplasma::$49 = ++++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined memset::$4 = (char *)memset::str#0
Constant inlined doplasma::$46 = SCREEN1+++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$45 = ++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$48 = SCREEN1+++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$47 = ++++++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$42 = SCREEN1+++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$41 = ++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$44 = SCREEN1+++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$43 = ++++++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$40 = SCREEN1+++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$39 = ++++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$38 = SCREEN1+++++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$35 = ++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$34 = SCREEN1+++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$37 = ++++++++++++++++++++++++++++++0*$28
Constant inlined c1B#18 = 0
Constant inlined doplasma::$36 = SCREEN1+++++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$31 = ++++++++++++++++++++++++0*$28
Constant inlined doplasma::$30 = SCREEN1+++++++++++++++++++++++0*$28
Constant inlined makecharset::b#0 = 0
Constant inlined doplasma::$33 = ++++++++++++++++++++++++++0*$28
Constant inlined doplasma::$32 = SCREEN1+++++++++++++++++++++++++0*$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
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $10
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) 8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Added new block during phi lifting main::@8(between main::@1 and main::@1)
Added new block during phi lifting makecharset::@16(between makecharset::@5 and makecharset::@11)
Added new block during phi lifting makecharset::@17(between makecharset::@13 and makecharset::@8)
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::@6
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 makecharset
Adding NOP phi() at start of makecharset::@12
Adding NOP phi() at start of makecharset::@14
Adding NOP phi() at start of makecharset::@10
Adding NOP phi() at start of makecharset::@4
Adding NOP phi() at start of makecharset::sid_rnd1_@return
Adding NOP phi() at start of doplasma::@9
Adding NOP phi() at start of doplasma::@9_1
Adding NOP phi() at start of doplasma::@9_2
Adding NOP phi() at start of doplasma::@9_3
Adding NOP phi() at start of doplasma::@9_4
Adding NOP phi() at start of doplasma::@9_5
Adding NOP phi() at start of doplasma::@9_6
Adding NOP phi() at start of doplasma::@9_7
Adding NOP phi() at start of doplasma::@9_8
Adding NOP phi() at start of doplasma::@9_9
Adding NOP phi() at start of doplasma::@9_10
Adding NOP phi() at start of doplasma::@9_11
Adding NOP phi() at start of doplasma::@9_12
Adding NOP phi() at start of doplasma::@9_13
Adding NOP phi() at start of doplasma::@9_14
Adding NOP phi() at start of doplasma::@9_15
Adding NOP phi() at start of doplasma::@9_16
Adding NOP phi() at start of doplasma::@9_17
Adding NOP phi() at start of doplasma::@9_18
Adding NOP phi() at start of doplasma::@9_19
Adding NOP phi() at start of doplasma::@9_20
Adding NOP phi() at start of doplasma::@9_21
Adding NOP phi() at start of doplasma::@9_22
Adding NOP phi() at start of doplasma::@9_23
Adding NOP phi() at start of doplasma::@9_24
Adding NOP phi() at start of doplasma::@9_25
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 [main] to makecharset:8 doplasma:15 
Calls in [makecharset] to print_cls:25 print_char:37 
Calls in [print_cls] to memset:181 

Created 21 initial phi equivalence classes
Coalesced [16] c1A#34 = c1A#2
Coalesced [17] c1B#34 = c1B#2
Coalesced [18] c2A#34 = c2A#2
Coalesced [19] c2B#34 = c2B#2
Coalesced [20] main::col#3 = main::col#1
Coalesced [38] print_char_cursor#50 = print_char_cursor#0
Coalesced [41] makecharset::c#17 = makecharset::c#1
Coalesced [42] print_char_cursor#49 = print_char_cursor#32
Coalesced (already) [43] print_char_cursor#51 = print_char_cursor#19
Coalesced [52] makecharset::i#11 = makecharset::i#1
Coalesced [58] makecharset::b#11 = makecharset::b#1
Coalesced [61] makecharset::ii#8 = makecharset::ii#1
Coalesced [62] makecharset::b#9 = makecharset::b#6
Coalesced (already) [63] makecharset::b#10 = makecharset::b#2
Coalesced [66] doplasma::c1a#4 = doplasma::c1a#0
Coalesced [67] doplasma::c1b#4 = doplasma::c1b#0
Coalesced [74] doplasma::c2a#4 = doplasma::c2a#0
Coalesced [75] doplasma::c2b#4 = doplasma::c2b#0
Coalesced [161] doplasma::i2#7 = doplasma::i2#1
Coalesced [167] doplasma::i1#4 = doplasma::i1#1
Coalesced [168] doplasma::c2a#5 = doplasma::c2a#1
Coalesced [169] doplasma::c2b#5 = doplasma::c2b#1
Coalesced [176] doplasma::i#4 = doplasma::i#1
Coalesced [177] doplasma::c1a#5 = doplasma::c1a#1
Coalesced [178] doplasma::c1b#5 = doplasma::c1b#1
Not coalescing [179] doplasma::yprev#4 = doplasma::yprev#1
Coalesced [195] memset::dst#4 = memset::dst#1
Coalesced down to 20 phi equivalence classes
Culled Empty Block label main::@6
Culled Empty Block label main::toD0181_@return
Culled Empty Block label main::@7
Culled Empty Block label main::@8
Culled Empty Block label makecharset::@14
Culled Empty Block label makecharset::@15
Culled Empty Block label makecharset::@16
Culled Empty Block label makecharset::@4
Culled Empty Block label makecharset::sid_rnd1_@return
Culled Empty Block label makecharset::@17
Culled Empty Block label doplasma::@9
Culled Empty Block label doplasma::@9_1
Culled Empty Block label doplasma::@9_2
Culled Empty Block label doplasma::@9_3
Culled Empty Block label doplasma::@9_4
Culled Empty Block label doplasma::@9_5
Culled Empty Block label doplasma::@9_6
Culled Empty Block label doplasma::@9_7
Culled Empty Block label doplasma::@9_8
Culled Empty Block label doplasma::@9_9
Culled Empty Block label doplasma::@9_10
Culled Empty Block label doplasma::@9_11
Culled Empty Block label doplasma::@9_12
Culled Empty Block label doplasma::@9_13
Culled Empty Block label doplasma::@9_14
Culled Empty Block label doplasma::@9_15
Culled Empty Block label doplasma::@9_16
Culled Empty Block label doplasma::@9_17
Culled Empty Block label doplasma::@9_18
Culled Empty Block label doplasma::@9_19
Culled Empty Block label doplasma::@9_20
Culled Empty Block label doplasma::@9_21
Culled Empty Block label doplasma::@9_22
Culled Empty Block label doplasma::@9_23
Culled Empty Block label doplasma::@9_24
Culled Empty Block label doplasma::@9_25
Culled Empty Block label print_cls::@1
Culled Empty Block label memset::@2
Culled Empty Block label memset::@1
Renumbering block memset::@3 to memset::@1
Renumbering block memset::@4 to memset::@2
Renumbering block doplasma::@10 to doplasma::@9
Renumbering block doplasma::@11 to doplasma::@10
Renumbering block makecharset::@5 to makecharset::@4
Renumbering block makecharset::@6 to makecharset::@5
Renumbering block makecharset::@7 to makecharset::@6
Renumbering block makecharset::@8 to makecharset::@7
Renumbering block makecharset::@9 to makecharset::@8
Renumbering block makecharset::@10 to makecharset::@9
Renumbering block makecharset::@11 to makecharset::@10
Renumbering block makecharset::@12 to makecharset::@11
Renumbering block makecharset::@13 to makecharset::@12
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::@11
Adding NOP phi() at start of makecharset::@9
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of memset

FINAL CONTROL FLOW GRAPH

void main()
main: scope:[main]  from
  asm { sei  }
  [1] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLUE
  [2] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLUE
  to:main::@1
main::@1: scope:[main]  from main main::@1
  [3] main::col#2 = phi( main/COLS, main::@1/main::col#1 )
  [4] *main::col#2 = BLACK
  [5] main::col#1 = ++ main::col#2
  [6] if(main::col#1!=COLS+$3e8+1) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  [7] phi()
  [8] call makecharset
  to:main::toD0181
main::toD0181: scope:[main]  from main::@2
  [9] phi()
  to:main::@5
main::@5: scope:[main]  from main::toD0181
  [10] *D018 = main::toD0181_return#0
  to:main::@3
main::@3: scope:[main]  from main::@4 main::@5
  [11] c2B#1 = phi( main::@5/0, main::@4/c2B#2 )
  [11] c2A#1 = phi( main::@5/0, main::@4/c2A#2 )
  [11] c1B#1 = phi( main::@5/0, main::@4/c1B#2 )
  [11] c1A#1 = phi( main::@5/0, main::@4/c1A#2 )
  to:main::@4
main::@4: scope:[main]  from main::@3
  [12] phi()
  [13] call doplasma
  to:main::@3

void makecharset(char *charset)
makecharset: scope:[makecharset]  from main::@2
  [14] phi()
  to:makecharset::sid_rnd_init1
makecharset::sid_rnd_init1: scope:[makecharset]  from makecharset
  [15] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
  [16] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE
  to:makecharset::@11
makecharset::@11: scope:[makecharset]  from makecharset::sid_rnd_init1
  [17] phi()
  [18] call print_cls
  to:makecharset::@1
makecharset::@1: scope:[makecharset]  from makecharset::@10 makecharset::@11
  [19] print_char_cursor#19 = phi( makecharset::@10/print_char_cursor#32, makecharset::@11/print_screen#0 )
  [19] makecharset::c#2 = phi( makecharset::@10/makecharset::c#1, makecharset::@11/0 )
  [20] if(makecharset::c#2<$100) goto makecharset::@2
  to:makecharset::@return
makecharset::@return: scope:[makecharset]  from makecharset::@1
  [21] return 
  to:@return
makecharset::@2: scope:[makecharset]  from makecharset::@1
  [22] makecharset::$3 = byte0  makecharset::c#2
  [23] makecharset::s#0 = SINTABLE[makecharset::$3]
  to:makecharset::@3
makecharset::@3: scope:[makecharset]  from makecharset::@2 makecharset::@6
  [24] makecharset::i#2 = phi( makecharset::@2/0, makecharset::@6/makecharset::i#1 )
  [25] if(makecharset::i#2<8) goto makecharset::@5
  to:makecharset::@4
makecharset::@4: scope:[makecharset]  from makecharset::@3
  [26] makecharset::$12 = makecharset::c#2 & 7
  [27] if(makecharset::$12!=0) goto makecharset::@10
  to:makecharset::@9
makecharset::@9: scope:[makecharset]  from makecharset::@4
  [28] phi()
  [29] call print_char
  to:makecharset::@10
makecharset::@10: scope:[makecharset]  from makecharset::@4 makecharset::@9
  [30] print_char_cursor#32 = phi( makecharset::@9/print_char_cursor#0, makecharset::@4/print_char_cursor#19 )
  [31] makecharset::c#1 = ++ makecharset::c#2
  to:makecharset::@1
makecharset::@5: scope:[makecharset]  from makecharset::@3 makecharset::@7
  [32] makecharset::b#2 = phi( makecharset::@3/0, makecharset::@7/makecharset::b#6 )
  [32] makecharset::ii#2 = phi( makecharset::@3/0, makecharset::@7/makecharset::ii#1 )
  [33] if(makecharset::ii#2<8) goto makecharset::sid_rnd1
  to:makecharset::@6
makecharset::@6: scope:[makecharset]  from makecharset::@5
  [34] makecharset::$10 = makecharset::c#2 << 3
  [35] makecharset::$11 = makecharset::$10 + makecharset::i#2
  [36] makecharset::$16 = CHARSET + makecharset::$11
  [37] *makecharset::$16 = makecharset::b#2
  [38] makecharset::i#1 = ++ makecharset::i#2
  to:makecharset::@3
makecharset::sid_rnd1: scope:[makecharset]  from makecharset::@5
  [39] makecharset::sid_rnd1_return#0 = *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC)
  to:makecharset::@12
makecharset::@12: scope:[makecharset]  from makecharset::sid_rnd1
  [40] makecharset::$7 = makecharset::sid_rnd1_return#0 & $ff
  [41] if(makecharset::$7<=makecharset::s#0) goto makecharset::@7
  to:makecharset::@8
makecharset::@8: scope:[makecharset]  from makecharset::@12
  [42] makecharset::b#1 = makecharset::b#2 | makecharset::bittab[makecharset::ii#2]
  to:makecharset::@7
makecharset::@7: scope:[makecharset]  from makecharset::@12 makecharset::@8
  [43] makecharset::b#6 = phi( makecharset::@12/makecharset::b#2, makecharset::@8/makecharset::b#1 )
  [44] makecharset::ii#1 = ++ makecharset::ii#2
  to:makecharset::@5

void doplasma(char *screen)
doplasma: scope:[doplasma]  from main::@4
  [45] doplasma::c1a#0 = c1A#1
  [46] doplasma::c1b#0 = c1B#1
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@2
  [47] doplasma::yprev#2 = phi( doplasma/0, doplasma::@2/doplasma::yprev#4 )
  [47] doplasma::c1b#2 = phi( doplasma/doplasma::c1b#0, doplasma::@2/doplasma::c1b#1 )
  [47] doplasma::c1a#2 = phi( doplasma/doplasma::c1a#0, doplasma::@2/doplasma::c1a#1 )
  [47] doplasma::i#2 = phi( doplasma/0, doplasma::@2/doplasma::i#1 )
  [48] if(doplasma::i#2<$19) goto doplasma::@2
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@1
  [49] c1A#2 = c1A#1 + 3
  [50] c1B#2 = c1B#1 - 5
  [51] doplasma::c2a#0 = c2A#1
  [52] doplasma::c2b#0 = c2B#1
  to:doplasma::@4
doplasma::@4: scope:[doplasma]  from doplasma::@3 doplasma::@5
  [53] doplasma::c2b#2 = phi( doplasma::@3/doplasma::c2b#0, doplasma::@5/doplasma::c2b#1 )
  [53] doplasma::c2a#2 = phi( doplasma::@3/doplasma::c2a#0, doplasma::@5/doplasma::c2a#1 )
  [53] doplasma::i1#2 = phi( doplasma::@3/0, doplasma::@5/doplasma::i1#1 )
  [54] if(doplasma::i1#2<$28) goto doplasma::@5
  to:doplasma::@6
doplasma::@6: scope:[doplasma]  from doplasma::@4
  [55] c2A#2 = c2A#1 + 2
  [56] c2B#2 = c2B#1 - 3
  to:doplasma::@7
doplasma::@7: scope:[doplasma]  from doplasma::@10 doplasma::@6
  [57] doplasma::i2#2 = phi( doplasma::@10/doplasma::i2#1, doplasma::@6/0 )
  [58] if(doplasma::i2#2<$28) goto doplasma::@8
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@7
  [59] return 
  to:@return
doplasma::@8: scope:[doplasma]  from doplasma::@7
  [60] doplasma::val#0 = doplasma::xbuf[doplasma::i2#2]
  to:doplasma::@9
doplasma::@9: scope:[doplasma]  from doplasma::@8
  [61] doplasma::val#1 = doplasma::val#0 + *doplasma::ybuf
  [62] SCREEN1[doplasma::i2#2] = doplasma::val#1
  to:doplasma::@10_1
doplasma::@10_1: scope:[doplasma]  from doplasma::@9
  [63] doplasma::val#5 = doplasma::val#1 + *(doplasma::ybuf+1)
  [64] (SCREEN1+1*$28)[doplasma::i2#2] = doplasma::val#5
  to:doplasma::@10_2
doplasma::@10_2: scope:[doplasma]  from doplasma::@10_1
  [65] doplasma::val#7 = doplasma::val#5 + *(doplasma::ybuf+2)
  [66] (SCREEN1+2*$28)[doplasma::i2#2] = doplasma::val#7
  to:doplasma::@10_3
doplasma::@10_3: scope:[doplasma]  from doplasma::@10_2
  [67] doplasma::val#10 = doplasma::val#7 + *(doplasma::ybuf+3)
  [68] (SCREEN1+3*$28)[doplasma::i2#2] = doplasma::val#10
  to:doplasma::@10_4
doplasma::@10_4: scope:[doplasma]  from doplasma::@10_3
  [69] doplasma::val#11 = doplasma::val#10 + *(doplasma::ybuf+4)
  [70] (SCREEN1+4*$28)[doplasma::i2#2] = doplasma::val#11
  to:doplasma::@10_5
doplasma::@10_5: scope:[doplasma]  from doplasma::@10_4
  [71] doplasma::val#13 = doplasma::val#11 + *(doplasma::ybuf+5)
  [72] (SCREEN1+5*$28)[doplasma::i2#2] = doplasma::val#13
  to:doplasma::@10_6
doplasma::@10_6: scope:[doplasma]  from doplasma::@10_5
  [73] doplasma::val#15 = doplasma::val#13 + *(doplasma::ybuf+6)
  [74] (SCREEN1+6*$28)[doplasma::i2#2] = doplasma::val#15
  to:doplasma::@10_7
doplasma::@10_7: scope:[doplasma]  from doplasma::@10_6
  [75] doplasma::val#17 = doplasma::val#15 + *(doplasma::ybuf+7)
  [76] (SCREEN1+7*$28)[doplasma::i2#2] = doplasma::val#17
  to:doplasma::@10_8
doplasma::@10_8: scope:[doplasma]  from doplasma::@10_7
  [77] doplasma::val#19 = doplasma::val#17 + *(doplasma::ybuf+8)
  [78] (SCREEN1+8*$28)[doplasma::i2#2] = doplasma::val#19
  to:doplasma::@10_9
doplasma::@10_9: scope:[doplasma]  from doplasma::@10_8
  [79] doplasma::val#21 = doplasma::val#19 + *(doplasma::ybuf+9)
  [80] (SCREEN1+9*$28)[doplasma::i2#2] = doplasma::val#21
  to:doplasma::@10_10
doplasma::@10_10: scope:[doplasma]  from doplasma::@10_9
  [81] doplasma::val#23 = doplasma::val#21 + *(doplasma::ybuf+$a)
  [82] (SCREEN1+$a*$28)[doplasma::i2#2] = doplasma::val#23
  to:doplasma::@10_11
doplasma::@10_11: scope:[doplasma]  from doplasma::@10_10
  [83] doplasma::val#25 = doplasma::val#23 + *(doplasma::ybuf+$b)
  [84] (SCREEN1+$b*$28)[doplasma::i2#2] = doplasma::val#25
  to:doplasma::@10_12
doplasma::@10_12: scope:[doplasma]  from doplasma::@10_11
  [85] doplasma::val#27 = doplasma::val#25 + *(doplasma::ybuf+$c)
  [86] (SCREEN1+$c*$28)[doplasma::i2#2] = doplasma::val#27
  to:doplasma::@10_13
doplasma::@10_13: scope:[doplasma]  from doplasma::@10_12
  [87] doplasma::val#29 = doplasma::val#27 + *(doplasma::ybuf+$d)
  [88] (SCREEN1+$d*$28)[doplasma::i2#2] = doplasma::val#29
  to:doplasma::@10_14
doplasma::@10_14: scope:[doplasma]  from doplasma::@10_13
  [89] doplasma::val#31 = doplasma::val#29 + *(doplasma::ybuf+$e)
  [90] (SCREEN1+$e*$28)[doplasma::i2#2] = doplasma::val#31
  to:doplasma::@10_15
doplasma::@10_15: scope:[doplasma]  from doplasma::@10_14
  [91] doplasma::val#33 = doplasma::val#31 + *(doplasma::ybuf+$f)
  [92] (SCREEN1+$f*$28)[doplasma::i2#2] = doplasma::val#33
  to:doplasma::@10_16
doplasma::@10_16: scope:[doplasma]  from doplasma::@10_15
  [93] doplasma::val#35 = doplasma::val#33 + *(doplasma::ybuf+$10)
  [94] (SCREEN1+$10*$28)[doplasma::i2#2] = doplasma::val#35
  to:doplasma::@10_17
doplasma::@10_17: scope:[doplasma]  from doplasma::@10_16
  [95] doplasma::val#37 = doplasma::val#35 + *(doplasma::ybuf+$11)
  [96] (SCREEN1+$11*$28)[doplasma::i2#2] = doplasma::val#37
  to:doplasma::@10_18
doplasma::@10_18: scope:[doplasma]  from doplasma::@10_17
  [97] doplasma::val#39 = doplasma::val#37 + *(doplasma::ybuf+$12)
  [98] (SCREEN1+$12*$28)[doplasma::i2#2] = doplasma::val#39
  to:doplasma::@10_19
doplasma::@10_19: scope:[doplasma]  from doplasma::@10_18
  [99] doplasma::val#41 = doplasma::val#39 + *(doplasma::ybuf+$13)
  [100] (SCREEN1+$13*$28)[doplasma::i2#2] = doplasma::val#41
  to:doplasma::@10_20
doplasma::@10_20: scope:[doplasma]  from doplasma::@10_19
  [101] doplasma::val#43 = doplasma::val#41 + *(doplasma::ybuf+$14)
  [102] (SCREEN1+$14*$28)[doplasma::i2#2] = doplasma::val#43
  to:doplasma::@10_21
doplasma::@10_21: scope:[doplasma]  from doplasma::@10_20
  [103] doplasma::val#45 = doplasma::val#43 + *(doplasma::ybuf+$15)
  [104] (SCREEN1+$15*$28)[doplasma::i2#2] = doplasma::val#45
  to:doplasma::@10_22
doplasma::@10_22: scope:[doplasma]  from doplasma::@10_21
  [105] doplasma::val#47 = doplasma::val#45 + *(doplasma::ybuf+$16)
  [106] (SCREEN1+$16*$28)[doplasma::i2#2] = doplasma::val#47
  to:doplasma::@10_23
doplasma::@10_23: scope:[doplasma]  from doplasma::@10_22
  [107] doplasma::val#49 = doplasma::val#47 + *(doplasma::ybuf+$17)
  [108] (SCREEN1+$17*$28)[doplasma::i2#2] = doplasma::val#49
  to:doplasma::@10_24
doplasma::@10_24: scope:[doplasma]  from doplasma::@10_23
  [109] doplasma::val#51 = doplasma::val#49 + *(doplasma::ybuf+$18)
  [110] (SCREEN1+$18*$28)[doplasma::i2#2] = doplasma::val#51
  to:doplasma::@10
doplasma::@10: scope:[doplasma]  from doplasma::@10_24
  [111] doplasma::i2#1 = ++ doplasma::i2#2
  to:doplasma::@7
doplasma::@5: scope:[doplasma]  from doplasma::@4
  [112] doplasma::$4 = SINTABLE[doplasma::c2a#2] + SINTABLE[doplasma::c2b#2]
  [113] doplasma::xbuf[doplasma::i1#2] = doplasma::$4
  [114] doplasma::c2a#1 = doplasma::c2a#2 + 3
  [115] doplasma::c2b#1 = doplasma::c2b#2 + 7
  [116] doplasma::i1#1 = ++ doplasma::i1#2
  to:doplasma::@4
doplasma::@2: scope:[doplasma]  from doplasma::@1
  [117] doplasma::yprev#1 = SINTABLE[doplasma::c1a#2] + SINTABLE[doplasma::c1b#2]
  [118] doplasma::$2 = doplasma::yprev#1 - doplasma::yprev#2
  [119] doplasma::ybuf[doplasma::i#2] = doplasma::$2
  [120] doplasma::c1a#1 = doplasma::c1a#2 + 4
  [121] doplasma::c1b#1 = doplasma::c1b#2 + 9
  [122] doplasma::i#1 = ++ doplasma::i#2
  [123] doplasma::yprev#4 = doplasma::yprev#1
  to:doplasma::@1

void print_cls()
print_cls: scope:[print_cls]  from makecharset::@11
  [124] phi()
  [125] call memset
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [126] return 
  to:@return

void print_char(char ch)
print_char: scope:[print_char]  from makecharset::@9
  [127] *print_char_cursor#19 = print_char::ch#0
  [128] print_char_cursor#0 = ++ print_char_cursor#19
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [129] return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from print_cls
  [130] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [131] memset::dst#2 = phi( memset/(char *)memset::str#0, memset::@2/memset::dst#1 )
  [132] if(memset::dst#2!=memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [133] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [134] *memset::dst#2 = memset::c#0
  [135] memset::dst#1 = ++ memset::dst#2
  to:memset::@1


VARIABLE REGISTER WEIGHTS
char c1A
char c1A#1 // 16.384615384615383
char c1A#2 // 1.6231884057971016
char c1B
char c1B#1 // 15.214285714285715
char c1B#2 // 1.647058823529412
char c2A
char c2A#1 // 8.875
char c2A#2 // 1.9310344827586208
char c2B
char c2B#1 // 8.52
char c2B#2 // 1.9649122807017543
void doplasma(char *screen)
char doplasma::$2 // 20002.0
char doplasma::$4 // 20002.0
char doplasma::c1a
char doplasma::c1a#0 // 101.0
char doplasma::c1a#1 // 5000.5
char doplasma::c1a#2 // 6020.8
char doplasma::c1b
char doplasma::c1b#0 // 202.0
char doplasma::c1b#1 // 6667.333333333333
char doplasma::c1b#2 // 5017.333333333333
char doplasma::c2a
char doplasma::c2a#0 // 101.0
char doplasma::c2a#1 // 6667.333333333333
char doplasma::c2a#2 // 7526.0
char doplasma::c2b
char doplasma::c2b#0 // 202.0
char doplasma::c2b#1 // 10001.0
char doplasma::c2b#2 // 6020.8
char doplasma::i
char doplasma::i#1 // 10001.0
char doplasma::i#2 // 5714.857142857143
char doplasma::i1
char doplasma::i1#1 // 20002.0
char doplasma::i1#2 // 6667.333333333333
char doplasma::i2
char doplasma::i2#1 // 20002.0
char doplasma::i2#2 // 5472.245283018866
char doplasma::ii
char *doplasma::screen
char doplasma::val
char doplasma::val#0 // 20002.0
char doplasma::val#1 // 15001.5
char doplasma::val#10 // 15001.5
char doplasma::val#11 // 15001.5
char doplasma::val#13 // 15001.5
char doplasma::val#15 // 15001.5
char doplasma::val#17 // 15001.5
char doplasma::val#19 // 15001.5
char doplasma::val#21 // 15001.5
char doplasma::val#23 // 15001.5
char doplasma::val#25 // 15001.5
char doplasma::val#27 // 15001.5
char doplasma::val#29 // 15001.5
char doplasma::val#31 // 15001.5
char doplasma::val#33 // 15001.5
char doplasma::val#35 // 15001.5
char doplasma::val#37 // 15001.5
char doplasma::val#39 // 15001.5
char doplasma::val#41 // 15001.5
char doplasma::val#43 // 15001.5
char doplasma::val#45 // 15001.5
char doplasma::val#47 // 15001.5
char doplasma::val#49 // 15001.5
char doplasma::val#5 // 15001.5
char doplasma::val#51 // 20002.0
char doplasma::val#7 // 15001.5
char doplasma::yprev
char doplasma::yprev#1 // 5000.5
char doplasma::yprev#2 // 6667.333333333333
char doplasma::yprev#4 // 20002.0
char doplasma::yval
void main()
char *main::col
char *main::col#1 // 16.5
char *main::col#2 // 16.5
char *main::toD0181_gfx
char main::toD0181_return
char *main::toD0181_screen
void makecharset(char *charset)
unsigned int makecharset::$10 // 2002.0
unsigned int makecharset::$11 // 2002.0
char makecharset::$12 // 202.0
char *makecharset::$16 // 2002.0
char makecharset::$3 // 202.0
char makecharset::$7 // 20002.0
char makecharset::b
char makecharset::b#1 // 20002.0
char makecharset::b#2 // 3875.5
char makecharset::b#6 // 15001.5
unsigned int makecharset::c
unsigned int makecharset::c#1 // 202.0
unsigned int makecharset::c#2 // 62.75
char *makecharset::charset
char makecharset::i
char makecharset::i#1 // 2002.0
char makecharset::i#2 // 286.0
char makecharset::ii
char makecharset::ii#1 // 20002.0
char makecharset::ii#2 // 5714.857142857143
char makecharset::s
char makecharset::s#0 // 631.375
char makecharset::sid_rnd1_return
char makecharset::sid_rnd1_return#0 // 20002.0
void * memset(void *str , char c , unsigned int num)
char memset::c
char *memset::dst
char *memset::dst#1 // 20002.0
char *memset::dst#2 // 13334.666666666666
char *memset::end
unsigned int memset::num
void *memset::return
void *memset::str
void print_char(char ch)
char print_char::ch
char *print_char_cursor
char *print_char_cursor#0 // 367.33333333333337
char *print_char_cursor#19 // 95.82608695652173
char *print_char_cursor#32 // 151.5
void print_cls()
char *print_line_cursor
char *print_screen

Initial phi equivalence classes
[ main::col#2 main::col#1 ]
[ c1A#1 c1A#2 ]
[ c1B#1 c1B#2 ]
[ c2A#1 c2A#2 ]
[ c2B#1 c2B#2 ]
[ makecharset::c#2 makecharset::c#1 ]
[ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ]
[ makecharset::i#2 makecharset::i#1 ]
[ makecharset::ii#2 makecharset::ii#1 ]
[ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
[ 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 ]
[ memset::dst#2 memset::dst#1 ]
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 makecharset::sid_rnd1_return#0 to live range equivalence class [ makecharset::sid_rnd1_return#0 ]
Added variable makecharset::$7 to live range equivalence class [ makecharset::$7 ]
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::yprev#1 to live range equivalence class [ doplasma::yprev#1 ]
Added variable doplasma::$2 to live range equivalence class [ doplasma::$2 ]
Complete equivalence classes
[ main::col#2 main::col#1 ]
[ c1A#1 c1A#2 ]
[ c1B#1 c1B#2 ]
[ c2A#1 c2A#2 ]
[ c2B#1 c2B#2 ]
[ makecharset::c#2 makecharset::c#1 ]
[ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ]
[ makecharset::i#2 makecharset::i#1 ]
[ makecharset::ii#2 makecharset::ii#1 ]
[ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
[ 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 ]
[ memset::dst#2 memset::dst#1 ]
[ makecharset::$3 ]
[ makecharset::s#0 ]
[ makecharset::$12 ]
[ makecharset::$10 ]
[ makecharset::$11 ]
[ makecharset::$16 ]
[ makecharset::sid_rnd1_return#0 ]
[ makecharset::$7 ]
[ 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::yprev#1 ]
[ doplasma::$2 ]
Allocated zp[2]:2 [ main::col#2 main::col#1 ]
Allocated zp[1]:4 [ c1A#1 c1A#2 ]
Allocated zp[1]:5 [ c1B#1 c1B#2 ]
Allocated zp[1]:6 [ c2A#1 c2A#2 ]
Allocated zp[1]:7 [ c2B#1 c2B#2 ]
Allocated zp[2]:8 [ makecharset::c#2 makecharset::c#1 ]
Allocated zp[2]:10 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ]
Allocated zp[1]:12 [ makecharset::i#2 makecharset::i#1 ]
Allocated zp[1]:13 [ makecharset::ii#2 makecharset::ii#1 ]
Allocated zp[1]:14 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
Allocated zp[1]:15 [ doplasma::i#2 doplasma::i#1 ]
Allocated zp[1]:16 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
Allocated zp[1]:17 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
Allocated zp[1]:18 [ doplasma::yprev#2 doplasma::yprev#4 ]
Allocated zp[1]:19 [ doplasma::i1#2 doplasma::i1#1 ]
Allocated zp[1]:20 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
Allocated zp[1]:21 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
Allocated zp[1]:22 [ doplasma::i2#2 doplasma::i2#1 ]
Allocated zp[2]:23 [ memset::dst#2 memset::dst#1 ]
Allocated zp[1]:25 [ makecharset::$3 ]
Allocated zp[1]:26 [ makecharset::s#0 ]
Allocated zp[1]:27 [ makecharset::$12 ]
Allocated zp[2]:28 [ makecharset::$10 ]
Allocated zp[2]:30 [ makecharset::$11 ]
Allocated zp[2]:32 [ makecharset::$16 ]
Allocated zp[1]:34 [ makecharset::sid_rnd1_return#0 ]
Allocated zp[1]:35 [ makecharset::$7 ]
Allocated zp[1]:36 [ doplasma::val#0 ]
Allocated zp[1]:37 [ doplasma::val#1 ]
Allocated zp[1]:38 [ doplasma::val#5 ]
Allocated zp[1]:39 [ doplasma::val#7 ]
Allocated zp[1]:40 [ doplasma::val#10 ]
Allocated zp[1]:41 [ doplasma::val#11 ]
Allocated zp[1]:42 [ doplasma::val#13 ]
Allocated zp[1]:43 [ doplasma::val#15 ]
Allocated zp[1]:44 [ doplasma::val#17 ]
Allocated zp[1]:45 [ doplasma::val#19 ]
Allocated zp[1]:46 [ doplasma::val#21 ]
Allocated zp[1]:47 [ doplasma::val#23 ]
Allocated zp[1]:48 [ doplasma::val#25 ]
Allocated zp[1]:49 [ doplasma::val#27 ]
Allocated zp[1]:50 [ doplasma::val#29 ]
Allocated zp[1]:51 [ doplasma::val#31 ]
Allocated zp[1]:52 [ doplasma::val#33 ]
Allocated zp[1]:53 [ doplasma::val#35 ]
Allocated zp[1]:54 [ doplasma::val#37 ]
Allocated zp[1]:55 [ doplasma::val#39 ]
Allocated zp[1]:56 [ doplasma::val#41 ]
Allocated zp[1]:57 [ doplasma::val#43 ]
Allocated zp[1]:58 [ doplasma::val#45 ]
Allocated zp[1]:59 [ doplasma::val#47 ]
Allocated zp[1]:60 [ doplasma::val#49 ]
Allocated zp[1]:61 [ doplasma::val#51 ]
Allocated zp[1]:62 [ doplasma::$4 ]
Allocated zp[1]:63 [ doplasma::yprev#1 ]
Allocated zp[1]:64 [ doplasma::$2 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [1] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLUE [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [2] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLUE [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [4] *main::col#2 = BLACK [ main::col#2 ] (  [ main::col#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [6] if(main::col#1!=COLS+$3e8+1) goto main::@1 [ main::col#1 ] (  [ main::col#1 ] { }  ) always clobbers reg byte a 
Statement [10] *D018 = main::toD0181_return#0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [15] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( makecharset:8 [ ] { }  ) always clobbers reg byte a 
Statement [16] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( makecharset:8 [ ] { }  ) always clobbers reg byte a 
Statement [20] if(makecharset::c#2<$100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#19 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a 
Statement [26] makecharset::$12 = makecharset::c#2 & 7 [ makecharset::c#2 print_char_cursor#19 makecharset::$12 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::$12 ] { }  ) always clobbers reg byte a 
Statement [34] makecharset::$10 = makecharset::c#2 << 3 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 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]:26 [ makecharset::s#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:12 [ makecharset::i#2 makecharset::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:14 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
Statement [35] makecharset::$11 = makecharset::$10 + makecharset::i#2 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] { }  ) always clobbers reg byte a 
Statement [36] makecharset::$16 = CHARSET + makecharset::$11 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] { }  ) always clobbers reg byte a 
Statement [37] *makecharset::$16 = makecharset::b#2 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 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]:26 [ makecharset::s#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:12 [ makecharset::i#2 makecharset::i#1 ]
Statement [42] makecharset::b#1 = makecharset::b#2 | makecharset::bittab[makecharset::ii#2] [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 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]:13 [ makecharset::ii#2 makecharset::ii#1 ]
Statement [49] c1A#2 = c1A#1 + 3 [ c1B#1 c2A#1 c2B#1 c1A#2 ] ( doplasma:13 [ c1B#1 c2A#1 c2B#1 c1A#2 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:5 [ c1B#1 c1B#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:6 [ c2A#1 c2A#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:7 [ c2B#1 c2B#2 ]
Statement [50] c1B#2 = c1B#1 - 5 [ c2A#1 c2B#1 c1A#2 c1B#2 ] ( doplasma:13 [ c2A#1 c2B#1 c1A#2 c1B#2 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ c1A#1 c1A#2 ]
Statement [56] c2B#2 = c2B#1 - 3 [ c1A#2 c1B#2 c2A#2 c2B#2 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 ] { }  ) always clobbers reg byte a 
Statement [61] doplasma::val#1 = doplasma::val#0 + *doplasma::ybuf [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#1 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#1 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:22 [ doplasma::i2#2 doplasma::i2#1 ]
Statement [63] doplasma::val#5 = doplasma::val#1 + *(doplasma::ybuf+1) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#5 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#5 ] { }  ) always clobbers reg byte a 
Statement [65] doplasma::val#7 = doplasma::val#5 + *(doplasma::ybuf+2) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#7 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#7 ] { }  ) always clobbers reg byte a 
Statement [67] doplasma::val#10 = doplasma::val#7 + *(doplasma::ybuf+3) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#10 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#10 ] { }  ) always clobbers reg byte a 
Statement [69] doplasma::val#11 = doplasma::val#10 + *(doplasma::ybuf+4) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#11 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#11 ] { }  ) always clobbers reg byte a 
Statement [71] doplasma::val#13 = doplasma::val#11 + *(doplasma::ybuf+5) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#13 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#13 ] { }  ) always clobbers reg byte a 
Statement [73] doplasma::val#15 = doplasma::val#13 + *(doplasma::ybuf+6) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#15 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#15 ] { }  ) always clobbers reg byte a 
Statement [75] doplasma::val#17 = doplasma::val#15 + *(doplasma::ybuf+7) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#17 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#17 ] { }  ) always clobbers reg byte a 
Statement [77] doplasma::val#19 = doplasma::val#17 + *(doplasma::ybuf+8) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#19 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#19 ] { }  ) always clobbers reg byte a 
Statement [79] doplasma::val#21 = doplasma::val#19 + *(doplasma::ybuf+9) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#21 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#21 ] { }  ) always clobbers reg byte a 
Statement [81] doplasma::val#23 = doplasma::val#21 + *(doplasma::ybuf+$a) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#23 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#23 ] { }  ) always clobbers reg byte a 
Statement [83] doplasma::val#25 = doplasma::val#23 + *(doplasma::ybuf+$b) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#25 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#25 ] { }  ) always clobbers reg byte a 
Statement [85] doplasma::val#27 = doplasma::val#25 + *(doplasma::ybuf+$c) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#27 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#27 ] { }  ) always clobbers reg byte a 
Statement [87] doplasma::val#29 = doplasma::val#27 + *(doplasma::ybuf+$d) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#29 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#29 ] { }  ) always clobbers reg byte a 
Statement [89] doplasma::val#31 = doplasma::val#29 + *(doplasma::ybuf+$e) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#31 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#31 ] { }  ) always clobbers reg byte a 
Statement [91] doplasma::val#33 = doplasma::val#31 + *(doplasma::ybuf+$f) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#33 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#33 ] { }  ) always clobbers reg byte a 
Statement [93] doplasma::val#35 = doplasma::val#33 + *(doplasma::ybuf+$10) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#35 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#35 ] { }  ) always clobbers reg byte a 
Statement [95] doplasma::val#37 = doplasma::val#35 + *(doplasma::ybuf+$11) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#37 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#37 ] { }  ) always clobbers reg byte a 
Statement [97] doplasma::val#39 = doplasma::val#37 + *(doplasma::ybuf+$12) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#39 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#39 ] { }  ) always clobbers reg byte a 
Statement [99] doplasma::val#41 = doplasma::val#39 + *(doplasma::ybuf+$13) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#41 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#41 ] { }  ) always clobbers reg byte a 
Statement [101] doplasma::val#43 = doplasma::val#41 + *(doplasma::ybuf+$14) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#43 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#43 ] { }  ) always clobbers reg byte a 
Statement [103] doplasma::val#45 = doplasma::val#43 + *(doplasma::ybuf+$15) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#45 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#45 ] { }  ) always clobbers reg byte a 
Statement [105] doplasma::val#47 = doplasma::val#45 + *(doplasma::ybuf+$16) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#47 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#47 ] { }  ) always clobbers reg byte a 
Statement [107] doplasma::val#49 = doplasma::val#47 + *(doplasma::ybuf+$17) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#49 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#49 ] { }  ) always clobbers reg byte a 
Statement [109] doplasma::val#51 = doplasma::val#49 + *(doplasma::ybuf+$18) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#51 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#51 ] { }  ) always clobbers reg byte a 
Statement [112] doplasma::$4 = SINTABLE[doplasma::c2a#2] + SINTABLE[doplasma::c2b#2] [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ( doplasma:13 [ c2A#1 c2B#1 c1A#2 c1B#2 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]:19 [ doplasma::i1#2 doplasma::i1#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:20 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:21 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
Statement [114] doplasma::c2a#1 = doplasma::c2a#2 + 3 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( doplasma:13 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] { }  ) always clobbers reg byte a 
Statement [115] doplasma::c2b#1 = doplasma::c2b#2 + 7 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( doplasma:13 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] { }  ) always clobbers reg byte a 
Statement [117] doplasma::yprev#1 = SINTABLE[doplasma::c1a#2] + SINTABLE[doplasma::c1b#2] [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yprev#1 ] ( doplasma:13 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yprev#1 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:15 [ doplasma::i#2 doplasma::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:16 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:17 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:18 [ doplasma::yprev#2 doplasma::yprev#4 ]
Statement [118] doplasma::$2 = doplasma::yprev#1 - doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#1 doplasma::$2 ] ( doplasma:13 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#1 doplasma::$2 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:63 [ doplasma::yprev#1 ]
Statement [120] doplasma::c1a#1 = doplasma::c1a#2 + 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yprev#1 ] ( doplasma:13 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yprev#1 ] { }  ) always clobbers reg byte a 
Statement [121] doplasma::c1b#1 = doplasma::c1b#2 + 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yprev#1 ] ( doplasma:13 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yprev#1 ] { }  ) always clobbers reg byte a 
Statement [127] *print_char_cursor#19 = print_char::ch#0 [ print_char_cursor#19 ] ( makecharset:8::print_char:29 [ makecharset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a reg byte y 
Statement [132] if(memset::dst#2!=memset::end#0) goto memset::@2 [ memset::dst#2 ] ( makecharset:8::print_cls:18::memset:125 [ memset::dst#2 ] { }  ) always clobbers reg byte a 
Statement [134] *memset::dst#2 = memset::c#0 [ memset::dst#2 ] ( makecharset:8::print_cls:18::memset:125 [ memset::dst#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [1] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLUE [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [2] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLUE [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [4] *main::col#2 = BLACK [ main::col#2 ] (  [ main::col#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [6] if(main::col#1!=COLS+$3e8+1) goto main::@1 [ main::col#1 ] (  [ main::col#1 ] { }  ) always clobbers reg byte a 
Statement [10] *D018 = main::toD0181_return#0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [15] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( makecharset:8 [ ] { }  ) always clobbers reg byte a 
Statement [16] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( makecharset:8 [ ] { }  ) always clobbers reg byte a 
Statement [20] if(makecharset::c#2<$100) goto makecharset::@2 [ makecharset::c#2 print_char_cursor#19 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a 
Statement [26] makecharset::$12 = makecharset::c#2 & 7 [ makecharset::c#2 print_char_cursor#19 makecharset::$12 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::$12 ] { }  ) always clobbers reg byte a 
Statement [34] makecharset::$10 = makecharset::c#2 << 3 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$10 ] { }  ) always clobbers reg byte a 
Statement [35] makecharset::$11 = makecharset::$10 + makecharset::i#2 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$11 ] { }  ) always clobbers reg byte a 
Statement [36] makecharset::$16 = CHARSET + makecharset::$11 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::b#2 makecharset::$16 ] { }  ) always clobbers reg byte a 
Statement [37] *makecharset::$16 = makecharset::b#2 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [42] makecharset::b#1 = makecharset::b#2 | makecharset::bittab[makecharset::ii#2] [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] ( makecharset:8 [ makecharset::c#2 print_char_cursor#19 makecharset::s#0 makecharset::i#2 makecharset::ii#2 makecharset::b#1 ] { }  ) always clobbers reg byte a 
Statement [49] c1A#2 = c1A#1 + 3 [ c1B#1 c2A#1 c2B#1 c1A#2 ] ( doplasma:13 [ c1B#1 c2A#1 c2B#1 c1A#2 ] { }  ) always clobbers reg byte a 
Statement [50] c1B#2 = c1B#1 - 5 [ c2A#1 c2B#1 c1A#2 c1B#2 ] ( doplasma:13 [ c2A#1 c2B#1 c1A#2 c1B#2 ] { }  ) always clobbers reg byte a 
Statement [56] c2B#2 = c2B#1 - 3 [ c1A#2 c1B#2 c2A#2 c2B#2 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 ] { }  ) always clobbers reg byte a 
Statement [61] doplasma::val#1 = doplasma::val#0 + *doplasma::ybuf [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#1 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#1 ] { }  ) always clobbers reg byte a 
Statement [63] doplasma::val#5 = doplasma::val#1 + *(doplasma::ybuf+1) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#5 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#5 ] { }  ) always clobbers reg byte a 
Statement [65] doplasma::val#7 = doplasma::val#5 + *(doplasma::ybuf+2) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#7 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#7 ] { }  ) always clobbers reg byte a 
Statement [67] doplasma::val#10 = doplasma::val#7 + *(doplasma::ybuf+3) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#10 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#10 ] { }  ) always clobbers reg byte a 
Statement [69] doplasma::val#11 = doplasma::val#10 + *(doplasma::ybuf+4) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#11 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#11 ] { }  ) always clobbers reg byte a 
Statement [71] doplasma::val#13 = doplasma::val#11 + *(doplasma::ybuf+5) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#13 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#13 ] { }  ) always clobbers reg byte a 
Statement [73] doplasma::val#15 = doplasma::val#13 + *(doplasma::ybuf+6) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#15 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#15 ] { }  ) always clobbers reg byte a 
Statement [75] doplasma::val#17 = doplasma::val#15 + *(doplasma::ybuf+7) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#17 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#17 ] { }  ) always clobbers reg byte a 
Statement [77] doplasma::val#19 = doplasma::val#17 + *(doplasma::ybuf+8) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#19 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#19 ] { }  ) always clobbers reg byte a 
Statement [79] doplasma::val#21 = doplasma::val#19 + *(doplasma::ybuf+9) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#21 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#21 ] { }  ) always clobbers reg byte a 
Statement [81] doplasma::val#23 = doplasma::val#21 + *(doplasma::ybuf+$a) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#23 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#23 ] { }  ) always clobbers reg byte a 
Statement [83] doplasma::val#25 = doplasma::val#23 + *(doplasma::ybuf+$b) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#25 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#25 ] { }  ) always clobbers reg byte a 
Statement [85] doplasma::val#27 = doplasma::val#25 + *(doplasma::ybuf+$c) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#27 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#27 ] { }  ) always clobbers reg byte a 
Statement [87] doplasma::val#29 = doplasma::val#27 + *(doplasma::ybuf+$d) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#29 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#29 ] { }  ) always clobbers reg byte a 
Statement [89] doplasma::val#31 = doplasma::val#29 + *(doplasma::ybuf+$e) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#31 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#31 ] { }  ) always clobbers reg byte a 
Statement [91] doplasma::val#33 = doplasma::val#31 + *(doplasma::ybuf+$f) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#33 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#33 ] { }  ) always clobbers reg byte a 
Statement [93] doplasma::val#35 = doplasma::val#33 + *(doplasma::ybuf+$10) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#35 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#35 ] { }  ) always clobbers reg byte a 
Statement [95] doplasma::val#37 = doplasma::val#35 + *(doplasma::ybuf+$11) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#37 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#37 ] { }  ) always clobbers reg byte a 
Statement [97] doplasma::val#39 = doplasma::val#37 + *(doplasma::ybuf+$12) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#39 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#39 ] { }  ) always clobbers reg byte a 
Statement [99] doplasma::val#41 = doplasma::val#39 + *(doplasma::ybuf+$13) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#41 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#41 ] { }  ) always clobbers reg byte a 
Statement [101] doplasma::val#43 = doplasma::val#41 + *(doplasma::ybuf+$14) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#43 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#43 ] { }  ) always clobbers reg byte a 
Statement [103] doplasma::val#45 = doplasma::val#43 + *(doplasma::ybuf+$15) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#45 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#45 ] { }  ) always clobbers reg byte a 
Statement [105] doplasma::val#47 = doplasma::val#45 + *(doplasma::ybuf+$16) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#47 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#47 ] { }  ) always clobbers reg byte a 
Statement [107] doplasma::val#49 = doplasma::val#47 + *(doplasma::ybuf+$17) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#49 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#49 ] { }  ) always clobbers reg byte a 
Statement [109] doplasma::val#51 = doplasma::val#49 + *(doplasma::ybuf+$18) [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#51 ] ( doplasma:13 [ c1A#2 c1B#2 c2A#2 c2B#2 doplasma::i2#2 doplasma::val#51 ] { }  ) always clobbers reg byte a 
Statement [112] doplasma::$4 = SINTABLE[doplasma::c2a#2] + SINTABLE[doplasma::c2b#2] [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] ( doplasma:13 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2a#2 doplasma::c2b#2 doplasma::$4 ] { }  ) always clobbers reg byte a 
Statement [114] doplasma::c2a#1 = doplasma::c2a#2 + 3 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] ( doplasma:13 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2b#2 doplasma::c2a#1 ] { }  ) always clobbers reg byte a 
Statement [115] doplasma::c2b#1 = doplasma::c2b#2 + 7 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( doplasma:13 [ c2A#1 c2B#1 c1A#2 c1B#2 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] { }  ) always clobbers reg byte a 
Statement [117] doplasma::yprev#1 = SINTABLE[doplasma::c1a#2] + SINTABLE[doplasma::c1b#2] [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yprev#1 ] ( doplasma:13 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#2 doplasma::yprev#1 ] { }  ) always clobbers reg byte a 
Statement [118] doplasma::$2 = doplasma::yprev#1 - doplasma::yprev#2 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#1 doplasma::$2 ] ( doplasma:13 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#2 doplasma::c1b#2 doplasma::yprev#1 doplasma::$2 ] { }  ) always clobbers reg byte a 
Statement [120] doplasma::c1a#1 = doplasma::c1a#2 + 4 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yprev#1 ] ( doplasma:13 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1b#2 doplasma::c1a#1 doplasma::yprev#1 ] { }  ) always clobbers reg byte a 
Statement [121] doplasma::c1b#1 = doplasma::c1b#2 + 9 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yprev#1 ] ( doplasma:13 [ c1A#1 c1B#1 c2A#1 c2B#1 doplasma::i#2 doplasma::c1a#1 doplasma::c1b#1 doplasma::yprev#1 ] { }  ) always clobbers reg byte a 
Statement [127] *print_char_cursor#19 = print_char::ch#0 [ print_char_cursor#19 ] ( makecharset:8::print_char:29 [ makecharset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a reg byte y 
Statement [132] if(memset::dst#2!=memset::end#0) goto memset::@2 [ memset::dst#2 ] ( makecharset:8::print_cls:18::memset:125 [ memset::dst#2 ] { }  ) always clobbers reg byte a 
Statement [134] *memset::dst#2 = memset::c#0 [ memset::dst#2 ] ( makecharset:8::print_cls:18::memset:125 [ memset::dst#2 ] { }  ) always clobbers reg byte a reg byte y 
Potential registers zp[2]:2 [ main::col#2 main::col#1 ] : zp[2]:2 , 
Potential registers zp[1]:4 [ c1A#1 c1A#2 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[1]:5 [ c1B#1 c1B#2 ] : zp[1]:5 , reg byte x , reg byte y , 
Potential registers zp[1]:6 [ c2A#1 c2A#2 ] : zp[1]:6 , reg byte x , reg byte y , 
Potential registers zp[1]:7 [ c2B#1 c2B#2 ] : zp[1]:7 , reg byte x , reg byte y , 
Potential registers zp[2]:8 [ makecharset::c#2 makecharset::c#1 ] : zp[2]:8 , 
Potential registers zp[2]:10 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] : zp[2]:10 , 
Potential registers zp[1]:12 [ makecharset::i#2 makecharset::i#1 ] : zp[1]:12 , reg byte x , 
Potential registers zp[1]:13 [ makecharset::ii#2 makecharset::ii#1 ] : zp[1]:13 , reg byte x , reg byte y , 
Potential registers zp[1]:14 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] : zp[1]:14 , reg byte x , reg byte y , 
Potential registers zp[1]:15 [ doplasma::i#2 doplasma::i#1 ] : zp[1]:15 , reg byte x , reg byte y , 
Potential registers zp[1]:16 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] : zp[1]:16 , reg byte x , reg byte y , 
Potential registers zp[1]:17 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] : zp[1]:17 , reg byte x , reg byte y , 
Potential registers zp[1]:18 [ doplasma::yprev#2 doplasma::yprev#4 ] : zp[1]:18 , reg byte x , reg byte y , 
Potential registers zp[1]:19 [ doplasma::i1#2 doplasma::i1#1 ] : zp[1]:19 , reg byte x , reg byte y , 
Potential registers zp[1]:20 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] : zp[1]:20 , reg byte x , reg byte y , 
Potential registers zp[1]:21 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] : zp[1]:21 , reg byte x , reg byte y , 
Potential registers zp[1]:22 [ doplasma::i2#2 doplasma::i2#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 [ makecharset::$3 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:26 [ makecharset::s#0 ] : zp[1]:26 , reg byte x , 
Potential registers zp[1]:27 [ makecharset::$12 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:28 [ makecharset::$10 ] : zp[2]:28 , 
Potential registers zp[2]:30 [ makecharset::$11 ] : zp[2]:30 , 
Potential registers zp[2]:32 [ makecharset::$16 ] : zp[2]:32 , 
Potential registers zp[1]:34 [ makecharset::sid_rnd1_return#0 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:35 [ makecharset::$7 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:36 [ doplasma::val#0 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:37 [ doplasma::val#1 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:38 [ doplasma::val#5 ] : zp[1]:38 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:39 [ doplasma::val#7 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:40 [ doplasma::val#10 ] : zp[1]:40 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:41 [ doplasma::val#11 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:42 [ doplasma::val#13 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:43 [ doplasma::val#15 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:44 [ doplasma::val#17 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:45 [ doplasma::val#19 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:46 [ doplasma::val#21 ] : zp[1]:46 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:47 [ doplasma::val#23 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:48 [ doplasma::val#25 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:49 [ doplasma::val#27 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:50 [ doplasma::val#29 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:51 [ doplasma::val#31 ] : zp[1]:51 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:52 [ doplasma::val#33 ] : zp[1]:52 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:53 [ doplasma::val#35 ] : zp[1]:53 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:54 [ doplasma::val#37 ] : zp[1]:54 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:55 [ doplasma::val#39 ] : zp[1]:55 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:56 [ doplasma::val#41 ] : zp[1]:56 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:57 [ doplasma::val#43 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:58 [ doplasma::val#45 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:59 [ doplasma::val#47 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:60 [ doplasma::val#49 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:61 [ doplasma::val#51 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:62 [ doplasma::$4 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:63 [ doplasma::yprev#1 ] : zp[1]:63 , reg byte x , reg byte y , 
Potential registers zp[1]:64 [ doplasma::$2 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [doplasma] 26,669.33: zp[1]:18 [ doplasma::yprev#2 doplasma::yprev#4 ] 26,669.33: zp[1]:19 [ doplasma::i1#2 doplasma::i1#1 ] 25,474.25: zp[1]:22 [ doplasma::i2#2 doplasma::i2#1 ] 20,002: zp[1]:36 [ doplasma::val#0 ] 20,002: zp[1]:61 [ doplasma::val#51 ] 20,002: zp[1]:62 [ doplasma::$4 ] 20,002: zp[1]:64 [ doplasma::$2 ] 16,223.8: zp[1]:21 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 15,715.86: zp[1]:15 [ doplasma::i#2 doplasma::i#1 ] 15,001.5: zp[1]:37 [ doplasma::val#1 ] 15,001.5: zp[1]:38 [ doplasma::val#5 ] 15,001.5: zp[1]:39 [ doplasma::val#7 ] 15,001.5: zp[1]:40 [ doplasma::val#10 ] 15,001.5: zp[1]:41 [ doplasma::val#11 ] 15,001.5: zp[1]:42 [ doplasma::val#13 ] 15,001.5: zp[1]:43 [ doplasma::val#15 ] 15,001.5: zp[1]:44 [ doplasma::val#17 ] 15,001.5: zp[1]:45 [ doplasma::val#19 ] 15,001.5: zp[1]:46 [ doplasma::val#21 ] 15,001.5: zp[1]:47 [ doplasma::val#23 ] 15,001.5: zp[1]:48 [ doplasma::val#25 ] 15,001.5: zp[1]:49 [ doplasma::val#27 ] 15,001.5: zp[1]:50 [ doplasma::val#29 ] 15,001.5: zp[1]:51 [ doplasma::val#31 ] 15,001.5: zp[1]:52 [ doplasma::val#33 ] 15,001.5: zp[1]:53 [ doplasma::val#35 ] 15,001.5: zp[1]:54 [ doplasma::val#37 ] 15,001.5: zp[1]:55 [ doplasma::val#39 ] 15,001.5: zp[1]:56 [ doplasma::val#41 ] 15,001.5: zp[1]:57 [ doplasma::val#43 ] 15,001.5: zp[1]:58 [ doplasma::val#45 ] 15,001.5: zp[1]:59 [ doplasma::val#47 ] 15,001.5: zp[1]:60 [ doplasma::val#49 ] 14,294.33: zp[1]:20 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 11,886.67: zp[1]:17 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 11,122.3: zp[1]:16 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 5,000.5: zp[1]:63 [ doplasma::yprev#1 ] 
Uplift Scope [makecharset] 38,879: zp[1]:14 [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ] 25,716.86: zp[1]:13 [ makecharset::ii#2 makecharset::ii#1 ] 20,002: zp[1]:34 [ makecharset::sid_rnd1_return#0 ] 20,002: zp[1]:35 [ makecharset::$7 ] 2,288: zp[1]:12 [ makecharset::i#2 makecharset::i#1 ] 2,002: zp[2]:28 [ makecharset::$10 ] 2,002: zp[2]:30 [ makecharset::$11 ] 2,002: zp[2]:32 [ makecharset::$16 ] 631.38: zp[1]:26 [ makecharset::s#0 ] 264.75: zp[2]:8 [ makecharset::c#2 makecharset::c#1 ] 202: zp[1]:25 [ makecharset::$3 ] 202: zp[1]:27 [ makecharset::$12 ] 
Uplift Scope [memset] 33,336.67: zp[2]:23 [ memset::dst#2 memset::dst#1 ] 
Uplift Scope [] 614.66: zp[2]:10 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] 18.01: zp[1]:4 [ c1A#1 c1A#2 ] 16.86: zp[1]:5 [ c1B#1 c1B#2 ] 10.81: zp[1]:6 [ c2A#1 c2A#2 ] 10.48: zp[1]:7 [ c2B#1 c2B#2 ] 
Uplift Scope [main] 33: zp[2]:2 [ main::col#2 main::col#1 ] 
Uplift Scope [MOS6526_CIA] 
Uplift Scope [MOS6569_VICII] 
Uplift Scope [MOS6581_SID] 
Uplift Scope [print_char] 
Uplift Scope [print_cls] 
Uplift Scope [RADIX] 

Uplifting [makecharset] best 154051 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::sid_rnd1_return#0 ] zp[1]:35 [ makecharset::$7 ] zp[1]:12 [ makecharset::i#2 makecharset::i#1 ] zp[2]:28 [ makecharset::$10 ] zp[2]:30 [ makecharset::$11 ] zp[2]:32 [ makecharset::$16 ] zp[1]:26 [ makecharset::s#0 ] zp[2]:8 [ makecharset::c#2 makecharset::c#1 ] zp[1]:25 [ makecharset::$3 ] zp[1]:27 [ makecharset::$12 ] 
Limited combination testing to 100 combinations of 9216 possible.
Uplifting [memset] best 154051 combination zp[2]:23 [ memset::dst#2 memset::dst#1 ] 
Uplifting [] best 154051 combination zp[2]:10 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] zp[1]:4 [ c1A#1 c1A#2 ] zp[1]:5 [ c1B#1 c1B#2 ] zp[1]:6 [ c2A#1 c2A#2 ] zp[1]:7 [ c2B#1 c2B#2 ] 
Uplifting [main] best 154051 combination zp[2]:2 [ main::col#2 main::col#1 ] 
Uplifting [MOS6526_CIA] best 154051 combination 
Uplifting [MOS6569_VICII] best 154051 combination 
Uplifting [MOS6581_SID] best 154051 combination 
Uplifting [print_char] best 154051 combination 
Uplifting [print_cls] best 154051 combination 
Uplifting [RADIX] best 154051 combination 
Attempting to uplift remaining variables inzp[1]:18 [ doplasma::yprev#2 doplasma::yprev#4 ]
Uplifting [doplasma] best 153551 combination reg byte x [ doplasma::yprev#2 doplasma::yprev#4 ] 
Attempting to uplift remaining variables inzp[1]:19 [ doplasma::i1#2 doplasma::i1#1 ]
Uplifting [doplasma] best 153551 combination zp[1]:19 [ doplasma::i1#2 doplasma::i1#1 ] 
Attempting to uplift remaining variables inzp[1]:22 [ doplasma::i2#2 doplasma::i2#1 ]
Uplifting [doplasma] best 144851 combination reg byte x [ doplasma::i2#2 doplasma::i2#1 ] 
Attempting to uplift remaining variables inzp[1]:35 [ makecharset::$7 ]
Uplifting [makecharset] best 144851 combination zp[1]:35 [ makecharset::$7 ] 
Attempting to uplift remaining variables inzp[1]:36 [ doplasma::val#0 ]
Uplifting [doplasma] best 144251 combination reg byte a [ doplasma::val#0 ] 
Attempting to uplift remaining variables inzp[1]:61 [ doplasma::val#51 ]
Uplifting [doplasma] best 143651 combination reg byte a [ doplasma::val#51 ] 
Attempting to uplift remaining variables inzp[1]:62 [ doplasma::$4 ]
Uplifting [doplasma] best 143051 combination reg byte a [ doplasma::$4 ] 
Attempting to uplift remaining variables inzp[1]:64 [ doplasma::$2 ]
Uplifting [doplasma] best 142451 combination reg byte a [ doplasma::$2 ] 
Attempting to uplift remaining variables inzp[1]:21 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
Uplifting [doplasma] best 142451 combination zp[1]:21 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 
Attempting to uplift remaining variables inzp[1]:15 [ doplasma::i#2 doplasma::i#1 ]
Uplifting [doplasma] best 142451 combination zp[1]:15 [ doplasma::i#2 doplasma::i#1 ] 
Attempting to uplift remaining variables inzp[1]:37 [ doplasma::val#1 ]
Uplifting [doplasma] best 141551 combination reg byte a [ doplasma::val#1 ] 
Attempting to uplift remaining variables inzp[1]:38 [ doplasma::val#5 ]
Uplifting [doplasma] best 140651 combination reg byte a [ doplasma::val#5 ] 
Attempting to uplift remaining variables inzp[1]:39 [ doplasma::val#7 ]
Uplifting [doplasma] best 139751 combination reg byte a [ doplasma::val#7 ] 
Attempting to uplift remaining variables inzp[1]:40 [ doplasma::val#10 ]
Uplifting [doplasma] best 138851 combination reg byte a [ doplasma::val#10 ] 
Attempting to uplift remaining variables inzp[1]:41 [ doplasma::val#11 ]
Uplifting [doplasma] best 137951 combination reg byte a [ doplasma::val#11 ] 
Attempting to uplift remaining variables inzp[1]:42 [ doplasma::val#13 ]
Uplifting [doplasma] best 137051 combination reg byte a [ doplasma::val#13 ] 
Attempting to uplift remaining variables inzp[1]:43 [ doplasma::val#15 ]
Uplifting [doplasma] best 136151 combination reg byte a [ doplasma::val#15 ] 
Attempting to uplift remaining variables inzp[1]:44 [ doplasma::val#17 ]
Uplifting [doplasma] best 135251 combination reg byte a [ doplasma::val#17 ] 
Attempting to uplift remaining variables inzp[1]:45 [ doplasma::val#19 ]
Uplifting [doplasma] best 134351 combination reg byte a [ doplasma::val#19 ] 
Attempting to uplift remaining variables inzp[1]:46 [ doplasma::val#21 ]
Uplifting [doplasma] best 133451 combination reg byte a [ doplasma::val#21 ] 
Attempting to uplift remaining variables inzp[1]:47 [ doplasma::val#23 ]
Uplifting [doplasma] best 132551 combination reg byte a [ doplasma::val#23 ] 
Attempting to uplift remaining variables inzp[1]:48 [ doplasma::val#25 ]
Uplifting [doplasma] best 131651 combination reg byte a [ doplasma::val#25 ] 
Attempting to uplift remaining variables inzp[1]:49 [ doplasma::val#27 ]
Uplifting [doplasma] best 130751 combination reg byte a [ doplasma::val#27 ] 
Attempting to uplift remaining variables inzp[1]:50 [ doplasma::val#29 ]
Uplifting [doplasma] best 129851 combination reg byte a [ doplasma::val#29 ] 
Attempting to uplift remaining variables inzp[1]:51 [ doplasma::val#31 ]
Uplifting [doplasma] best 128951 combination reg byte a [ doplasma::val#31 ] 
Attempting to uplift remaining variables inzp[1]:52 [ doplasma::val#33 ]
Uplifting [doplasma] best 128051 combination reg byte a [ doplasma::val#33 ] 
Attempting to uplift remaining variables inzp[1]:53 [ doplasma::val#35 ]
Uplifting [doplasma] best 127151 combination reg byte a [ doplasma::val#35 ] 
Attempting to uplift remaining variables inzp[1]:54 [ doplasma::val#37 ]
Uplifting [doplasma] best 126251 combination reg byte a [ doplasma::val#37 ] 
Attempting to uplift remaining variables inzp[1]:55 [ doplasma::val#39 ]
Uplifting [doplasma] best 125351 combination reg byte a [ doplasma::val#39 ] 
Attempting to uplift remaining variables inzp[1]:56 [ doplasma::val#41 ]
Uplifting [doplasma] best 124451 combination reg byte a [ doplasma::val#41 ] 
Attempting to uplift remaining variables inzp[1]:57 [ doplasma::val#43 ]
Uplifting [doplasma] best 123551 combination reg byte a [ doplasma::val#43 ] 
Attempting to uplift remaining variables inzp[1]:58 [ doplasma::val#45 ]
Uplifting [doplasma] best 122651 combination reg byte a [ doplasma::val#45 ] 
Attempting to uplift remaining variables inzp[1]:59 [ doplasma::val#47 ]
Uplifting [doplasma] best 121751 combination reg byte a [ doplasma::val#47 ] 
Attempting to uplift remaining variables inzp[1]:60 [ doplasma::val#49 ]
Uplifting [doplasma] best 120851 combination reg byte a [ doplasma::val#49 ] 
Attempting to uplift remaining variables inzp[1]:20 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
Uplifting [doplasma] best 120851 combination zp[1]:20 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 
Attempting to uplift remaining variables inzp[1]:17 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
Uplifting [doplasma] best 120851 combination zp[1]:17 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 
Attempting to uplift remaining variables inzp[1]:16 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
Uplifting [doplasma] best 120851 combination zp[1]:16 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 
Attempting to uplift remaining variables inzp[1]:63 [ doplasma::yprev#1 ]
Uplifting [doplasma] best 120851 combination zp[1]:63 [ doplasma::yprev#1 ] 
Attempting to uplift remaining variables inzp[1]:12 [ makecharset::i#2 makecharset::i#1 ]
Uplifting [makecharset] best 120851 combination zp[1]:12 [ makecharset::i#2 makecharset::i#1 ] 
Attempting to uplift remaining variables inzp[1]:26 [ makecharset::s#0 ]
Uplifting [makecharset] best 120851 combination zp[1]:26 [ makecharset::s#0 ] 
Attempting to uplift remaining variables inzp[1]:25 [ makecharset::$3 ]
Uplifting [makecharset] best 120791 combination reg byte x [ makecharset::$3 ] 
Attempting to uplift remaining variables inzp[1]:27 [ makecharset::$12 ]
Uplifting [makecharset] best 120751 combination reg byte a [ makecharset::$12 ] 
Attempting to uplift remaining variables inzp[1]:4 [ c1A#1 c1A#2 ]
Uplifting [] best 120751 combination zp[1]:4 [ c1A#1 c1A#2 ] 
Attempting to uplift remaining variables inzp[1]:5 [ c1B#1 c1B#2 ]
Uplifting [] best 120751 combination zp[1]:5 [ c1B#1 c1B#2 ] 
Attempting to uplift remaining variables inzp[1]:6 [ c2A#1 c2A#2 ]
Uplifting [] best 120751 combination zp[1]:6 [ c2A#1 c2A#2 ] 
Attempting to uplift remaining variables inzp[1]:7 [ c2B#1 c2B#2 ]
Uplifting [] best 120751 combination zp[1]:7 [ c2B#1 c2B#2 ] 
Coalescing zero page register [ zp[2]:28 [ makecharset::$10 ] ] with [ zp[2]:30 [ makecharset::$11 ] ] - score: 1
Coalescing zero page register [ zp[2]:28 [ makecharset::$10 makecharset::$11 ] ] with [ zp[2]:32 [ makecharset::$16 ] ] - score: 1
Coalescing zero page register [ zp[2]:10 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] ] with [ zp[2]:2 [ main::col#2 main::col#1 ] ]
Coalescing zero page register [ zp[1]:12 [ makecharset::i#2 makecharset::i#1 ] ] with [ zp[1]:4 [ c1A#1 c1A#2 ] ]
Coalescing zero page register [ zp[1]:26 [ makecharset::s#0 ] ] with [ zp[1]:5 [ c1B#1 c1B#2 ] ]
Coalescing zero page register [ zp[2]:28 [ makecharset::$10 makecharset::$11 makecharset::$16 ] ] with [ zp[2]:23 [ memset::dst#2 memset::dst#1 ] ]
Coalescing zero page register [ zp[1]:35 [ makecharset::$7 ] ] with [ zp[1]:6 [ c2A#1 c2A#2 ] ]
Allocated (was zp[1]:7) zp[1]:2 [ c2B#1 c2B#2 ]
Allocated (was zp[2]:8) zp[2]:3 [ makecharset::c#2 makecharset::c#1 ]
Allocated (was zp[2]:10) zp[2]:5 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 main::col#2 main::col#1 ]
Allocated (was zp[1]:12) zp[1]:7 [ makecharset::i#2 makecharset::i#1 c1A#1 c1A#2 ]
Allocated (was zp[1]:15) zp[1]:8 [ doplasma::i#2 doplasma::i#1 ]
Allocated (was zp[1]:16) zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
Allocated (was zp[1]:17) zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
Allocated (was zp[1]:19) zp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ]
Allocated (was zp[1]:20) zp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
Allocated (was zp[1]:21) zp[1]:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
Allocated (was zp[1]:26) zp[1]:14 [ makecharset::s#0 c1B#1 c1B#2 ]
Allocated (was zp[2]:28) zp[2]:15 [ makecharset::$10 makecharset::$11 makecharset::$16 memset::dst#2 memset::dst#1 ]
Allocated (was zp[1]:35) zp[1]:17 [ makecharset::$7 c2A#1 c2A#2 ]
Allocated (was zp[1]:63) zp[1]:18 [ doplasma::yprev#1 ]

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
  // Commodore 64 PRG executable file
.file [name="plasma-unroll.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  /// SID Channel Control Register Noise Waveform
  .const SID_CONTROL_NOISE = $80
  /// The colors of the C64
  .const BLACK = 0
  .const BLUE = 6
  .const OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
  .const OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
  .const OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
  .const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
  .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
  /// $D018 VIC-II base addresses
  // @see #VICII_MEMORY
  .label D018 = $d018
  /// The SID MOS 6581/8580
  .label SID = $d400
  /// The VIC-II MOS 6567/6569
  .label VICII = $d000
  /// Color Ram
  .label COLS = $d800
  .label SCREEN1 = $2800
  .label CHARSET = $2000
  .label print_screen = $400
  .label print_char_cursor = 5
  // Plasma state variables
  .label c1A = 7
  .label c1B = $e
  .label c2A = $11
  .label c2B = 2
.segment Code
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .label col = 5
    // asm { sei  }
    sei
    // [1] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
    // [2] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR
    // [3] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [3] phi main::col#2 = COLS [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<COLS
    sta.z col
    lda #>COLS
    sta.z col+1
    jmp __b1
    // [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
  __b1_from___b1:
    // [3] phi main::col#2 = main::col#1 [phi:main::@1->main::@1#0] -- register_copy 
    jmp __b1
    // main::@1
  __b1:
    // [4] *main::col#2 = BLACK -- _deref_pbuz1=vbuc1 
    lda #BLACK
    ldy #0
    sta (col),y
    // [5] main::col#1 = ++ main::col#2 -- pbuz1=_inc_pbuz1 
    inc.z col
    bne !+
    inc.z col+1
  !:
    // [6] if(main::col#1!=COLS+$3e8+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
    // [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [8] call makecharset
    // [14] phi from main::@2 to makecharset [phi:main::@2->makecharset]
  makecharset_from___b2:
    jsr makecharset
    // [9] 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:
    // [10] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [11] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
  __b3_from___b5:
    // [11] phi c2B#1 = 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c2B
    // [11] phi c2A#1 = 0 [phi:main::@5->main::@3#1] -- vbuz1=vbuc1 
    lda #0
    sta.z c2A
    // [11] phi c1B#1 = 0 [phi:main::@5->main::@3#2] -- vbuz1=vbuc1 
    lda #0
    sta.z c1B
    // [11] phi c1A#1 = 0 [phi:main::@5->main::@3#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c1A
    jmp __b3
    // main::@3
  __b3:
    // [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [13] call doplasma
    // Show single-buffered plasma
    jsr doplasma
    // [11] phi from main::@4 to main::@3 [phi:main::@4->main::@3]
  __b3_from___b4:
    // [11] phi c2B#1 = c2B#2 [phi:main::@4->main::@3#0] -- register_copy 
    // [11] phi c2A#1 = c2A#2 [phi:main::@4->main::@3#1] -- register_copy 
    // [11] phi c1B#1 = c1B#2 [phi:main::@4->main::@3#2] -- register_copy 
    // [11] phi c1A#1 = c1A#2 [phi:main::@4->main::@3#3] -- register_copy 
    jmp __b3
}
  // makecharset
// Make a plasma-friendly charset where the chars are randomly filled
// void makecharset(char *charset)
makecharset: {
    .label __7 = $11
    .label __10 = $f
    .label __11 = $f
    .label s = $e
    .label i = 7
    .label c = 3
    .label __16 = $f
    jmp sid_rnd_init1
    // makecharset::sid_rnd_init1
  sid_rnd_init1:
    // [15] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ
    lda #>$ffff
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ+1
    // [16] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL
    // [17] phi from makecharset::sid_rnd_init1 to makecharset::@11 [phi:makecharset::sid_rnd_init1->makecharset::@11]
  __b11_from_sid_rnd_init1:
    jmp __b11
    // makecharset::@11
  __b11:
    // [18] call print_cls
    // [124] phi from makecharset::@11 to print_cls [phi:makecharset::@11->print_cls]
  print_cls_from___b11:
    jsr print_cls
    // [19] phi from makecharset::@11 to makecharset::@1 [phi:makecharset::@11->makecharset::@1]
  __b1_from___b11:
    // [19] phi print_char_cursor#19 = print_screen#0 [phi:makecharset::@11->makecharset::@1#0] -- pbuz1=pbuc1 
    lda #<print_screen
    sta.z print_char_cursor
    lda #>print_screen
    sta.z print_char_cursor+1
    // [19] phi makecharset::c#2 = 0 [phi:makecharset::@11->makecharset::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z c
    lda #>0
    sta.z c+1
    jmp __b1
    // makecharset::@1
  __b1:
    // [20] if(makecharset::c#2<$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:
    // [21] return 
    rts
    // makecharset::@2
  __b2:
    // [22] makecharset::$3 = byte0  makecharset::c#2 -- vbuxx=_byte0_vwuz1 
    ldx.z c
    // [23] makecharset::s#0 = SINTABLE[makecharset::$3] -- vbuz1=pbuc1_derefidx_vbuxx 
    lda SINTABLE,x
    sta.z s
    // [24] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3]
  __b3_from___b2:
    // [24] phi makecharset::i#2 = 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b3
    // makecharset::@3
  __b3:
    // [25] if(makecharset::i#2<8) goto makecharset::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #8
    bcc __b5_from___b3
    jmp __b4
    // makecharset::@4
  __b4:
    // [26] makecharset::$12 = makecharset::c#2 & 7 -- vbuaa=vwuz1_band_vbuc1 
    lda #7
    and.z c
    // [27] if(makecharset::$12!=0) goto makecharset::@10 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b10_from___b4
    // [28] phi from makecharset::@4 to makecharset::@9 [phi:makecharset::@4->makecharset::@9]
  __b9_from___b4:
    jmp __b9
    // makecharset::@9
  __b9:
    // [29] call print_char
    jsr print_char
    // [30] phi from makecharset::@4 makecharset::@9 to makecharset::@10 [phi:makecharset::@4/makecharset::@9->makecharset::@10]
  __b10_from___b4:
  __b10_from___b9:
    // [30] phi print_char_cursor#32 = print_char_cursor#19 [phi:makecharset::@4/makecharset::@9->makecharset::@10#0] -- register_copy 
    jmp __b10
    // makecharset::@10
  __b10:
    // [31] makecharset::c#1 = ++ makecharset::c#2 -- vwuz1=_inc_vwuz1 
    inc.z c
    bne !+
    inc.z c+1
  !:
    // [19] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1]
  __b1_from___b10:
    // [19] phi print_char_cursor#19 = print_char_cursor#32 [phi:makecharset::@10->makecharset::@1#0] -- register_copy 
    // [19] phi makecharset::c#2 = makecharset::c#1 [phi:makecharset::@10->makecharset::@1#1] -- register_copy 
    jmp __b1
    // [32] phi from makecharset::@3 to makecharset::@5 [phi:makecharset::@3->makecharset::@5]
  __b5_from___b3:
    // [32] phi makecharset::b#2 = 0 [phi:makecharset::@3->makecharset::@5#0] -- vbuyy=vbuc1 
    ldy #0
    // [32] phi makecharset::ii#2 = 0 [phi:makecharset::@3->makecharset::@5#1] -- vbuxx=vbuc1 
    ldx #0
    jmp __b5
    // makecharset::@5
  __b5:
    // [33] if(makecharset::ii#2<8) goto makecharset::sid_rnd1 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc sid_rnd1
    jmp __b6
    // makecharset::@6
  __b6:
    // [34] makecharset::$10 = makecharset::c#2 << 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
    // [35] makecharset::$11 = makecharset::$10 + makecharset::i#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda.z i
    clc
    adc.z __11
    sta.z __11
    bcc !+
    inc.z __11+1
  !:
    // [36] makecharset::$16 = CHARSET + makecharset::$11 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z __16
    clc
    adc #<CHARSET
    sta.z __16
    lda.z __16+1
    adc #>CHARSET
    sta.z __16+1
    // [37] *makecharset::$16 = makecharset::b#2 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (__16),y
    // [38] makecharset::i#1 = ++ makecharset::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [24] phi from makecharset::@6 to makecharset::@3 [phi:makecharset::@6->makecharset::@3]
  __b3_from___b6:
    // [24] phi makecharset::i#2 = makecharset::i#1 [phi:makecharset::@6->makecharset::@3#0] -- register_copy 
    jmp __b3
    // makecharset::sid_rnd1
  sid_rnd1:
    // [39] makecharset::sid_rnd1_return#0 = *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC) -- vbuaa=_deref_pbuc1 
    lda SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC
    jmp __b12
    // makecharset::@12
  __b12:
    // [40] makecharset::$7 = makecharset::sid_rnd1_return#0 & $ff -- vbuz1=vbuaa_band_vbuc1 
    and #$ff
    sta.z __7
    // [41] if(makecharset::$7<=makecharset::s#0) goto makecharset::@7 -- vbuz1_le_vbuz2_then_la1 
    lda.z s
    cmp.z __7
    bcs __b7_from___b12
    jmp __b8
    // makecharset::@8
  __b8:
    // [42] makecharset::b#1 = makecharset::b#2 | makecharset::bittab[makecharset::ii#2] -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx 
    tya
    ora bittab,x
    tay
    // [43] phi from makecharset::@12 makecharset::@8 to makecharset::@7 [phi:makecharset::@12/makecharset::@8->makecharset::@7]
  __b7_from___b12:
  __b7_from___b8:
    // [43] phi makecharset::b#6 = makecharset::b#2 [phi:makecharset::@12/makecharset::@8->makecharset::@7#0] -- register_copy 
    jmp __b7
    // makecharset::@7
  __b7:
    // [44] makecharset::ii#1 = ++ makecharset::ii#2 -- vbuxx=_inc_vbuxx 
    inx
    // [32] phi from makecharset::@7 to makecharset::@5 [phi:makecharset::@7->makecharset::@5]
  __b5_from___b7:
    // [32] phi makecharset::b#2 = makecharset::b#6 [phi:makecharset::@7->makecharset::@5#0] -- register_copy 
    // [32] phi makecharset::ii#2 = makecharset::ii#1 [phi:makecharset::@7->makecharset::@5#1] -- register_copy 
    jmp __b5
  .segment Data
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
.segment Code
  // doplasma
// Render plasma to the passed screen
// void doplasma(char *screen)
doplasma: {
    .label c1a = 9
    .label c1b = $a
    .label yprev = $12
    .label i = 8
    .label c2a = $c
    .label c2b = $d
    .label i1 = $b
    // [45] doplasma::c1a#0 = c1A#1 -- vbuz1=vbuz2 
    lda.z c1A
    sta.z c1a
    // [46] doplasma::c1b#0 = c1B#1 -- vbuz1=vbuz2 
    lda.z c1B
    sta.z c1b
    // [47] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
  __b1_from_doplasma:
    // [47] phi doplasma::yprev#2 = 0 [phi:doplasma->doplasma::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [47] phi doplasma::c1b#2 = doplasma::c1b#0 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [47] phi doplasma::c1a#2 = doplasma::c1a#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [47] phi doplasma::i#2 = 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:
    // [48] if(doplasma::i#2<$19) goto doplasma::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #$19
    bcc __b2
    jmp __b3
    // doplasma::@3
  __b3:
    // [49] c1A#2 = c1A#1 + 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1A
    axs #-[3]
    stx.z c1A
    // [50] c1B#2 = c1B#1 - 5 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c1B
    axs #5
    stx.z c1B
    // [51] doplasma::c2a#0 = c2A#1 -- vbuz1=vbuz2 
    lda.z c2A
    sta.z c2a
    // [52] doplasma::c2b#0 = c2B#1 -- vbuz1=vbuz2 
    lda.z c2B
    sta.z c2b
    // [53] phi from doplasma::@3 to doplasma::@4 [phi:doplasma::@3->doplasma::@4]
  __b4_from___b3:
    // [53] phi doplasma::c2b#2 = doplasma::c2b#0 [phi:doplasma::@3->doplasma::@4#0] -- register_copy 
    // [53] phi doplasma::c2a#2 = doplasma::c2a#0 [phi:doplasma::@3->doplasma::@4#1] -- register_copy 
    // [53] phi doplasma::i1#2 = 0 [phi:doplasma::@3->doplasma::@4#2] -- vbuz1=vbuc1 
    lda #0
    sta.z i1
    jmp __b4
    // doplasma::@4
  __b4:
    // [54] if(doplasma::i1#2<$28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i1
    cmp #$28
    bcc __b5
    jmp __b6
    // doplasma::@6
  __b6:
    // [55] c2A#2 = c2A#1 + 2 -- vbuz1=vbuz1_plus_2 
    lda.z c2A
    clc
    adc #2
    sta.z c2A
    // [56] c2B#2 = c2B#1 - 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c2B
    axs #3
    stx.z c2B
    // [57] phi from doplasma::@6 to doplasma::@7 [phi:doplasma::@6->doplasma::@7]
  __b7_from___b6:
    // [57] phi doplasma::i2#2 = 0 [phi:doplasma::@6->doplasma::@7#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b7
    // doplasma::@7
  __b7:
    // [58] if(doplasma::i2#2<$28) goto doplasma::@8 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$28
    bcc __b8
    jmp __breturn
    // doplasma::@return
  __breturn:
    // [59] return 
    rts
    // doplasma::@8
  __b8:
    // [60] doplasma::val#0 = doplasma::xbuf[doplasma::i2#2] -- vbuaa=pbuc1_derefidx_vbuxx 
    // Find the first value on the row
    lda xbuf,x
    jmp __b9
    // doplasma::@9
  __b9:
    // [61] doplasma::val#1 = doplasma::val#0 + *doplasma::ybuf -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf
    // [62] SCREEN1[doplasma::i2#2] = doplasma::val#1 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1,x
    jmp __b10_1
    // doplasma::@10_1
  __b10_1:
    // [63] doplasma::val#5 = doplasma::val#1 + *(doplasma::ybuf+1) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+1
    // [64] (SCREEN1+1*$28)[doplasma::i2#2] = doplasma::val#5 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+1*$28,x
    jmp __b10_2
    // doplasma::@10_2
  __b10_2:
    // [65] doplasma::val#7 = doplasma::val#5 + *(doplasma::ybuf+2) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+2
    // [66] (SCREEN1+2*$28)[doplasma::i2#2] = doplasma::val#7 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+2*$28,x
    jmp __b10_3
    // doplasma::@10_3
  __b10_3:
    // [67] doplasma::val#10 = doplasma::val#7 + *(doplasma::ybuf+3) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+3
    // [68] (SCREEN1+3*$28)[doplasma::i2#2] = doplasma::val#10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+3*$28,x
    jmp __b10_4
    // doplasma::@10_4
  __b10_4:
    // [69] doplasma::val#11 = doplasma::val#10 + *(doplasma::ybuf+4) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+4
    // [70] (SCREEN1+4*$28)[doplasma::i2#2] = doplasma::val#11 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+4*$28,x
    jmp __b10_5
    // doplasma::@10_5
  __b10_5:
    // [71] doplasma::val#13 = doplasma::val#11 + *(doplasma::ybuf+5) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+5
    // [72] (SCREEN1+5*$28)[doplasma::i2#2] = doplasma::val#13 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+5*$28,x
    jmp __b10_6
    // doplasma::@10_6
  __b10_6:
    // [73] doplasma::val#15 = doplasma::val#13 + *(doplasma::ybuf+6) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+6
    // [74] (SCREEN1+6*$28)[doplasma::i2#2] = doplasma::val#15 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+6*$28,x
    jmp __b10_7
    // doplasma::@10_7
  __b10_7:
    // [75] doplasma::val#17 = doplasma::val#15 + *(doplasma::ybuf+7) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+7
    // [76] (SCREEN1+7*$28)[doplasma::i2#2] = doplasma::val#17 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+7*$28,x
    jmp __b10_8
    // doplasma::@10_8
  __b10_8:
    // [77] doplasma::val#19 = doplasma::val#17 + *(doplasma::ybuf+8) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+8
    // [78] (SCREEN1+8*$28)[doplasma::i2#2] = doplasma::val#19 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+8*$28,x
    jmp __b10_9
    // doplasma::@10_9
  __b10_9:
    // [79] doplasma::val#21 = doplasma::val#19 + *(doplasma::ybuf+9) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+9
    // [80] (SCREEN1+9*$28)[doplasma::i2#2] = doplasma::val#21 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+9*$28,x
    jmp __b10_10
    // doplasma::@10_10
  __b10_10:
    // [81] doplasma::val#23 = doplasma::val#21 + *(doplasma::ybuf+$a) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$a
    // [82] (SCREEN1+$a*$28)[doplasma::i2#2] = doplasma::val#23 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$a*$28,x
    jmp __b10_11
    // doplasma::@10_11
  __b10_11:
    // [83] doplasma::val#25 = doplasma::val#23 + *(doplasma::ybuf+$b) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$b
    // [84] (SCREEN1+$b*$28)[doplasma::i2#2] = doplasma::val#25 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$b*$28,x
    jmp __b10_12
    // doplasma::@10_12
  __b10_12:
    // [85] doplasma::val#27 = doplasma::val#25 + *(doplasma::ybuf+$c) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$c
    // [86] (SCREEN1+$c*$28)[doplasma::i2#2] = doplasma::val#27 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$c*$28,x
    jmp __b10_13
    // doplasma::@10_13
  __b10_13:
    // [87] doplasma::val#29 = doplasma::val#27 + *(doplasma::ybuf+$d) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$d
    // [88] (SCREEN1+$d*$28)[doplasma::i2#2] = doplasma::val#29 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$d*$28,x
    jmp __b10_14
    // doplasma::@10_14
  __b10_14:
    // [89] doplasma::val#31 = doplasma::val#29 + *(doplasma::ybuf+$e) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$e
    // [90] (SCREEN1+$e*$28)[doplasma::i2#2] = doplasma::val#31 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$e*$28,x
    jmp __b10_15
    // doplasma::@10_15
  __b10_15:
    // [91] doplasma::val#33 = doplasma::val#31 + *(doplasma::ybuf+$f) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$f
    // [92] (SCREEN1+$f*$28)[doplasma::i2#2] = doplasma::val#33 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$f*$28,x
    jmp __b10_16
    // doplasma::@10_16
  __b10_16:
    // [93] doplasma::val#35 = doplasma::val#33 + *(doplasma::ybuf+$10) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$10
    // [94] (SCREEN1+$10*$28)[doplasma::i2#2] = doplasma::val#35 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$10*$28,x
    jmp __b10_17
    // doplasma::@10_17
  __b10_17:
    // [95] doplasma::val#37 = doplasma::val#35 + *(doplasma::ybuf+$11) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$11
    // [96] (SCREEN1+$11*$28)[doplasma::i2#2] = doplasma::val#37 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$11*$28,x
    jmp __b10_18
    // doplasma::@10_18
  __b10_18:
    // [97] doplasma::val#39 = doplasma::val#37 + *(doplasma::ybuf+$12) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$12
    // [98] (SCREEN1+$12*$28)[doplasma::i2#2] = doplasma::val#39 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$12*$28,x
    jmp __b10_19
    // doplasma::@10_19
  __b10_19:
    // [99] doplasma::val#41 = doplasma::val#39 + *(doplasma::ybuf+$13) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$13
    // [100] (SCREEN1+$13*$28)[doplasma::i2#2] = doplasma::val#41 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$13*$28,x
    jmp __b10_20
    // doplasma::@10_20
  __b10_20:
    // [101] doplasma::val#43 = doplasma::val#41 + *(doplasma::ybuf+$14) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$14
    // [102] (SCREEN1+$14*$28)[doplasma::i2#2] = doplasma::val#43 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$14*$28,x
    jmp __b10_21
    // doplasma::@10_21
  __b10_21:
    // [103] doplasma::val#45 = doplasma::val#43 + *(doplasma::ybuf+$15) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$15
    // [104] (SCREEN1+$15*$28)[doplasma::i2#2] = doplasma::val#45 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$15*$28,x
    jmp __b10_22
    // doplasma::@10_22
  __b10_22:
    // [105] doplasma::val#47 = doplasma::val#45 + *(doplasma::ybuf+$16) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$16
    // [106] (SCREEN1+$16*$28)[doplasma::i2#2] = doplasma::val#47 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$16*$28,x
    jmp __b10_23
    // doplasma::@10_23
  __b10_23:
    // [107] doplasma::val#49 = doplasma::val#47 + *(doplasma::ybuf+$17) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$17
    // [108] (SCREEN1+$17*$28)[doplasma::i2#2] = doplasma::val#49 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$17*$28,x
    jmp __b10_24
    // doplasma::@10_24
  __b10_24:
    // [109] doplasma::val#51 = doplasma::val#49 + *(doplasma::ybuf+$18) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$18
    // [110] (SCREEN1+$18*$28)[doplasma::i2#2] = doplasma::val#51 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$18*$28,x
    jmp __b10
    // doplasma::@10
  __b10:
    // [111] doplasma::i2#1 = ++ doplasma::i2#2 -- vbuxx=_inc_vbuxx 
    inx
    // [57] phi from doplasma::@10 to doplasma::@7 [phi:doplasma::@10->doplasma::@7]
  __b7_from___b10:
    // [57] phi doplasma::i2#2 = doplasma::i2#1 [phi:doplasma::@10->doplasma::@7#0] -- register_copy 
    jmp __b7
    // doplasma::@5
  __b5:
    // [112] doplasma::$4 = SINTABLE[doplasma::c2a#2] + SINTABLE[doplasma::c2b#2] -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2 
    ldy.z c2a
    lda SINTABLE,y
    ldy.z c2b
    clc
    adc SINTABLE,y
    // [113] doplasma::xbuf[doplasma::i1#2] = doplasma::$4 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z i1
    sta xbuf,y
    // [114] doplasma::c2a#1 = doplasma::c2a#2 + 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2a
    axs #-[3]
    stx.z c2a
    // [115] doplasma::c2b#1 = doplasma::c2b#2 + 7 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2b
    axs #-[7]
    stx.z c2b
    // [116] doplasma::i1#1 = ++ doplasma::i1#2 -- vbuz1=_inc_vbuz1 
    inc.z i1
    // [53] phi from doplasma::@5 to doplasma::@4 [phi:doplasma::@5->doplasma::@4]
  __b4_from___b5:
    // [53] phi doplasma::c2b#2 = doplasma::c2b#1 [phi:doplasma::@5->doplasma::@4#0] -- register_copy 
    // [53] phi doplasma::c2a#2 = doplasma::c2a#1 [phi:doplasma::@5->doplasma::@4#1] -- register_copy 
    // [53] phi doplasma::i1#2 = doplasma::i1#1 [phi:doplasma::@5->doplasma::@4#2] -- register_copy 
    jmp __b4
    // doplasma::@2
  __b2:
    // [117] doplasma::yprev#1 = SINTABLE[doplasma::c1a#2] + SINTABLE[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 yprev
    // [118] doplasma::$2 = doplasma::yprev#1 - doplasma::yprev#2 -- vbuaa=vbuz1_minus_vbuxx 
    txa
    eor #$ff
    sec
    adc.z yprev
    // [119] doplasma::ybuf[doplasma::i#2] = doplasma::$2 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z i
    sta ybuf,y
    // [120] doplasma::c1a#1 = doplasma::c1a#2 + 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1a
    axs #-[4]
    stx.z c1a
    // [121] doplasma::c1b#1 = doplasma::c1b#2 + 9 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1b
    axs #-[9]
    stx.z c1b
    // [122] doplasma::i#1 = ++ doplasma::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [123] doplasma::yprev#4 = doplasma::yprev#1 -- vbuxx=vbuz1 
    ldx.z yprev
    // [47] phi from doplasma::@2 to doplasma::@1 [phi:doplasma::@2->doplasma::@1]
  __b1_from___b2:
    // [47] phi doplasma::yprev#2 = doplasma::yprev#4 [phi:doplasma::@2->doplasma::@1#0] -- register_copy 
    // [47] phi doplasma::c1b#2 = doplasma::c1b#1 [phi:doplasma::@2->doplasma::@1#1] -- register_copy 
    // [47] phi doplasma::c1a#2 = doplasma::c1a#1 [phi:doplasma::@2->doplasma::@1#2] -- register_copy 
    // [47] phi doplasma::i#2 = doplasma::i#1 [phi:doplasma::@2->doplasma::@1#3] -- register_copy 
    jmp __b1
  .segment Data
    xbuf: .fill $28, 0
    ybuf: .fill $19, 0
}
.segment Code
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [125] call memset
    // [130] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [126] return 
    rts
}
  // print_char
// Print a single char
// void print_char(char ch)
print_char: {
    .const ch = '.'
    // [127] *print_char_cursor#19 = print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // [128] print_char_cursor#0 = ++ print_char_cursor#19 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp __breturn
    // print_char::@return
  __breturn:
    // [129] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// void * memset(void *str, char c, unsigned int num)
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = print_screen
    .label end = str+num
    .label dst = $f
    // [131] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [131] phi memset::dst#2 = (char *)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:
    // [132] if(memset::dst#2!=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:
    // [133] return 
    rts
    // memset::@2
  __b2:
    // [134] *memset::dst#2 = memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [135] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [131] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [131] phi memset::dst#2 = memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // File Data
.segment 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 __b2
Removing instruction jmp toD0181
Removing instruction jmp __b5
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp sid_rnd_init1
Removing instruction jmp __b11
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b12
Removing instruction jmp __b8
Removing instruction jmp __b7
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 __b10_1
Removing instruction jmp __b10_2
Removing instruction jmp __b10_3
Removing instruction jmp __b10_4
Removing instruction jmp __b10_5
Removing instruction jmp __b10_6
Removing instruction jmp __b10_7
Removing instruction jmp __b10_8
Removing instruction jmp __b10_9
Removing instruction jmp __b10_10
Removing instruction jmp __b10_11
Removing instruction jmp __b10_12
Removing instruction jmp __b10_13
Removing instruction jmp __b10_14
Removing instruction jmp __b10_15
Removing instruction jmp __b10_16
Removing instruction jmp __b10_17
Removing instruction jmp __b10_18
Removing instruction jmp __b10_19
Removing instruction jmp __b10_20
Removing instruction jmp __b10_21
Removing instruction jmp __b10_22
Removing instruction jmp __b10_23
Removing instruction jmp __b10_24
Removing instruction jmp __b10
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #BLUE
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #>0
Replacing instruction lda #0 with TXA
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b3 with __b4
Replacing label __b10_from___b4 with __b10
Replacing label __b7_from___b12 with __b7
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 __b11_from_sid_rnd_init1:
Removing instruction print_cls_from___b11:
Removing instruction __b9_from___b4:
Removing instruction __b10_from___b4:
Removing instruction __b10_from___b9:
Removing instruction __b7_from___b12:
Removing instruction __b7_from___b8:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __b1_from_main:
Removing instruction __b2:
Removing instruction __b5:
Removing instruction __b3_from___b5:
Removing instruction __b3_from___b4:
Removing instruction sid_rnd_init1:
Removing instruction __b11:
Removing instruction __b1_from___b11:
Removing instruction __breturn:
Removing instruction __b3_from___b2:
Removing instruction __b4:
Removing instruction __b9:
Removing instruction __b1_from___b10:
Removing instruction __b6:
Removing instruction __b3_from___b6:
Removing instruction __b12:
Removing instruction __b8:
Removing instruction __b5_from___b7:
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 __b10_1:
Removing instruction __b10_2:
Removing instruction __b10_3:
Removing instruction __b10_4:
Removing instruction __b10_5:
Removing instruction __b10_6:
Removing instruction __b10_7:
Removing instruction __b10_8:
Removing instruction __b10_9:
Removing instruction __b10_10:
Removing instruction __b10_11:
Removing instruction __b10_12:
Removing instruction __b10_13:
Removing instruction __b10_14:
Removing instruction __b10_15:
Removing instruction __b10_16:
Removing instruction __b10_17:
Removing instruction __b10_18:
Removing instruction __b10_19:
Removing instruction __b10_20:
Removing instruction __b10_21:
Removing instruction __b10_22:
Removing instruction __b10_23:
Removing instruction __b10_24:
Removing instruction __b10:
Removing instruction __b7_from___b10:
Removing instruction __b4_from___b5:
Removing instruction __b1_from___b2:
Removing instruction memset_from_print_cls:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b1_from_memset:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Succesful ASM optimization Pass5UnusedLabelElimination
Relabelling long label __b5_from___b3 to __b4
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
Succesful ASM optimization Pass5NextJumpElimination
Fixing long branch [210] bcc __b2 to bcs
Fixing long branch [228] bcc __b5 to bcs

FINAL SYMBOL TABLE
__constant const char BLACK = 0
__constant const char BLUE = 6
__constant char * const CHARSET = (char *) 8192
__constant char * const COLS = (char *) 55296
__constant char * const D018 = (char *) 53272
__constant char OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
__constant char OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const SCREEN1 = (char *) 10240
__constant struct MOS6581_SID * const SID = (struct MOS6581_SID *) 54272
__constant const char SID_CONTROL_NOISE = $80
__constant const char SINTABLE[$100] = kickasm {{ .for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(toRadians(360*i/256)))
 }}
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *) 53248
char c1A
char c1A#1 // c1A zp[1]:7 16.384615384615383
char c1A#2 // c1A zp[1]:7 1.6231884057971016
char c1B
char c1B#1 // c1B zp[1]:14 15.214285714285715
char c1B#2 // c1B zp[1]:14 1.647058823529412
char c2A
char c2A#1 // c2A zp[1]:17 8.875
char c2A#2 // c2A zp[1]:17 1.9310344827586208
char c2B
char c2B#1 // c2B zp[1]:2 8.52
char c2B#2 // c2B zp[1]:2 1.9649122807017543
void doplasma(char *screen)
char doplasma::$2 // reg byte a 20002.0
char doplasma::$4 // reg byte a 20002.0
char doplasma::c1a
char doplasma::c1a#0 // c1a zp[1]:9 101.0
char doplasma::c1a#1 // c1a zp[1]:9 5000.5
char doplasma::c1a#2 // c1a zp[1]:9 6020.8
char doplasma::c1b
char doplasma::c1b#0 // c1b zp[1]:10 202.0
char doplasma::c1b#1 // c1b zp[1]:10 6667.333333333333
char doplasma::c1b#2 // c1b zp[1]:10 5017.333333333333
char doplasma::c2a
char doplasma::c2a#0 // c2a zp[1]:12 101.0
char doplasma::c2a#1 // c2a zp[1]:12 6667.333333333333
char doplasma::c2a#2 // c2a zp[1]:12 7526.0
char doplasma::c2b
char doplasma::c2b#0 // c2b zp[1]:13 202.0
char doplasma::c2b#1 // c2b zp[1]:13 10001.0
char doplasma::c2b#2 // c2b zp[1]:13 6020.8
char doplasma::i
char doplasma::i#1 // i zp[1]:8 10001.0
char doplasma::i#2 // i zp[1]:8 5714.857142857143
char doplasma::i1
char doplasma::i1#1 // i1 zp[1]:11 20002.0
char doplasma::i1#2 // i1 zp[1]:11 6667.333333333333
char doplasma::i2
char doplasma::i2#1 // reg byte x 20002.0
char doplasma::i2#2 // reg byte x 5472.245283018866
char doplasma::ii
char *doplasma::screen
char doplasma::val
char doplasma::val#0 // reg byte a 20002.0
char doplasma::val#1 // reg byte a 15001.5
char doplasma::val#10 // reg byte a 15001.5
char doplasma::val#11 // reg byte a 15001.5
char doplasma::val#13 // reg byte a 15001.5
char doplasma::val#15 // reg byte a 15001.5
char doplasma::val#17 // reg byte a 15001.5
char doplasma::val#19 // reg byte a 15001.5
char doplasma::val#21 // reg byte a 15001.5
char doplasma::val#23 // reg byte a 15001.5
char doplasma::val#25 // reg byte a 15001.5
char doplasma::val#27 // reg byte a 15001.5
char doplasma::val#29 // reg byte a 15001.5
char doplasma::val#31 // reg byte a 15001.5
char doplasma::val#33 // reg byte a 15001.5
char doplasma::val#35 // reg byte a 15001.5
char doplasma::val#37 // reg byte a 15001.5
char doplasma::val#39 // reg byte a 15001.5
char doplasma::val#41 // reg byte a 15001.5
char doplasma::val#43 // reg byte a 15001.5
char doplasma::val#45 // reg byte a 15001.5
char doplasma::val#47 // reg byte a 15001.5
char doplasma::val#49 // reg byte a 15001.5
char doplasma::val#5 // reg byte a 15001.5
char doplasma::val#51 // reg byte a 20002.0
char doplasma::val#7 // reg byte a 15001.5
__constant char doplasma::xbuf[$28] = { fill( $28, 0) }
__constant char doplasma::ybuf[$19] = { fill( $19, 0) }
char doplasma::yprev
char doplasma::yprev#1 // yprev zp[1]:18 5000.5
char doplasma::yprev#2 // reg byte x 6667.333333333333
char doplasma::yprev#4 // reg byte x 20002.0
char doplasma::yval
void main()
char *main::col
char *main::col#1 // col zp[2]:5 16.5
char *main::col#2 // col zp[2]:5 16.5
char *main::toD0181_gfx
char main::toD0181_return
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN1&$3fff*4|byte1 (unsigned int)CHARSET/4&$f // toD0181_return
char *main::toD0181_screen
void makecharset(char *charset)
unsigned int makecharset::$10 // zp[2]:15 2002.0
unsigned int makecharset::$11 // zp[2]:15 2002.0
char makecharset::$12 // reg byte a 202.0
char *makecharset::$16 // zp[2]:15 2002.0
char makecharset::$3 // reg byte x 202.0
char makecharset::$7 // zp[1]:17 20002.0
char makecharset::b
char makecharset::b#1 // reg byte y 20002.0
char makecharset::b#2 // reg byte y 3875.5
char makecharset::b#6 // reg byte y 15001.5
__constant const char makecharset::bittab[8] = { 1, 2, 4, 8, $10, $20, $40, $80 }
unsigned int makecharset::c
unsigned int makecharset::c#1 // c zp[2]:3 202.0
unsigned int makecharset::c#2 // c zp[2]:3 62.75
char *makecharset::charset
char makecharset::i
char makecharset::i#1 // i zp[1]:7 2002.0
char makecharset::i#2 // i zp[1]:7 286.0
char makecharset::ii
char makecharset::ii#1 // reg byte x 20002.0
char makecharset::ii#2 // reg byte x 5714.857142857143
char makecharset::s
char makecharset::s#0 // s zp[1]:14 631.375
char makecharset::sid_rnd1_return
char makecharset::sid_rnd1_return#0 // reg byte a 20002.0
void * memset(void *str , char c , unsigned int num)
char memset::c
__constant char memset::c#0 = ' ' // c
char *memset::dst
char *memset::dst#1 // dst zp[2]:15 20002.0
char *memset::dst#2 // dst zp[2]:15 13334.666666666666
char *memset::end
__constant char *memset::end#0 = (char *)memset::str#0+memset::num#0 // end
unsigned int memset::num
__constant unsigned int memset::num#0 = $3e8 // num
void *memset::return
void *memset::str
__constant void *memset::str#0 = (void *)print_screen#0 // str
void print_char(char ch)
char print_char::ch
__constant char print_char::ch#0 = '.' // ch
char *print_char_cursor
char *print_char_cursor#0 // print_char_cursor zp[2]:5 367.33333333333337
char *print_char_cursor#19 // print_char_cursor zp[2]:5 95.82608695652173
char *print_char_cursor#32 // print_char_cursor zp[2]:5 151.5
void print_cls()
char *print_line_cursor
char *print_screen
__constant char *print_screen#0 = (char *) 1024 // print_screen

zp[1]:2 [ c2B#1 c2B#2 ]
zp[2]:3 [ makecharset::c#2 makecharset::c#1 ]
zp[2]:5 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 main::col#2 main::col#1 ]
zp[1]:7 [ makecharset::i#2 makecharset::i#1 c1A#1 c1A#2 ]
reg byte x [ makecharset::ii#2 makecharset::ii#1 ]
reg byte y [ makecharset::b#2 makecharset::b#6 makecharset::b#1 ]
zp[1]:8 [ doplasma::i#2 doplasma::i#1 ]
zp[1]:9 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ]
zp[1]:10 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ]
reg byte x [ doplasma::yprev#2 doplasma::yprev#4 ]
zp[1]:11 [ doplasma::i1#2 doplasma::i1#1 ]
zp[1]:12 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ]
zp[1]:13 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ]
reg byte x [ doplasma::i2#2 doplasma::i2#1 ]
reg byte x [ makecharset::$3 ]
zp[1]:14 [ makecharset::s#0 c1B#1 c1B#2 ]
reg byte a [ makecharset::$12 ]
zp[2]:15 [ makecharset::$10 makecharset::$11 makecharset::$16 memset::dst#2 memset::dst#1 ]
reg byte a [ makecharset::sid_rnd1_return#0 ]
zp[1]:17 [ makecharset::$7 c2A#1 c2A#2 ]
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]:18 [ doplasma::yprev#1 ]
reg byte a [ doplasma::$2 ]


FINAL ASSEMBLER
Score: 95644

  // 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
  // Commodore 64 PRG executable file
.file [name="plasma-unroll.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  /// SID Channel Control Register Noise Waveform
  .const SID_CONTROL_NOISE = $80
  /// The colors of the C64
  .const BLACK = 0
  .const BLUE = 6
  .const OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
  .const OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
  .const OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
  .const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
  .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
  /// $D018 VIC-II base addresses
  // @see #VICII_MEMORY
  .label D018 = $d018
  /// The SID MOS 6581/8580
  .label SID = $d400
  /// The VIC-II MOS 6567/6569
  .label VICII = $d000
  /// Color Ram
  .label COLS = $d800
  .label SCREEN1 = $2800
  .label CHARSET = $2000
  .label print_screen = $400
  .label print_char_cursor = 5
  // Plasma state variables
  .label c1A = 7
  .label c1B = $e
  .label c2A = $11
  .label c2B = 2
.segment Code
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .label col = 5
    // asm
    // asm { sei  }
    sei
    // VICII->BORDER_COLOR = BLUE
    // [1] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
    // VICII->BG_COLOR = BLUE
    // [2] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = BLUE -- _deref_pbuc1=vbuc2 
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR
    // [3] phi from main to main::@1 [phi:main->main::@1]
    // [3] phi main::col#2 = COLS [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<COLS
    sta.z col
    lda #>COLS
    sta.z col+1
    // [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
    // [3] phi main::col#2 = main::col#1 [phi:main::@1->main::@1#0] -- register_copy 
    // main::@1
  __b1:
    // *col = BLACK
    // [4] *main::col#2 = BLACK -- _deref_pbuz1=vbuc1 
    lda #BLACK
    ldy #0
    sta (col),y
    // for(unsigned char* col : COLS..COLS+1000)
    // [5] main::col#1 = ++ main::col#2 -- pbuz1=_inc_pbuz1 
    inc.z col
    bne !+
    inc.z col+1
  !:
    // [6] if(main::col#1!=COLS+$3e8+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
    // [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
    // makecharset(CHARSET)
    // [8] call makecharset
    // [14] phi from main::@2 to makecharset [phi:main::@2->makecharset]
    jsr makecharset
    // [9] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
    // main::toD0181
    // main::@5
    // *D018 = toD018(SCREEN1, CHARSET)
    // [10] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [11] phi from main::@5 to main::@3 [phi:main::@5->main::@3]
    // [11] phi c2B#1 = 0 [phi:main::@5->main::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c2B
    // [11] phi c2A#1 = 0 [phi:main::@5->main::@3#1] -- vbuz1=vbuc1 
    sta.z c2A
    // [11] phi c1B#1 = 0 [phi:main::@5->main::@3#2] -- vbuz1=vbuc1 
    sta.z c1B
    // [11] phi c1A#1 = 0 [phi:main::@5->main::@3#3] -- vbuz1=vbuc1 
    sta.z c1A
    // main::@3
    // [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
    // main::@4
  __b4:
    // doplasma(SCREEN1)
    // [13] call doplasma
    // Show single-buffered plasma
    jsr doplasma
    // [11] phi from main::@4 to main::@3 [phi:main::@4->main::@3]
    // [11] phi c2B#1 = c2B#2 [phi:main::@4->main::@3#0] -- register_copy 
    // [11] phi c2A#1 = c2A#2 [phi:main::@4->main::@3#1] -- register_copy 
    // [11] phi c1B#1 = c1B#2 [phi:main::@4->main::@3#2] -- register_copy 
    // [11] phi c1A#1 = c1A#2 [phi:main::@4->main::@3#3] -- register_copy 
    jmp __b4
}
  // makecharset
// Make a plasma-friendly charset where the chars are randomly filled
// void makecharset(char *charset)
makecharset: {
    .label __7 = $11
    .label __10 = $f
    .label __11 = $f
    .label s = $e
    .label i = 7
    .label c = 3
    .label __16 = $f
    // makecharset::sid_rnd_init1
    // SID->CH3_FREQ = 0xffff
    // [15] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ
    lda #>$ffff
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ+1
    // SID->CH3_CONTROL = SID_CONTROL_NOISE
    // [16] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL
    // [17] phi from makecharset::sid_rnd_init1 to makecharset::@11 [phi:makecharset::sid_rnd_init1->makecharset::@11]
    // makecharset::@11
    // print_cls()
    // [18] call print_cls
    // [124] phi from makecharset::@11 to print_cls [phi:makecharset::@11->print_cls]
    jsr print_cls
    // [19] phi from makecharset::@11 to makecharset::@1 [phi:makecharset::@11->makecharset::@1]
    // [19] phi print_char_cursor#19 = print_screen#0 [phi:makecharset::@11->makecharset::@1#0] -- pbuz1=pbuc1 
    lda #<print_screen
    sta.z print_char_cursor
    lda #>print_screen
    sta.z print_char_cursor+1
    // [19] phi makecharset::c#2 = 0 [phi:makecharset::@11->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)
    // [20] if(makecharset::c#2<$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
    // }
    // [21] return 
    rts
    // makecharset::@2
  __b2:
    // BYTE0(c)
    // [22] makecharset::$3 = byte0  makecharset::c#2 -- vbuxx=_byte0_vwuz1 
    ldx.z c
    // unsigned char s = SINTABLE[BYTE0(c)]
    // [23] makecharset::s#0 = SINTABLE[makecharset::$3] -- vbuz1=pbuc1_derefidx_vbuxx 
    lda SINTABLE,x
    sta.z s
    // [24] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3]
    // [24] phi makecharset::i#2 = 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)
    // [25] if(makecharset::i#2<8) goto makecharset::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #8
    bcc __b4
    // makecharset::@4
    // c & 0x07
    // [26] makecharset::$12 = makecharset::c#2 & 7 -- vbuaa=vwuz1_band_vbuc1 
    lda #7
    and.z c
    // if ((c & 0x07) == 0)
    // [27] if(makecharset::$12!=0) goto makecharset::@10 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b10
    // [28] phi from makecharset::@4 to makecharset::@9 [phi:makecharset::@4->makecharset::@9]
    // makecharset::@9
    // print_char('.')
    // [29] call print_char
    jsr print_char
    // [30] phi from makecharset::@4 makecharset::@9 to makecharset::@10 [phi:makecharset::@4/makecharset::@9->makecharset::@10]
    // [30] phi print_char_cursor#32 = print_char_cursor#19 [phi:makecharset::@4/makecharset::@9->makecharset::@10#0] -- register_copy 
    // makecharset::@10
  __b10:
    // for (unsigned int c = 0; c < 0x100; ++c)
    // [31] makecharset::c#1 = ++ makecharset::c#2 -- vwuz1=_inc_vwuz1 
    inc.z c
    bne !+
    inc.z c+1
  !:
    // [19] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1]
    // [19] phi print_char_cursor#19 = print_char_cursor#32 [phi:makecharset::@10->makecharset::@1#0] -- register_copy 
    // [19] phi makecharset::c#2 = makecharset::c#1 [phi:makecharset::@10->makecharset::@1#1] -- register_copy 
    jmp __b1
    // [32] phi from makecharset::@3 to makecharset::@5 [phi:makecharset::@3->makecharset::@5]
  __b4:
    // [32] phi makecharset::b#2 = 0 [phi:makecharset::@3->makecharset::@5#0] -- vbuyy=vbuc1 
    ldy #0
    // [32] phi makecharset::ii#2 = 0 [phi:makecharset::@3->makecharset::@5#1] -- vbuxx=vbuc1 
    ldx #0
    // makecharset::@5
  __b5:
    // for (unsigned char ii = 0; ii < 8; ++ii)
    // [33] if(makecharset::ii#2<8) goto makecharset::sid_rnd1 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc sid_rnd1
    // makecharset::@6
    // c*8
    // [34] makecharset::$10 = makecharset::c#2 << 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
    // [35] makecharset::$11 = makecharset::$10 + 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
    // [36] makecharset::$16 = CHARSET + makecharset::$11 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z __16
    clc
    adc #<CHARSET
    sta.z __16
    lda.z __16+1
    adc #>CHARSET
    sta.z __16+1
    // [37] *makecharset::$16 = makecharset::b#2 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (__16),y
    // for ( unsigned char i = 0; i < 8; ++i)
    // [38] makecharset::i#1 = ++ makecharset::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [24] phi from makecharset::@6 to makecharset::@3 [phi:makecharset::@6->makecharset::@3]
    // [24] phi makecharset::i#2 = makecharset::i#1 [phi:makecharset::@6->makecharset::@3#0] -- register_copy 
    jmp __b3
    // makecharset::sid_rnd1
  sid_rnd1:
    // return SID->CH3_OSC;
    // [39] makecharset::sid_rnd1_return#0 = *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC) -- vbuaa=_deref_pbuc1 
    lda SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC
    // makecharset::@12
    // sid_rnd() & 0xFF
    // [40] makecharset::$7 = makecharset::sid_rnd1_return#0 & $ff -- vbuz1=vbuaa_band_vbuc1 
    and #$ff
    sta.z __7
    // if ((sid_rnd() & 0xFF) > s)
    // [41] if(makecharset::$7<=makecharset::s#0) goto makecharset::@7 -- vbuz1_le_vbuz2_then_la1 
    lda.z s
    cmp.z __7
    bcs __b7
    // makecharset::@8
    // b |= bittab[ii]
    // [42] makecharset::b#1 = makecharset::b#2 | makecharset::bittab[makecharset::ii#2] -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx 
    tya
    ora bittab,x
    tay
    // [43] phi from makecharset::@12 makecharset::@8 to makecharset::@7 [phi:makecharset::@12/makecharset::@8->makecharset::@7]
    // [43] phi makecharset::b#6 = makecharset::b#2 [phi:makecharset::@12/makecharset::@8->makecharset::@7#0] -- register_copy 
    // makecharset::@7
  __b7:
    // for (unsigned char ii = 0; ii < 8; ++ii)
    // [44] makecharset::ii#1 = ++ makecharset::ii#2 -- vbuxx=_inc_vbuxx 
    inx
    // [32] phi from makecharset::@7 to makecharset::@5 [phi:makecharset::@7->makecharset::@5]
    // [32] phi makecharset::b#2 = makecharset::b#6 [phi:makecharset::@7->makecharset::@5#0] -- register_copy 
    // [32] phi makecharset::ii#2 = makecharset::ii#1 [phi:makecharset::@7->makecharset::@5#1] -- register_copy 
    jmp __b5
  .segment Data
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
.segment Code
  // doplasma
// Render plasma to the passed screen
// void doplasma(char *screen)
doplasma: {
    .label c1a = 9
    .label c1b = $a
    .label yprev = $12
    .label i = 8
    .label c2a = $c
    .label c2b = $d
    .label i1 = $b
    // unsigned char c1a = c1A
    // [45] doplasma::c1a#0 = c1A#1 -- vbuz1=vbuz2 
    lda.z c1A
    sta.z c1a
    // unsigned char c1b = c1B
    // [46] doplasma::c1b#0 = c1B#1 -- vbuz1=vbuz2 
    lda.z c1B
    sta.z c1b
    // [47] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
    // [47] phi doplasma::yprev#2 = 0 [phi:doplasma->doplasma::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [47] phi doplasma::c1b#2 = doplasma::c1b#0 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [47] phi doplasma::c1a#2 = doplasma::c1a#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [47] phi doplasma::i#2 = 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)
    // [48] if(doplasma::i#2<$19) goto doplasma::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #$19
    bcs !__b2+
    jmp __b2
  !__b2:
    // doplasma::@3
    // c1A += 3
    // [49] c1A#2 = c1A#1 + 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1A
    axs #-[3]
    stx.z c1A
    // c1B -= 5
    // [50] c1B#2 = c1B#1 - 5 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c1B
    axs #5
    stx.z c1B
    // unsigned char c2a = c2A
    // [51] doplasma::c2a#0 = c2A#1 -- vbuz1=vbuz2 
    lda.z c2A
    sta.z c2a
    // unsigned char c2b = c2B
    // [52] doplasma::c2b#0 = c2B#1 -- vbuz1=vbuz2 
    lda.z c2B
    sta.z c2b
    // [53] phi from doplasma::@3 to doplasma::@4 [phi:doplasma::@3->doplasma::@4]
    // [53] phi doplasma::c2b#2 = doplasma::c2b#0 [phi:doplasma::@3->doplasma::@4#0] -- register_copy 
    // [53] phi doplasma::c2a#2 = doplasma::c2a#0 [phi:doplasma::@3->doplasma::@4#1] -- register_copy 
    // [53] phi doplasma::i1#2 = 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)
    // [54] if(doplasma::i1#2<$28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i1
    cmp #$28
    bcs !__b5+
    jmp __b5
  !__b5:
    // doplasma::@6
    // c2A += 2
    // [55] c2A#2 = c2A#1 + 2 -- vbuz1=vbuz1_plus_2 
    lda.z c2A
    clc
    adc #2
    sta.z c2A
    // c2B -= 3
    // [56] c2B#2 = c2B#1 - 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z c2B
    axs #3
    stx.z c2B
    // [57] phi from doplasma::@6 to doplasma::@7 [phi:doplasma::@6->doplasma::@7]
    // [57] phi doplasma::i2#2 = 0 [phi:doplasma::@6->doplasma::@7#0] -- vbuxx=vbuc1 
    ldx #0
    // doplasma::@7
  __b7:
    // for (unsigned char i = 0; i < 40; ++i)
    // [58] if(doplasma::i2#2<$28) goto doplasma::@8 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$28
    bcc __b8
    // doplasma::@return
    // }
    // [59] return 
    rts
    // doplasma::@8
  __b8:
    // unsigned char val =  xbuf[i]
    // [60] doplasma::val#0 = doplasma::xbuf[doplasma::i2#2] -- vbuaa=pbuc1_derefidx_vbuxx 
    // Find the first value on the row
    lda xbuf,x
    // doplasma::@9
    // val += ybuf[ii]
    // [61] doplasma::val#1 = doplasma::val#0 + *doplasma::ybuf -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf
    // (screen+ii*40)[i] = val
    // [62] SCREEN1[doplasma::i2#2] = doplasma::val#1 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1,x
    // doplasma::@10_1
    // val += ybuf[ii]
    // [63] doplasma::val#5 = doplasma::val#1 + *(doplasma::ybuf+1) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+1
    // (screen+ii*40)[i] = val
    // [64] (SCREEN1+1*$28)[doplasma::i2#2] = doplasma::val#5 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+1*$28,x
    // doplasma::@10_2
    // val += ybuf[ii]
    // [65] doplasma::val#7 = doplasma::val#5 + *(doplasma::ybuf+2) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+2
    // (screen+ii*40)[i] = val
    // [66] (SCREEN1+2*$28)[doplasma::i2#2] = doplasma::val#7 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+2*$28,x
    // doplasma::@10_3
    // val += ybuf[ii]
    // [67] doplasma::val#10 = doplasma::val#7 + *(doplasma::ybuf+3) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+3
    // (screen+ii*40)[i] = val
    // [68] (SCREEN1+3*$28)[doplasma::i2#2] = doplasma::val#10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+3*$28,x
    // doplasma::@10_4
    // val += ybuf[ii]
    // [69] doplasma::val#11 = doplasma::val#10 + *(doplasma::ybuf+4) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+4
    // (screen+ii*40)[i] = val
    // [70] (SCREEN1+4*$28)[doplasma::i2#2] = doplasma::val#11 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+4*$28,x
    // doplasma::@10_5
    // val += ybuf[ii]
    // [71] doplasma::val#13 = doplasma::val#11 + *(doplasma::ybuf+5) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+5
    // (screen+ii*40)[i] = val
    // [72] (SCREEN1+5*$28)[doplasma::i2#2] = doplasma::val#13 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+5*$28,x
    // doplasma::@10_6
    // val += ybuf[ii]
    // [73] doplasma::val#15 = doplasma::val#13 + *(doplasma::ybuf+6) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+6
    // (screen+ii*40)[i] = val
    // [74] (SCREEN1+6*$28)[doplasma::i2#2] = doplasma::val#15 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+6*$28,x
    // doplasma::@10_7
    // val += ybuf[ii]
    // [75] doplasma::val#17 = doplasma::val#15 + *(doplasma::ybuf+7) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+7
    // (screen+ii*40)[i] = val
    // [76] (SCREEN1+7*$28)[doplasma::i2#2] = doplasma::val#17 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+7*$28,x
    // doplasma::@10_8
    // val += ybuf[ii]
    // [77] doplasma::val#19 = doplasma::val#17 + *(doplasma::ybuf+8) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+8
    // (screen+ii*40)[i] = val
    // [78] (SCREEN1+8*$28)[doplasma::i2#2] = doplasma::val#19 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+8*$28,x
    // doplasma::@10_9
    // val += ybuf[ii]
    // [79] doplasma::val#21 = doplasma::val#19 + *(doplasma::ybuf+9) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+9
    // (screen+ii*40)[i] = val
    // [80] (SCREEN1+9*$28)[doplasma::i2#2] = doplasma::val#21 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+9*$28,x
    // doplasma::@10_10
    // val += ybuf[ii]
    // [81] doplasma::val#23 = doplasma::val#21 + *(doplasma::ybuf+$a) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$a
    // (screen+ii*40)[i] = val
    // [82] (SCREEN1+$a*$28)[doplasma::i2#2] = doplasma::val#23 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$a*$28,x
    // doplasma::@10_11
    // val += ybuf[ii]
    // [83] doplasma::val#25 = doplasma::val#23 + *(doplasma::ybuf+$b) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$b
    // (screen+ii*40)[i] = val
    // [84] (SCREEN1+$b*$28)[doplasma::i2#2] = doplasma::val#25 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$b*$28,x
    // doplasma::@10_12
    // val += ybuf[ii]
    // [85] doplasma::val#27 = doplasma::val#25 + *(doplasma::ybuf+$c) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$c
    // (screen+ii*40)[i] = val
    // [86] (SCREEN1+$c*$28)[doplasma::i2#2] = doplasma::val#27 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$c*$28,x
    // doplasma::@10_13
    // val += ybuf[ii]
    // [87] doplasma::val#29 = doplasma::val#27 + *(doplasma::ybuf+$d) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$d
    // (screen+ii*40)[i] = val
    // [88] (SCREEN1+$d*$28)[doplasma::i2#2] = doplasma::val#29 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$d*$28,x
    // doplasma::@10_14
    // val += ybuf[ii]
    // [89] doplasma::val#31 = doplasma::val#29 + *(doplasma::ybuf+$e) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$e
    // (screen+ii*40)[i] = val
    // [90] (SCREEN1+$e*$28)[doplasma::i2#2] = doplasma::val#31 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$e*$28,x
    // doplasma::@10_15
    // val += ybuf[ii]
    // [91] doplasma::val#33 = doplasma::val#31 + *(doplasma::ybuf+$f) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$f
    // (screen+ii*40)[i] = val
    // [92] (SCREEN1+$f*$28)[doplasma::i2#2] = doplasma::val#33 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$f*$28,x
    // doplasma::@10_16
    // val += ybuf[ii]
    // [93] doplasma::val#35 = doplasma::val#33 + *(doplasma::ybuf+$10) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$10
    // (screen+ii*40)[i] = val
    // [94] (SCREEN1+$10*$28)[doplasma::i2#2] = doplasma::val#35 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$10*$28,x
    // doplasma::@10_17
    // val += ybuf[ii]
    // [95] doplasma::val#37 = doplasma::val#35 + *(doplasma::ybuf+$11) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$11
    // (screen+ii*40)[i] = val
    // [96] (SCREEN1+$11*$28)[doplasma::i2#2] = doplasma::val#37 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$11*$28,x
    // doplasma::@10_18
    // val += ybuf[ii]
    // [97] doplasma::val#39 = doplasma::val#37 + *(doplasma::ybuf+$12) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$12
    // (screen+ii*40)[i] = val
    // [98] (SCREEN1+$12*$28)[doplasma::i2#2] = doplasma::val#39 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$12*$28,x
    // doplasma::@10_19
    // val += ybuf[ii]
    // [99] doplasma::val#41 = doplasma::val#39 + *(doplasma::ybuf+$13) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$13
    // (screen+ii*40)[i] = val
    // [100] (SCREEN1+$13*$28)[doplasma::i2#2] = doplasma::val#41 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$13*$28,x
    // doplasma::@10_20
    // val += ybuf[ii]
    // [101] doplasma::val#43 = doplasma::val#41 + *(doplasma::ybuf+$14) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$14
    // (screen+ii*40)[i] = val
    // [102] (SCREEN1+$14*$28)[doplasma::i2#2] = doplasma::val#43 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$14*$28,x
    // doplasma::@10_21
    // val += ybuf[ii]
    // [103] doplasma::val#45 = doplasma::val#43 + *(doplasma::ybuf+$15) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$15
    // (screen+ii*40)[i] = val
    // [104] (SCREEN1+$15*$28)[doplasma::i2#2] = doplasma::val#45 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$15*$28,x
    // doplasma::@10_22
    // val += ybuf[ii]
    // [105] doplasma::val#47 = doplasma::val#45 + *(doplasma::ybuf+$16) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$16
    // (screen+ii*40)[i] = val
    // [106] (SCREEN1+$16*$28)[doplasma::i2#2] = doplasma::val#47 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$16*$28,x
    // doplasma::@10_23
    // val += ybuf[ii]
    // [107] doplasma::val#49 = doplasma::val#47 + *(doplasma::ybuf+$17) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$17
    // (screen+ii*40)[i] = val
    // [108] (SCREEN1+$17*$28)[doplasma::i2#2] = doplasma::val#49 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$17*$28,x
    // doplasma::@10_24
    // val += ybuf[ii]
    // [109] doplasma::val#51 = doplasma::val#49 + *(doplasma::ybuf+$18) -- vbuaa=vbuaa_plus__deref_pbuc1 
    clc
    adc ybuf+$18
    // (screen+ii*40)[i] = val
    // [110] (SCREEN1+$18*$28)[doplasma::i2#2] = doplasma::val#51 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SCREEN1+$18*$28,x
    // doplasma::@10
    // for (unsigned char i = 0; i < 40; ++i)
    // [111] doplasma::i2#1 = ++ doplasma::i2#2 -- vbuxx=_inc_vbuxx 
    inx
    // [57] phi from doplasma::@10 to doplasma::@7 [phi:doplasma::@10->doplasma::@7]
    // [57] phi doplasma::i2#2 = doplasma::i2#1 [phi:doplasma::@10->doplasma::@7#0] -- register_copy 
    jmp __b7
    // doplasma::@5
  __b5:
    // SINTABLE[c2a] + SINTABLE[c2b]
    // [112] doplasma::$4 = SINTABLE[doplasma::c2a#2] + SINTABLE[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])
    // [113] doplasma::xbuf[doplasma::i1#2] = doplasma::$4 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z i1
    sta xbuf,y
    // c2a += 3
    // [114] doplasma::c2a#1 = doplasma::c2a#2 + 3 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2a
    axs #-[3]
    stx.z c2a
    // c2b += 7
    // [115] doplasma::c2b#1 = doplasma::c2b#2 + 7 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c2b
    axs #-[7]
    stx.z c2b
    // for (unsigned char i = 0; i < 40; ++i)
    // [116] doplasma::i1#1 = ++ doplasma::i1#2 -- vbuz1=_inc_vbuz1 
    inc.z i1
    // [53] phi from doplasma::@5 to doplasma::@4 [phi:doplasma::@5->doplasma::@4]
    // [53] phi doplasma::c2b#2 = doplasma::c2b#1 [phi:doplasma::@5->doplasma::@4#0] -- register_copy 
    // [53] phi doplasma::c2a#2 = doplasma::c2a#1 [phi:doplasma::@5->doplasma::@4#1] -- register_copy 
    // [53] phi doplasma::i1#2 = doplasma::i1#1 [phi:doplasma::@5->doplasma::@4#2] -- register_copy 
    jmp __b4
    // doplasma::@2
  __b2:
    // unsigned char yval = (SINTABLE[c1a] + SINTABLE[c1b])
    // [117] doplasma::yprev#1 = SINTABLE[doplasma::c1a#2] + SINTABLE[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 yprev
    // yval - yprev
    // [118] doplasma::$2 = doplasma::yprev#1 - doplasma::yprev#2 -- vbuaa=vbuz1_minus_vbuxx 
    txa
    eor #$ff
    sec
    adc.z yprev
    // ybuf[i] = yval - yprev
    // [119] doplasma::ybuf[doplasma::i#2] = doplasma::$2 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z i
    sta ybuf,y
    // c1a += 4
    // [120] doplasma::c1a#1 = doplasma::c1a#2 + 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1a
    axs #-[4]
    stx.z c1a
    // c1b += 9
    // [121] doplasma::c1b#1 = doplasma::c1b#2 + 9 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c1b
    axs #-[9]
    stx.z c1b
    // for (unsigned char i = 0; i < 25; ++i)
    // [122] doplasma::i#1 = ++ doplasma::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [123] doplasma::yprev#4 = doplasma::yprev#1 -- vbuxx=vbuz1 
    ldx.z yprev
    // [47] phi from doplasma::@2 to doplasma::@1 [phi:doplasma::@2->doplasma::@1]
    // [47] phi doplasma::yprev#2 = doplasma::yprev#4 [phi:doplasma::@2->doplasma::@1#0] -- register_copy 
    // [47] phi doplasma::c1b#2 = doplasma::c1b#1 [phi:doplasma::@2->doplasma::@1#1] -- register_copy 
    // [47] phi doplasma::c1a#2 = doplasma::c1a#1 [phi:doplasma::@2->doplasma::@1#2] -- register_copy 
    // [47] phi doplasma::i#2 = doplasma::i#1 [phi:doplasma::@2->doplasma::@1#3] -- register_copy 
    jmp __b1
  .segment Data
    xbuf: .fill $28, 0
    ybuf: .fill $19, 0
}
.segment Code
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // memset(print_screen, ' ', 1000)
    // [125] call memset
    // [130] phi from print_cls to memset [phi:print_cls->memset]
    jsr memset
    // print_cls::@return
    // }
    // [126] return 
    rts
}
  // print_char
// Print a single char
// void print_char(char ch)
print_char: {
    .const ch = '.'
    // *(print_char_cursor++) = ch
    // [127] *print_char_cursor#19 = print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // *(print_char_cursor++) = ch;
    // [128] print_char_cursor#0 = ++ print_char_cursor#19 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // print_char::@return
    // }
    // [129] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// void * memset(void *str, char c, unsigned int num)
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = print_screen
    .label end = str+num
    .label dst = $f
    // [131] phi from memset to memset::@1 [phi:memset->memset::@1]
    // [131] phi memset::dst#2 = (char *)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++)
    // [132] if(memset::dst#2!=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
    // }
    // [133] return 
    rts
    // memset::@2
  __b2:
    // *dst = c
    // [134] *memset::dst#2 = memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [135] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [131] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
    // [131] phi memset::dst#2 = memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // File Data
.segment Data
  .align $100
SINTABLE:
.for(var i=0;i<$100;i++)
        .byte round(127.5+127.5*sin(toRadians(360*i/256)))


