@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
