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

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

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

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

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

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

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

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

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