@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
main: scope:[main]  from @1
  [4] phi()
  [5] call mulf_init 
  to:main::@4
main::@4: scope:[main]  from main
  asm { sei  }
  to:main::@1
main::@1: scope:[main]  from main::@4 main::@6
  [7] (byte*) print_char_cursor#16 ← phi( main::@4/(byte*) 1024 main::@6/(const byte*) SCREEN#0 )
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [8] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [9] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  [10] call mulf16u 
  [11] (dword) mulf16u::return#0 ← (dword) mulf16u::return#1
  to:main::@5
main::@5: scope:[main]  from main::@3
  [12] (dword) main::r#0 ← (dword) mulf16u::return#0
  [13] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0)
  [14] (dword) print_dword::dw#0 ← (dword) main::r#0
  [15] call print_dword 
  to:main::@6
main::@6: scope:[main]  from main::@5
  [16] phi()
  [17] call print_set_screen 
  to:main::@1
print_set_screen: scope:[print_set_screen]  from main::@6
  [18] phi()
  to:print_set_screen::@return
print_set_screen::@return: scope:[print_set_screen]  from print_set_screen
  [19] return 
  to:@return
print_dword: scope:[print_dword]  from main::@5
  [20] (word) print_word::w#0 ← > (dword) print_dword::dw#0
  [21] call print_word 
  to:print_dword::@1
print_dword::@1: scope:[print_dword]  from print_dword
  [22] (word) print_word::w#1 ← < (dword) print_dword::dw#0
  [23] call print_word 
  to:print_dword::@return
print_dword::@return: scope:[print_dword]  from print_dword::@1
  [24] return 
  to:@return
print_word: scope:[print_word]  from print_dword print_dword::@1
  [25] (byte*) print_char_cursor#34 ← phi( print_dword/(byte*) print_char_cursor#16 print_dword::@1/(byte*) print_char_cursor#10 )
  [25] (word) print_word::w#2 ← phi( print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 )
  [26] (byte) print_byte::b#0 ← > (word) print_word::w#2
  [27] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [28] (byte) print_byte::b#1 ← < (word) print_word::w#2
  [29] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [30] return 
  to:@return
print_byte: scope:[print_byte]  from print_word print_word::@1
  [31] (byte*) print_char_cursor#36 ← phi( print_word/(byte*) print_char_cursor#34 print_word::@1/(byte*) print_char_cursor#10 )
  [31] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
  [32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
  [33] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
  [34] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
  [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
  [37] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [38] return 
  to:@return
print_char: scope:[print_char]  from print_byte print_byte::@1
  [39] (byte*) print_char_cursor#27 ← phi( print_byte/(byte*) print_char_cursor#36 print_byte::@1/(byte*) print_char_cursor#10 )
  [39] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
  [40] *((byte*) print_char_cursor#27) ← (byte) print_char::ch#2
  [41] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#27
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [42] return 
  to:@return
mulf16u: scope:[mulf16u]  from main::@3
  [43] *((const word*) mulf16u::memA#0) ← (const word) main::a#0
  [44] *((const word*) mulf16u::memB#0) ← (const word) main::b#0
  asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !:  }
  [46] (dword) mulf16u::return#1 ← *((const dword*) mulf16u::memR#0)
  to:mulf16u::@return
mulf16u::@return: scope:[mulf16u]  from mulf16u
  [47] return 
  to:@return
mulf_init: scope:[mulf_init]  from main
  [48] phi()
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@3
  [49] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
  [49] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
  [49] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
  [49] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
  [49] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
  [50] if((byte*) mulf_init::sqr1_lo#2!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@2
  to:mulf_init::@5
mulf_init::@5: scope:[mulf_init]  from mulf_init::@1 mulf_init::@8
  [51] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff )
  [51] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte[$200]) mulf_sqr2_hi#0 )
  [51] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 )
  [51] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte[$200]) mulf_sqr2_lo#0 )
  [52] if((byte*) mulf_init::sqr2_lo#2!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@6
  to:mulf_init::@7
mulf_init::@7: scope:[mulf_init]  from mulf_init::@5
  [53] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100)
  [54] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100)
  to:mulf_init::@return
mulf_init::@return: scope:[mulf_init]  from mulf_init::@7
  [55] return 
  to:@return
mulf_init::@6: scope:[mulf_init]  from mulf_init::@5
  [56] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
  [57] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
  [58] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  [59] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  [60] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9
  to:mulf_init::@8
mulf_init::@9: scope:[mulf_init]  from mulf_init::@6
  [61] phi()
  to:mulf_init::@8
mulf_init::@8: scope:[mulf_init]  from mulf_init::@6 mulf_init::@9
  [62] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 )
  [63] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
  to:mulf_init::@5
mulf_init::@2: scope:[mulf_init]  from mulf_init::@1
  [64] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  [65] (byte~) mulf_init::$9 ← (byte) mulf_init::c#1 & (byte) 1
  [66] if((byte~) mulf_init::$9!=(byte) 0) goto mulf_init::@3
  to:mulf_init::@4
mulf_init::@4: scope:[mulf_init]  from mulf_init::@2
  [67] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
  [68] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
  to:mulf_init::@3
mulf_init::@3: scope:[mulf_init]  from mulf_init::@2 mulf_init::@4
  [69] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 )
  [69] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 )
  [70] (byte~) mulf_init::$12 ← < (word) mulf_init::sqr#3
  [71] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$12
  [72] (byte~) mulf_init::$13 ← > (word) mulf_init::sqr#3
  [73] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$13
  [74] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  [75] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  [76] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
  to:mulf_init::@1
