
void main()
main: scope:[main]  from
  [0] phi()
  to:main::@1
main::@1: scope:[main]  from main main::@2
  [1] phi()
  [2] call set_border
  to:main::@2
main::@2: scope:[main]  from main::@1
  [3] phi()
  [4] call set_border
  to:main::@1

__stackcall char fn2()
fn2: scope:[fn2]  from
  [5] phi()
  to:fn2::@return
fn2::@return: scope:[fn2]  from fn2
  [6] stackidx(char,fn2::OFFSET_STACK_RETURN_0) = fn2::return#0
  [7] return 
  to:@return

__stackcall char fn1()
fn1: scope:[fn1]  from
  [8] fn1::return#0 = *RASTER
  to:fn1::@return
fn1::@return: scope:[fn1]  from fn1
  [9] stackidx(char,fn1::OFFSET_STACK_RETURN_0) = fn1::return#0
  [10] return 
  to:@return

void set_border(char (*fn)())
set_border: scope:[set_border]  from main::@1 main::@2
  [11] set_border::fn#2 = phi( main::@1/&fn1, main::@2/&fn2 )
  sideeffect stackpushbytes(1)
  [13] callexecute *set_border::fn#2 
  [14] set_border::$0 = stackpull(char)
  to:set_border::@1
set_border::@1: scope:[set_border]  from set_border
  [15] *BORDER = set_border::$0
  to:set_border::@return
set_border::@return: scope:[set_border]  from set_border::@1
  [16] return 
  to:@return
