@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] (word) last_time ← (word) 0
  to:@2
@2: scope:[]  from @1
  [2] (word) rand_seed ← (word) 0
  to:@3
@3: scope:[]  from @2
  [3] phi()
  [4] call main 
  to:@end
@end: scope:[]  from @3
  [5] phi()

(signed word()) main()
main: scope:[main]  from @3
  [6] (word) rand_seed ← (word) $194a
  [7] call makechar 
  to:main::@4
main::@4: scope:[main]  from main
  [8] phi()
  [9] call start 
  to:main::@5
main::@5: scope:[main]  from main::@4
  [10] (byte) main::block#1 ← *((const byte*) CIA2_PORT_A)
  [11] (byte) main::tmp#1 ← (byte) main::block#1 & (byte) $fc
  [12] *((const byte*) CIA2_PORT_A) ← (byte) main::tmp#1
  [13] (byte) main::v#1 ← *((const byte*) VIC_MEMORY)
  to:main::@1
main::@1: scope:[main]  from main::@5 main::@7
  [14] (word) main::count#2 ← phi( main::@7/(word) main::count#1 main::@5/(word) $1f4 )
  [15] if((byte) 0!=(word) main::count#2) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1
  [16] *((const byte*) VIC_MEMORY) ← (byte) main::v#1
  [17] *((const byte*) CIA2_PORT_A) ← (byte) main::block#1
  [18] call end 
  to:main::@return
main::@return: scope:[main]  from main::@3
  [19] return 
  to:@return
main::@2: scope:[main]  from main::@1
  [20] phi()
  [21] call doplasma 
  to:main::@6
main::@6: scope:[main]  from main::@2
  [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1
  [23] call doplasma 
  to:main::@7
main::@7: scope:[main]  from main::@6
  [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2
  [25] (word) main::count#1 ← -- (word) main::count#2
  to:main::@1

(void()) doplasma((byte*) doplasma::scrn)
doplasma: scope:[doplasma]  from main::@2 main::@6
  [26] (byte*) doplasma::scrn#13 ← phi( main::@6/(const byte*) SCREEN2 main::@2/(const byte*) SCREEN1 )
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@2
  [27] (byte) doplasma::c1b#3 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::c1b#2 )
  [27] (byte) doplasma::c1a#3 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::c1a#2 )
  [27] (byte) doplasma::ii#3 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::ii#2 )
  [28] if((byte) doplasma::ii#3<(byte) $19) goto doplasma::@2
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@1 doplasma::@4
  [29] (byte) doplasma::c2b#3 ← phi( doplasma::@1/(const byte) doplasma::c2B#0 doplasma::@4/(byte) doplasma::c2b#2 )
  [29] (byte) doplasma::c2a#3 ← phi( doplasma::@1/(const byte) doplasma::c2A#0 doplasma::@4/(byte) doplasma::c2a#2 )
  [29] (byte) doplasma::i#3 ← phi( doplasma::@1/(byte) 0 doplasma::@4/(byte) doplasma::i#2 )
  [30] if((byte) doplasma::i#3<(byte) $28) goto doplasma::@4
  to:doplasma::@5
doplasma::@5: scope:[doplasma]  from doplasma::@3 doplasma::@8
  [31] (byte*) doplasma::scrn#6 ← phi( doplasma::@8/(byte*) doplasma::scrn#0 doplasma::@3/(byte*) doplasma::scrn#13 )
  [31] (byte) doplasma::jj#3 ← phi( doplasma::@8/(byte) doplasma::jj#2 doplasma::@3/(byte) 0 )
  [32] if((byte) doplasma::jj#3<(byte) $19) goto doplasma::@6
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@5
  [33] return 
  to:@return
doplasma::@6: scope:[doplasma]  from doplasma::@5 doplasma::@7
  [34] (byte) doplasma::j#3 ← phi( doplasma::@5/(byte) 0 doplasma::@7/(byte) doplasma::j#2 )
  [35] if((byte) doplasma::j#3<(byte) $28) goto doplasma::@7
  to:doplasma::@8
doplasma::@8: scope:[doplasma]  from doplasma::@6
  [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28
  [37] (byte) doplasma::jj#2 ← ++ (byte) doplasma::jj#3
  to:doplasma::@5
doplasma::@7: scope:[doplasma]  from doplasma::@6
  [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3)
  [39] *((byte*) doplasma::scrn#6 + (byte) doplasma::j#3) ← (byte~) doplasma::$6
  [40] (byte) doplasma::j#2 ← ++ (byte) doplasma::j#3
  to:doplasma::@6
doplasma::@4: scope:[doplasma]  from doplasma::@3
  [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3)
  [42] *((const byte*) xbuf + (byte) doplasma::i#3) ← (byte~) doplasma::$3
  [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3
  [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7
  [45] (byte) doplasma::i#2 ← ++ (byte) doplasma::i#3
  to:doplasma::@3
doplasma::@2: scope:[doplasma]  from doplasma::@1
  [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3)
  [47] *((const byte*) ybuf + (byte) doplasma::ii#3) ← (byte~) doplasma::$1
  [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4
  [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9
  [50] (byte) doplasma::ii#2 ← ++ (byte) doplasma::ii#3
  to:doplasma::@1

(void()) end()
end: scope:[end]  from main::@3
  [51] (word) Ticks#1 ← (word) last_time
  [52] call start 
  to:end::@1
end::@1: scope:[end]  from end
  [53] (word) last_time ← (word) last_time - (word) Ticks#1
  [54] (word) Ticks#12 ← (word) last_time
  [55] (word) print_word::w#0 ← (word) Ticks#12
  [56] call print_word 
  to:end::@2
end::@2: scope:[end]  from end::@1
  [57] phi()
  [58] call print_ln 
  to:end::@return
end::@return: scope:[end]  from end::@2
  [59] return 
  to:@return

(void()) print_ln()
print_ln: scope:[print_ln]  from end::@2
  [60] phi()
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [61] (byte*) print_line_cursor#8 ← phi( print_ln/(byte*) 1024 print_ln::@1/(byte*) print_line_cursor#1 )
  [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28
  [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [64] return 
  to:@return

(void()) print_word((word) print_word::w)
print_word: scope:[print_word]  from end::@1
  [65] (byte) print_byte::b#0 ← > (word) print_word::w#0
  [66] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [67] (byte) print_byte::b#1 ← < (word) print_word::w#0
  [68] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [69] return 
  to:@return

(void()) print_byte((byte) print_byte::b)
print_byte: scope:[print_byte]  from print_word print_word::@1
  [70] (byte*) print_char_cursor#35 ← phi( print_word/(byte*) 1024 print_word::@1/(byte*) print_char_cursor#10 )
  [70] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
  [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
  [72] (byte) print_char::ch#0 ← *((const byte*) print_hextab + (byte~) print_byte::$0)
  [73] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
  [75] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2)
  [76] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [77] return 
  to:@return

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from print_byte print_byte::@1
  [78] (byte*) print_char_cursor#25 ← phi( print_byte/(byte*) print_char_cursor#35 print_byte::@1/(byte*) print_char_cursor#10 )
  [78] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
  [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2
  [80] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#25
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [81] return 
  to:@return

(void()) start()
start: scope:[start]  from end main::@4
  asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1  }
  [83] (word) rand_seed ← (word) $194a
  to:start::@return
start::@return: scope:[start]  from start
  [84] return 
  to:@return

(void()) makechar()
makechar: scope:[makechar]  from main
  [85] phi()
  to:makechar::@1
makechar::@1: scope:[makechar]  from makechar makechar::@4
  [86] (word) makechar::c#3 ← phi( makechar/(byte) 0 makechar::@4/(word) makechar::c#2 )
  [87] if((word) makechar::c#3<(word) $100) goto makechar::@2
  to:makechar::@return
makechar::@return: scope:[makechar]  from makechar::@1
  [88] return 
  to:@return
makechar::@2: scope:[makechar]  from makechar::@1
  [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3
  [90] (byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1)
  to:makechar::@3
makechar::@3: scope:[makechar]  from makechar::@2 makechar::@7
  [91] (byte) makechar::i#3 ← phi( makechar::@2/(byte) 0 makechar::@7/(byte) makechar::i#2 )
  [92] if((byte) makechar::i#3<(byte) 8) goto makechar::@5
  to:makechar::@4
makechar::@4: scope:[makechar]  from makechar::@3
  [93] (word) makechar::c#2 ← ++ (word) makechar::c#3
  to:makechar::@1
makechar::@5: scope:[makechar]  from makechar::@3 makechar::@8
  [94] (byte) makechar::b#3 ← phi( makechar::@8/(byte) makechar::b#7 makechar::@3/(byte) 0 )
  [94] (byte) makechar::ii#3 ← phi( makechar::@8/(byte) makechar::ii#2 makechar::@3/(byte) 0 )
  [95] if((byte) makechar::ii#3<(byte) 8) goto makechar::@6
  to:makechar::@7
makechar::@7: scope:[makechar]  from makechar::@5
  [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3
  [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3
  [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9
  [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3
  [100] (byte) makechar::i#2 ← ++ (byte) makechar::i#3
  to:makechar::@3
makechar::@6: scope:[makechar]  from makechar::@5
  [101] phi()
  [102] call rand 
  [103] (byte) rand::return#2 ← (byte) rand::return#0
  to:makechar::@10
makechar::@10: scope:[makechar]  from makechar::@6
  [104] (byte~) makechar::$4 ← (byte) rand::return#2
  [105] (byte~) makechar::$5 ← (byte~) makechar::$4 & (byte) $ff
  [106] if((byte~) makechar::$5<=(byte) makechar::s#1) goto makechar::@8
  to:makechar::@9
makechar::@9: scope:[makechar]  from makechar::@10
  [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3)
  to:makechar::@8
makechar::@8: scope:[makechar]  from makechar::@10 makechar::@9
  [108] (byte) makechar::b#7 ← phi( makechar::@9/(byte) makechar::b#2 makechar::@10/(byte) makechar::b#3 )
  [109] (byte) makechar::ii#2 ← ++ (byte) makechar::ii#3
  to:makechar::@5

(byte()) rand()
rand: scope:[rand]  from makechar::@6
  asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0  }
  [111] (byte) rand::return#0 ← (byte)(word) rand_seed
  to:rand::@return
rand::@return: scope:[rand]  from rand
  [112] return 
  to:@return
