
void main()
main: scope:[main]  from
  [0] phi()
  [1] 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::@5
  [3] print_char_cursor#15 = phi( main::@4/(char *) 1024, main::@5/SCREEN )
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [4] if(*RASTER!=$ff) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [5] *BORDER_COLOR = ++ *BORDER_COLOR
  [6] call mulf16u
  [7] mulf16u::return#0 = mulf16u::return#1
  to:main::@5
main::@5: scope:[main]  from main::@3
  [8] main::r#0 = mulf16u::return#0
  [9] *BORDER_COLOR = -- *BORDER_COLOR
  [10] print_ulong::dw#0 = main::r#0
  [11] call print_ulong
  to:main::@1

void mulf_init()
mulf_init: scope:[mulf_init]  from main
  [12] phi()
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@3
  [13] mulf_init::x_2#3 = phi( mulf_init/0, mulf_init::@3/mulf_init::x_2#2 )
  [13] mulf_init::sqr1_hi#2 = phi( mulf_init/mulf_sqr1_hi+1, mulf_init::@3/mulf_init::sqr1_hi#1 )
  [13] mulf_init::sqr#4 = phi( mulf_init/0, mulf_init::@3/mulf_init::sqr#1 )
  [13] mulf_init::c#2 = phi( mulf_init/0, mulf_init::@3/mulf_init::c#1 )
  [13] mulf_init::sqr1_lo#2 = phi( mulf_init/mulf_sqr1_lo+1, mulf_init::@3/mulf_init::sqr1_lo#1 )
  [14] if(mulf_init::sqr1_lo#2!=mulf_sqr1_lo+$200) goto mulf_init::@2
  to:mulf_init::@5
mulf_init::@5: scope:[mulf_init]  from mulf_init::@1 mulf_init::@8
  [15] mulf_init::dir#2 = phi( mulf_init::@1/$ff, mulf_init::@8/mulf_init::dir#4 )
  [15] mulf_init::sqr2_hi#2 = phi( mulf_init::@1/mulf_sqr2_hi, mulf_init::@8/mulf_init::sqr2_hi#1 )
  [15] mulf_init::x_255#2 = phi( mulf_init::@1/-1, mulf_init::@8/mulf_init::x_255#1 )
  [15] mulf_init::sqr2_lo#2 = phi( mulf_init::@1/mulf_sqr2_lo, mulf_init::@8/mulf_init::sqr2_lo#1 )
  [16] if(mulf_init::sqr2_lo#2!=mulf_sqr2_lo+$1ff) goto mulf_init::@6
  to:mulf_init::@7
mulf_init::@7: scope:[mulf_init]  from mulf_init::@5
  [17] *(mulf_sqr2_lo+$1ff) = *(mulf_sqr1_lo+$100)
  [18] *(mulf_sqr2_hi+$1ff) = *(mulf_sqr1_hi+$100)
  to:mulf_init::@return
mulf_init::@return: scope:[mulf_init]  from mulf_init::@7
  [19] return 
  to:@return
mulf_init::@6: scope:[mulf_init]  from mulf_init::@5
  [20] *mulf_init::sqr2_lo#2 = mulf_sqr1_lo[mulf_init::x_255#2]
  [21] *mulf_init::sqr2_hi#2 = mulf_sqr1_hi[mulf_init::x_255#2]
  [22] mulf_init::sqr2_hi#1 = ++ mulf_init::sqr2_hi#2
  [23] mulf_init::x_255#1 = mulf_init::x_255#2 + mulf_init::dir#2
  [24] if(mulf_init::x_255#1!=0) goto mulf_init::@9
  to:mulf_init::@8
mulf_init::@9: scope:[mulf_init]  from mulf_init::@6
  [25] phi()
  to:mulf_init::@8
mulf_init::@8: scope:[mulf_init]  from mulf_init::@6 mulf_init::@9
  [26] mulf_init::dir#4 = phi( mulf_init::@6/1, mulf_init::@9/mulf_init::dir#2 )
  [27] mulf_init::sqr2_lo#1 = ++ mulf_init::sqr2_lo#2
  to:mulf_init::@5
mulf_init::@2: scope:[mulf_init]  from mulf_init::@1
  [28] mulf_init::c#1 = ++ mulf_init::c#2
  [29] mulf_init::$1 = mulf_init::c#1 & 1
  [30] if(mulf_init::$1!=0) goto mulf_init::@3
  to:mulf_init::@4
mulf_init::@4: scope:[mulf_init]  from mulf_init::@2
  [31] mulf_init::x_2#1 = ++ mulf_init::x_2#3
  [32] mulf_init::sqr#2 = ++ mulf_init::sqr#4
  to:mulf_init::@3
mulf_init::@3: scope:[mulf_init]  from mulf_init::@2 mulf_init::@4
  [33] mulf_init::x_2#2 = phi( mulf_init::@2/mulf_init::x_2#3, mulf_init::@4/mulf_init::x_2#1 )
  [33] mulf_init::sqr#3 = phi( mulf_init::@2/mulf_init::sqr#4, mulf_init::@4/mulf_init::sqr#2 )
  [34] mulf_init::$4 = byte0  mulf_init::sqr#3
  [35] *mulf_init::sqr1_lo#2 = mulf_init::$4
  [36] mulf_init::$5 = byte1  mulf_init::sqr#3
  [37] *mulf_init::sqr1_hi#2 = mulf_init::$5
  [38] mulf_init::sqr1_hi#1 = ++ mulf_init::sqr1_hi#2
  [39] mulf_init::sqr#1 = mulf_init::sqr#3 + mulf_init::x_2#2
  [40] mulf_init::sqr1_lo#1 = ++ mulf_init::sqr1_lo#2
  to:mulf_init::@1

unsigned long mulf16u(unsigned int a , unsigned int b)
mulf16u: scope:[mulf16u]  from main::@3
  [41] *mulf16u::memA = main::a
  [42] *mulf16u::memB = main::b
  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 !:  }
  [44] mulf16u::return#1 = *mulf16u::memR
  to:mulf16u::@return
mulf16u::@return: scope:[mulf16u]  from mulf16u
  [45] return 
  to:@return

void print_ulong(unsigned long dw)
print_ulong: scope:[print_ulong]  from main::@5
  [46] print_uint::w#0 = word1  print_ulong::dw#0
  [47] call print_uint
  to:print_ulong::@1
print_ulong::@1: scope:[print_ulong]  from print_ulong
  [48] print_uint::w#1 = word0  print_ulong::dw#0
  [49] call print_uint
  to:print_ulong::@return
print_ulong::@return: scope:[print_ulong]  from print_ulong::@1
  [50] return 
  to:@return

void print_uint(unsigned int w)
print_uint: scope:[print_uint]  from print_ulong print_ulong::@1
  [51] print_char_cursor#36 = phi( print_ulong/print_char_cursor#15, print_ulong::@1/print_char_cursor#10 )
  [51] print_uint::w#2 = phi( print_ulong/print_uint::w#0, print_ulong::@1/print_uint::w#1 )
  [52] print_uchar::b#0 = byte1  print_uint::w#2
  [53] call print_uchar
  to:print_uint::@1
print_uint::@1: scope:[print_uint]  from print_uint
  [54] print_uchar::b#1 = byte0  print_uint::w#2
  [55] call print_uchar
  to:print_uint::@return
print_uint::@return: scope:[print_uint]  from print_uint::@1
  [56] return 
  to:@return

void print_uchar(char b)
print_uchar: scope:[print_uchar]  from print_uint print_uint::@1
  [57] print_char_cursor#38 = phi( print_uint/print_char_cursor#36, print_uint::@1/print_char_cursor#10 )
  [57] print_uchar::b#2 = phi( print_uint/print_uchar::b#0, print_uint::@1/print_uchar::b#1 )
  [58] print_uchar::$0 = print_uchar::b#2 >> 4
  [59] print_char::ch#0 = print_hextab[print_uchar::$0]
  [60] call print_char
  to:print_uchar::@1
print_uchar::@1: scope:[print_uchar]  from print_uchar
  [61] print_uchar::$2 = print_uchar::b#2 & $f
  [62] print_char::ch#1 = print_hextab[print_uchar::$2]
  [63] call print_char
  to:print_uchar::@return
print_uchar::@return: scope:[print_uchar]  from print_uchar::@1
  [64] return 
  to:@return

void print_char(char ch)
print_char: scope:[print_char]  from print_uchar print_uchar::@1
  [65] print_char_cursor#28 = phi( print_uchar/print_char_cursor#38, print_uchar::@1/print_char_cursor#10 )
  [65] print_char::ch#2 = phi( print_uchar/print_char::ch#0, print_uchar::@1/print_char::ch#1 )
  [66] *print_char_cursor#28 = print_char::ch#2
  [67] print_char_cursor#10 = ++ print_char_cursor#28
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [68] return 
  to:@return
