
void main()
main: scope:[main]  from
  [0] phi()
  [1] call mul16u
  [2] mul16u::return#2 = mul16u::res#2
  to:main::@1
main::@1: scope:[main]  from main
  [3] main::result#0 = mul16u::return#2
  [4] main::kaputt#0 = word0  main::result#0
  [5] main::$2 = byte0  main::kaputt#0
  [6] *BORDER_COLOR = main::$2
  [7] main::$3 = byte1  main::kaputt#0
  [8] *BG_COLOR = main::$3
  to:main::@return
main::@return: scope:[main]  from main::@1
  [9] return 
  to:@return

unsigned long mul16u(unsigned int a , unsigned int b)
mul16u: scope:[mul16u]  from main
  [10] phi()
  to:mul16u::@1
mul16u::@1: scope:[mul16u]  from mul16u mul16u::@3
  [11] mul16u::mb#2 = phi( mul16u/(unsigned long)mul16u::b#0, mul16u::@3/mul16u::mb#1 )
  [11] mul16u::res#2 = phi( mul16u/0, mul16u::@3/mul16u::res#6 )
  [11] mul16u::a#2 = phi( mul16u/4, mul16u::@3/mul16u::a#0 )
  [12] if(mul16u::a#2!=0) goto mul16u::@2
  to:mul16u::@return
mul16u::@return: scope:[mul16u]  from mul16u::@1
  [13] return 
  to:@return
mul16u::@2: scope:[mul16u]  from mul16u::@1
  [14] mul16u::$1 = mul16u::a#2 & 1
  [15] if(mul16u::$1==0) goto mul16u::@3
  to:mul16u::@4
mul16u::@4: scope:[mul16u]  from mul16u::@2
  [16] mul16u::res#1 = mul16u::res#2 + mul16u::mb#2
  to:mul16u::@3
mul16u::@3: scope:[mul16u]  from mul16u::@2 mul16u::@4
  [17] mul16u::res#6 = phi( mul16u::@2/mul16u::res#2, mul16u::@4/mul16u::res#1 )
  [18] mul16u::a#0 = mul16u::a#2 >> 1
  [19] mul16u::mb#1 = mul16u::mb#2 << 1
  to:mul16u::@1
