
void __start()
__start: scope:[__start]  from
  [0] phi()
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  [1] last_time = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  [2] phi()
  [3] call main
  to:__start::@return
__start::@return: scope:[__start]  from __start::@1
  [4] return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  [5] phi()
  [6] call start
  to:main::@1
main::@1: scope:[main]  from main main::@7
  [7] main::c#7 = phi( main/0, main::@7/main::c#1 )
  [7] print_char_cursor#48 = phi( main/print_screen#0, main::@7/print_char_cursor#28 )
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@5
  [8] root#22 = phi( main::@1/(struct node *)(void *) 0, main::@5/root#12 )
  [8] free_#24 = phi( main::@1/0, main::@5/free_#14 )
  [8] main::i#2 = phi( main::@1/0, main::@5/main::i#1 )
  [9] prepend::x#0 = main::i#2
  [10] call prepend
  to:main::@5
main::@5: scope:[main]  from main::@2
  [11] main::i#1 = ++ main::i#2
  [12] if(main::i#1!=$bb8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@5
  [13] phi()
  [14] call sum
  [15] sum::return#2 = sum::s#3
  to:main::@6
main::@6: scope:[main]  from main::@3
  [16] main::$5 = sum::return#2
  [17] print_char::ch#2 = (char)main::$5
  [18] call print_char
  to:main::@7
main::@7: scope:[main]  from main::@6
  [19] main::c#1 = ++ main::c#7
  [20] if(main::c#1!=5) goto main::@1
  to:main::@4
main::@4: scope:[main]  from main::@7
  [21] phi()
  [22] call end
  to:main::@return
main::@return: scope:[main]  from main::@4
  [23] return 
  to:@return

void start()
start: scope:[start]  from end main
  asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1  }
  to:start::@return
start::@return: scope:[start]  from start
  [25] return 
  to:@return

void prepend(unsigned int x)
prepend: scope:[prepend]  from main::@2
  [26] phi()
  [27] call alloc
  [28] alloc::return#2 = alloc::return#0
  to:prepend::@1
prepend::@1: scope:[prepend]  from prepend
  [29] prepend::new#1 = alloc::return#2
  [30] *((struct node **)prepend::new#1) = root#22
  [31] ((unsigned int *)prepend::new#1)[OFFSET_STRUCT_NODE_VALUE] = prepend::x#0
  [32] root#12 = prepend::new#1
  to:prepend::@return
prepend::@return: scope:[prepend]  from prepend::@1
  [33] return 
  to:@return

unsigned int sum()
sum: scope:[sum]  from main::@3
  [34] sum::current#1 = root#12
  to:sum::@1
sum::@1: scope:[sum]  from sum sum::@2
  [35] sum::s#3 = phi( sum/0, sum::@2/sum::s#2 )
  [35] sum::current#3 = phi( sum/sum::current#1, sum::@2/sum::current#2 )
  [36] if((struct node *)0!=sum::current#3) goto sum::@2
  to:sum::@return
sum::@return: scope:[sum]  from sum::@1
  [37] return 
  to:@return
sum::@2: scope:[sum]  from sum::@1
  [38] sum::s#2 = sum::s#3 + ((unsigned int *)sum::current#3)[OFFSET_STRUCT_NODE_VALUE]
  [39] sum::current#2 = *((struct node **)sum::current#3)
  to:sum::@1

void print_char(char ch)
print_char: scope:[print_char]  from main::@6 print_uchar print_uchar::@1
  [40] print_char_cursor#27 = phi( main::@6/print_char_cursor#48, print_uchar/print_char_cursor#28, print_uchar::@1/print_char_cursor#28 )
  [40] print_char::ch#3 = phi( main::@6/print_char::ch#2, print_uchar/print_char::ch#0, print_uchar::@1/print_char::ch#1 )
  [41] *print_char_cursor#27 = print_char::ch#3
  [42] print_char_cursor#28 = ++ print_char_cursor#27
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [43] return 
  to:@return

void end()
end: scope:[end]  from main::@4
  [44] Ticks#0 = last_time
  [45] call start
  to:end::@1
end::@1: scope:[end]  from end
  [46] last_time = last_time - Ticks#0
  [47] Ticks#1 = last_time
  [48] print_uint::w#0 = Ticks#1
  [49] call print_uint
  to:end::@2
end::@2: scope:[end]  from end::@1
  [50] phi()
  [51] call print_ln
  to:end::@return
end::@return: scope:[end]  from end::@2
  [52] return 
  to:@return

struct node * alloc()
alloc: scope:[alloc]  from prepend
  [53] alloc::$1 = free_#24 << 2
  [54] alloc::return#0 = heap + alloc::$1
  [55] free_#14 = ++ free_#24
  to:alloc::@return
alloc::@return: scope:[alloc]  from alloc
  [56] return 
  to:@return

void print_uint(unsigned int w)
print_uint: scope:[print_uint]  from end::@1
  [57] print_uchar::b#0 = byte1  print_uint::w#0
  [58] call print_uchar
  to:print_uint::@1
print_uint::@1: scope:[print_uint]  from print_uint
  [59] print_uchar::b#1 = byte0  print_uint::w#0
  [60] call print_uchar
  to:print_uint::@return
print_uint::@return: scope:[print_uint]  from print_uint::@1
  [61] return 
  to:@return

void print_ln()
print_ln: scope:[print_ln]  from end::@2
  [62] phi()
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [63] print_line_cursor#9 = phi( print_ln/print_screen#0, print_ln::@1/print_line_cursor#0 )
  [64] print_line_cursor#0 = print_line_cursor#9 + $28
  [65] if(print_line_cursor#0<print_char_cursor#28) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [66] return 
  to:@return

void print_uchar(char b)
print_uchar: scope:[print_uchar]  from print_uint print_uint::@1
  [67] print_uchar::b#2 = phi( print_uint/print_uchar::b#0, print_uint::@1/print_uchar::b#1 )
  [68] print_uchar::$0 = print_uchar::b#2 >> 4
  [69] print_char::ch#0 = print_hextab[print_uchar::$0]
  [70] call print_char
  to:print_uchar::@1
print_uchar::@1: scope:[print_uchar]  from print_uchar
  [71] print_uchar::$2 = print_uchar::b#2 & $f
  [72] print_char::ch#1 = print_hextab[print_uchar::$2]
  [73] call print_char
  to:print_uchar::@return
print_uchar::@return: scope:[print_uchar]  from print_uchar::@1
  [74] return 
  to:@return
