
void __start()
__start: scope:[__start]  from
  [0] phi()
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  [1] line = (char *) 1024
  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

__stackcall char xor(char a , char b)
xor: scope:[xor]  from
  [5] xor::a#0 = stackidx(char,xor::OFFSET_STACK_A)
  [6] xor::b#0 = stackidx(char,xor::OFFSET_STACK_B)
  [7] xor::return#0 = xor::a#0 ^ xor::b#0
  to:xor::@return
xor::@return: scope:[xor]  from xor
  [8] stackidx(char,xor::OFFSET_STACK_RETURN_1) = xor::return#0
  [9] return 
  to:@return

__stackcall char min(char a , char b)
min: scope:[min]  from
  [10] min::a#0 = stackidx(char,min::OFFSET_STACK_A)
  [11] min::b#0 = stackidx(char,min::OFFSET_STACK_B)
  [12] if(min::a#0<min::b#0) goto min::@1
  to:min::@return
min::@1: scope:[min]  from min
  [13] min::return#4 = min::a#0
  to:min::@return
min::@return: scope:[min]  from min min::@1
  [14] min::return#2 = phi( min::@1/min::return#4, min/min::b#0 )
  [15] stackidx(char,min::OFFSET_STACK_RETURN_1) = min::return#2
  [16] return 
  to:@return

__stackcall char max(char a , char b)
max: scope:[max]  from
  [17] max::a#0 = stackidx(char,max::OFFSET_STACK_A)
  [18] max::b#0 = stackidx(char,max::OFFSET_STACK_B)
  [19] if(max::a#0>max::b#0) goto max::@1
  to:max::@return
max::@1: scope:[max]  from max
  [20] max::return#4 = max::a#0
  to:max::@return
max::@return: scope:[max]  from max max::@1
  [21] max::return#2 = phi( max::@1/max::return#4, max/max::b#0 )
  [22] stackidx(char,max::OFFSET_STACK_RETURN_1) = max::return#2
  [23] return 
  to:@return

__stackcall char sum(char a , char b)
sum: scope:[sum]  from
  [24] sum::a#0 = stackidx(char,sum::OFFSET_STACK_A)
  [25] sum::b#0 = stackidx(char,sum::OFFSET_STACK_B)
  [26] sum::return#0 = sum::a#0 + sum::b#0
  to:sum::@return
sum::@return: scope:[sum]  from sum
  [27] stackidx(char,sum::OFFSET_STACK_RETURN_1) = sum::return#0
  [28] return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  [29] phi()
  to:main::@1
main::@1: scope:[main]  from main main::@5
  [30] idx#54 = phi( main/0, main::@5/idx#0 )
  [30] main::i#2 = phi( main/0, main::@5/main::i#1 )
  [31] if(main::i#2<6*SIZEOF_CHAR) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1
  [32] phi()
  [33] call ln
  to:main::@6
main::@6: scope:[main]  from main::@3
  [34] phi()
  [35] call exec
  to:main::@7
main::@7: scope:[main]  from main::@6
  [36] phi()
  [37] call ln
  to:main::@8
main::@8: scope:[main]  from main::@7
  [38] phi()
  [39] call exec
  to:main::@9
main::@9: scope:[main]  from main::@8
  [40] phi()
  [41] call ln
  to:main::@10
main::@10: scope:[main]  from main::@9
  [42] phi()
  [43] call exec
  to:main::@11
main::@11: scope:[main]  from main::@10
  [44] phi()
  [45] call ln
  to:main::@12
main::@12: scope:[main]  from main::@11
  [46] phi()
  [47] call exec
  to:main::@return
main::@return: scope:[main]  from main::@12
  [48] return 
  to:@return
main::@2: scope:[main]  from main::@1
  [49] print::i#0 = INPUT[main::i#2]
  [50] call print
  to:main::@4
main::@4: scope:[main]  from main::@2
  [51] phi()
  [52] call cout
  to:main::@5
main::@5: scope:[main]  from main::@4
  [53] main::i#1 = ++ main::i#2
  to:main::@1

void ln()
ln: scope:[ln]  from main::@11 main::@3 main::@7 main::@9
  [54] line = line + $28
  to:ln::@return
ln::@return: scope:[ln]  from ln
  [55] return 
  to:@return

void exec(char (*collect)(char, char))
exec: scope:[exec]  from main::@10 main::@12 main::@6 main::@8
  [56] exec::collect#10 = phi( main::@10/&max, main::@12/&xor, main::@6/&sum, main::@8/&min )
  [57] call cout
  to:exec::@4
exec::@4: scope:[exec]  from exec
  [58] phi()
  [59] call cout
  to:exec::@5
exec::@5: scope:[exec]  from exec::@4
  [60] phi()
  [61] call cout
  to:exec::@6
exec::@6: scope:[exec]  from exec::@5
  [62] exec::out#0 = *INPUT
  to:exec::@1
exec::@1: scope:[exec]  from exec::@6 exec::@8
  [63] exec::out#2 = phi( exec::@6/exec::out#0, exec::@8/exec::out#1 )
  [63] exec::i#2 = phi( exec::@6/1, exec::@8/exec::i#1 )
  [64] if(exec::i#2<6*SIZEOF_CHAR) goto exec::@2
  to:exec::@return
exec::@return: scope:[exec]  from exec::@1
  [65] return 
  to:@return
exec::@2: scope:[exec]  from exec::@1
  [66] stackpush(char) = exec::out#2
  [67] stackpush(char) = INPUT[exec::i#2]
  [68] callexecute *exec::collect#10 
  sideeffect stackpullbytes(1)
  [70] exec::out#1 = stackpull(char)
  to:exec::@3
exec::@3: scope:[exec]  from exec::@2
  [71] print::i#1 = exec::out#1
  [72] call print
  to:exec::@7
exec::@7: scope:[exec]  from exec::@3
  [73] phi()
  [74] call cout
  to:exec::@8
exec::@8: scope:[exec]  from exec::@7
  [75] exec::i#1 = ++ exec::i#2
  to:exec::@1

void print(char i)
print: scope:[print]  from exec::@3 main::@2
  [76] idx#53 = phi( exec::@3/idx#0, main::@2/idx#54 )
  [76] print::i#2 = phi( exec::@3/print::i#1, main::@2/print::i#0 )
  [77] print::$0 = print::i#2 >> 4
  [78] cout::c#0 = HEX[print::$0]
  [79] call cout
  to:print::@1
print::@1: scope:[print]  from print
  [80] print::$2 = print::i#2 & $f
  [81] cout::c#1 = HEX[print::$2]
  [82] call cout
  to:print::@return
print::@return: scope:[print]  from print::@1
  [83] return 
  to:@return

void cout(char c)
cout: scope:[cout]  from exec exec::@4 exec::@5 exec::@7 main::@4 print print::@1
  [84] idx#27 = phi( exec/0, exec::@4/idx#0, exec::@5/idx#0, exec::@7/idx#0, main::@4/idx#0, print/idx#53, print::@1/idx#0 )
  [84] cout::c#7 = phi( exec/' ', exec::@4/' ', exec::@5/' ', exec::@7/' ', main::@4/' ', print/cout::c#0, print::@1/cout::c#1 )
  [85] line[idx#27] = cout::c#7
  [86] idx#0 = ++ idx#27
  to:cout::@return
cout::@return: scope:[cout]  from cout
  [87] return 
  to:@return
