@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::@3
main::@3: scope:[main]  from main::@2 main::@6
  [13] (byte) c2B#14 ← phi( main::@6/(byte) c2B#4 main::@2/(byte) 0 )
  [13] (byte) c2A#14 ← phi( main::@6/(byte) c2A#4 main::@2/(byte) 0 )
  [13] (byte) c1B#14 ← phi( main::@6/(byte) c1B#4 main::@2/(byte) 0 )
  [13] (byte) c1A#14 ← phi( main::@6/(byte) c1A#4 main::@2/(byte) 0 )
  to:main::@4
main::@4: scope:[main]  from main::@3
  [14] phi()
  [15] call doplasma 
  to:main::toD0181
main::toD0181: scope:[main]  from main::@4
  [16] phi()
  to:main::@5
main::@5: scope:[main]  from main::toD0181
  [17] *((const byte*) D018) ← (const byte) main::toD0181_return#0
  [18] call doplasma 
  to:main::toD0182
main::toD0182: scope:[main]  from main::@5
  [19] phi()
  to:main::@6
main::@6: scope:[main]  from main::toD0182
  [20] *((const byte*) D018) ← (const byte) main::toD0182_return#0
  to:main::@3

(void()) doplasma((byte*) doplasma::screen)
doplasma: scope:[doplasma]  from main::@4 main::@5
  [21] (byte*) doplasma::screen#13 ← phi( main::@4/(const byte*) SCREEN1 main::@5/(const byte*) SCREEN2 )
  [21] (byte) c2B#24 ← phi( main::@4/(byte) c2B#14 main::@5/(byte) c2B#4 )
  [21] (byte) c2A#24 ← phi( main::@4/(byte) c2A#14 main::@5/(byte) c2A#4 )
  [21] (byte) c1B#10 ← phi( main::@4/(byte) c1B#14 main::@5/(byte) c1B#4 )
  [21] (byte) c1A#10 ← phi( main::@4/(byte) c1A#14 main::@5/(byte) c1A#4 )
  [22] (byte) doplasma::c1a#0 ← (byte) c1A#10
  [23] (byte) doplasma::c1b#0 ← (byte) c1B#10
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@2
  [24] (byte) doplasma::c1b#2 ← phi( doplasma/(byte) doplasma::c1b#0 doplasma::@2/(byte) doplasma::c1b#1 )
  [24] (byte) doplasma::c1a#2 ← phi( doplasma/(byte) doplasma::c1a#0 doplasma::@2/(byte) doplasma::c1a#1 )
  [24] (byte) doplasma::i#2 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::i#1 )
  [25] if((byte) doplasma::i#2<(byte) $19) goto doplasma::@2
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@1
  [26] (byte) c1A#4 ← (byte) c1A#10 + (byte) 3
  [27] (byte) c1B#4 ← (byte) c1B#10 - (byte) 5
  [28] (byte) doplasma::c2a#0 ← (byte) c2A#24
  [29] (byte) doplasma::c2b#0 ← (byte) c2B#24
  to:doplasma::@4
doplasma::@4: scope:[doplasma]  from doplasma::@3 doplasma::@5
  [30] (byte) doplasma::c2b#2 ← phi( doplasma::@3/(byte) doplasma::c2b#0 doplasma::@5/(byte) doplasma::c2b#1 )
  [30] (byte) doplasma::c2a#2 ← phi( doplasma::@3/(byte) doplasma::c2a#0 doplasma::@5/(byte) doplasma::c2a#1 )
  [30] (byte) doplasma::i1#2 ← phi( doplasma::@3/(byte) 0 doplasma::@5/(byte) doplasma::i1#1 )
  [31] if((byte) doplasma::i1#2<(byte) $28) goto doplasma::@5
  to:doplasma::@6
doplasma::@6: scope:[doplasma]  from doplasma::@4
  [32] (byte) c2A#4 ← (byte) c2A#24 + (byte) 2
  [33] (byte) c2B#4 ← (byte) c2B#24 - (byte) 3
  to:doplasma::@7
doplasma::@7: scope:[doplasma]  from doplasma::@10 doplasma::@6
  [34] (byte*) doplasma::screen#6 ← phi( doplasma::@10/(byte*) doplasma::screen#2 doplasma::@6/(byte*) doplasma::screen#13 )
  [34] (byte) doplasma::ii#2 ← phi( doplasma::@10/(byte) doplasma::ii#1 doplasma::@6/(byte) 0 )
  [35] if((byte) doplasma::ii#2<(byte) $19) goto doplasma::@8
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@7
  [36] return 
  to:@return
doplasma::@8: scope:[doplasma]  from doplasma::@7 doplasma::@9
  [37] (byte) doplasma::i2#2 ← phi( doplasma::@7/(byte) 0 doplasma::@9/(byte) doplasma::i2#1 )
  [38] if((byte) doplasma::i2#2<(byte) $28) goto doplasma::@9
  to:doplasma::@10
doplasma::@10: scope:[doplasma]  from doplasma::@8
  [39] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#6 + (byte) $28
  [40] (byte) doplasma::ii#1 ← ++ (byte) doplasma::ii#2
  to:doplasma::@7
doplasma::@9: scope:[doplasma]  from doplasma::@8
  [41] (byte~) doplasma::$6 ← *((const byte*) doplasma::xbuf + (byte) doplasma::i2#2) + *((const byte*) doplasma::ybuf + (byte) doplasma::ii#2)
  [42] *((byte*) doplasma::screen#6 + (byte) doplasma::i2#2) ← (byte~) doplasma::$6
  [43] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2
  to:doplasma::@8
doplasma::@5: scope:[doplasma]  from doplasma::@4
  [44] (byte~) doplasma::$3 ← *((const byte*) SINTABLE + (byte) doplasma::c2a#2) + *((const byte*) SINTABLE + (byte) doplasma::c2b#2)
  [45] *((const byte*) doplasma::xbuf + (byte) doplasma::i1#2) ← (byte~) doplasma::$3
  [46] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte) 3
  [47] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte) 7
  [48] (byte) doplasma::i1#1 ← ++ (byte) doplasma::i1#2
  to:doplasma::@4
doplasma::@2: scope:[doplasma]  from doplasma::@1
  [49] (byte~) doplasma::$1 ← *((const byte*) SINTABLE + (byte) doplasma::c1a#2) + *((const byte*) SINTABLE + (byte) doplasma::c1b#2)
  [50] *((const byte*) doplasma::ybuf + (byte) doplasma::i#2) ← (byte~) doplasma::$1
  [51] (byte) doplasma::c1a#1 ← (byte) doplasma::c1a#2 + (byte) 4
  [52] (byte) doplasma::c1b#1 ← (byte) doplasma::c1b#2 + (byte) 9
  [53] (byte) doplasma::i#1 ← ++ (byte) doplasma::i#2
  to:doplasma::@1

(void()) makecharset((byte*) makecharset::charset)
makecharset: scope:[makecharset]  from main::@2
  [54] phi()
  [55] call sid_rnd_init 
  to:makecharset::@12
makecharset::@12: scope:[makecharset]  from makecharset
  [56] phi()
  [57] call print_cls 
  to:makecharset::@1
makecharset::@1: scope:[makecharset]  from makecharset::@11 makecharset::@12
  [58] (byte*) print_char_cursor#18 ← phi( makecharset::@11/(byte*) print_char_cursor#29 makecharset::@12/(const byte*) print_line_cursor#0 )
  [58] (word) makecharset::c#2 ← phi( makecharset::@11/(word) makecharset::c#1 makecharset::@12/(word) 0 )
  [59] if((word) makecharset::c#2<(word) $100) goto makecharset::@2
  to:makecharset::@return
makecharset::@return: scope:[makecharset]  from makecharset::@1
  [60] return 
  to:@return
makecharset::@2: scope:[makecharset]  from makecharset::@1
  [61] (byte~) makecharset::$3 ← < (word) makecharset::c#2
  [62] (byte) makecharset::s#0 ← *((const byte*) SINTABLE + (byte~) makecharset::$3)
  to:makecharset::@3
makecharset::@3: scope:[makecharset]  from makecharset::@2 makecharset::@7
  [63] (byte) makecharset::i#2 ← phi( makecharset::@2/(byte) 0 makecharset::@7/(byte) makecharset::i#1 )
  [64] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5
  to:makecharset::@4
makecharset::@4: scope:[makecharset]  from makecharset::@3
  [65] (byte~) makecharset::$12 ← (word) makecharset::c#2 & (byte) 7
  [66] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@11
  to:makecharset::@10
makecharset::@10: scope:[makecharset]  from makecharset::@4
  [67] phi()
  [68] call print_char 
  to:makecharset::@11
makecharset::@11: scope:[makecharset]  from makecharset::@10 makecharset::@4
  [69] (byte*) print_char_cursor#29 ← phi( makecharset::@10/(byte*) print_char_cursor#1 makecharset::@4/(byte*) print_char_cursor#18 )
  [70] (word) makecharset::c#1 ← ++ (word) makecharset::c#2
  to:makecharset::@1
makecharset::@5: scope:[makecharset]  from makecharset::@3 makecharset::@8
  [71] (byte) makecharset::b#2 ← phi( makecharset::@8/(byte) makecharset::b#6 makecharset::@3/(byte) 0 )
  [71] (byte) makecharset::ii#2 ← phi( makecharset::@8/(byte) makecharset::ii#1 makecharset::@3/(byte) 0 )
  [72] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@6
  to:makecharset::@7
makecharset::@7: scope:[makecharset]  from makecharset::@5
  [73] (word~) makecharset::$10 ← (word) makecharset::c#2 << (byte) 3
  [74] (word~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#2
  [75] (byte*~) makecharset::$16 ← (const byte*) CHARSET + (word~) makecharset::$11
  [76] *((byte*~) makecharset::$16) ← (byte) makecharset::b#2
  [77] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#2
  to:makecharset::@3
makecharset::@6: scope:[makecharset]  from makecharset::@5
  [78] phi()
  [79] call sid_rnd 
  [80] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
  to:makecharset::@13
makecharset::@13: scope:[makecharset]  from makecharset::@6
  [81] (byte~) makecharset::$6 ← (byte) sid_rnd::return#2
  [82] (byte~) makecharset::$7 ← (byte~) makecharset::$6 & (byte) $ff
  [83] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@8
  to:makecharset::@9
makecharset::@9: scope:[makecharset]  from makecharset::@13
  [84] (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
  [85] (byte) makecharset::b#6 ← phi( makecharset::@9/(byte) makecharset::b#1 makecharset::@13/(byte) makecharset::b#2 )
  [86] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2
  to:makecharset::@5

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

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

(void()) print_cls()
print_cls: scope:[print_cls]  from makecharset::@12
  [92] phi()
  [93] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [94] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  [95] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [96] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
  [97] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [98] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [99] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [100] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@1

(void()) sid_rnd_init()
sid_rnd_init: scope:[sid_rnd_init]  from makecharset
  [101] *((const word*) SID_VOICE3_FREQ) ← (word) $ffff
  [102] *((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
  [103] return 
  to:@return
