@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] phi()
  [7] call start 
  to:main::@1
main::@1: scope:[main]  from main main::@6
  [8] (byte*) print_line_cursor#20 ← phi( main::@6/(byte*) print_line_cursor#1 main/(byte*) 1024 )
  [8] (byte*) print_char_cursor#51 ← phi( main::@6/(byte*) print_char_cursor#71 main/(byte*) 1024 )
  [8] (word) main::i#3 ← phi( main::@6/(word) main::i#2 main/(byte) 0 )
  [9] if((word) main::i#3<(byte) 6) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1
  [10] phi()
  [11] call end 
  to:main::@return
main::@return: scope:[main]  from main::@3
  [12] return 
  to:@return
main::@2: scope:[main]  from main::@1
  [13] phi()
  [14] call sum 
  [15] (word) sum::return#2 ← (word) sum::s#3
  to:main::@4
main::@4: scope:[main]  from main::@2
  [16] (word) print_word_decimal::w#0 ← (word) sum::return#2
  [17] call print_word_decimal 
  to:main::@5
main::@5: scope:[main]  from main::@4
  [18] phi()
  [19] call print_ln 
  to:main::@6
main::@6: scope:[main]  from main::@5
  [20] (word) main::i#2 ← ++ (word) main::i#3
  [21] (byte*) print_char_cursor#71 ← (byte*) print_line_cursor#1
  to:main::@1

(void()) print_ln()
print_ln: scope:[print_ln]  from end::@2 main::@5
  [22] (byte*) print_char_cursor#46 ← phi( end::@2/(byte*) print_char_cursor#13 main::@5/(byte*) print_char_cursor#2 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [23] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#20 print_ln::@1/(byte*) print_line_cursor#1 )
  [24] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28
  [25] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#46) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [26] return 
  to:@return

(void()) print_word_decimal((word) print_word_decimal::w)
print_word_decimal: scope:[print_word_decimal]  from main::@4
  [27] (word) utoa::value#1 ← (word) print_word_decimal::w#0
  [28] call utoa 
  to:print_word_decimal::@1
print_word_decimal::@1: scope:[print_word_decimal]  from print_word_decimal
  [29] phi()
  [30] call print_str 
  to:print_word_decimal::@return
print_word_decimal::@return: scope:[print_word_decimal]  from print_word_decimal::@1
  [31] return 
  to:@return

(void()) print_str((byte*) print_str::str)
print_str: scope:[print_str]  from print_word_decimal::@1
  [32] phi()
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [33] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 )
  [33] (byte*) print_str::str#2 ← phi( print_str/(const byte*) decimal_digits print_str::@2/(byte*) print_str::str#0 )
  [34] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [35] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [36] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2)
  [37] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2
  [38] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2
  to:print_str::@1

(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
utoa: scope:[utoa]  from print_word_decimal
  [39] phi()
  to:utoa::@1
utoa::@1: scope:[utoa]  from utoa utoa::@4
  [40] (byte*) utoa::buffer#11 ← phi( utoa::@4/(byte*) utoa::buffer#14 utoa/(const byte*) decimal_digits )
  [40] (byte) utoa::started#2 ← phi( utoa::@4/(byte) utoa::started#4 utoa/(byte) 0 )
  [40] (word) utoa::value#2 ← phi( utoa::@4/(word) utoa::value#6 utoa/(word) utoa::value#1 )
  [40] (byte) utoa::digit#2 ← phi( utoa::@4/(byte) utoa::digit#1 utoa/(byte) 0 )
  [41] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2
  to:utoa::@3
utoa::@3: scope:[utoa]  from utoa::@1
  [42] (byte~) utoa::$4 ← (byte)(word) utoa::value#2
  [43] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$4)
  [44] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11
  [45] *((byte*) utoa::buffer#3) ← (byte) 0
  to:utoa::@return
utoa::@return: scope:[utoa]  from utoa::@3
  [46] return 
  to:@return
utoa::@2: scope:[utoa]  from utoa::@1
  [47] (byte~) utoa::$11 ← (byte) utoa::digit#2 << (byte) 1
  [48] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$11)
  [49] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5
  to:utoa::@7
utoa::@7: scope:[utoa]  from utoa::@2
  [50] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5
  to:utoa::@4
utoa::@4: scope:[utoa]  from utoa::@6 utoa::@7
  [51] (byte*) utoa::buffer#14 ← phi( utoa::@7/(byte*) utoa::buffer#11 utoa::@6/(byte*) utoa::buffer#4 )
  [51] (byte) utoa::started#4 ← phi( utoa::@7/(byte) utoa::started#2 utoa::@6/(byte) 1 )
  [51] (word) utoa::value#6 ← phi( utoa::@7/(word) utoa::value#2 utoa::@6/(word) utoa::value#0 )
  [52] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2
  to:utoa::@1
