@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
main: scope:[main]  from @1
  asm { sei  }
  [5] *((const byte*) BORDERCOL#0) ← (const byte) BLUE#0
  [6] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
  to:main::@1
main::@1: scope:[main]  from main main::@1
  [7] (byte*) main::col#2 ← phi( main/(const byte*) COLS#0 main::@1/(byte*) main::col#1 )
  [8] *((byte*) main::col#2) ← (const byte) BLACK#0
  [9] (byte*) main::col#1 ← ++ (byte*) main::col#2
  [10] if((byte*) main::col#1!=(const byte*) COLS#0+(word) $3e8+(byte) 1) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  [11] phi()
  [12] call makecharset 
  to:main::toD0181
main::toD0181: scope:[main]  from main::@2
  [13] phi()
  to:main::@5
main::@5: scope:[main]  from main::toD0181
  [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
  to:main::@3
main::@3: scope:[main]  from main::@4 main::@5
  [15] (byte) c2B#1 ← phi( main::@4/(byte) c2B#3 main::@5/(byte) 0 )
  [15] (byte) c2A#1 ← phi( main::@4/(byte) c2A#3 main::@5/(byte) 0 )
  [15] (byte) c1B#1 ← phi( main::@4/(byte) c1B#3 main::@5/(byte) 0 )
  [15] (byte) c1A#1 ← phi( main::@4/(byte) c1A#3 main::@5/(byte) 0 )
  to:main::@4
main::@4: scope:[main]  from main::@3
  [16] phi()
  [17] call doplasma 
  to:main::@3
doplasma: scope:[doplasma]  from main::@4
  [18] (byte) doplasma::c1a#0 ← (byte) c1A#1
  [19] (byte) doplasma::c1b#0 ← (byte) c1B#1
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@8
  [20] (byte) doplasma::i#2 ← phi( doplasma/(byte) 0 doplasma::@8/(byte) doplasma::i#1 )
  [20] (byte) doplasma::yprev#2 ← phi( doplasma/(byte) 0 doplasma::@8/(byte~) doplasma::yprev#3 )
  [20] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@8/(byte) doplasma::c1b#1 )
  [20] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@8/(byte) doplasma::c1a#1 )
  [21] (byte) doplasma::yval#0 ← *((const byte[$100]) SINTABLE#0 + (byte) doplasma::c1a#2) + *((const byte[$100]) SINTABLE#0 + (byte) doplasma::c1b#2)
  [22] (byte~) doplasma::$1 ← (byte) doplasma::yval#0 - (byte) doplasma::yprev#2
  [23] *((const byte[$19]) doplasma::ybuf#0 + (byte) doplasma::i#2) ← (byte~) doplasma::$1
  [24] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4
  [25] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9
  [26] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2
  [27] if((byte) doplasma::i#1<(byte) $19) goto doplasma::@8
  to:doplasma::@2
doplasma::@2: scope:[doplasma]  from doplasma::@1
  [28] (byte) c1A#3 ← (byte) c1A#1 + (byte) 3
  [29] (byte) c1B#3 ← (byte) c1B#1 - (byte) 5
  [30] (byte) doplasma::c2a#0 ← (byte) c2A#1
  [31] (byte) doplasma::c2b#0 ← (byte) c2B#1
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@2 doplasma::@3
  [32] (byte) doplasma::i1#2 ← phi( doplasma::@2/(byte) 0 doplasma::@3/(byte) doplasma::i1#1 )
  [32] (byte) doplasma::c2b#2 ← phi( doplasma::@2/(byte) doplasma::c2b#0 doplasma::@3/(byte) doplasma::c2b#1 )
  [32] (byte) doplasma::c2a#2 ← phi( doplasma::@2/(byte) doplasma::c2a#0 doplasma::@3/(byte) doplasma::c2a#1 )
  [33] (byte~) doplasma::$3 ← *((const byte[$100]) SINTABLE#0 + (byte) doplasma::c2a#2) + *((const byte[$100]) SINTABLE#0 + (byte) doplasma::c2b#2)
  [34] *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i1#2) ← (byte~) doplasma::$3
  [35] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3
  [36] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7
  [37] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2
  [38] if((byte) doplasma::i1#1<(byte) $28) goto doplasma::@3
  to:doplasma::@4
doplasma::@4: scope:[doplasma]  from doplasma::@3
  [39] (byte) c2A#3 ← (byte) c2A#1 + (byte) 2
  [40] (byte) c2B#3 ← (byte) c2B#1 - (byte) 3
  to:doplasma::@5
doplasma::@5: scope:[doplasma]  from doplasma::@4 doplasma::@7
  [41] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte) 0 doplasma::@7/(byte) doplasma::i2#1 )
  [42] (byte) doplasma::val#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2)
  to:doplasma::@6
doplasma::@6: scope:[doplasma]  from doplasma::@5
  [43] (byte) doplasma::val#1 ← (byte) doplasma::val#0 + *((const byte[$19]) doplasma::ybuf#0)
  [44] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte) doplasma::val#1
  to:doplasma::@6_1
doplasma::@6_1: scope:[doplasma]  from doplasma::@6
  [45] (byte) doplasma::val#4 ← (byte) doplasma::val#1 + *((const byte[$19]) doplasma::ybuf#0+(byte) 1)
  [46] *((const byte*) SCREEN1#0+(byte) 1*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#4
  to:doplasma::@6_2
doplasma::@6_2: scope:[doplasma]  from doplasma::@6_1
  [47] (byte) doplasma::val#6 ← (byte) doplasma::val#4 + *((const byte[$19]) doplasma::ybuf#0+(byte) 2)
  [48] *((const byte*) SCREEN1#0+(byte) 2*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#6
  to:doplasma::@6_3
doplasma::@6_3: scope:[doplasma]  from doplasma::@6_2
  [49] (byte) doplasma::val#8 ← (byte) doplasma::val#6 + *((const byte[$19]) doplasma::ybuf#0+(byte) 3)
  [50] *((const byte*) SCREEN1#0+(byte) 3*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#8
  to:doplasma::@6_4
doplasma::@6_4: scope:[doplasma]  from doplasma::@6_3
  [51] (byte) doplasma::val#10 ← (byte) doplasma::val#8 + *((const byte[$19]) doplasma::ybuf#0+(byte) 4)
  [52] *((const byte*) SCREEN1#0+(byte) 4*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#10
  to:doplasma::@6_5
doplasma::@6_5: scope:[doplasma]  from doplasma::@6_4
  [53] (byte) doplasma::val#12 ← (byte) doplasma::val#10 + *((const byte[$19]) doplasma::ybuf#0+(byte) 5)
  [54] *((const byte*) SCREEN1#0+(byte) 5*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#12
  to:doplasma::@6_6
doplasma::@6_6: scope:[doplasma]  from doplasma::@6_5
  [55] (byte) doplasma::val#14 ← (byte) doplasma::val#12 + *((const byte[$19]) doplasma::ybuf#0+(byte) 6)
  [56] *((const byte*) SCREEN1#0+(byte) 6*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#14
  to:doplasma::@6_7
doplasma::@6_7: scope:[doplasma]  from doplasma::@6_6
  [57] (byte) doplasma::val#16 ← (byte) doplasma::val#14 + *((const byte[$19]) doplasma::ybuf#0+(byte) 7)
  [58] *((const byte*) SCREEN1#0+(byte) 7*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#16
  to:doplasma::@6_8
doplasma::@6_8: scope:[doplasma]  from doplasma::@6_7
  [59] (byte) doplasma::val#18 ← (byte) doplasma::val#16 + *((const byte[$19]) doplasma::ybuf#0+(byte) 8)
  [60] *((const byte*) SCREEN1#0+(byte) 8*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#18
  to:doplasma::@6_9
doplasma::@6_9: scope:[doplasma]  from doplasma::@6_8
  [61] (byte) doplasma::val#20 ← (byte) doplasma::val#18 + *((const byte[$19]) doplasma::ybuf#0+(byte) 9)
  [62] *((const byte*) SCREEN1#0+(byte) 9*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#20
  to:doplasma::@6_10
doplasma::@6_10: scope:[doplasma]  from doplasma::@6_9
  [63] (byte) doplasma::val#22 ← (byte) doplasma::val#20 + *((const byte[$19]) doplasma::ybuf#0+(byte) $a)
  [64] *((const byte*) SCREEN1#0+(byte) $a*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#22
  to:doplasma::@6_11
doplasma::@6_11: scope:[doplasma]  from doplasma::@6_10
  [65] (byte) doplasma::val#24 ← (byte) doplasma::val#22 + *((const byte[$19]) doplasma::ybuf#0+(byte) $b)
  [66] *((const byte*) SCREEN1#0+(byte) $b*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#24
  to:doplasma::@6_12
doplasma::@6_12: scope:[doplasma]  from doplasma::@6_11
  [67] (byte) doplasma::val#26 ← (byte) doplasma::val#24 + *((const byte[$19]) doplasma::ybuf#0+(byte) $c)
  [68] *((const byte*) SCREEN1#0+(byte) $c*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#26
  to:doplasma::@6_13
doplasma::@6_13: scope:[doplasma]  from doplasma::@6_12
  [69] (byte) doplasma::val#28 ← (byte) doplasma::val#26 + *((const byte[$19]) doplasma::ybuf#0+(byte) $d)
  [70] *((const byte*) SCREEN1#0+(byte) $d*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#28
  to:doplasma::@6_14
doplasma::@6_14: scope:[doplasma]  from doplasma::@6_13
  [71] (byte) doplasma::val#30 ← (byte) doplasma::val#28 + *((const byte[$19]) doplasma::ybuf#0+(byte) $e)
  [72] *((const byte*) SCREEN1#0+(byte) $e*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#30
  to:doplasma::@6_15
doplasma::@6_15: scope:[doplasma]  from doplasma::@6_14
  [73] (byte) doplasma::val#32 ← (byte) doplasma::val#30 + *((const byte[$19]) doplasma::ybuf#0+(byte) $f)
  [74] *((const byte*) SCREEN1#0+(byte) $f*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#32
  to:doplasma::@6_16
doplasma::@6_16: scope:[doplasma]  from doplasma::@6_15
  [75] (byte) doplasma::val#34 ← (byte) doplasma::val#32 + *((const byte[$19]) doplasma::ybuf#0+(byte) $10)
  [76] *((const byte*) SCREEN1#0+(byte) $10*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#34
  to:doplasma::@6_17
doplasma::@6_17: scope:[doplasma]  from doplasma::@6_16
  [77] (byte) doplasma::val#36 ← (byte) doplasma::val#34 + *((const byte[$19]) doplasma::ybuf#0+(byte) $11)
  [78] *((const byte*) SCREEN1#0+(byte) $11*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#36
  to:doplasma::@6_18
doplasma::@6_18: scope:[doplasma]  from doplasma::@6_17
  [79] (byte) doplasma::val#38 ← (byte) doplasma::val#36 + *((const byte[$19]) doplasma::ybuf#0+(byte) $12)
  [80] *((const byte*) SCREEN1#0+(byte) $12*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#38
  to:doplasma::@6_19
doplasma::@6_19: scope:[doplasma]  from doplasma::@6_18
  [81] (byte) doplasma::val#40 ← (byte) doplasma::val#38 + *((const byte[$19]) doplasma::ybuf#0+(byte) $13)
  [82] *((const byte*) SCREEN1#0+(byte) $13*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#40
  to:doplasma::@6_20
doplasma::@6_20: scope:[doplasma]  from doplasma::@6_19
  [83] (byte) doplasma::val#42 ← (byte) doplasma::val#40 + *((const byte[$19]) doplasma::ybuf#0+(byte) $14)
  [84] *((const byte*) SCREEN1#0+(byte) $14*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#42
  to:doplasma::@6_21
doplasma::@6_21: scope:[doplasma]  from doplasma::@6_20
  [85] (byte) doplasma::val#44 ← (byte) doplasma::val#42 + *((const byte[$19]) doplasma::ybuf#0+(byte) $15)
  [86] *((const byte*) SCREEN1#0+(byte) $15*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#44
  to:doplasma::@6_22
doplasma::@6_22: scope:[doplasma]  from doplasma::@6_21
  [87] (byte) doplasma::val#46 ← (byte) doplasma::val#44 + *((const byte[$19]) doplasma::ybuf#0+(byte) $16)
  [88] *((const byte*) SCREEN1#0+(byte) $16*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#46
  to:doplasma::@6_23
doplasma::@6_23: scope:[doplasma]  from doplasma::@6_22
  [89] (byte) doplasma::val#48 ← (byte) doplasma::val#46 + *((const byte[$19]) doplasma::ybuf#0+(byte) $17)
  [90] *((const byte*) SCREEN1#0+(byte) $17*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#48
  to:doplasma::@6_24
doplasma::@6_24: scope:[doplasma]  from doplasma::@6_23
  [91] (byte) doplasma::val#50 ← (byte) doplasma::val#48 + *((const byte[$19]) doplasma::ybuf#0+(byte) $18)
  [92] *((const byte*) SCREEN1#0+(byte) $18*(byte) $28 + (byte) doplasma::i2#2) ← (byte) doplasma::val#50
  to:doplasma::@7
doplasma::@7: scope:[doplasma]  from doplasma::@6_24
  [93] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2
  [94] if((byte) doplasma::i2#1<(byte) $28) goto doplasma::@5
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@7
  [95] return 
  to:@return
doplasma::@8: scope:[doplasma]  from doplasma::@1
  [96] (byte~) doplasma::yprev#3 ← (byte) doplasma::yval#0
  to:doplasma::@1
makecharset: scope:[makecharset]  from main::@2
  [97] phi()
  [98] call sid_rnd_init 
  to:makecharset::@10
makecharset::@10: scope:[makecharset]  from makecharset
  [99] phi()
  [100] call print_cls 
  to:makecharset::@1
makecharset::@1: scope:[makecharset]  from makecharset::@10 makecharset::@9
  [101] (byte*) print_char_cursor#44 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 )
  [101] (word) makecharset::c#2 ← phi( makecharset::@10/(byte) 0 makecharset::@9/(word) makecharset::c#1 )
  [102] (byte~) makecharset::$2 ← < (word) makecharset::c#2
  [103] (byte) makecharset::s#0 ← *((const byte[$100]) SINTABLE#0 + (byte~) makecharset::$2)
  to:makecharset::@2
makecharset::@2: scope:[makecharset]  from makecharset::@1 makecharset::@6
  [104] (byte) makecharset::i#7 ← phi( makecharset::@1/(byte) 0 makecharset::@6/(byte) makecharset::i#1 )
  to:makecharset::@3
makecharset::@3: scope:[makecharset]  from makecharset::@2 makecharset::@4
  [105] (byte) makecharset::b#2 ← phi( makecharset::@2/(byte) 0 makecharset::@4/(byte) makecharset::b#3 )
  [105] (byte) makecharset::ii#2 ← phi( makecharset::@2/(byte) 0 makecharset::@4/(byte) makecharset::ii#1 )
  [106] call sid_rnd 
  [107] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
  to:makecharset::@11
makecharset::@11: scope:[makecharset]  from makecharset::@3
  [108] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2
  [109] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte) $ff
  [110] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4
  to:makecharset::@5
makecharset::@5: scope:[makecharset]  from makecharset::@11
  [111] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2)
  to:makecharset::@4
makecharset::@4: scope:[makecharset]  from makecharset::@11 makecharset::@5
  [112] (byte) makecharset::b#3 ← phi( makecharset::@11/(byte) makecharset::b#2 makecharset::@5/(byte) makecharset::b#1 )
  [113] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2
  [114] if((byte) makecharset::ii#1<(byte) 8) goto makecharset::@3
  to:makecharset::@6
makecharset::@6: scope:[makecharset]  from makecharset::@4
  [115] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte) 3
  [116] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7
  [117] (byte*~) makecharset::$16 ← (const byte*) CHARSET#0 + (word~) makecharset::$9
  [118] *((byte*~) makecharset::$16) ← (byte) makecharset::b#3
  [119] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7
  [120] if((byte) makecharset::i#1<(byte) 8) goto makecharset::@2
  to:makecharset::@7
makecharset::@7: scope:[makecharset]  from makecharset::@6
  [121] (byte~) makecharset::$11 ← (word) makecharset::c#2 & (byte) 7
  [122] if((byte~) makecharset::$11!=(byte) 0) goto makecharset::@9
  to:makecharset::@8
makecharset::@8: scope:[makecharset]  from makecharset::@7
  [123] phi()
  [124] call print_char 
  to:makecharset::@9
makecharset::@9: scope:[makecharset]  from makecharset::@7 makecharset::@8
  [125] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#44 )
  [126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2
  [127] if((word) makecharset::c#1<(word) $100) goto makecharset::@1
  to:makecharset::@return
makecharset::@return: scope:[makecharset]  from makecharset::@9
  [128] return 
  to:@return
print_char: scope:[print_char]  from makecharset::@8
  [129] *((byte*) print_char_cursor#44) ← (const byte) print_char::ch#0
  [130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#44
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [131] return 
  to:@return
sid_rnd: scope:[sid_rnd]  from makecharset::@3
  [132] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0)
  to:sid_rnd::@return
sid_rnd::@return: scope:[sid_rnd]  from sid_rnd
  [133] return 
  to:@return
print_cls: scope:[print_cls]  from makecharset::@10
  [134] phi()
  [135] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [136] return 
  to:@return
memset: scope:[memset]  from print_cls
  [137] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@1
  [138] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@1/(byte*) memset::dst#1 )
  [139] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [140] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  [141] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@1
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [142] return 
  to:@return
sid_rnd_init: scope:[sid_rnd_init]  from makecharset
  [143] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff
  [144] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0
  to:sid_rnd_init::@return
sid_rnd_init::@return: scope:[sid_rnd_init]  from sid_rnd_init
  [145] return 
  to:@return
