@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 malloc to:main::@3 main::@3: scope:[main] from main [6] (void*) main::buf1#0 ← (void*)(byte*) malloc::mem#0 [7] call malloc to:main::@4 main::@4: scope:[main] from main::@3 [8] (void*) main::buf2#0 ← (void*)(byte*) malloc::mem#0 to:main::@1 main::@1: scope:[main] from main::@1 main::@4 [9] (byte) main::i#2 ← phi( main::@1/(byte) main::i#1 main::@4/(byte) 0 ) [10] *((byte*)(void*) main::buf1#0 + (byte) main::i#2) ← (byte) main::i#2 [11] (byte~) main::$4 ← (byte) $ff - (byte) main::i#2 [12] *((byte*)(void*) main::buf2#0 + (byte) main::i#2) ← (byte~) main::$4 [13] (byte) main::i#1 ← ++ (byte) main::i#2 [14] if((byte) main::i#1!=(byte) $64) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 [15] phi() [16] call free to:main::@5 main::@5: scope:[main] from main::@2 [17] phi() [18] call free to:main::@6 main::@6: scope:[main] from main::@5 [19] *((const byte*) main::screen) ← *((byte*)(void*) main::buf1#0) [20] *((const byte*) main::screen+(byte) 1) ← *((byte*)(void*) main::buf2#0) to:main::@return main::@return: scope:[main] from main::@6 [21] return to:@return (void()) free((void*) free::ptr) free: scope:[free] from main::@2 main::@5 [22] phi() to:free::@return free::@return: scope:[free] from free [23] return to:@return (void*()) malloc((word) malloc::size) malloc: scope:[malloc] from main main::@3 [24] (byte*) heap_head#7 ← phi( main/(const byte*) HEAP_TOP main::@3/(byte*) heap_head#1 ) [25] (byte*) malloc::mem#0 ← (byte*) heap_head#7 - (byte) $64 [26] (byte*) heap_head#1 ← (byte*) malloc::mem#0 to:malloc::@return malloc::@return: scope:[malloc] from malloc [27] return to:@return