utoa::@5: scope:[utoa]  from utoa::@2 utoa::@7
  [53] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11
  [54] (word) utoa_append::value#0 ← (word) utoa::value#2
  [55] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0
  [56] call utoa_append 
  [57] (word) utoa_append::return#0 ← (word) utoa_append::value#2
  to:utoa::@6
utoa::@6: scope:[utoa]  from utoa::@5
  [58] (word) utoa::value#0 ← (word) utoa_append::return#0
  [59] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11
  to:utoa::@4

(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
utoa_append: scope:[utoa_append]  from utoa::@5
  [60] phi()
  to:utoa_append::@1
utoa_append::@1: scope:[utoa_append]  from utoa_append utoa_append::@2
  [61] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 )
  [61] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 )
  [62] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2
  to:utoa_append::@3
utoa_append::@3: scope:[utoa_append]  from utoa_append::@1
  [63] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2)
  to:utoa_append::@return
utoa_append::@return: scope:[utoa_append]  from utoa_append::@3
  [64] return 
  to:@return
utoa_append::@2: scope:[utoa_append]  from utoa_append::@1
  [65] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2
  [66] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0
  to:utoa_append::@1

(word()) sum()
sum: scope:[sum]  from main::@2
  [67] phi()
  to:sum::@1
sum::@1: scope:[sum]  from sum sum::@3
  [68] (byte*) sum::p#5 ← phi( sum/(const byte*) rom sum::@3/(byte*) sum::p#2 )
  [68] (word) sum::s#3 ← phi( sum/(byte) 0 sum::@3/(word) sum::s#2 )
  [68] (byte) sum::page#3 ← phi( sum/(byte) 0 sum::@3/(byte) sum::page#2 )
  [69] if((byte) sum::page#3<(byte) $20) goto sum::@2
  to:sum::@return
sum::@return: scope:[sum]  from sum::@1
  [70] return 
  to:@return
sum::@2: scope:[sum]  from sum::@1 sum::@2
  [71] (word) sum::s#4 ← phi( sum::@1/(word) sum::s#3 sum::@2/(word) sum::s#2 )
  [71] (byte) sum::i#3 ← phi( sum::@1/(byte) 0 sum::@2/(byte) sum::i#2 )
  [72] (byte) sum::tmp#1 ← *((byte*) sum::p#5 + (byte) sum::i#3)
  [73] (word) sum::s#2 ← (word) sum::s#4 + (byte) sum::tmp#1
  [74] (byte) sum::i#2 ← ++ (byte) sum::i#3
  [75] if((byte) 0!=(byte) sum::i#2) goto sum::@2
  to:sum::@3
sum::@3: scope:[sum]  from sum::@2
  [76] (byte*) sum::p#2 ← (byte*) sum::p#5 + (word) $100
  [77] (byte) sum::page#2 ← ++ (byte) sum::page#3
  to:sum::@1

(void()) end()
end: scope:[end]  from main::@3
  [78] (word) Ticks#1 ← (word) last_time
  [79] call start 
  to:end::@1
end::@1: scope:[end]  from end
  [80] (word) last_time ← (word) last_time - (word) Ticks#1
  [81] (word) Ticks#12 ← (word) last_time
  [82] (word) print_word::w#0 ← (word) Ticks#12
  [83] call print_word 
  to:end::@2
end::@2: scope:[end]  from end::@1
  [84] phi()
  [85] call print_ln 
  to:end::@return
end::@return: scope:[end]  from end::@2
  [86] return 
  to:@return

(void()) print_word((word) print_word::w)
print_word: scope:[print_word]  from end::@1
  [87] (byte) print_byte::b#0 ← > (word) print_word::w#0
  [88] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [89] (byte) print_byte::b#1 ← < (word) print_word::w#0
  [90] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [91] return 
  to:@return

(void()) print_byte((byte) print_byte::b)
print_byte: scope:[print_byte]  from print_word print_word::@1
  [92] (byte*) print_char_cursor#49 ← phi( print_word/(byte*) print_char_cursor#51 print_word::@1/(byte*) print_char_cursor#13 )
  [92] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
  [93] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
  [94] (byte) print_char::ch#0 ← *((const byte*) DIGITS + (byte~) print_byte::$0)
  [95] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [96] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
  [97] (byte) print_char::ch#1 ← *((const byte*) DIGITS + (byte~) print_byte::$2)
  [98] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [99] return 
  to:@return

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from print_byte print_byte::@1
  [100] (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#49 print_byte::@1/(byte*) print_char_cursor#13 )
  [100] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
  [101] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#2
  [102] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [103] return 
  to:@return

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