@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() to:main::@1 main::@1: scope:[main] from main main::@4 [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@4/(byte) main::i#1 ) [6] (byte) cond::b#0 ← (byte) main::i#2 [7] call cond [8] (bool) cond::return#0 ← (bool) cond::return#1 to:main::@5 main::@5: scope:[main] from main::@1 [9] (bool~) main::$0 ← (bool) cond::return#0 [10] if((bool~) main::$0) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 [11] (byte) m2::i#0 ← (byte) main::i#2 [12] call m2 [13] (byte) m2::return#0 ← (byte) m2::return#1 to:main::@7 main::@7: scope:[main] from main::@3 [14] (byte~) main::$2 ← (byte) m2::return#0 to:main::@4 main::@4: scope:[main] from main::@6 main::@7 [15] (byte~) main::$5 ← phi( main::@6/(byte~) main::$4 main::@7/(byte~) main::$2 ) [16] *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte~) main::$5 [17] (byte) main::i#1 ← ++ (byte) main::i#2 [18] if((byte) main::i#1!=(byte) $a) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 [19] return to:@return main::@2: scope:[main] from main::@5 [20] (byte) m1::i#0 ← (byte) main::i#2 [21] call m1 [22] (byte) m1::return#0 ← (byte) m1::return#1 to:main::@6 main::@6: scope:[main] from main::@2 [23] (byte~) main::$4 ← (byte) m1::return#0 to:main::@4 (byte()) m1((byte) m1::i) m1: scope:[m1] from main::@2 [24] (byte) m1::return#1 ← (byte) 5 + (byte) m1::i#0 to:m1::@return m1::@return: scope:[m1] from m1 [25] return to:@return (byte()) m2((byte) m2::i) m2: scope:[m2] from main::@3 [26] (byte) m2::return#1 ← (byte) $a + (byte) m2::i#0 to:m2::@return m2::@return: scope:[m2] from m2 [27] return to:@return (bool()) cond((byte) cond::b) cond: scope:[cond] from main::@1 [28] (bool) cond::return#1 ← (byte) cond::b#0 < (byte) 5 to:cond::@return cond::@return: scope:[cond] from cond [29] return to:@return