@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
main: scope:[main]  from @1
  [4] phi()
  to:main::@1
main::@1: scope:[main]  from main main::@6
  [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@6/(byte) main::i#1 )
  [6] (byte) sub::idx#0 ← (byte) main::i#2
  [7] call sub 
  to:main::@4
main::@4: scope:[main]  from main::@1
  [8] (byte) sub::idx#1 ← (byte) main::i#2
  [9] call sub 
  to:main::@5
main::@5: scope:[main]  from main::@4
  [10] (byte) sub::idx#2 ← (byte) main::i#2
  [11] call sub 
  to:main::@6
main::@6: scope:[main]  from main::@5
  [12] (byte) main::i#1 ← ++ (byte) main::i#2
  [13] if((byte) main::i#1!=(byte) 9) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@6
  [14] phi()
  [15] call print_cls 
  to:main::@3
main::@3: scope:[main]  from main::@2 main::@9
  [16] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/(byte*) 1024 )
  [16] (byte*) print_char_cursor#49 ← phi( main::@9/(byte*~) print_char_cursor#63 main::@2/(byte*) 1024 )
  [16] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte) 0 )
  [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1
  [18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$8)
  [19] call print_sword 
  to:main::@7
main::@7: scope:[main]  from main::@3
  [20] phi()
  [21] call print_ln 
  to:main::@8
main::@8: scope:[main]  from main::@7
  [22] (byte) main::j#1 ← ++ (byte) main::j#2
  [23] if((byte) main::j#1!=(byte) 9) goto main::@9
  to:main::@return
main::@return: scope:[main]  from main::@8
  [24] return 
  to:@return
main::@9: scope:[main]  from main::@8
  [25] (byte*~) print_char_cursor#63 ← (byte*) print_line_cursor#1
  to:main::@3
print_ln: scope:[print_ln]  from main::@7
  [26] phi()
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [27] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 )
  [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28
  [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [30] return 
  to:@return
print_sword: scope:[print_sword]  from main::@3
  [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1
  to:print_sword::@3
print_sword::@3: scope:[print_sword]  from print_sword
  [32] phi()
  [33] call print_char 
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword::@3 print_sword::@4
  [34] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 )
  [35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
  [36] call print_word 
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@2
  [37] return 
  to:@return
print_sword::@1: scope:[print_sword]  from print_sword
  [38] phi()
  [39] call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@1
  [40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
  to:print_sword::@2
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sword::@1 print_sword::@3
  [41] (byte*) print_char_cursor#34 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#49 print_sword::@3/(byte*) print_char_cursor#49 )
  [41] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
  [42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4
  [43] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#34
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [44] return 
  to:@return
print_word: scope:[print_word]  from print_sword::@2
  [45] (byte) print_byte::b#0 ← > (word) print_word::w#0
  [46] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [47] (byte) print_byte::b#1 ← < (word) print_word::w#0
  [48] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [49] return 
  to:@return
print_byte: scope:[print_byte]  from print_word print_word::@1
  [50] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
  [51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
  [52] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
  [53] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
  [55] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
  [56] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [57] return 
  to:@return
print_cls: scope:[print_cls]  from main::@2
  [58] phi()
  [59] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [60] return 
  to:@return
memset: scope:[memset]  from print_cls
  [61] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@1
  [62] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@1/(byte*) memset::dst#1 )
  [63] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [64] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  [65] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@1
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [66] return 
  to:@return
sub: scope:[sub]  from main::@1 main::@4 main::@5
  [67] (byte) sub::s#3 ← phi( main::@1/(byte) $80 main::@4/(byte) $40 main::@5/(byte) $40 )
  [67] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 )
  [68] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1
  [69] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3
  to:sub::@return
sub::@return: scope:[sub]  from sub
  [70] return 
  to:@return
