@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
  [4] phi()
  [5] call print_str 
  to:main::@1
main::@1: scope:[main]  from main
  [6] phi()
  [7] call print_ln 
  to:main::@return
main::@return: scope:[main]  from main::@1
  [8] return 
  to:@return

(void()) print_ln()
print_ln: scope:[print_ln]  from main::@1
  [9] phi()
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [10] (byte*) print_line_cursor#6 ← phi( print_ln/(byte*) 1024 print_ln::@1/(byte*) print_line_cursor#1 )
  [11] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28
  [12] 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
  [13] return 
  to:@return

(void()) print_str((byte*) print_str::str)
print_str: scope:[print_str]  from main
  [14] phi()
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [15] (byte*) print_char_cursor#10 ← phi( print_str/(byte*) 1024 print_str::@2/(byte*) print_char_cursor#1 )
  [15] (byte*) print_str::str#2 ← phi( print_str/(const string) main::str print_str::@2/(byte*) print_str::str#0 )
  [16] 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
  [17] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [18] *((byte*) print_char_cursor#10) ← *((byte*) print_str::str#2)
  [19] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#10
  [20] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2
  to:print_str::@1
