@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()
  [5] call bool_and 
  to:main::@1
main::@1: scope:[main]  from main
  [6] phi()
  [7] call bool_or 
  to:main::@2
main::@2: scope:[main]  from main::@1
  [8] phi()
  [9] call bool_not 
  to:main::@3
main::@3: scope:[main]  from main::@2
  [10] phi()
  [11] call bool_complex 
  to:main::@return
main::@return: scope:[main]  from main::@3
  [12] return 
  to:@return
bool_complex: scope:[bool_complex]  from main::@3
  [13] phi()
  to:bool_complex::@1
bool_complex::@1: scope:[bool_complex]  from bool_complex bool_complex::@3
  [14] (byte) bool_complex::i#2 ← phi( bool_complex/(byte) 0 bool_complex::@3/(byte) bool_complex::i#1 )
  [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a
  [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1
  [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0
  [18] if((bool) bool_complex::o1#0) goto bool_complex::@6
  to:bool_complex::@5
bool_complex::@6: scope:[bool_complex]  from bool_complex::@1
  [19] if((bool) bool_complex::o2#0) goto bool_complex::@2
  to:bool_complex::@5
bool_complex::@5: scope:[bool_complex]  from bool_complex::@1 bool_complex::@6
  [20] if((bool) bool_complex::o1#0) goto bool_complex::@4
  to:bool_complex::@7
bool_complex::@7: scope:[bool_complex]  from bool_complex::@5
  [21] if((bool) bool_complex::o2#0) goto bool_complex::@4
  to:bool_complex::@2
bool_complex::@2: scope:[bool_complex]  from bool_complex::@6 bool_complex::@7
  [22] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*'
  to:bool_complex::@3
bool_complex::@3: scope:[bool_complex]  from bool_complex::@2 bool_complex::@4
  [23] (byte) bool_complex::i#1 ← ++ (byte) bool_complex::i#2
  [24] if((byte) bool_complex::i#1!=(byte) $15) goto bool_complex::@1
  to:bool_complex::@return
bool_complex::@return: scope:[bool_complex]  from bool_complex::@3
  [25] return 
  to:@return
bool_complex::@4: scope:[bool_complex]  from bool_complex::@5 bool_complex::@7
  [26] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) ' '
  to:bool_complex::@3
bool_not: scope:[bool_not]  from main::@2
  [27] phi()
  to:bool_not::@4
bool_not::@4: scope:[bool_not]  from bool_not bool_not::@1 bool_not::@5
  [28] (byte) bool_not::i#7 ← phi( bool_not::@1/(byte) bool_not::i#1 bool_not/(byte) 0 bool_not::@5/(byte) bool_not::i#1 )
  [29] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#7) ← (byte) ' '
  to:bool_not::@3
bool_not::@3: scope:[bool_not]  from bool_not::@2 bool_not::@4
  [30] (byte) bool_not::i#8 ← phi( bool_not::@2/(byte) bool_not::i#1 bool_not::@4/(byte) bool_not::i#7 )
  [31] (byte) bool_not::i#1 ← ++ (byte) bool_not::i#8
  [32] if((byte) bool_not::i#1!=(byte) $15) goto bool_not::@1
  to:bool_not::@return
bool_not::@return: scope:[bool_not]  from bool_not::@3
  [33] return 
  to:@return
bool_not::@1: scope:[bool_not]  from bool_not::@3
  [34] (byte~) bool_not::$6 ← (byte) bool_not::i#1 & (byte) 1
  [35] if((byte) bool_not::i#1<(byte) $a) goto bool_not::@4
  to:bool_not::@5
bool_not::@5: scope:[bool_not]  from bool_not::@1
  [36] if((byte~) bool_not::$6==(byte) 0) goto bool_not::@4
  to:bool_not::@2
bool_not::@2: scope:[bool_not]  from bool_not::@5
  [37] *((const byte*) bool_not::screen#0 + (byte) bool_not::i#1) ← (byte) '*'
  to:bool_not::@3
bool_or: scope:[bool_or]  from main::@1
  [38] phi()
  to:bool_or::@2
bool_or::@2: scope:[bool_or]  from bool_or bool_or::@1 bool_or::@5
  [39] (byte) bool_or::i#6 ← phi( bool_or::@1/(byte) bool_or::i#1 bool_or/(byte) 0 bool_or::@5/(byte) bool_or::i#1 )
  [40] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#6) ← (byte) '*'
  to:bool_or::@3
bool_or::@3: scope:[bool_or]  from bool_or::@2 bool_or::@4
  [41] (byte) bool_or::i#8 ← phi( bool_or::@2/(byte) bool_or::i#6 bool_or::@4/(byte) bool_or::i#1 )
  [42] (byte) bool_or::i#1 ← ++ (byte) bool_or::i#8
  [43] if((byte) bool_or::i#1!=(byte) $15) goto bool_or::@1
  to:bool_or::@return
bool_or::@return: scope:[bool_or]  from bool_or::@3
  [44] return 
  to:@return
bool_or::@1: scope:[bool_or]  from bool_or::@3
  [45] (byte~) bool_or::$5 ← (byte) bool_or::i#1 & (byte) 1
  [46] if((byte) bool_or::i#1<(byte) $a) goto bool_or::@2
  to:bool_or::@5
bool_or::@5: scope:[bool_or]  from bool_or::@1
  [47] if((byte~) bool_or::$5==(byte) 0) goto bool_or::@2
  to:bool_or::@4
bool_or::@4: scope:[bool_or]  from bool_or::@5
  [48] *((const byte*) bool_or::screen#0 + (byte) bool_or::i#1) ← (byte) ' '
  to:bool_or::@3
bool_and: scope:[bool_and]  from main
  [49] phi()
  to:bool_and::@2
bool_and::@2: scope:[bool_and]  from bool_and bool_and::@5
  [50] (byte) bool_and::i#11 ← phi( bool_and::@5/(byte) bool_and::i#1 bool_and/(byte) 0 )
  [51] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#11) ← (byte) '*'
  to:bool_and::@3
bool_and::@3: scope:[bool_and]  from bool_and::@2 bool_and::@4
  [52] (byte) bool_and::i#8 ← phi( bool_and::@2/(byte) bool_and::i#11 bool_and::@4/(byte) bool_and::i#1 )
  [53] (byte) bool_and::i#1 ← ++ (byte) bool_and::i#8
  [54] if((byte) bool_and::i#1!=(byte) $15) goto bool_and::@1
  to:bool_and::@return
bool_and::@return: scope:[bool_and]  from bool_and::@3
  [55] return 
  to:@return
bool_and::@1: scope:[bool_and]  from bool_and::@3
  [56] (byte~) bool_and::$5 ← (byte) bool_and::i#1 & (byte) 1
  [57] if((byte) bool_and::i#1>=(byte) $a) goto bool_and::@4
  to:bool_and::@5
bool_and::@5: scope:[bool_and]  from bool_and::@1
  [58] if((byte~) bool_and::$5==(byte) 0) goto bool_and::@2
  to:bool_and::@4
bool_and::@4: scope:[bool_and]  from bool_and::@1 bool_and::@5
  [59] *((const byte*) bool_and::screen#0 + (byte) bool_and::i#1) ← (byte) ' '
  to:bool_and::@3
