Inlined call call mulf8s_prepare (signed byte) mulf8s::a 

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
  (byte*) print_line_cursor#0 ← (byte*) print_screen#0
  (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
  to:@12
print_str: scope:[print_str]  from mul8s_compare::@11 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@11 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@5 mulf_tables_cmp::@7
  (byte*) print_char_cursor#152 ← phi( mul8s_compare::@11/(byte*) print_char_cursor#149 mul8s_error/(byte*) print_char_cursor#150 mul8s_error::@2/(byte*) print_char_cursor#55 mul8s_error::@4/(byte*) print_char_cursor#57 mul8s_error::@6/(byte*) print_char_cursor#59 mul8s_error::@8/(byte*) print_char_cursor#61 mul8u_compare::@11/(byte*) print_char_cursor#146 mul8u_error/(byte*) print_char_cursor#147 mul8u_error::@2/(byte*) print_char_cursor#39 mul8u_error::@4/(byte*) print_char_cursor#41 mul8u_error::@6/(byte*) print_char_cursor#43 mul8u_error::@8/(byte*) print_char_cursor#45 mulf_tables_cmp::@3/(byte*) print_char_cursor#143 mulf_tables_cmp::@5/(byte*) print_char_cursor#144 mulf_tables_cmp::@7/(byte*) print_char_cursor#28 )
  (byte*) print_str::str#18 ← phi( mul8s_compare::@11/(byte*) print_str::str#10 mul8s_error/(byte*) print_str::str#11 mul8s_error::@2/(byte*) print_str::str#12 mul8s_error::@4/(byte*) print_str::str#13 mul8s_error::@6/(byte*) print_str::str#14 mul8s_error::@8/(byte*) print_str::str#15 mul8u_compare::@11/(byte*) print_str::str#4 mul8u_error/(byte*) print_str::str#5 mul8u_error::@2/(byte*) print_str::str#6 mul8u_error::@4/(byte*) print_str::str#7 mul8u_error::@6/(byte*) print_str::str#8 mul8u_error::@8/(byte*) print_str::str#9 mulf_tables_cmp::@3/(byte*) print_str::str#1 mulf_tables_cmp::@5/(byte*) print_str::str#3 mulf_tables_cmp::@7/(byte*) print_str::str#2 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 )
  (byte*) print_str::str#16 ← phi( print_str/(byte*) print_str::str#18 print_str::@2/(byte*) print_str::str#0 )
  (bool~) print_str::$0 ← *((byte*) print_str::str#16) != (byte) '@'
  if((bool~) print_str::$0) goto print_str::@2
  to:print_str::@return
print_str::@2: scope:[print_str]  from print_str::@1
  (byte*) print_char_cursor#67 ← phi( print_str::@1/(byte*) print_char_cursor#132 )
  (byte*) print_str::str#17 ← phi( print_str::@1/(byte*) print_str::str#16 )
  *((byte*) print_char_cursor#67) ← *((byte*) print_str::str#17)
  (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#67
  (byte*) print_str::str#0 ← ++ (byte*) print_str::str#17
  to:print_str::@1
print_str::@return: scope:[print_str]  from print_str::@1
  (byte*) print_char_cursor#68 ← phi( print_str::@1/(byte*) print_char_cursor#132 )
  (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#68
  return 
  to:@return
print_ln: scope:[print_ln]  from mul8s_compare::@16 mul8s_error::@10 mul8u_compare::@16 mul8u_error::@10 mulf_tables_cmp::@10
  (byte*) print_char_cursor#133 ← phi( mul8s_compare::@16/(byte*) print_char_cursor#52 mul8s_error::@10/(byte*) print_char_cursor#63 mul8u_compare::@16/(byte*) print_char_cursor#36 mul8u_error::@10/(byte*) print_char_cursor#47 mulf_tables_cmp::@10/(byte*) print_char_cursor#32 )
  (byte*) print_line_cursor#45 ← phi( mul8s_compare::@16/(byte*) print_line_cursor#54 mul8s_error::@10/(byte*) print_line_cursor#55 mul8u_compare::@16/(byte*) print_line_cursor#51 mul8u_error::@10/(byte*) print_line_cursor#52 mulf_tables_cmp::@10/(byte*) print_line_cursor#49 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  (byte*) print_char_cursor#69 ← phi( print_ln/(byte*) print_char_cursor#133 print_ln::@1/(byte*) print_char_cursor#69 )
  (byte*) print_line_cursor#23 ← phi( print_ln/(byte*) print_line_cursor#45 print_ln::@1/(byte*) print_line_cursor#1 )
  (byte*~) print_ln::$0 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0
  (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#69
  if((bool~) print_ln::$1) goto print_ln::@1
  to:print_ln::@2
print_ln::@2: scope:[print_ln]  from print_ln::@1
  (byte*) print_line_cursor#24 ← phi( print_ln::@1/(byte*) print_line_cursor#1 )
  (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#24
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@2
  (byte*) print_char_cursor#70 ← phi( print_ln::@2/(byte*) print_char_cursor#3 )
  (byte*) print_line_cursor#25 ← phi( print_ln::@2/(byte*) print_line_cursor#24 )
  (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#25
  (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#70
  return 
  to:@return
print_sword: scope:[print_sword]  from mul8s_error::@5 mul8s_error::@7 mul8s_error::@9
  (byte*) print_char_cursor#153 ← phi( mul8s_error::@5/(byte*) print_char_cursor#58 mul8s_error::@7/(byte*) print_char_cursor#60 mul8s_error::@9/(byte*) print_char_cursor#62 )
  (signed word) print_sword::w#4 ← phi( mul8s_error::@5/(signed word) print_sword::w#1 mul8s_error::@7/(signed word) print_sword::w#2 mul8s_error::@9/(signed word) print_sword::w#3 )
  (bool~) print_sword::$0 ← (signed word) print_sword::w#4 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) print_sword::$1 ← ! (bool~) print_sword::$0
  if((bool~) print_sword::$1) goto print_sword::@1
  to:print_sword::@2
print_sword::@1: scope:[print_sword]  from print_sword print_sword::@4
  (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#153 print_sword::@4/(byte*) print_char_cursor#6 )
  (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#4 print_sword::@4/(signed word) print_sword::w#0 )
  (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w#5
  (word) print_word::w#0 ← (word~) print_sword::$4
  call print_word 
  to:print_sword::@3
print_sword::@3: scope:[print_sword]  from print_sword::@1
  (byte*) print_char_cursor#71 ← phi( print_sword::@1/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#71
  to:print_sword::@return
print_sword::@2: scope:[print_sword]  from print_sword
  (signed word) print_sword::w#7 ← phi( print_sword/(signed word) print_sword::w#4 )
  (byte*) print_char_cursor#135 ← phi( print_sword/(byte*) print_char_cursor#153 )
  (byte) print_char::ch#0 ← (byte) '-'
  call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@2
  (signed word) print_sword::w#6 ← phi( print_sword::@2/(signed word) print_sword::w#7 )
  (byte*) print_char_cursor#72 ← phi( print_sword::@2/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#72
  (signed word~) print_sword::$3 ← - (signed word) print_sword::w#6
  (signed word) print_sword::w#0 ← (signed word~) print_sword::$3
  to:print_sword::@1
print_sword::@return: scope:[print_sword]  from print_sword::@3
  (byte*) print_char_cursor#73 ← phi( print_sword::@3/(byte*) print_char_cursor#5 )
  (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#73
  return 
  to:@return
print_sbyte: scope:[print_sbyte]  from mul8s_error::@1 mul8s_error::@3
  (byte*) print_char_cursor#154 ← phi( mul8s_error::@1/(byte*) print_char_cursor#54 mul8s_error::@3/(byte*) print_char_cursor#56 )
  (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 )
  (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#3 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) print_sbyte::$0) goto print_sbyte::@1
  to:print_sbyte::@3
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte
  (signed byte) print_sbyte::b#6 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 )
  (byte*) print_char_cursor#136 ← phi( print_sbyte/(byte*) print_char_cursor#154 )
  (byte) print_char::ch#1 ← (byte) '-'
  call print_char 
  to:print_sbyte::@5
print_sbyte::@5: scope:[print_sbyte]  from print_sbyte::@1
  (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@1/(signed byte) print_sbyte::b#6 )
  (byte*) print_char_cursor#74 ← phi( print_sbyte::@1/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#74
  (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b#4
  (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$3
  to:print_sbyte::@2
print_sbyte::@3: scope:[print_sbyte]  from print_sbyte
  (signed byte) print_sbyte::b#8 ← phi( print_sbyte/(signed byte) print_sbyte::b#3 )
  (byte*) print_char_cursor#137 ← phi( print_sbyte/(byte*) print_char_cursor#154 )
  (byte) print_char::ch#2 ← (byte) ' '
  call print_char 
  to:print_sbyte::@6
print_sbyte::@6: scope:[print_sbyte]  from print_sbyte::@3
  (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@3/(signed byte) print_sbyte::b#8 )
  (byte*) print_char_cursor#75 ← phi( print_sbyte::@3/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#75
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@5 print_sbyte::@6
  (byte*) print_char_cursor#138 ← phi( print_sbyte::@5/(byte*) print_char_cursor#8 print_sbyte::@6/(byte*) print_char_cursor#9 )
  (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@6/(signed byte) print_sbyte::b#7 )
  (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b#5
  (byte) print_byte::b#0 ← (byte~) print_sbyte::$4
  call print_byte 
  to:print_sbyte::@7
print_sbyte::@7: scope:[print_sbyte]  from print_sbyte::@2
  (byte*) print_char_cursor#76 ← phi( print_sbyte::@2/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#76
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@7
  (byte*) print_char_cursor#77 ← phi( print_sbyte::@7/(byte*) print_char_cursor#10 )
  (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#77
  return 
  to:@return
print_word: scope:[print_word]  from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@6 mulf_tables_cmp::@8 print_sword::@1
  (byte*) print_char_cursor#139 ← phi( mul8u_error::@5/(byte*) print_char_cursor#42 mul8u_error::@7/(byte*) print_char_cursor#44 mul8u_error::@9/(byte*) print_char_cursor#46 mulf_tables_cmp::@6/(byte*) print_char_cursor#27 mulf_tables_cmp::@8/(byte*) print_char_cursor#29 print_sword::@1/(byte*) print_char_cursor#134 )
  (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@6/(word) print_word::w#1 mulf_tables_cmp::@8/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 )
  (byte~) print_word::$0 ← > (word) print_word::w#6
  (byte) print_byte::b#1 ← (byte~) print_word::$0
  call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  (word) print_word::w#7 ← phi( print_word/(word) print_word::w#6 )
  (byte*) print_char_cursor#78 ← phi( print_word/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#78
  (byte~) print_word::$2 ← < (word) print_word::w#7
  (byte) print_byte::b#2 ← (byte~) print_word::$2
  call print_byte 
  to:print_word::@2
print_word::@2: scope:[print_word]  from print_word::@1
  (byte*) print_char_cursor#79 ← phi( print_word::@1/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#79
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@2
  (byte*) print_char_cursor#80 ← phi( print_word::@2/(byte*) print_char_cursor#13 )
  (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#80
  return 
  to:@return
@12: scope:[]  from @begin
  (byte*) print_screen#9 ← phi( @begin/(byte*) print_screen#0 )
  (byte*) print_char_cursor#176 ← phi( @begin/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#89 ← phi( @begin/(byte*) print_line_cursor#0 )
  (byte[]) print_hextab#0 ← (const string) $0
  to:@24
print_byte: scope:[print_byte]  from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1
  (byte*) print_char_cursor#140 ← phi( mul8u_error::@1/(byte*) print_char_cursor#38 mul8u_error::@3/(byte*) print_char_cursor#40 print_sbyte::@2/(byte*) print_char_cursor#138 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#12 )
  (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 )
  (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0)
  call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  (byte) print_byte::b#6 ← phi( print_byte/(byte) print_byte::b#5 )
  (byte*) print_char_cursor#81 ← phi( print_byte/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#81
  (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15
  (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$2)
  call print_char 
  to:print_byte::@2
print_byte::@2: scope:[print_byte]  from print_byte::@1
  (byte*) print_char_cursor#82 ← phi( print_byte::@1/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#82
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@2
  (byte*) print_char_cursor#83 ← phi( print_byte::@2/(byte*) print_char_cursor#16 )
  (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#83
  return 
  to:@return
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2
  (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#140 print_byte::@1/(byte*) print_char_cursor#15 print_sbyte::@1/(byte*) print_char_cursor#136 print_sbyte::@3/(byte*) print_char_cursor#137 print_sword::@2/(byte*) print_char_cursor#135 )
  (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) print_char::ch#1 print_sbyte::@3/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 )
  *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5
  (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  (byte*) print_char_cursor#85 ← phi( print_char/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#85
  return 
  to:@return
print_cls: scope:[print_cls]  from main
  (byte*) print_screen#1 ← phi( main/(byte*) print_screen#4 )
  (byte*) print_cls::sc#0 ← (byte*) print_screen#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  (byte*) print_screen#2 ← phi( print_cls/(byte*) print_screen#1 print_cls::@1/(byte*) print_screen#2 )
  (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 )
  *((byte*) print_cls::sc#2) ← (byte) ' '
  (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
  (byte*~) print_cls::$0 ← (byte*) print_screen#2 + (word/signed word/dword/signed dword) 1000
  (bool~) print_cls::$1 ← (byte*) print_cls::sc#1 != (byte*~) print_cls::$0
  if((bool~) print_cls::$1) goto print_cls::@1
  to:print_cls::@2
print_cls::@2: scope:[print_cls]  from print_cls::@1
  (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 )
  (byte*) print_line_cursor#3 ← (byte*) print_screen#3
  (byte*) print_char_cursor#20 ← (byte*) print_line_cursor#3
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@2
  (byte*) print_char_cursor#86 ← phi( print_cls::@2/(byte*) print_char_cursor#20 )
  (byte*) print_line_cursor#26 ← phi( print_cls::@2/(byte*) print_line_cursor#3 )
  (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#26
  (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#86
  return 
  to:@return
mul8u: scope:[mul8u]  from mul8s mul8u_compare::@13
  (byte) mul8u::a#6 ← phi( mul8s/(byte) mul8u::a#1 mul8u_compare::@13/(byte) mul8u::a#2 )
  (byte) mul8u::b#2 ← phi( mul8s/(byte) mul8u::b#0 mul8u_compare::@13/(byte) mul8u::b#1 )
  (word) mul8u::res#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2
  to:mul8u::@1
mul8u::@1: scope:[mul8u]  from mul8u mul8u::@4
  (word) mul8u::mb#5 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 )
  (word) mul8u::res#4 ← phi( mul8u/(word) mul8u::res#0 mul8u::@4/(word) mul8u::res#6 )
  (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 )
  (bool~) mul8u::$0 ← (byte) mul8u::a#3 != (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) mul8u::$0) goto mul8u::@2
  to:mul8u::@3
mul8u::@2: scope:[mul8u]  from mul8u::@1
  (word) mul8u::res#5 ← phi( mul8u::@1/(word) mul8u::res#4 )
  (word) mul8u::mb#4 ← phi( mul8u::@1/(word) mul8u::mb#5 )
  (byte) mul8u::a#4 ← phi( mul8u::@1/(byte) mul8u::a#3 )
  (byte~) mul8u::$1 ← (byte) mul8u::a#4 & (byte/signed byte/word/signed word/dword/signed dword) 1
  (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mul8u::$3 ← ! (bool~) mul8u::$2
  if((bool~) mul8u::$3) goto mul8u::@4
  to:mul8u::@7
mul8u::@3: scope:[mul8u]  from mul8u::@1
  (word) mul8u::res#2 ← phi( mul8u::@1/(word) mul8u::res#4 )
  (word) mul8u::return#0 ← (word) mul8u::res#2
  to:mul8u::@return
mul8u::@4: scope:[mul8u]  from mul8u::@2 mul8u::@7
  (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#5 mul8u::@7/(word) mul8u::res#1 )
  (word) mul8u::mb#2 ← phi( mul8u::@2/(word) mul8u::mb#4 mul8u::@7/(word) mul8u::mb#3 )
  (byte) mul8u::a#5 ← phi( mul8u::@2/(byte) mul8u::a#4 mul8u::@7/(byte) mul8u::a#7 )
  (byte~) mul8u::$5 ← (byte) mul8u::a#5 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) mul8u::a#0 ← (byte~) mul8u::$5
  (word~) mul8u::$6 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) mul8u::mb#1 ← (word~) mul8u::$6
  to:mul8u::@1
mul8u::@7: scope:[mul8u]  from mul8u::@2
  (byte) mul8u::a#7 ← phi( mul8u::@2/(byte) mul8u::a#4 )
  (word) mul8u::mb#3 ← phi( mul8u::@2/(word) mul8u::mb#4 )
  (word) mul8u::res#3 ← phi( mul8u::@2/(word) mul8u::res#5 )
  (word~) mul8u::$4 ← (word) mul8u::res#3 + (word) mul8u::mb#3
  (word) mul8u::res#1 ← (word~) mul8u::$4
  to:mul8u::@4
mul8u::@return: scope:[mul8u]  from mul8u::@3
  (word) mul8u::return#4 ← phi( mul8u::@3/(word) mul8u::return#0 )
  (word) mul8u::return#1 ← (word) mul8u::return#4
  return 
  to:@return
mul8s: scope:[mul8s]  from mul8s_compare::@13
  (signed byte) mul8s::b#1 ← phi( mul8s_compare::@13/(signed byte) mul8s::b#0 )
  (signed byte) mul8s::a#1 ← phi( mul8s_compare::@13/(signed byte) mul8s::a#0 )
  (byte~) mul8s::$0 ← ((byte)) (signed byte) mul8s::a#1
  (byte~) mul8s::$1 ← ((byte)) (signed byte) mul8s::b#1
  (byte) mul8u::a#1 ← (byte~) mul8s::$0
  (byte) mul8u::b#0 ← (byte~) mul8s::$1
  call mul8u 
  (word) mul8u::return#2 ← (word) mul8u::return#1
  to:mul8s::@6
mul8s::@6: scope:[mul8s]  from mul8s
  (signed byte) mul8s::b#4 ← phi( mul8s/(signed byte) mul8s::b#1 )
  (signed byte) mul8s::a#2 ← phi( mul8s/(signed byte) mul8s::a#1 )
  (word) mul8u::return#5 ← phi( mul8s/(word) mul8u::return#2 )
  (word~) mul8s::$2 ← (word) mul8u::return#5
  (word) mul8s::m#0 ← (word~) mul8s::$2
  (bool~) mul8s::$3 ← (signed byte) mul8s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mul8s::$4 ← ! (bool~) mul8s::$3
  if((bool~) mul8s::$4) goto mul8s::@1
  to:mul8s::@3
mul8s::@1: scope:[mul8s]  from mul8s::@3 mul8s::@6
  (signed byte) mul8s::a#4 ← phi( mul8s::@3/(signed byte) mul8s::a#5 mul8s::@6/(signed byte) mul8s::a#2 )
  (word) mul8s::m#6 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 )
  (signed byte) mul8s::b#2 ← phi( mul8s::@3/(signed byte) mul8s::b#3 mul8s::@6/(signed byte) mul8s::b#4 )
  (bool~) mul8s::$9 ← (signed byte) mul8s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mul8s::$10 ← ! (bool~) mul8s::$9
  if((bool~) mul8s::$10) goto mul8s::@2
  to:mul8s::@4
mul8s::@3: scope:[mul8s]  from mul8s::@6
  (signed byte) mul8s::a#5 ← phi( mul8s::@6/(signed byte) mul8s::a#2 )
  (signed byte) mul8s::b#3 ← phi( mul8s::@6/(signed byte) mul8s::b#4 )
  (word) mul8s::m#3 ← phi( mul8s::@6/(word) mul8s::m#0 )
  (byte~) mul8s::$6 ← > (word) mul8s::m#3
  (byte~) mul8s::$7 ← ((byte)) (signed byte) mul8s::b#3
  (byte~) mul8s::$8 ← (byte~) mul8s::$6 - (byte~) mul8s::$7
  (byte~) mul8s::$16 ← (byte~) mul8s::$8
  (word) mul8s::m#1 ← (word) mul8s::m#3 hi= (byte~) mul8s::$16
  to:mul8s::@1
mul8s::@2: scope:[mul8s]  from mul8s::@1 mul8s::@4
  (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#6 mul8s::@4/(word) mul8s::m#2 )
  (signed word~) mul8s::$15 ← ((signed word)) (word) mul8s::m#4
  (signed word) mul8s::return#0 ← (signed word~) mul8s::$15
  to:mul8s::@return
mul8s::@4: scope:[mul8s]  from mul8s::@1
  (signed byte) mul8s::a#3 ← phi( mul8s::@1/(signed byte) mul8s::a#4 )
  (word) mul8s::m#5 ← phi( mul8s::@1/(word) mul8s::m#6 )
  (byte~) mul8s::$12 ← > (word) mul8s::m#5
  (byte~) mul8s::$13 ← ((byte)) (signed byte) mul8s::a#3
  (byte~) mul8s::$14 ← (byte~) mul8s::$12 - (byte~) mul8s::$13
  (byte~) mul8s::$17 ← (byte~) mul8s::$14
  (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17
  to:mul8s::@2
mul8s::@return: scope:[mul8s]  from mul8s::@2
  (signed word) mul8s::return#3 ← phi( mul8s::@2/(signed word) mul8s::return#0 )
  (signed word) mul8s::return#1 ← (signed word) mul8s::return#3
  return 
  to:@return
@24: scope:[]  from @12
  (byte*) print_screen#8 ← phi( @12/(byte*) print_screen#9 )
  (byte*) print_char_cursor#171 ← phi( @12/(byte*) print_char_cursor#176 )
  (byte*) print_line_cursor#78 ← phi( @12/(byte*) print_line_cursor#89 )
  (byte[512]) mulf_sqr1_lo#0 ← { fill( 512, 0) }
  (byte[512]) mulf_sqr1_hi#0 ← { fill( 512, 0) }
  (byte[512]) mulf_sqr2_lo#0 ← { fill( 512, 0) }
  (byte[512]) mulf_sqr2_hi#0 ← { fill( 512, 0) }
  to:@33
mulf_init: scope:[mulf_init]  from main::@1
  (word) mulf_init::sqr#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) mulf_init::x_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) mulf_init::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*~) mulf_init::$0 ← (byte[512]) mulf_sqr1_hi#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte*) mulf_init::sqr1_hi#0 ← (byte*~) mulf_init::$0
  (byte*~) mulf_init::$1 ← (byte[512]) mulf_sqr1_lo#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte*) mulf_init::sqr1_lo#0 ← (byte*~) mulf_init::$1
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@2
  (byte) mulf_init::x_2#4 ← phi( mulf_init/(byte) mulf_init::x_2#0 mulf_init::@2/(byte) mulf_init::x_2#2 )
  (byte*) mulf_init::sqr1_hi#3 ← phi( mulf_init/(byte*) mulf_init::sqr1_hi#0 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
  (byte*) mulf_init::sqr1_lo#3 ← phi( mulf_init/(byte*) mulf_init::sqr1_lo#0 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
  (word) mulf_init::sqr#5 ← phi( mulf_init/(word) mulf_init::sqr#0 mulf_init::@2/(word) mulf_init::sqr#1 )
  (byte) mulf_init::c#2 ← phi( mulf_init/(byte) mulf_init::c#0 mulf_init::@2/(byte) mulf_init::c#3 )
  (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
  (bool~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mulf_init::$4 ← ! (bool~) mulf_init::$3
  if((bool~) mulf_init::$4) goto mulf_init::@2
  to:mulf_init::@5
mulf_init::@2: scope:[mulf_init]  from mulf_init::@1 mulf_init::@5
  (byte) mulf_init::c#3 ← phi( mulf_init::@1/(byte) mulf_init::c#1 mulf_init::@5/(byte) mulf_init::c#4 )
  (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#4 mulf_init::@5/(byte) mulf_init::x_2#1 )
  (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_hi#3 mulf_init::@5/(byte*) mulf_init::sqr1_hi#4 )
  (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_lo#3 mulf_init::@5/(byte*) mulf_init::sqr1_lo#4 )
  (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#5 mulf_init::@5/(word) mulf_init::sqr#2 )
  (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
  *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
  (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
  *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
  (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  (word~) mulf_init::$7 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  (word) mulf_init::sqr#1 ← (word~) mulf_init::$7
  (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
  (byte*~) mulf_init::$8 ← (byte[512]) mulf_sqr1_lo#0 + (word/signed word/dword/signed dword) 512
  (bool~) mulf_init::$9 ← (byte*) mulf_init::sqr1_lo#1 != (byte*~) mulf_init::$8
  if((bool~) mulf_init::$9) goto mulf_init::@1
  to:mulf_init::@6
mulf_init::@5: scope:[mulf_init]  from mulf_init::@1
  (byte) mulf_init::c#4 ← phi( mulf_init::@1/(byte) mulf_init::c#1 )
  (byte*) mulf_init::sqr1_hi#4 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_hi#3 )
  (byte*) mulf_init::sqr1_lo#4 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_lo#3 )
  (word) mulf_init::sqr#4 ← phi( mulf_init::@1/(word) mulf_init::sqr#5 )
  (byte) mulf_init::x_2#3 ← phi( mulf_init::@1/(byte) mulf_init::x_2#4 )
  (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
  (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
  to:mulf_init::@2
mulf_init::@6: scope:[mulf_init]  from mulf_init::@2
  (signed byte/signed word/signed dword~) mulf_init::$10 ← - (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte~) mulf_init::$11 ← ((byte)) (signed byte/signed word/signed dword~) mulf_init::$10
  (byte) mulf_init::x_255#0 ← (byte~) mulf_init::$11
  (byte) mulf_init::dir#0 ← (byte/word/signed word/dword/signed dword) 255
  (byte*) mulf_init::sqr2_hi#0 ← (byte[512]) mulf_sqr2_hi#0
  (byte*) mulf_init::sqr2_lo#0 ← (byte[512]) mulf_sqr2_lo#0
  to:mulf_init::@3
mulf_init::@3: scope:[mulf_init]  from mulf_init::@4 mulf_init::@6
  (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@6/(byte) mulf_init::dir#0 )
  (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#3 mulf_init::@6/(byte*) mulf_init::sqr2_hi#0 )
  (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@6/(byte*) mulf_init::sqr2_lo#0 )
  (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#3 mulf_init::@6/(byte) mulf_init::x_255#0 )
  *((byte*) mulf_init::sqr2_lo#2) ← *((byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
  *((byte*) mulf_init::sqr2_hi#2) ← *((byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
  (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  (byte~) mulf_init::$12 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  (byte) mulf_init::x_255#1 ← (byte~) mulf_init::$12
  (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mulf_init::$14 ← ! (bool~) mulf_init::$13
  if((bool~) mulf_init::$14) goto mulf_init::@4
  to:mulf_init::@7
mulf_init::@4: scope:[mulf_init]  from mulf_init::@3 mulf_init::@7
  (byte) mulf_init::dir#3 ← phi( mulf_init::@3/(byte) mulf_init::dir#2 mulf_init::@7/(byte) mulf_init::dir#1 )
  (byte*) mulf_init::sqr2_hi#3 ← phi( mulf_init::@3/(byte*) mulf_init::sqr2_hi#1 mulf_init::@7/(byte*) mulf_init::sqr2_hi#4 )
  (byte) mulf_init::x_255#3 ← phi( mulf_init::@3/(byte) mulf_init::x_255#1 mulf_init::@7/(byte) mulf_init::x_255#4 )
  (byte*) mulf_init::sqr2_lo#3 ← phi( mulf_init::@3/(byte*) mulf_init::sqr2_lo#2 mulf_init::@7/(byte*) mulf_init::sqr2_lo#4 )
  (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#3
  (byte*~) mulf_init::$15 ← (byte[512]) mulf_sqr2_lo#0 + (word/signed word/dword/signed dword) 511
  (bool~) mulf_init::$16 ← (byte*) mulf_init::sqr2_lo#1 != (byte*~) mulf_init::$15
  if((bool~) mulf_init::$16) goto mulf_init::@3
  to:mulf_init::@8
mulf_init::@7: scope:[mulf_init]  from mulf_init::@3
  (byte*) mulf_init::sqr2_hi#4 ← phi( mulf_init::@3/(byte*) mulf_init::sqr2_hi#1 )
  (byte) mulf_init::x_255#4 ← phi( mulf_init::@3/(byte) mulf_init::x_255#1 )
  (byte*) mulf_init::sqr2_lo#4 ← phi( mulf_init::@3/(byte*) mulf_init::sqr2_lo#2 )
  (byte) mulf_init::dir#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  to:mulf_init::@4
mulf_init::@8: scope:[mulf_init]  from mulf_init::@4
  (byte*~) mulf_init::$17 ← (byte[512]) mulf_sqr2_lo#0 + (word/signed word/dword/signed dword) 511
  (byte*~) mulf_init::$18 ← (byte[512]) mulf_sqr1_lo#0 + (word/signed word/dword/signed dword) 256
  *((byte*~) mulf_init::$17) ← *((byte*~) mulf_init::$18)
  (byte*~) mulf_init::$19 ← (byte[512]) mulf_sqr2_hi#0 + (word/signed word/dword/signed dword) 511
  (byte*~) mulf_init::$20 ← (byte[512]) mulf_sqr1_hi#0 + (word/signed word/dword/signed dword) 256
  *((byte*~) mulf_init::$19) ← *((byte*~) mulf_init::$20)
  to:mulf_init::@return
mulf_init::@return: scope:[mulf_init]  from mulf_init::@8
  return 
  to:@return
mulf8u_prepare: scope:[mulf8u_prepare]  from mulf8s::mulf8s_prepare1 mulf8u
  (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#1 mulf8u/(byte) mulf8u_prepare::a#0 )
  (byte*) mulf8u_prepare::memA#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 253
  *((byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
  asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  }
  to:mulf8u_prepare::@return
mulf8u_prepare::@return: scope:[mulf8u_prepare]  from mulf8u_prepare
  return 
  to:@return
mulf8u_prepared: scope:[mulf8u_prepared]  from mulf8s_prepared mulf8u::@2
  (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#1 mulf8u::@2/(byte) mulf8u_prepared::b#0 )
  (byte*) mulf8u_prepared::resL#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 254
  (byte*) mulf8u_prepared::memB#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255
  *((byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2
  asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  }
  (word) mulf8u_prepared::return#0 ← { *((byte*) mulf8u_prepared::memB#0), *((byte*) mulf8u_prepared::resL#0) }
  to:mulf8u_prepared::@return
mulf8u_prepared::@return: scope:[mulf8u_prepared]  from mulf8u_prepared
  (word) mulf8u_prepared::return#4 ← phi( mulf8u_prepared/(word) mulf8u_prepared::return#0 )
  (word) mulf8u_prepared::return#1 ← (word) mulf8u_prepared::return#4
  return 
  to:@return
mulf8u: scope:[mulf8u]  from mul8u_compare::@12
  (byte) mulf8u::b#2 ← phi( mul8u_compare::@12/(byte) mulf8u::b#0 )
  (byte) mulf8u::a#1 ← phi( mul8u_compare::@12/(byte) mulf8u::a#0 )
  (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#1
  call mulf8u_prepare 
  to:mulf8u::@2
mulf8u::@2: scope:[mulf8u]  from mulf8u
  (byte) mulf8u::b#1 ← phi( mulf8u/(byte) mulf8u::b#2 )
  (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#1
  call mulf8u_prepared 
  (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#1
  to:mulf8u::@3
mulf8u::@3: scope:[mulf8u]  from mulf8u::@2
  (word) mulf8u_prepared::return#5 ← phi( mulf8u::@2/(word) mulf8u_prepared::return#2 )
  (word~) mulf8u::$1 ← (word) mulf8u_prepared::return#5
  (word) mulf8u::return#0 ← (word~) mulf8u::$1
  to:mulf8u::@return
mulf8u::@return: scope:[mulf8u]  from mulf8u::@3
  (word) mulf8u::return#3 ← phi( mulf8u::@3/(word) mulf8u::return#0 )
  (word) mulf8u::return#1 ← (word) mulf8u::return#3
  return 
  to:@return
mulf8s_prepared: scope:[mulf8s_prepared]  from mulf8s::@2
  (signed byte) mulf8s_prepared::b#1 ← phi( mulf8s::@2/(signed byte) mulf8s_prepared::b#0 )
  (signed byte*) mulf8s_prepared::memA#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 253
  (byte~) mulf8s_prepared::$0 ← ((byte)) (signed byte) mulf8s_prepared::b#1
  (byte) mulf8u_prepared::b#1 ← (byte~) mulf8s_prepared::$0
  call mulf8u_prepared 
  (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#1
  to:mulf8s_prepared::@6
mulf8s_prepared::@6: scope:[mulf8s_prepared]  from mulf8s_prepared
  (signed byte) mulf8s_prepared::b#4 ← phi( mulf8s_prepared/(signed byte) mulf8s_prepared::b#1 )
  (word) mulf8u_prepared::return#6 ← phi( mulf8s_prepared/(word) mulf8u_prepared::return#3 )
  (word~) mulf8s_prepared::$1 ← (word) mulf8u_prepared::return#6
  (word) mulf8s_prepared::m#0 ← (word~) mulf8s_prepared::$1
  (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mulf8s_prepared::$3 ← ! (bool~) mulf8s_prepared::$2
  if((bool~) mulf8s_prepared::$3) goto mulf8s_prepared::@1
  to:mulf8s_prepared::@3
mulf8s_prepared::@1: scope:[mulf8s_prepared]  from mulf8s_prepared::@3 mulf8s_prepared::@6
  (word) mulf8s_prepared::m#6 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
  (signed byte) mulf8s_prepared::b#2 ← phi( mulf8s_prepared::@3/(signed byte) mulf8s_prepared::b#3 mulf8s_prepared::@6/(signed byte) mulf8s_prepared::b#4 )
  (bool~) mulf8s_prepared::$8 ← (signed byte) mulf8s_prepared::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mulf8s_prepared::$9 ← ! (bool~) mulf8s_prepared::$8
  if((bool~) mulf8s_prepared::$9) goto mulf8s_prepared::@2
  to:mulf8s_prepared::@4
mulf8s_prepared::@3: scope:[mulf8s_prepared]  from mulf8s_prepared::@6
  (signed byte) mulf8s_prepared::b#3 ← phi( mulf8s_prepared::@6/(signed byte) mulf8s_prepared::b#4 )
  (word) mulf8s_prepared::m#3 ← phi( mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
  (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#3
  (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#3
  (byte~) mulf8s_prepared::$7 ← (byte~) mulf8s_prepared::$5 - (byte~) mulf8s_prepared::$6
  (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$7
  (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#3 hi= (byte~) mulf8s_prepared::$15
  to:mulf8s_prepared::@1
mulf8s_prepared::@2: scope:[mulf8s_prepared]  from mulf8s_prepared::@1 mulf8s_prepared::@4
  (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#6 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
  (signed word~) mulf8s_prepared::$14 ← ((signed word)) (word) mulf8s_prepared::m#4
  (signed word) mulf8s_prepared::return#0 ← (signed word~) mulf8s_prepared::$14
  to:mulf8s_prepared::@return
mulf8s_prepared::@4: scope:[mulf8s_prepared]  from mulf8s_prepared::@1
  (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#6 )
  (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
  (byte~) mulf8s_prepared::$12 ← ((byte)) *((signed byte*) mulf8s_prepared::memA#0)
  (byte~) mulf8s_prepared::$13 ← (byte~) mulf8s_prepared::$11 - (byte~) mulf8s_prepared::$12
  (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$13
  (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
  to:mulf8s_prepared::@2
mulf8s_prepared::@return: scope:[mulf8s_prepared]  from mulf8s_prepared::@2
  (signed word) mulf8s_prepared::return#3 ← phi( mulf8s_prepared::@2/(signed word) mulf8s_prepared::return#0 )
  (signed word) mulf8s_prepared::return#1 ← (signed word) mulf8s_prepared::return#3
  return 
  to:@return
mulf8s: scope:[mulf8s]  from mul8s_compare::@12
  (signed byte) mulf8s::b#4 ← phi( mul8s_compare::@12/(signed byte) mulf8s::b#0 )
  (signed byte) mulf8s::a#1 ← phi( mul8s_compare::@12/(signed byte) mulf8s::a#0 )
  (signed byte) mulf8s::mulf8s_prepare1_a#0 ← (signed byte) mulf8s::a#1
  to:mulf8s::mulf8s_prepare1
mulf8s::mulf8s_prepare1: scope:[mulf8s]  from mulf8s
  (signed byte) mulf8s::b#3 ← phi( mulf8s/(signed byte) mulf8s::b#4 )
  (signed byte) mulf8s::mulf8s_prepare1_a#1 ← phi( mulf8s/(signed byte) mulf8s::mulf8s_prepare1_a#0 )
  (byte) mulf8s::mulf8s_prepare1_$0#0 ← ((byte)) (signed byte) mulf8s::mulf8s_prepare1_a#1
  (byte) mulf8u_prepare::a#1 ← (byte) mulf8s::mulf8s_prepare1_$0#0
  call mulf8u_prepare 
  to:mulf8s::@3
mulf8s::@3: scope:[mulf8s]  from mulf8s::mulf8s_prepare1
  (signed byte) mulf8s::b#2 ← phi( mulf8s::mulf8s_prepare1/(signed byte) mulf8s::b#3 )
  to:mulf8s::@2
mulf8s::@2: scope:[mulf8s]  from mulf8s::@3
  (signed byte) mulf8s::b#1 ← phi( mulf8s::@3/(signed byte) mulf8s::b#2 )
  (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#1
  call mulf8s_prepared 
  (signed word) mulf8s_prepared::return#2 ← (signed word) mulf8s_prepared::return#1
  to:mulf8s::@4
mulf8s::@4: scope:[mulf8s]  from mulf8s::@2
  (signed word) mulf8s_prepared::return#4 ← phi( mulf8s::@2/(signed word) mulf8s_prepared::return#2 )
  (signed word~) mulf8s::$1 ← (signed word) mulf8s_prepared::return#4
  (signed word) mulf8s::return#0 ← (signed word~) mulf8s::$1
  to:mulf8s::@return
mulf8s::@return: scope:[mulf8s]  from mulf8s::@4
  (signed word) mulf8s::return#3 ← phi( mulf8s::@4/(signed word) mulf8s::return#0 )
  (signed word) mulf8s::return#1 ← (signed word) mulf8s::return#3
  return 
  to:@return
@33: scope:[]  from @24
  (byte*) print_screen#7 ← phi( @24/(byte*) print_screen#8 )
  (byte*) print_char_cursor#163 ← phi( @24/(byte*) print_char_cursor#171 )
  (byte*) print_line_cursor#67 ← phi( @24/(byte*) print_line_cursor#78 )
  (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
  to:@36
main: scope:[main]  from @42
  (byte*) print_char_cursor#141 ← phi( @42/(byte*) print_char_cursor#151 )
  (byte*) print_line_cursor#46 ← phi( @42/(byte*) print_line_cursor#56 )
  (byte*) print_screen#4 ← phi( @42/(byte*) print_screen#5 )
  (byte*) BGCOL#1 ← phi( @42/(byte*) BGCOL#5 )
  *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 5
  call print_cls 
  to:main::@1
main::@1: scope:[main]  from main
  (byte*) BGCOL#24 ← phi( main/(byte*) BGCOL#1 )
  (byte*) print_char_cursor#87 ← phi( main/(byte*) print_char_cursor#21 )
  (byte*) print_line_cursor#27 ← phi( main/(byte*) print_line_cursor#4 )
  (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#27
  (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#87
  call mulf_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte*) BGCOL#21 ← phi( main::@1/(byte*) BGCOL#24 )
  (byte*) print_line_cursor#57 ← phi( main::@1/(byte*) print_line_cursor#5 )
  (byte*) print_char_cursor#155 ← phi( main::@1/(byte*) print_char_cursor#22 )
  call mulf_init_asm 
  to:main::@3
main::@3: scope:[main]  from main::@2
  (byte*) BGCOL#16 ← phi( main::@2/(byte*) BGCOL#21 )
  (byte*) print_line_cursor#47 ← phi( main::@2/(byte*) print_line_cursor#57 )
  (byte*) print_char_cursor#142 ← phi( main::@2/(byte*) print_char_cursor#155 )
  call mulf_tables_cmp 
  to:main::@4
main::@4: scope:[main]  from main::@3
  (byte*) BGCOL#37 ← phi( main::@3/(byte*) BGCOL#16 )
  (byte*) print_line_cursor#28 ← phi( main::@3/(byte*) print_line_cursor#10 )
  (byte*) print_char_cursor#88 ← phi( main::@3/(byte*) print_char_cursor#31 )
  (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#88
  (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#28
  call mul8u_compare 
  to:main::@5
main::@5: scope:[main]  from main::@4
  (byte*) BGCOL#38 ← phi( main::@4/(byte*) BGCOL#37 )
  (byte*) print_line_cursor#29 ← phi( main::@4/(byte*) print_line_cursor#13 )
  (byte*) print_char_cursor#89 ← phi( main::@4/(byte*) print_char_cursor#35 )
  (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#89
  (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#29
  call mul8s_compare 
  to:main::@6
main::@6: scope:[main]  from main::@5
  (byte*) print_line_cursor#30 ← phi( main::@5/(byte*) print_line_cursor#18 )
  (byte*) print_char_cursor#90 ← phi( main::@5/(byte*) print_char_cursor#51 )
  (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#90
  (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#30
  to:main::@return
main::@return: scope:[main]  from main::@6
  (byte*) print_char_cursor#91 ← phi( main::@6/(byte*) print_char_cursor#25 )
  (byte*) print_line_cursor#31 ← phi( main::@6/(byte*) print_line_cursor#8 )
  (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#31
  (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#91
  return 
  to:@return
muls8u: scope:[muls8u]  from mul8u_compare::@2
  (byte) muls8u::b#3 ← phi( mul8u_compare::@2/(byte) muls8u::b#0 )
  (byte) muls8u::a#1 ← phi( mul8u_compare::@2/(byte) muls8u::a#0 )
  (word) muls8u::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) muls8u::$1 ← ! (bool~) muls8u::$0
  if((bool~) muls8u::$1) goto muls8u::@1
  to:muls8u::@3
muls8u::@1: scope:[muls8u]  from muls8u muls8u::@2
  (word) muls8u::m#2 ← phi( muls8u/(word) muls8u::m#0 muls8u::@2/(word) muls8u::m#1 )
  (word) muls8u::return#0 ← (word) muls8u::m#2
  to:muls8u::@return
muls8u::@3: scope:[muls8u]  from muls8u
  (byte) muls8u::a#3 ← phi( muls8u/(byte) muls8u::a#1 )
  (byte) muls8u::b#2 ← phi( muls8u/(byte) muls8u::b#3 )
  (word) muls8u::m#4 ← phi( muls8u/(word) muls8u::m#0 )
  (byte) muls8u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:muls8u::@2
muls8u::@2: scope:[muls8u]  from muls8u::@2 muls8u::@3
  (byte) muls8u::a#2 ← phi( muls8u::@2/(byte) muls8u::a#2 muls8u::@3/(byte) muls8u::a#3 )
  (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u::@3/(byte) muls8u::i#0 )
  (byte) muls8u::b#1 ← phi( muls8u::@2/(byte) muls8u::b#1 muls8u::@3/(byte) muls8u::b#2 )
  (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u::@3/(word) muls8u::m#4 )
  (word~) muls8u::$2 ← (word) muls8u::m#3 + (byte) muls8u::b#1
  (word) muls8u::m#1 ← (word~) muls8u::$2
  (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2
  (bool~) muls8u::$3 ← (byte) muls8u::i#1 != (byte) muls8u::a#2
  if((bool~) muls8u::$3) goto muls8u::@2
  to:muls8u::@1
muls8u::@return: scope:[muls8u]  from muls8u::@1
  (word) muls8u::return#3 ← phi( muls8u::@1/(word) muls8u::return#0 )
  (word) muls8u::return#1 ← (word) muls8u::return#3
  return 
  to:@return
muls8s: scope:[muls8s]  from mul8s_compare::@2
  (signed byte) muls8s::b#5 ← phi( mul8s_compare::@2/(signed byte) muls8s::b#0 )
  (signed byte) muls8s::a#1 ← phi( mul8s_compare::@2/(signed byte) muls8s::a#0 )
  (signed word) muls8s::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) muls8s::$0 ← (signed byte) muls8s::a#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) muls8s::$0) goto muls8s::@1
  to:muls8s::@6
muls8s::@1: scope:[muls8s]  from muls8s
  (signed byte) muls8s::a#6 ← phi( muls8s/(signed byte) muls8s::a#1 )
  (signed byte) muls8s::b#4 ← phi( muls8s/(signed byte) muls8s::b#5 )
  (signed word) muls8s::m#8 ← phi( muls8s/(signed word) muls8s::m#0 )
  (signed byte) muls8s::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:muls8s::@5
muls8s::@6: scope:[muls8s]  from muls8s
  (signed byte) muls8s::b#6 ← phi( muls8s/(signed byte) muls8s::b#5 )
  (signed word) muls8s::m#9 ← phi( muls8s/(signed word) muls8s::m#0 )
  (signed byte) muls8s::a#2 ← phi( muls8s/(signed byte) muls8s::a#1 )
  (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) muls8s::$2 ← ! (bool~) muls8s::$1
  if((bool~) muls8s::$2) goto muls8s::@2
  to:muls8s::@7
muls8s::@2: scope:[muls8s]  from muls8s::@6
  (signed word) muls8s::m#7 ← phi( muls8s::@6/(signed word) muls8s::m#9 )
  to:muls8s::@4
muls8s::@7: scope:[muls8s]  from muls8s::@6
  (signed byte) muls8s::a#5 ← phi( muls8s::@6/(signed byte) muls8s::a#2 )
  (signed byte) muls8s::b#3 ← phi( muls8s::@6/(signed byte) muls8s::b#6 )
  (signed word) muls8s::m#6 ← phi( muls8s::@6/(signed word) muls8s::m#9 )
  (signed byte) muls8s::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:muls8s::@3
muls8s::@3: scope:[muls8s]  from muls8s::@3 muls8s::@7
  (signed byte) muls8s::a#3 ← phi( muls8s::@3/(signed byte) muls8s::a#3 muls8s::@7/(signed byte) muls8s::a#5 )
  (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@7/(signed byte) muls8s::j#0 )
  (signed byte) muls8s::b#1 ← phi( muls8s::@3/(signed byte) muls8s::b#1 muls8s::@7/(signed byte) muls8s::b#3 )
  (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@7/(signed word) muls8s::m#6 )
  (signed word~) muls8s::$3 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#1
  (signed word) muls8s::m#1 ← (signed word~) muls8s::$3
  (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2
  (bool~) muls8s::$4 ← (signed byte) muls8s::j#1 != (signed byte) muls8s::a#3
  if((bool~) muls8s::$4) goto muls8s::@3
  to:muls8s::@4
muls8s::@4: scope:[muls8s]  from muls8s::@2 muls8s::@3 muls8s::@5
  (signed word) muls8s::m#4 ← phi( muls8s::@2/(signed word) muls8s::m#7 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 )
  (signed word) muls8s::return#0 ← (signed word) muls8s::m#4
  to:muls8s::@return
muls8s::@5: scope:[muls8s]  from muls8s::@1 muls8s::@5
  (signed byte) muls8s::a#4 ← phi( muls8s::@1/(signed byte) muls8s::a#6 muls8s::@5/(signed byte) muls8s::a#4 )
  (signed byte) muls8s::i#2 ← phi( muls8s::@1/(signed byte) muls8s::i#0 muls8s::@5/(signed byte) muls8s::i#1 )
  (signed byte) muls8s::b#2 ← phi( muls8s::@1/(signed byte) muls8s::b#4 muls8s::@5/(signed byte) muls8s::b#2 )
  (signed word) muls8s::m#5 ← phi( muls8s::@1/(signed word) muls8s::m#8 muls8s::@5/(signed word) muls8s::m#2 )
  (signed word~) muls8s::$5 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#2
  (signed word) muls8s::m#2 ← (signed word~) muls8s::$5
  (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2
  (bool~) muls8s::$6 ← (signed byte) muls8s::i#1 != (signed byte) muls8s::a#4
  if((bool~) muls8s::$6) goto muls8s::@5
  to:muls8s::@4
muls8s::@return: scope:[muls8s]  from muls8s::@4
  (signed word) muls8s::return#3 ← phi( muls8s::@4/(signed word) muls8s::return#0 )
  (signed word) muls8s::return#1 ← (signed word) muls8s::return#3
  return 
  to:@return
@36: scope:[]  from @33
  (byte*) print_screen#6 ← phi( @33/(byte*) print_screen#7 )
  (byte*) print_char_cursor#162 ← phi( @33/(byte*) print_char_cursor#163 )
  (byte*) print_line_cursor#66 ← phi( @33/(byte*) print_line_cursor#67 )
  (byte*) BGCOL#15 ← phi( @33/(byte*) BGCOL#0 )
  (byte[512]) mula_sqr1_lo#0 ← { fill( 512, 0) }
  (byte[512]) mula_sqr1_hi#0 ← { fill( 512, 0) }
  (byte[512]) mula_sqr2_lo#0 ← { fill( 512, 0) }
  (byte[512]) mula_sqr2_hi#0 ← { fill( 512, 0) }
  to:@42
mulf_init_asm: scope:[mulf_init_asm]  from main::@2
  asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!-  }
  (byte*) mulf_init_asm::mem#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255
  *((byte*) mulf_init_asm::mem#0) ← *((byte[512]) mula_sqr1_lo#0)
  *((byte*) mulf_init_asm::mem#0) ← *((byte[512]) mula_sqr1_hi#0)
  *((byte*) mulf_init_asm::mem#0) ← *((byte[512]) mula_sqr2_lo#0)
  *((byte*) mulf_init_asm::mem#0) ← *((byte[512]) mula_sqr2_hi#0)
  to:mulf_init_asm::@return
mulf_init_asm::@return: scope:[mulf_init_asm]  from mulf_init_asm
  return 
  to:@return
mulf_tables_cmp: scope:[mulf_tables_cmp]  from main::@3
  (byte*) print_line_cursor#90 ← phi( main::@3/(byte*) print_line_cursor#47 )
  (byte*) print_char_cursor#164 ← phi( main::@3/(byte*) print_char_cursor#142 )
  (byte*) BGCOL#9 ← phi( main::@3/(byte*) BGCOL#16 )
  (byte*) mulf_tables_cmp::asm_sqr#0 ← (byte[512]) mula_sqr1_lo#0
  (byte*) mulf_tables_cmp::kc_sqr#0 ← (byte[512]) mulf_sqr1_lo#0
  to:mulf_tables_cmp::@1
mulf_tables_cmp::@1: scope:[mulf_tables_cmp]  from mulf_tables_cmp mulf_tables_cmp::@2
  (byte*) print_line_cursor#79 ← phi( mulf_tables_cmp/(byte*) print_line_cursor#90 mulf_tables_cmp::@2/(byte*) print_line_cursor#69 )
  (byte*) print_char_cursor#156 ← phi( mulf_tables_cmp/(byte*) print_char_cursor#164 mulf_tables_cmp::@2/(byte*) print_char_cursor#157 )
  (byte*) BGCOL#6 ← phi( mulf_tables_cmp/(byte*) BGCOL#9 mulf_tables_cmp::@2/(byte*) BGCOL#10 )
  (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(byte*) mulf_tables_cmp::asm_sqr#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 )
  (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(byte*) mulf_tables_cmp::kc_sqr#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 )
  (bool~) mulf_tables_cmp::$0 ← *((byte*) mulf_tables_cmp::kc_sqr#2) != *((byte*) mulf_tables_cmp::asm_sqr#2)
  (bool~) mulf_tables_cmp::$1 ← ! (bool~) mulf_tables_cmp::$0
  if((bool~) mulf_tables_cmp::$1) goto mulf_tables_cmp::@2
  to:mulf_tables_cmp::@3
mulf_tables_cmp::@2: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@1
  (byte*) print_line_cursor#69 ← phi( mulf_tables_cmp::@1/(byte*) print_line_cursor#79 )
  (byte*) print_char_cursor#157 ← phi( mulf_tables_cmp::@1/(byte*) print_char_cursor#156 )
  (byte*) BGCOL#10 ← phi( mulf_tables_cmp::@1/(byte*) BGCOL#6 )
  (byte*) mulf_tables_cmp::kc_sqr#3 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::kc_sqr#2 )
  (byte*) mulf_tables_cmp::asm_sqr#3 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::asm_sqr#2 )
  (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#3
  (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#3
  (word/signed word/dword/signed dword~) mulf_tables_cmp::$8 ← (word/signed word/dword/signed dword) 512 * (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte*~) mulf_tables_cmp::$9 ← (byte[512]) mulf_sqr1_lo#0 + (word/signed word/dword/signed dword~) mulf_tables_cmp::$8
  (bool~) mulf_tables_cmp::$10 ← (byte*) mulf_tables_cmp::kc_sqr#1 < (byte*~) mulf_tables_cmp::$9
  if((bool~) mulf_tables_cmp::$10) goto mulf_tables_cmp::@1
  to:mulf_tables_cmp::@5
mulf_tables_cmp::@3: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@1
  (byte*) print_line_cursor#91 ← phi( mulf_tables_cmp::@1/(byte*) print_line_cursor#79 )
  (byte*) mulf_tables_cmp::kc_sqr#7 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::kc_sqr#2 )
  (byte*) mulf_tables_cmp::asm_sqr#5 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::asm_sqr#2 )
  (byte*) print_char_cursor#143 ← phi( mulf_tables_cmp::@1/(byte*) print_char_cursor#156 )
  (byte*) BGCOL#2 ← phi( mulf_tables_cmp::@1/(byte*) BGCOL#6 )
  *((byte*) BGCOL#2) ← (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte*) print_str::str#1 ← (const string) mulf_tables_cmp::str
  call print_str 
  to:mulf_tables_cmp::@6
mulf_tables_cmp::@6: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@3
  (byte*) print_line_cursor#80 ← phi( mulf_tables_cmp::@3/(byte*) print_line_cursor#91 )
  (byte*) mulf_tables_cmp::kc_sqr#6 ← phi( mulf_tables_cmp::@3/(byte*) mulf_tables_cmp::kc_sqr#7 )
  (byte*) mulf_tables_cmp::asm_sqr#4 ← phi( mulf_tables_cmp::@3/(byte*) mulf_tables_cmp::asm_sqr#5 )
  (byte*) print_char_cursor#92 ← phi( mulf_tables_cmp::@3/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#92
  (word~) mulf_tables_cmp::$3 ← ((word)) (byte*) mulf_tables_cmp::asm_sqr#4
  (word) print_word::w#1 ← (word~) mulf_tables_cmp::$3
  call print_word 
  to:mulf_tables_cmp::@7
mulf_tables_cmp::@7: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@6
  (byte*) print_line_cursor#68 ← phi( mulf_tables_cmp::@6/(byte*) print_line_cursor#80 )
  (byte*) mulf_tables_cmp::kc_sqr#5 ← phi( mulf_tables_cmp::@6/(byte*) mulf_tables_cmp::kc_sqr#6 )
  (byte*) print_char_cursor#93 ← phi( mulf_tables_cmp::@6/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#93
  (byte*) print_str::str#2 ← (const string) mulf_tables_cmp::str1
  call print_str 
  to:mulf_tables_cmp::@8
mulf_tables_cmp::@8: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@7
  (byte*) print_line_cursor#58 ← phi( mulf_tables_cmp::@7/(byte*) print_line_cursor#68 )
  (byte*) mulf_tables_cmp::kc_sqr#4 ← phi( mulf_tables_cmp::@7/(byte*) mulf_tables_cmp::kc_sqr#5 )
  (byte*) print_char_cursor#94 ← phi( mulf_tables_cmp::@7/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#94
  (word~) mulf_tables_cmp::$6 ← ((word)) (byte*) mulf_tables_cmp::kc_sqr#4
  (word) print_word::w#2 ← (word~) mulf_tables_cmp::$6
  call print_word 
  to:mulf_tables_cmp::@9
mulf_tables_cmp::@9: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@8
  (byte*) print_line_cursor#48 ← phi( mulf_tables_cmp::@8/(byte*) print_line_cursor#58 )
  (byte*) print_char_cursor#95 ← phi( mulf_tables_cmp::@8/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#95
  to:mulf_tables_cmp::@return
mulf_tables_cmp::@return: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@11 mulf_tables_cmp::@9
  (byte*) print_line_cursor#32 ← phi( mulf_tables_cmp::@11/(byte*) print_line_cursor#11 mulf_tables_cmp::@9/(byte*) print_line_cursor#48 )
  (byte*) print_char_cursor#96 ← phi( mulf_tables_cmp::@11/(byte*) print_char_cursor#33 mulf_tables_cmp::@9/(byte*) print_char_cursor#30 )
  (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#96
  (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#32
  return 
  to:@return
mulf_tables_cmp::@5: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@2
  (byte*) print_line_cursor#59 ← phi( mulf_tables_cmp::@2/(byte*) print_line_cursor#69 )
  (byte*) print_char_cursor#144 ← phi( mulf_tables_cmp::@2/(byte*) print_char_cursor#157 )
  (byte*) print_str::str#3 ← (const string) mulf_tables_cmp::str2
  call print_str 
  to:mulf_tables_cmp::@10
mulf_tables_cmp::@10: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@5
  (byte*) print_line_cursor#49 ← phi( mulf_tables_cmp::@5/(byte*) print_line_cursor#59 )
  (byte*) print_char_cursor#97 ← phi( mulf_tables_cmp::@5/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#97
  call print_ln 
  to:mulf_tables_cmp::@11
mulf_tables_cmp::@11: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@10
  (byte*) print_char_cursor#98 ← phi( mulf_tables_cmp::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#33 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#33
  (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#98
  to:mulf_tables_cmp::@return
mul8u_compare: scope:[mul8u_compare]  from main::@4
  (byte*) print_line_cursor#108 ← phi( main::@4/(byte*) print_line_cursor#6 )
  (byte*) print_char_cursor#185 ← phi( main::@4/(byte*) print_char_cursor#23 )
  (byte*) BGCOL#33 ← phi( main::@4/(byte*) BGCOL#37 )
  (byte) mul8u_compare::a#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:mul8u_compare::@1
mul8u_compare::@1: scope:[mul8u_compare]  from mul8u_compare mul8u_compare::@10
  (byte*) print_line_cursor#104 ← phi( mul8u_compare/(byte*) print_line_cursor#108 mul8u_compare::@10/(byte*) print_line_cursor#72 )
  (byte*) print_char_cursor#183 ← phi( mul8u_compare/(byte*) print_char_cursor#185 mul8u_compare::@10/(byte*) print_char_cursor#159 )
  (byte*) BGCOL#29 ← phi( mul8u_compare/(byte*) BGCOL#33 mul8u_compare::@10/(byte*) BGCOL#34 )
  (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) mul8u_compare::a#0 mul8u_compare::@10/(byte) mul8u_compare::a#1 )
  (byte) mul8u_compare::b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:mul8u_compare::@2
mul8u_compare::@2: scope:[mul8u_compare]  from mul8u_compare::@1 mul8u_compare::@5
  (byte*) print_line_cursor#100 ← phi( mul8u_compare::@1/(byte*) print_line_cursor#104 mul8u_compare::@5/(byte*) print_line_cursor#83 )
  (byte*) print_char_cursor#181 ← phi( mul8u_compare::@1/(byte*) print_char_cursor#183 mul8u_compare::@5/(byte*) print_char_cursor#167 )
  (byte*) BGCOL#27 ← phi( mul8u_compare::@1/(byte*) BGCOL#29 mul8u_compare::@5/(byte*) BGCOL#30 )
  (byte) mul8u_compare::b#2 ← phi( mul8u_compare::@1/(byte) mul8u_compare::b#0 mul8u_compare::@5/(byte) mul8u_compare::b#1 )
  (byte) mul8u_compare::a#2 ← phi( mul8u_compare::@1/(byte) mul8u_compare::a#7 mul8u_compare::@5/(byte) mul8u_compare::a#8 )
  (byte) muls8u::a#0 ← (byte) mul8u_compare::a#2
  (byte) muls8u::b#0 ← (byte) mul8u_compare::b#2
  call muls8u 
  (word) muls8u::return#2 ← (word) muls8u::return#1
  to:mul8u_compare::@12
mul8u_compare::@12: scope:[mul8u_compare]  from mul8u_compare::@2
  (byte*) print_line_cursor#96 ← phi( mul8u_compare::@2/(byte*) print_line_cursor#100 )
  (byte*) print_char_cursor#179 ← phi( mul8u_compare::@2/(byte*) print_char_cursor#181 )
  (byte*) BGCOL#25 ← phi( mul8u_compare::@2/(byte*) BGCOL#27 )
  (byte) mul8u_compare::b#3 ← phi( mul8u_compare::@2/(byte) mul8u_compare::b#2 )
  (byte) mul8u_compare::a#3 ← phi( mul8u_compare::@2/(byte) mul8u_compare::a#2 )
  (word) muls8u::return#4 ← phi( mul8u_compare::@2/(word) muls8u::return#2 )
  (word~) mul8u_compare::$0 ← (word) muls8u::return#4
  (word) mul8u_compare::ms#0 ← (word~) mul8u_compare::$0
  (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#3
  (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#3
  call mulf8u 
  (word) mulf8u::return#2 ← (word) mulf8u::return#1
  to:mul8u_compare::@13
mul8u_compare::@13: scope:[mul8u_compare]  from mul8u_compare::@12
  (byte*) print_line_cursor#92 ← phi( mul8u_compare::@12/(byte*) print_line_cursor#96 )
  (byte*) print_char_cursor#177 ← phi( mul8u_compare::@12/(byte*) print_char_cursor#179 )
  (byte*) BGCOL#22 ← phi( mul8u_compare::@12/(byte*) BGCOL#25 )
  (word) mul8u_compare::ms#4 ← phi( mul8u_compare::@12/(word) mul8u_compare::ms#0 )
  (byte) mul8u_compare::b#4 ← phi( mul8u_compare::@12/(byte) mul8u_compare::b#3 )
  (byte) mul8u_compare::a#4 ← phi( mul8u_compare::@12/(byte) mul8u_compare::a#3 )
  (word) mulf8u::return#4 ← phi( mul8u_compare::@12/(word) mulf8u::return#2 )
  (word~) mul8u_compare::$1 ← (word) mulf8u::return#4
  (word) mul8u_compare::mf#0 ← (word~) mul8u_compare::$1
  (byte) mul8u::a#2 ← (byte) mul8u_compare::a#4
  (byte) mul8u::b#1 ← (byte) mul8u_compare::b#4
  call mul8u 
  (word) mul8u::return#3 ← (word) mul8u::return#1
  to:mul8u_compare::@14
mul8u_compare::@14: scope:[mul8u_compare]  from mul8u_compare::@13
  (byte*) print_line_cursor#81 ← phi( mul8u_compare::@13/(byte*) print_line_cursor#92 )
  (byte*) print_char_cursor#172 ← phi( mul8u_compare::@13/(byte*) print_char_cursor#177 )
  (byte) mul8u_compare::a#12 ← phi( mul8u_compare::@13/(byte) mul8u_compare::a#4 )
  (byte*) BGCOL#17 ← phi( mul8u_compare::@13/(byte*) BGCOL#22 )
  (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@13/(byte) mul8u_compare::b#4 )
  (word) mul8u_compare::mf#1 ← phi( mul8u_compare::@13/(word) mul8u_compare::mf#0 )
  (word) mul8u_compare::ms#1 ← phi( mul8u_compare::@13/(word) mul8u_compare::ms#4 )
  (word) mul8u::return#6 ← phi( mul8u_compare::@13/(word) mul8u::return#3 )
  (word~) mul8u_compare::$2 ← (word) mul8u::return#6
  (word) mul8u_compare::mn#0 ← (word~) mul8u_compare::$2
  (byte) mul8u_compare::ok#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  (bool~) mul8u_compare::$3 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1
  (bool~) mul8u_compare::$4 ← ! (bool~) mul8u_compare::$3
  if((bool~) mul8u_compare::$4) goto mul8u_compare::@3
  to:mul8u_compare::@6
mul8u_compare::@3: scope:[mul8u_compare]  from mul8u_compare::@14 mul8u_compare::@6
  (byte*) print_line_cursor#70 ← phi( mul8u_compare::@14/(byte*) print_line_cursor#81 mul8u_compare::@6/(byte*) print_line_cursor#82 )
  (byte*) print_char_cursor#165 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#172 mul8u_compare::@6/(byte*) print_char_cursor#173 )
  (word) mul8u_compare::mf#4 ← phi( mul8u_compare::@14/(word) mul8u_compare::mf#1 mul8u_compare::@6/(word) mul8u_compare::mf#6 )
  (byte) mul8u_compare::a#10 ← phi( mul8u_compare::@14/(byte) mul8u_compare::a#12 mul8u_compare::@6/(byte) mul8u_compare::a#13 )
  (byte*) BGCOL#11 ← phi( mul8u_compare::@14/(byte*) BGCOL#17 mul8u_compare::@6/(byte*) BGCOL#18 )
  (byte) mul8u_compare::b#8 ← phi( mul8u_compare::@14/(byte) mul8u_compare::b#10 mul8u_compare::@6/(byte) mul8u_compare::b#11 )
  (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#0 mul8u_compare::@6/(byte) mul8u_compare::ok#1 )
  (word) mul8u_compare::mn#1 ← phi( mul8u_compare::@14/(word) mul8u_compare::mn#0 mul8u_compare::@6/(word) mul8u_compare::mn#3 )
  (word) mul8u_compare::ms#2 ← phi( mul8u_compare::@14/(word) mul8u_compare::ms#1 mul8u_compare::@6/(word) mul8u_compare::ms#5 )
  (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1
  (bool~) mul8u_compare::$6 ← ! (bool~) mul8u_compare::$5
  if((bool~) mul8u_compare::$6) goto mul8u_compare::@4
  to:mul8u_compare::@7
mul8u_compare::@6: scope:[mul8u_compare]  from mul8u_compare::@14
  (byte*) print_line_cursor#82 ← phi( mul8u_compare::@14/(byte*) print_line_cursor#81 )
  (byte*) print_char_cursor#173 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#172 )
  (word) mul8u_compare::mf#6 ← phi( mul8u_compare::@14/(word) mul8u_compare::mf#1 )
  (byte) mul8u_compare::a#13 ← phi( mul8u_compare::@14/(byte) mul8u_compare::a#12 )
  (byte*) BGCOL#18 ← phi( mul8u_compare::@14/(byte*) BGCOL#17 )
  (byte) mul8u_compare::b#11 ← phi( mul8u_compare::@14/(byte) mul8u_compare::b#10 )
  (word) mul8u_compare::mn#3 ← phi( mul8u_compare::@14/(word) mul8u_compare::mn#0 )
  (word) mul8u_compare::ms#5 ← phi( mul8u_compare::@14/(word) mul8u_compare::ms#1 )
  (byte) mul8u_compare::ok#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:mul8u_compare::@3
mul8u_compare::@4: scope:[mul8u_compare]  from mul8u_compare::@3 mul8u_compare::@7
  (byte*) print_line_cursor#60 ← phi( mul8u_compare::@3/(byte*) print_line_cursor#70 mul8u_compare::@7/(byte*) print_line_cursor#71 )
  (byte*) print_char_cursor#158 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#165 mul8u_compare::@7/(byte*) print_char_cursor#166 )
  (word) mul8u_compare::mf#3 ← phi( mul8u_compare::@3/(word) mul8u_compare::mf#4 mul8u_compare::@7/(word) mul8u_compare::mf#5 )
  (word) mul8u_compare::mn#4 ← phi( mul8u_compare::@3/(word) mul8u_compare::mn#1 mul8u_compare::@7/(word) mul8u_compare::mn#5 )
  (word) mul8u_compare::ms#6 ← phi( mul8u_compare::@3/(word) mul8u_compare::ms#2 mul8u_compare::@7/(word) mul8u_compare::ms#7 )
  (byte) mul8u_compare::a#9 ← phi( mul8u_compare::@3/(byte) mul8u_compare::a#10 mul8u_compare::@7/(byte) mul8u_compare::a#11 )
  (byte*) BGCOL#7 ← phi( mul8u_compare::@3/(byte*) BGCOL#11 mul8u_compare::@7/(byte*) BGCOL#12 )
  (byte) mul8u_compare::b#7 ← phi( mul8u_compare::@3/(byte) mul8u_compare::b#8 mul8u_compare::@7/(byte) mul8u_compare::b#9 )
  (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@3/(byte) mul8u_compare::ok#4 mul8u_compare::@7/(byte) mul8u_compare::ok#2 )
  (bool~) mul8u_compare::$7 ← (byte) mul8u_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mul8u_compare::$8 ← ! (bool~) mul8u_compare::$7
  if((bool~) mul8u_compare::$8) goto mul8u_compare::@5
  to:mul8u_compare::@8
mul8u_compare::@7: scope:[mul8u_compare]  from mul8u_compare::@3
  (byte*) print_line_cursor#71 ← phi( mul8u_compare::@3/(byte*) print_line_cursor#70 )
  (byte*) print_char_cursor#166 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#165 )
  (word) mul8u_compare::mf#5 ← phi( mul8u_compare::@3/(word) mul8u_compare::mf#4 )
  (word) mul8u_compare::mn#5 ← phi( mul8u_compare::@3/(word) mul8u_compare::mn#1 )
  (word) mul8u_compare::ms#7 ← phi( mul8u_compare::@3/(word) mul8u_compare::ms#2 )
  (byte) mul8u_compare::a#11 ← phi( mul8u_compare::@3/(byte) mul8u_compare::a#10 )
  (byte*) BGCOL#12 ← phi( mul8u_compare::@3/(byte*) BGCOL#11 )
  (byte) mul8u_compare::b#9 ← phi( mul8u_compare::@3/(byte) mul8u_compare::b#8 )
  (byte) mul8u_compare::ok#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:mul8u_compare::@4
mul8u_compare::@5: scope:[mul8u_compare]  from mul8u_compare::@4
  (byte*) BGCOL#30 ← phi( mul8u_compare::@4/(byte*) BGCOL#7 )
  (byte*) print_line_cursor#83 ← phi( mul8u_compare::@4/(byte*) print_line_cursor#60 )
  (byte*) print_char_cursor#167 ← phi( mul8u_compare::@4/(byte*) print_char_cursor#158 )
  (byte) mul8u_compare::a#8 ← phi( mul8u_compare::@4/(byte) mul8u_compare::a#9 )
  (byte) mul8u_compare::b#5 ← phi( mul8u_compare::@4/(byte) mul8u_compare::b#7 )
  (byte) mul8u_compare::b#1 ← (byte) mul8u_compare::b#5 + rangenext(0,255)
  (bool~) mul8u_compare::$10 ← (byte) mul8u_compare::b#1 != rangelast(0,255)
  if((bool~) mul8u_compare::$10) goto mul8u_compare::@2
  to:mul8u_compare::@10
mul8u_compare::@8: scope:[mul8u_compare]  from mul8u_compare::@4
  (byte*) print_line_cursor#50 ← phi( mul8u_compare::@4/(byte*) print_line_cursor#60 )
  (byte*) print_char_cursor#145 ← phi( mul8u_compare::@4/(byte*) print_char_cursor#158 )
  (word) mul8u_compare::mf#2 ← phi( mul8u_compare::@4/(word) mul8u_compare::mf#3 )
  (word) mul8u_compare::mn#2 ← phi( mul8u_compare::@4/(word) mul8u_compare::mn#4 )
  (word) mul8u_compare::ms#3 ← phi( mul8u_compare::@4/(word) mul8u_compare::ms#6 )
  (byte) mul8u_compare::b#6 ← phi( mul8u_compare::@4/(byte) mul8u_compare::b#7 )
  (byte) mul8u_compare::a#5 ← phi( mul8u_compare::@4/(byte) mul8u_compare::a#9 )
  (byte*) BGCOL#3 ← phi( mul8u_compare::@4/(byte*) BGCOL#7 )
  *((byte*) BGCOL#3) ← (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#5
  (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#6
  (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#3
  (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#2
  (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#2
  call mul8u_error 
  to:mul8u_compare::@15
mul8u_compare::@15: scope:[mul8u_compare]  from mul8u_compare::@8
  (byte*) print_line_cursor#34 ← phi( mul8u_compare::@8/(byte*) print_line_cursor#16 )
  (byte*) print_char_cursor#99 ← phi( mul8u_compare::@8/(byte*) print_char_cursor#49 )
  (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#99
  (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#34
  to:mul8u_compare::@return
mul8u_compare::@return: scope:[mul8u_compare]  from mul8u_compare::@15 mul8u_compare::@17
  (byte*) print_line_cursor#35 ← phi( mul8u_compare::@15/(byte*) print_line_cursor#12 mul8u_compare::@17/(byte*) print_line_cursor#14 )
  (byte*) print_char_cursor#100 ← phi( mul8u_compare::@15/(byte*) print_char_cursor#34 mul8u_compare::@17/(byte*) print_char_cursor#37 )
  (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#100
  (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#35
  return 
  to:@return
mul8u_compare::@10: scope:[mul8u_compare]  from mul8u_compare::@5
  (byte*) BGCOL#34 ← phi( mul8u_compare::@5/(byte*) BGCOL#30 )
  (byte*) print_line_cursor#72 ← phi( mul8u_compare::@5/(byte*) print_line_cursor#83 )
  (byte*) print_char_cursor#159 ← phi( mul8u_compare::@5/(byte*) print_char_cursor#167 )
  (byte) mul8u_compare::a#6 ← phi( mul8u_compare::@5/(byte) mul8u_compare::a#8 )
  (byte) mul8u_compare::a#1 ← (byte) mul8u_compare::a#6 + rangenext(0,255)
  (bool~) mul8u_compare::$11 ← (byte) mul8u_compare::a#1 != rangelast(0,255)
  if((bool~) mul8u_compare::$11) goto mul8u_compare::@1
  to:mul8u_compare::@11
mul8u_compare::@11: scope:[mul8u_compare]  from mul8u_compare::@10
  (byte*) print_line_cursor#61 ← phi( mul8u_compare::@10/(byte*) print_line_cursor#72 )
  (byte*) print_char_cursor#146 ← phi( mul8u_compare::@10/(byte*) print_char_cursor#159 )
  (byte*) print_str::str#4 ← (const string) mul8u_compare::str
  call print_str 
  to:mul8u_compare::@16
mul8u_compare::@16: scope:[mul8u_compare]  from mul8u_compare::@11
  (byte*) print_line_cursor#51 ← phi( mul8u_compare::@11/(byte*) print_line_cursor#61 )
  (byte*) print_char_cursor#101 ← phi( mul8u_compare::@11/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#101
  call print_ln 
  to:mul8u_compare::@17
mul8u_compare::@17: scope:[mul8u_compare]  from mul8u_compare::@16
  (byte*) print_char_cursor#102 ← phi( mul8u_compare::@16/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#36 ← phi( mul8u_compare::@16/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#36
  (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#102
  to:mul8u_compare::@return
mul8u_error: scope:[mul8u_error]  from mul8u_compare::@8
  (byte*) print_line_cursor#114 ← phi( mul8u_compare::@8/(byte*) print_line_cursor#50 )
  (word) mul8u_error::mf#10 ← phi( mul8u_compare::@8/(word) mul8u_error::mf#0 )
  (word) mul8u_error::mn#8 ← phi( mul8u_compare::@8/(word) mul8u_error::mn#0 )
  (word) mul8u_error::ms#6 ← phi( mul8u_compare::@8/(word) mul8u_error::ms#0 )
  (byte) mul8u_error::b#4 ← phi( mul8u_compare::@8/(byte) mul8u_error::b#0 )
  (byte) mul8u_error::a#2 ← phi( mul8u_compare::@8/(byte) mul8u_error::a#0 )
  (byte*) print_char_cursor#147 ← phi( mul8u_compare::@8/(byte*) print_char_cursor#145 )
  (byte*) print_str::str#5 ← (const string) mul8u_error::str
  call print_str 
  to:mul8u_error::@1
mul8u_error::@1: scope:[mul8u_error]  from mul8u_error
  (byte*) print_line_cursor#112 ← phi( mul8u_error/(byte*) print_line_cursor#114 )
  (word) mul8u_error::mf#9 ← phi( mul8u_error/(word) mul8u_error::mf#10 )
  (word) mul8u_error::mn#7 ← phi( mul8u_error/(word) mul8u_error::mn#8 )
  (word) mul8u_error::ms#5 ← phi( mul8u_error/(word) mul8u_error::ms#6 )
  (byte) mul8u_error::b#3 ← phi( mul8u_error/(byte) mul8u_error::b#4 )
  (byte) mul8u_error::a#1 ← phi( mul8u_error/(byte) mul8u_error::a#2 )
  (byte*) print_char_cursor#103 ← phi( mul8u_error/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#103
  (byte) print_byte::b#3 ← (byte) mul8u_error::a#1
  call print_byte 
  to:mul8u_error::@2
mul8u_error::@2: scope:[mul8u_error]  from mul8u_error::@1
  (byte*) print_line_cursor#109 ← phi( mul8u_error::@1/(byte*) print_line_cursor#112 )
  (word) mul8u_error::mf#8 ← phi( mul8u_error::@1/(word) mul8u_error::mf#9 )
  (word) mul8u_error::mn#6 ← phi( mul8u_error::@1/(word) mul8u_error::mn#7 )
  (word) mul8u_error::ms#4 ← phi( mul8u_error::@1/(word) mul8u_error::ms#5 )
  (byte) mul8u_error::b#2 ← phi( mul8u_error::@1/(byte) mul8u_error::b#3 )
  (byte*) print_char_cursor#104 ← phi( mul8u_error::@1/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#104
  (byte*) print_str::str#6 ← (const string) mul8u_error::str1
  call print_str 
  to:mul8u_error::@3
mul8u_error::@3: scope:[mul8u_error]  from mul8u_error::@2
  (byte*) print_line_cursor#105 ← phi( mul8u_error::@2/(byte*) print_line_cursor#109 )
  (word) mul8u_error::mf#7 ← phi( mul8u_error::@2/(word) mul8u_error::mf#8 )
  (word) mul8u_error::mn#5 ← phi( mul8u_error::@2/(word) mul8u_error::mn#6 )
  (word) mul8u_error::ms#3 ← phi( mul8u_error::@2/(word) mul8u_error::ms#4 )
  (byte) mul8u_error::b#1 ← phi( mul8u_error::@2/(byte) mul8u_error::b#2 )
  (byte*) print_char_cursor#105 ← phi( mul8u_error::@2/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#105
  (byte) print_byte::b#4 ← (byte) mul8u_error::b#1
  call print_byte 
  to:mul8u_error::@4
mul8u_error::@4: scope:[mul8u_error]  from mul8u_error::@3
  (byte*) print_line_cursor#101 ← phi( mul8u_error::@3/(byte*) print_line_cursor#105 )
  (word) mul8u_error::mf#6 ← phi( mul8u_error::@3/(word) mul8u_error::mf#7 )
  (word) mul8u_error::mn#4 ← phi( mul8u_error::@3/(word) mul8u_error::mn#5 )
  (word) mul8u_error::ms#2 ← phi( mul8u_error::@3/(word) mul8u_error::ms#3 )
  (byte*) print_char_cursor#106 ← phi( mul8u_error::@3/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#106
  (byte*) print_str::str#7 ← (const string) mul8u_error::str2
  call print_str 
  to:mul8u_error::@5
mul8u_error::@5: scope:[mul8u_error]  from mul8u_error::@4
  (byte*) print_line_cursor#97 ← phi( mul8u_error::@4/(byte*) print_line_cursor#101 )
  (word) mul8u_error::mf#5 ← phi( mul8u_error::@4/(word) mul8u_error::mf#6 )
  (word) mul8u_error::mn#3 ← phi( mul8u_error::@4/(word) mul8u_error::mn#4 )
  (word) mul8u_error::ms#1 ← phi( mul8u_error::@4/(word) mul8u_error::ms#2 )
  (byte*) print_char_cursor#107 ← phi( mul8u_error::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#107
  (word) print_word::w#3 ← (word) mul8u_error::ms#1
  call print_word 
  to:mul8u_error::@6
mul8u_error::@6: scope:[mul8u_error]  from mul8u_error::@5
  (byte*) print_line_cursor#93 ← phi( mul8u_error::@5/(byte*) print_line_cursor#97 )
  (word) mul8u_error::mf#4 ← phi( mul8u_error::@5/(word) mul8u_error::mf#5 )
  (word) mul8u_error::mn#2 ← phi( mul8u_error::@5/(word) mul8u_error::mn#3 )
  (byte*) print_char_cursor#108 ← phi( mul8u_error::@5/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#108
  (byte*) print_str::str#8 ← (const string) mul8u_error::str3
  call print_str 
  to:mul8u_error::@7
mul8u_error::@7: scope:[mul8u_error]  from mul8u_error::@6
  (byte*) print_line_cursor#84 ← phi( mul8u_error::@6/(byte*) print_line_cursor#93 )
  (word) mul8u_error::mf#3 ← phi( mul8u_error::@6/(word) mul8u_error::mf#4 )
  (word) mul8u_error::mn#1 ← phi( mul8u_error::@6/(word) mul8u_error::mn#2 )
  (byte*) print_char_cursor#109 ← phi( mul8u_error::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#109
  (word) print_word::w#4 ← (word) mul8u_error::mn#1
  call print_word 
  to:mul8u_error::@8
mul8u_error::@8: scope:[mul8u_error]  from mul8u_error::@7
  (byte*) print_line_cursor#73 ← phi( mul8u_error::@7/(byte*) print_line_cursor#84 )
  (word) mul8u_error::mf#2 ← phi( mul8u_error::@7/(word) mul8u_error::mf#3 )
  (byte*) print_char_cursor#110 ← phi( mul8u_error::@7/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#110
  (byte*) print_str::str#9 ← (const string) mul8u_error::str4
  call print_str 
  to:mul8u_error::@9
mul8u_error::@9: scope:[mul8u_error]  from mul8u_error::@8
  (byte*) print_line_cursor#62 ← phi( mul8u_error::@8/(byte*) print_line_cursor#73 )
  (word) mul8u_error::mf#1 ← phi( mul8u_error::@8/(word) mul8u_error::mf#2 )
  (byte*) print_char_cursor#111 ← phi( mul8u_error::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#111
  (word) print_word::w#5 ← (word) mul8u_error::mf#1
  call print_word 
  to:mul8u_error::@10
mul8u_error::@10: scope:[mul8u_error]  from mul8u_error::@9
  (byte*) print_line_cursor#52 ← phi( mul8u_error::@9/(byte*) print_line_cursor#62 )
  (byte*) print_char_cursor#112 ← phi( mul8u_error::@9/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#112
  call print_ln 
  to:mul8u_error::@11
mul8u_error::@11: scope:[mul8u_error]  from mul8u_error::@10
  (byte*) print_char_cursor#113 ← phi( mul8u_error::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#37 ← phi( mul8u_error::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#37
  (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#113
  to:mul8u_error::@return
mul8u_error::@return: scope:[mul8u_error]  from mul8u_error::@11
  (byte*) print_line_cursor#38 ← phi( mul8u_error::@11/(byte*) print_line_cursor#15 )
  (byte*) print_char_cursor#114 ← phi( mul8u_error::@11/(byte*) print_char_cursor#48 )
  (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#114
  (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#38
  return 
  to:@return
mul8s_compare: scope:[mul8s_compare]  from main::@5
  (byte*) print_line_cursor#110 ← phi( main::@5/(byte*) print_line_cursor#7 )
  (byte*) print_char_cursor#186 ← phi( main::@5/(byte*) print_char_cursor#24 )
  (byte*) BGCOL#35 ← phi( main::@5/(byte*) BGCOL#38 )
  (signed byte/signed word/signed dword~) mul8s_compare::$0 ← - (byte/word/signed word/dword/signed dword) 128
  (signed byte) mul8s_compare::a#0 ← (signed byte/signed word/signed dword~) mul8s_compare::$0
  to:mul8s_compare::@1
mul8s_compare::@1: scope:[mul8s_compare]  from mul8s_compare mul8s_compare::@10
  (byte*) print_line_cursor#106 ← phi( mul8s_compare/(byte*) print_line_cursor#110 mul8s_compare::@10/(byte*) print_line_cursor#76 )
  (byte*) print_char_cursor#184 ← phi( mul8s_compare/(byte*) print_char_cursor#186 mul8s_compare::@10/(byte*) print_char_cursor#161 )
  (byte*) BGCOL#31 ← phi( mul8s_compare/(byte*) BGCOL#35 mul8s_compare::@10/(byte*) BGCOL#36 )
  (signed byte) mul8s_compare::a#7 ← phi( mul8s_compare/(signed byte) mul8s_compare::a#0 mul8s_compare::@10/(signed byte) mul8s_compare::a#1 )
  (signed byte/signed word/signed dword~) mul8s_compare::$1 ← - (byte/word/signed word/dword/signed dword) 128
  (signed byte) mul8s_compare::b#0 ← (signed byte/signed word/signed dword~) mul8s_compare::$1
  to:mul8s_compare::@2
mul8s_compare::@2: scope:[mul8s_compare]  from mul8s_compare::@1 mul8s_compare::@5
  (byte*) print_line_cursor#102 ← phi( mul8s_compare::@1/(byte*) print_line_cursor#106 mul8s_compare::@5/(byte*) print_line_cursor#87 )
  (byte*) print_char_cursor#182 ← phi( mul8s_compare::@1/(byte*) print_char_cursor#184 mul8s_compare::@5/(byte*) print_char_cursor#170 )
  (byte*) BGCOL#28 ← phi( mul8s_compare::@1/(byte*) BGCOL#31 mul8s_compare::@5/(byte*) BGCOL#32 )
  (signed byte) mul8s_compare::b#2 ← phi( mul8s_compare::@1/(signed byte) mul8s_compare::b#0 mul8s_compare::@5/(signed byte) mul8s_compare::b#1 )
  (signed byte) mul8s_compare::a#2 ← phi( mul8s_compare::@1/(signed byte) mul8s_compare::a#7 mul8s_compare::@5/(signed byte) mul8s_compare::a#8 )
  (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#2
  (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#2
  call muls8s 
  (signed word) muls8s::return#2 ← (signed word) muls8s::return#1
  to:mul8s_compare::@12
mul8s_compare::@12: scope:[mul8s_compare]  from mul8s_compare::@2
  (byte*) print_line_cursor#98 ← phi( mul8s_compare::@2/(byte*) print_line_cursor#102 )
  (byte*) print_char_cursor#180 ← phi( mul8s_compare::@2/(byte*) print_char_cursor#182 )
  (byte*) BGCOL#26 ← phi( mul8s_compare::@2/(byte*) BGCOL#28 )
  (signed byte) mul8s_compare::b#3 ← phi( mul8s_compare::@2/(signed byte) mul8s_compare::b#2 )
  (signed byte) mul8s_compare::a#3 ← phi( mul8s_compare::@2/(signed byte) mul8s_compare::a#2 )
  (signed word) muls8s::return#4 ← phi( mul8s_compare::@2/(signed word) muls8s::return#2 )
  (signed word~) mul8s_compare::$2 ← (signed word) muls8s::return#4
  (signed word) mul8s_compare::ms#0 ← (signed word~) mul8s_compare::$2
  (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#3
  (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#3
  call mulf8s 
  (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#1
  to:mul8s_compare::@13
mul8s_compare::@13: scope:[mul8s_compare]  from mul8s_compare::@12
  (byte*) print_line_cursor#94 ← phi( mul8s_compare::@12/(byte*) print_line_cursor#98 )
  (byte*) print_char_cursor#178 ← phi( mul8s_compare::@12/(byte*) print_char_cursor#180 )
  (byte*) BGCOL#23 ← phi( mul8s_compare::@12/(byte*) BGCOL#26 )
  (signed word) mul8s_compare::ms#4 ← phi( mul8s_compare::@12/(signed word) mul8s_compare::ms#0 )
  (signed byte) mul8s_compare::b#4 ← phi( mul8s_compare::@12/(signed byte) mul8s_compare::b#3 )
  (signed byte) mul8s_compare::a#4 ← phi( mul8s_compare::@12/(signed byte) mul8s_compare::a#3 )
  (signed word) mulf8s::return#4 ← phi( mul8s_compare::@12/(signed word) mulf8s::return#2 )
  (signed word~) mul8s_compare::$3 ← (signed word) mulf8s::return#4
  (signed word) mul8s_compare::mf#0 ← (signed word~) mul8s_compare::$3
  (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#4
  (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#4
  call mul8s 
  (signed word) mul8s::return#2 ← (signed word) mul8s::return#1
  to:mul8s_compare::@14
mul8s_compare::@14: scope:[mul8s_compare]  from mul8s_compare::@13
  (byte*) print_line_cursor#85 ← phi( mul8s_compare::@13/(byte*) print_line_cursor#94 )
  (byte*) print_char_cursor#174 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#178 )
  (signed byte) mul8s_compare::a#12 ← phi( mul8s_compare::@13/(signed byte) mul8s_compare::a#4 )
  (byte*) BGCOL#19 ← phi( mul8s_compare::@13/(byte*) BGCOL#23 )
  (signed byte) mul8s_compare::b#10 ← phi( mul8s_compare::@13/(signed byte) mul8s_compare::b#4 )
  (signed word) mul8s_compare::mf#1 ← phi( mul8s_compare::@13/(signed word) mul8s_compare::mf#0 )
  (signed word) mul8s_compare::ms#1 ← phi( mul8s_compare::@13/(signed word) mul8s_compare::ms#4 )
  (signed word) mul8s::return#4 ← phi( mul8s_compare::@13/(signed word) mul8s::return#2 )
  (signed word~) mul8s_compare::$4 ← (signed word) mul8s::return#4
  (signed word) mul8s_compare::mn#0 ← (signed word~) mul8s_compare::$4
  (byte) mul8s_compare::ok#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  (bool~) mul8s_compare::$5 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1
  (bool~) mul8s_compare::$6 ← ! (bool~) mul8s_compare::$5
  if((bool~) mul8s_compare::$6) goto mul8s_compare::@3
  to:mul8s_compare::@6
mul8s_compare::@3: scope:[mul8s_compare]  from mul8s_compare::@14 mul8s_compare::@6
  (byte*) print_line_cursor#74 ← phi( mul8s_compare::@14/(byte*) print_line_cursor#85 mul8s_compare::@6/(byte*) print_line_cursor#86 )
  (byte*) print_char_cursor#168 ← phi( mul8s_compare::@14/(byte*) print_char_cursor#174 mul8s_compare::@6/(byte*) print_char_cursor#175 )
  (signed word) mul8s_compare::mf#4 ← phi( mul8s_compare::@14/(signed word) mul8s_compare::mf#1 mul8s_compare::@6/(signed word) mul8s_compare::mf#6 )
  (signed byte) mul8s_compare::a#10 ← phi( mul8s_compare::@14/(signed byte) mul8s_compare::a#12 mul8s_compare::@6/(signed byte) mul8s_compare::a#13 )
  (byte*) BGCOL#13 ← phi( mul8s_compare::@14/(byte*) BGCOL#19 mul8s_compare::@6/(byte*) BGCOL#20 )
  (signed byte) mul8s_compare::b#8 ← phi( mul8s_compare::@14/(signed byte) mul8s_compare::b#10 mul8s_compare::@6/(signed byte) mul8s_compare::b#11 )
  (byte) mul8s_compare::ok#4 ← phi( mul8s_compare::@14/(byte) mul8s_compare::ok#0 mul8s_compare::@6/(byte) mul8s_compare::ok#1 )
  (signed word) mul8s_compare::mn#1 ← phi( mul8s_compare::@14/(signed word) mul8s_compare::mn#0 mul8s_compare::@6/(signed word) mul8s_compare::mn#3 )
  (signed word) mul8s_compare::ms#2 ← phi( mul8s_compare::@14/(signed word) mul8s_compare::ms#1 mul8s_compare::@6/(signed word) mul8s_compare::ms#5 )
  (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1
  (bool~) mul8s_compare::$8 ← ! (bool~) mul8s_compare::$7
  if((bool~) mul8s_compare::$8) goto mul8s_compare::@4
  to:mul8s_compare::@7
mul8s_compare::@6: scope:[mul8s_compare]  from mul8s_compare::@14
  (byte*) print_line_cursor#86 ← phi( mul8s_compare::@14/(byte*) print_line_cursor#85 )
  (byte*) print_char_cursor#175 ← phi( mul8s_compare::@14/(byte*) print_char_cursor#174 )
  (signed word) mul8s_compare::mf#6 ← phi( mul8s_compare::@14/(signed word) mul8s_compare::mf#1 )
  (signed byte) mul8s_compare::a#13 ← phi( mul8s_compare::@14/(signed byte) mul8s_compare::a#12 )
  (byte*) BGCOL#20 ← phi( mul8s_compare::@14/(byte*) BGCOL#19 )
  (signed byte) mul8s_compare::b#11 ← phi( mul8s_compare::@14/(signed byte) mul8s_compare::b#10 )
  (signed word) mul8s_compare::mn#3 ← phi( mul8s_compare::@14/(signed word) mul8s_compare::mn#0 )
  (signed word) mul8s_compare::ms#5 ← phi( mul8s_compare::@14/(signed word) mul8s_compare::ms#1 )
  (byte) mul8s_compare::ok#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:mul8s_compare::@3
mul8s_compare::@4: scope:[mul8s_compare]  from mul8s_compare::@3 mul8s_compare::@7
  (byte*) print_line_cursor#63 ← phi( mul8s_compare::@3/(byte*) print_line_cursor#74 mul8s_compare::@7/(byte*) print_line_cursor#75 )
  (byte*) print_char_cursor#160 ← phi( mul8s_compare::@3/(byte*) print_char_cursor#168 mul8s_compare::@7/(byte*) print_char_cursor#169 )
  (signed word) mul8s_compare::mf#3 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::mf#4 mul8s_compare::@7/(signed word) mul8s_compare::mf#5 )
  (signed word) mul8s_compare::mn#4 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::mn#1 mul8s_compare::@7/(signed word) mul8s_compare::mn#5 )
  (signed word) mul8s_compare::ms#6 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::ms#2 mul8s_compare::@7/(signed word) mul8s_compare::ms#7 )
  (signed byte) mul8s_compare::a#9 ← phi( mul8s_compare::@3/(signed byte) mul8s_compare::a#10 mul8s_compare::@7/(signed byte) mul8s_compare::a#11 )
  (byte*) BGCOL#8 ← phi( mul8s_compare::@3/(byte*) BGCOL#13 mul8s_compare::@7/(byte*) BGCOL#14 )
  (signed byte) mul8s_compare::b#7 ← phi( mul8s_compare::@3/(signed byte) mul8s_compare::b#8 mul8s_compare::@7/(signed byte) mul8s_compare::b#9 )
  (byte) mul8s_compare::ok#3 ← phi( mul8s_compare::@3/(byte) mul8s_compare::ok#4 mul8s_compare::@7/(byte) mul8s_compare::ok#2 )
  (bool~) mul8s_compare::$9 ← (byte) mul8s_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) mul8s_compare::$10 ← ! (bool~) mul8s_compare::$9
  if((bool~) mul8s_compare::$10) goto mul8s_compare::@5
  to:mul8s_compare::@8
mul8s_compare::@7: scope:[mul8s_compare]  from mul8s_compare::@3
  (byte*) print_line_cursor#75 ← phi( mul8s_compare::@3/(byte*) print_line_cursor#74 )
  (byte*) print_char_cursor#169 ← phi( mul8s_compare::@3/(byte*) print_char_cursor#168 )
  (signed word) mul8s_compare::mf#5 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::mf#4 )
  (signed word) mul8s_compare::mn#5 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::mn#1 )
  (signed word) mul8s_compare::ms#7 ← phi( mul8s_compare::@3/(signed word) mul8s_compare::ms#2 )
  (signed byte) mul8s_compare::a#11 ← phi( mul8s_compare::@3/(signed byte) mul8s_compare::a#10 )
  (byte*) BGCOL#14 ← phi( mul8s_compare::@3/(byte*) BGCOL#13 )
  (signed byte) mul8s_compare::b#9 ← phi( mul8s_compare::@3/(signed byte) mul8s_compare::b#8 )
  (byte) mul8s_compare::ok#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:mul8s_compare::@4
mul8s_compare::@5: scope:[mul8s_compare]  from mul8s_compare::@4
  (byte*) BGCOL#32 ← phi( mul8s_compare::@4/(byte*) BGCOL#8 )
  (byte*) print_line_cursor#87 ← phi( mul8s_compare::@4/(byte*) print_line_cursor#63 )
  (byte*) print_char_cursor#170 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#160 )
  (signed byte) mul8s_compare::a#8 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::a#9 )
  (signed byte) mul8s_compare::b#5 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::b#7 )
  (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#5
  (signed byte/signed word/signed dword~) mul8s_compare::$12 ← - (byte/word/signed word/dword/signed dword) 128
  (bool~) mul8s_compare::$13 ← (signed byte) mul8s_compare::b#1 != (signed byte/signed word/signed dword~) mul8s_compare::$12
  if((bool~) mul8s_compare::$13) goto mul8s_compare::@2
  to:mul8s_compare::@10
mul8s_compare::@8: scope:[mul8s_compare]  from mul8s_compare::@4
  (byte*) print_line_cursor#53 ← phi( mul8s_compare::@4/(byte*) print_line_cursor#63 )
  (byte*) print_char_cursor#148 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#160 )
  (signed word) mul8s_compare::mf#2 ← phi( mul8s_compare::@4/(signed word) mul8s_compare::mf#3 )
  (signed word) mul8s_compare::mn#2 ← phi( mul8s_compare::@4/(signed word) mul8s_compare::mn#4 )
  (signed word) mul8s_compare::ms#3 ← phi( mul8s_compare::@4/(signed word) mul8s_compare::ms#6 )
  (signed byte) mul8s_compare::b#6 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::b#7 )
  (signed byte) mul8s_compare::a#5 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::a#9 )
  (byte*) BGCOL#4 ← phi( mul8s_compare::@4/(byte*) BGCOL#8 )
  *((byte*) BGCOL#4) ← (byte/signed byte/word/signed word/dword/signed dword) 2
  (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#5
  (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#6
  (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#3
  (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#2
  (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#2
  call mul8s_error 
  to:mul8s_compare::@15
mul8s_compare::@15: scope:[mul8s_compare]  from mul8s_compare::@8
  (byte*) print_line_cursor#39 ← phi( mul8s_compare::@8/(byte*) print_line_cursor#21 )
  (byte*) print_char_cursor#115 ← phi( mul8s_compare::@8/(byte*) print_char_cursor#65 )
  (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#115
  (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#39
  to:mul8s_compare::@return
mul8s_compare::@return: scope:[mul8s_compare]  from mul8s_compare::@15 mul8s_compare::@17
  (byte*) print_line_cursor#40 ← phi( mul8s_compare::@15/(byte*) print_line_cursor#17 mul8s_compare::@17/(byte*) print_line_cursor#19 )
  (byte*) print_char_cursor#116 ← phi( mul8s_compare::@15/(byte*) print_char_cursor#50 mul8s_compare::@17/(byte*) print_char_cursor#53 )
  (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#116
  (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#40
  return 
  to:@return
mul8s_compare::@10: scope:[mul8s_compare]  from mul8s_compare::@5
  (byte*) BGCOL#36 ← phi( mul8s_compare::@5/(byte*) BGCOL#32 )
  (byte*) print_line_cursor#76 ← phi( mul8s_compare::@5/(byte*) print_line_cursor#87 )
  (byte*) print_char_cursor#161 ← phi( mul8s_compare::@5/(byte*) print_char_cursor#170 )
  (signed byte) mul8s_compare::a#6 ← phi( mul8s_compare::@5/(signed byte) mul8s_compare::a#8 )
  (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#6
  (signed byte/signed word/signed dword~) mul8s_compare::$14 ← - (byte/word/signed word/dword/signed dword) 128
  (bool~) mul8s_compare::$15 ← (signed byte) mul8s_compare::a#1 != (signed byte/signed word/signed dword~) mul8s_compare::$14
  if((bool~) mul8s_compare::$15) goto mul8s_compare::@1
  to:mul8s_compare::@11
mul8s_compare::@11: scope:[mul8s_compare]  from mul8s_compare::@10
  (byte*) print_line_cursor#64 ← phi( mul8s_compare::@10/(byte*) print_line_cursor#76 )
  (byte*) print_char_cursor#149 ← phi( mul8s_compare::@10/(byte*) print_char_cursor#161 )
  (byte*) print_str::str#10 ← (const string) mul8s_compare::str
  call print_str 
  to:mul8s_compare::@16
mul8s_compare::@16: scope:[mul8s_compare]  from mul8s_compare::@11
  (byte*) print_line_cursor#54 ← phi( mul8s_compare::@11/(byte*) print_line_cursor#64 )
  (byte*) print_char_cursor#117 ← phi( mul8s_compare::@11/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#117
  call print_ln 
  to:mul8s_compare::@17
mul8s_compare::@17: scope:[mul8s_compare]  from mul8s_compare::@16
  (byte*) print_char_cursor#118 ← phi( mul8s_compare::@16/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#41 ← phi( mul8s_compare::@16/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#41
  (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#118
  to:mul8s_compare::@return
mul8s_error: scope:[mul8s_error]  from mul8s_compare::@8
  (byte*) print_line_cursor#115 ← phi( mul8s_compare::@8/(byte*) print_line_cursor#53 )
  (signed word) mul8s_error::mf#10 ← phi( mul8s_compare::@8/(signed word) mul8s_error::mf#0 )
  (signed word) mul8s_error::mn#8 ← phi( mul8s_compare::@8/(signed word) mul8s_error::mn#0 )
  (signed word) mul8s_error::ms#6 ← phi( mul8s_compare::@8/(signed word) mul8s_error::ms#0 )
  (signed byte) mul8s_error::b#4 ← phi( mul8s_compare::@8/(signed byte) mul8s_error::b#0 )
  (signed byte) mul8s_error::a#2 ← phi( mul8s_compare::@8/(signed byte) mul8s_error::a#0 )
  (byte*) print_char_cursor#150 ← phi( mul8s_compare::@8/(byte*) print_char_cursor#148 )
  (byte*) print_str::str#11 ← (const string) mul8s_error::str
  call print_str 
  to:mul8s_error::@1
mul8s_error::@1: scope:[mul8s_error]  from mul8s_error
  (byte*) print_line_cursor#113 ← phi( mul8s_error/(byte*) print_line_cursor#115 )
  (signed word) mul8s_error::mf#9 ← phi( mul8s_error/(signed word) mul8s_error::mf#10 )
  (signed word) mul8s_error::mn#7 ← phi( mul8s_error/(signed word) mul8s_error::mn#8 )
  (signed word) mul8s_error::ms#5 ← phi( mul8s_error/(signed word) mul8s_error::ms#6 )
  (signed byte) mul8s_error::b#3 ← phi( mul8s_error/(signed byte) mul8s_error::b#4 )
  (signed byte) mul8s_error::a#1 ← phi( mul8s_error/(signed byte) mul8s_error::a#2 )
  (byte*) print_char_cursor#119 ← phi( mul8s_error/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#119
  (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#1
  call print_sbyte 
  to:mul8s_error::@2
mul8s_error::@2: scope:[mul8s_error]  from mul8s_error::@1
  (byte*) print_line_cursor#111 ← phi( mul8s_error::@1/(byte*) print_line_cursor#113 )
  (signed word) mul8s_error::mf#8 ← phi( mul8s_error::@1/(signed word) mul8s_error::mf#9 )
  (signed word) mul8s_error::mn#6 ← phi( mul8s_error::@1/(signed word) mul8s_error::mn#7 )
  (signed word) mul8s_error::ms#4 ← phi( mul8s_error::@1/(signed word) mul8s_error::ms#5 )
  (signed byte) mul8s_error::b#2 ← phi( mul8s_error::@1/(signed byte) mul8s_error::b#3 )
  (byte*) print_char_cursor#120 ← phi( mul8s_error::@1/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#120
  (byte*) print_str::str#12 ← (const string) mul8s_error::str1
  call print_str 
  to:mul8s_error::@3
mul8s_error::@3: scope:[mul8s_error]  from mul8s_error::@2
  (byte*) print_line_cursor#107 ← phi( mul8s_error::@2/(byte*) print_line_cursor#111 )
  (signed word) mul8s_error::mf#7 ← phi( mul8s_error::@2/(signed word) mul8s_error::mf#8 )
  (signed word) mul8s_error::mn#5 ← phi( mul8s_error::@2/(signed word) mul8s_error::mn#6 )
  (signed word) mul8s_error::ms#3 ← phi( mul8s_error::@2/(signed word) mul8s_error::ms#4 )
  (signed byte) mul8s_error::b#1 ← phi( mul8s_error::@2/(signed byte) mul8s_error::b#2 )
  (byte*) print_char_cursor#121 ← phi( mul8s_error::@2/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#121
  (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#1
  call print_sbyte 
  to:mul8s_error::@4
mul8s_error::@4: scope:[mul8s_error]  from mul8s_error::@3
  (byte*) print_line_cursor#103 ← phi( mul8s_error::@3/(byte*) print_line_cursor#107 )
  (signed word) mul8s_error::mf#6 ← phi( mul8s_error::@3/(signed word) mul8s_error::mf#7 )
  (signed word) mul8s_error::mn#4 ← phi( mul8s_error::@3/(signed word) mul8s_error::mn#5 )
  (signed word) mul8s_error::ms#2 ← phi( mul8s_error::@3/(signed word) mul8s_error::ms#3 )
  (byte*) print_char_cursor#122 ← phi( mul8s_error::@3/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#122
  (byte*) print_str::str#13 ← (const string) mul8s_error::str2
  call print_str 
  to:mul8s_error::@5
mul8s_error::@5: scope:[mul8s_error]  from mul8s_error::@4
  (byte*) print_line_cursor#99 ← phi( mul8s_error::@4/(byte*) print_line_cursor#103 )
  (signed word) mul8s_error::mf#5 ← phi( mul8s_error::@4/(signed word) mul8s_error::mf#6 )
  (signed word) mul8s_error::mn#3 ← phi( mul8s_error::@4/(signed word) mul8s_error::mn#4 )
  (signed word) mul8s_error::ms#1 ← phi( mul8s_error::@4/(signed word) mul8s_error::ms#2 )
  (byte*) print_char_cursor#123 ← phi( mul8s_error::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#123
  (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#1
  call print_sword 
  to:mul8s_error::@6
mul8s_error::@6: scope:[mul8s_error]  from mul8s_error::@5
  (byte*) print_line_cursor#95 ← phi( mul8s_error::@5/(byte*) print_line_cursor#99 )
  (signed word) mul8s_error::mf#4 ← phi( mul8s_error::@5/(signed word) mul8s_error::mf#5 )
  (signed word) mul8s_error::mn#2 ← phi( mul8s_error::@5/(signed word) mul8s_error::mn#3 )
  (byte*) print_char_cursor#124 ← phi( mul8s_error::@5/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#124
  (byte*) print_str::str#14 ← (const string) mul8s_error::str3
  call print_str 
  to:mul8s_error::@7
mul8s_error::@7: scope:[mul8s_error]  from mul8s_error::@6
  (byte*) print_line_cursor#88 ← phi( mul8s_error::@6/(byte*) print_line_cursor#95 )
  (signed word) mul8s_error::mf#3 ← phi( mul8s_error::@6/(signed word) mul8s_error::mf#4 )
  (signed word) mul8s_error::mn#1 ← phi( mul8s_error::@6/(signed word) mul8s_error::mn#2 )
  (byte*) print_char_cursor#125 ← phi( mul8s_error::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#125
  (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#1
  call print_sword 
  to:mul8s_error::@8
mul8s_error::@8: scope:[mul8s_error]  from mul8s_error::@7
  (byte*) print_line_cursor#77 ← phi( mul8s_error::@7/(byte*) print_line_cursor#88 )
  (signed word) mul8s_error::mf#2 ← phi( mul8s_error::@7/(signed word) mul8s_error::mf#3 )
  (byte*) print_char_cursor#126 ← phi( mul8s_error::@7/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#126
  (byte*) print_str::str#15 ← (const string) mul8s_error::str4
  call print_str 
  to:mul8s_error::@9
mul8s_error::@9: scope:[mul8s_error]  from mul8s_error::@8
  (byte*) print_line_cursor#65 ← phi( mul8s_error::@8/(byte*) print_line_cursor#77 )
  (signed word) mul8s_error::mf#1 ← phi( mul8s_error::@8/(signed word) mul8s_error::mf#2 )
  (byte*) print_char_cursor#127 ← phi( mul8s_error::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#127
  (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#1
  call print_sword 
  to:mul8s_error::@10
mul8s_error::@10: scope:[mul8s_error]  from mul8s_error::@9
  (byte*) print_line_cursor#55 ← phi( mul8s_error::@9/(byte*) print_line_cursor#65 )
  (byte*) print_char_cursor#128 ← phi( mul8s_error::@9/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#128
  call print_ln 
  to:mul8s_error::@11
mul8s_error::@11: scope:[mul8s_error]  from mul8s_error::@10
  (byte*) print_char_cursor#129 ← phi( mul8s_error::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#42 ← phi( mul8s_error::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#20 ← (byte*) print_line_cursor#42
  (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#129
  to:mul8s_error::@return
mul8s_error::@return: scope:[mul8s_error]  from mul8s_error::@11
  (byte*) print_line_cursor#43 ← phi( mul8s_error::@11/(byte*) print_line_cursor#20 )
  (byte*) print_char_cursor#130 ← phi( mul8s_error::@11/(byte*) print_char_cursor#64 )
  (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#130
  (byte*) print_line_cursor#21 ← (byte*) print_line_cursor#43
  return 
  to:@return
@42: scope:[]  from @36
  (byte*) print_screen#5 ← phi( @36/(byte*) print_screen#6 )
  (byte*) print_char_cursor#151 ← phi( @36/(byte*) print_char_cursor#162 )
  (byte*) print_line_cursor#56 ← phi( @36/(byte*) print_line_cursor#66 )
  (byte*) BGCOL#5 ← phi( @36/(byte*) BGCOL#15 )
  call main 
  to:@43
@43: scope:[]  from @42
  (byte*) print_char_cursor#131 ← phi( @42/(byte*) print_char_cursor#26 )
  (byte*) print_line_cursor#44 ← phi( @42/(byte*) print_line_cursor#9 )
  (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#44
  (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#131
  to:@end
@end: scope:[]  from @43

SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @12
(label) @24
(label) @33
(label) @36
(label) @42
(label) @43
(label) @begin
(label) @end
(byte*) BGCOL
(byte*) BGCOL#0
(byte*) BGCOL#1
(byte*) BGCOL#10
(byte*) BGCOL#11
(byte*) BGCOL#12
(byte*) BGCOL#13
(byte*) BGCOL#14
(byte*) BGCOL#15
(byte*) BGCOL#16
(byte*) BGCOL#17
(byte*) BGCOL#18
(byte*) BGCOL#19
(byte*) BGCOL#2
(byte*) BGCOL#20
(byte*) BGCOL#21
(byte*) BGCOL#22
(byte*) BGCOL#23
(byte*) BGCOL#24
(byte*) BGCOL#25
(byte*) BGCOL#26
(byte*) BGCOL#27
(byte*) BGCOL#28
(byte*) BGCOL#29
(byte*) BGCOL#3
(byte*) BGCOL#30
(byte*) BGCOL#31
(byte*) BGCOL#32
(byte*) BGCOL#33
(byte*) BGCOL#34
(byte*) BGCOL#35
(byte*) BGCOL#36
(byte*) BGCOL#37
(byte*) BGCOL#38
(byte*) BGCOL#4
(byte*) BGCOL#5
(byte*) BGCOL#6
(byte*) BGCOL#7
(byte*) BGCOL#8
(byte*) BGCOL#9
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@return
(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
(byte~) mul8s::$0
(byte~) mul8s::$1
(bool~) mul8s::$10
(byte~) mul8s::$12
(byte~) mul8s::$13
(byte~) mul8s::$14
(signed word~) mul8s::$15
(byte~) mul8s::$16
(byte~) mul8s::$17
(word~) mul8s::$2
(bool~) mul8s::$3
(bool~) mul8s::$4
(byte~) mul8s::$6
(byte~) mul8s::$7
(byte~) mul8s::$8
(bool~) mul8s::$9
(label) mul8s::@1
(label) mul8s::@2
(label) mul8s::@3
(label) mul8s::@4
(label) mul8s::@6
(label) mul8s::@return
(signed byte) mul8s::a
(signed byte) mul8s::a#0
(signed byte) mul8s::a#1
(signed byte) mul8s::a#2
(signed byte) mul8s::a#3
(signed byte) mul8s::a#4
(signed byte) mul8s::a#5
(signed byte) mul8s::b
(signed byte) mul8s::b#0
(signed byte) mul8s::b#1
(signed byte) mul8s::b#2
(signed byte) mul8s::b#3
(signed byte) mul8s::b#4
(word) mul8s::m
(word) mul8s::m#0
(word) mul8s::m#1
(word) mul8s::m#2
(word) mul8s::m#3
(word) mul8s::m#4
(word) mul8s::m#5
(word) mul8s::m#6
(signed word) mul8s::return
(signed word) mul8s::return#0
(signed word) mul8s::return#1
(signed word) mul8s::return#2
(signed word) mul8s::return#3
(signed word) mul8s::return#4
(void()) mul8s_compare()
(signed byte/signed word/signed dword~) mul8s_compare::$0
(signed byte/signed word/signed dword~) mul8s_compare::$1
(bool~) mul8s_compare::$10
(signed byte/signed word/signed dword~) mul8s_compare::$12
(bool~) mul8s_compare::$13
(signed byte/signed word/signed dword~) mul8s_compare::$14
(bool~) mul8s_compare::$15
(signed word~) mul8s_compare::$2
(signed word~) mul8s_compare::$3
(signed word~) mul8s_compare::$4
(bool~) mul8s_compare::$5
(bool~) mul8s_compare::$6
(bool~) mul8s_compare::$7
(bool~) mul8s_compare::$8
(bool~) mul8s_compare::$9
(label) mul8s_compare::@1
(label) mul8s_compare::@10
(label) mul8s_compare::@11
(label) mul8s_compare::@12
(label) mul8s_compare::@13
(label) mul8s_compare::@14
(label) mul8s_compare::@15
(label) mul8s_compare::@16
(label) mul8s_compare::@17
(label) mul8s_compare::@2
(label) mul8s_compare::@3
(label) mul8s_compare::@4
(label) mul8s_compare::@5
(label) mul8s_compare::@6
(label) mul8s_compare::@7
(label) mul8s_compare::@8
(label) mul8s_compare::@return
(signed byte) mul8s_compare::a
(signed byte) mul8s_compare::a#0
(signed byte) mul8s_compare::a#1
(signed byte) mul8s_compare::a#10
(signed byte) mul8s_compare::a#11
(signed byte) mul8s_compare::a#12
(signed byte) mul8s_compare::a#13
(signed byte) mul8s_compare::a#2
(signed byte) mul8s_compare::a#3
(signed byte) mul8s_compare::a#4
(signed byte) mul8s_compare::a#5
(signed byte) mul8s_compare::a#6
(signed byte) mul8s_compare::a#7
(signed byte) mul8s_compare::a#8
(signed byte) mul8s_compare::a#9
(signed byte) mul8s_compare::b
(signed byte) mul8s_compare::b#0
(signed byte) mul8s_compare::b#1
(signed byte) mul8s_compare::b#10
(signed byte) mul8s_compare::b#11
(signed byte) mul8s_compare::b#2
(signed byte) mul8s_compare::b#3
(signed byte) mul8s_compare::b#4
(signed byte) mul8s_compare::b#5
(signed byte) mul8s_compare::b#6
(signed byte) mul8s_compare::b#7
(signed byte) mul8s_compare::b#8
(signed byte) mul8s_compare::b#9
(signed word) mul8s_compare::mf
(signed word) mul8s_compare::mf#0
(signed word) mul8s_compare::mf#1
(signed word) mul8s_compare::mf#2
(signed word) mul8s_compare::mf#3
(signed word) mul8s_compare::mf#4
(signed word) mul8s_compare::mf#5
(signed word) mul8s_compare::mf#6
(signed word) mul8s_compare::mn
(signed word) mul8s_compare::mn#0
(signed word) mul8s_compare::mn#1
(signed word) mul8s_compare::mn#2
(signed word) mul8s_compare::mn#3
(signed word) mul8s_compare::mn#4
(signed word) mul8s_compare::mn#5
(signed word) mul8s_compare::ms
(signed word) mul8s_compare::ms#0
(signed word) mul8s_compare::ms#1
(signed word) mul8s_compare::ms#2
(signed word) mul8s_compare::ms#3
(signed word) mul8s_compare::ms#4
(signed word) mul8s_compare::ms#5
(signed word) mul8s_compare::ms#6
(signed word) mul8s_compare::ms#7
(byte) mul8s_compare::ok
(byte) mul8s_compare::ok#0
(byte) mul8s_compare::ok#1
(byte) mul8s_compare::ok#2
(byte) mul8s_compare::ok#3
(byte) mul8s_compare::ok#4
(const string) mul8s_compare::str = (string) "signed multiply results match!@"
(void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf)
(label) mul8s_error::@1
(label) mul8s_error::@10
(label) mul8s_error::@11
(label) mul8s_error::@2
(label) mul8s_error::@3
(label) mul8s_error::@4
(label) mul8s_error::@5
(label) mul8s_error::@6
(label) mul8s_error::@7
(label) mul8s_error::@8
(label) mul8s_error::@9
(label) mul8s_error::@return
(signed byte) mul8s_error::a
(signed byte) mul8s_error::a#0
(signed byte) mul8s_error::a#1
(signed byte) mul8s_error::a#2
(signed byte) mul8s_error::b
(signed byte) mul8s_error::b#0
(signed byte) mul8s_error::b#1
(signed byte) mul8s_error::b#2
(signed byte) mul8s_error::b#3
(signed byte) mul8s_error::b#4
(signed word) mul8s_error::mf
(signed word) mul8s_error::mf#0
(signed word) mul8s_error::mf#1
(signed word) mul8s_error::mf#10
(signed word) mul8s_error::mf#2
(signed word) mul8s_error::mf#3
(signed word) mul8s_error::mf#4
(signed word) mul8s_error::mf#5
(signed word) mul8s_error::mf#6
(signed word) mul8s_error::mf#7
(signed word) mul8s_error::mf#8
(signed word) mul8s_error::mf#9
(signed word) mul8s_error::mn
(signed word) mul8s_error::mn#0
(signed word) mul8s_error::mn#1
(signed word) mul8s_error::mn#2
(signed word) mul8s_error::mn#3
(signed word) mul8s_error::mn#4
(signed word) mul8s_error::mn#5
(signed word) mul8s_error::mn#6
(signed word) mul8s_error::mn#7
(signed word) mul8s_error::mn#8
(signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0
(signed word) mul8s_error::ms#1
(signed word) mul8s_error::ms#2
(signed word) mul8s_error::ms#3
(signed word) mul8s_error::ms#4
(signed word) mul8s_error::ms#5
(signed word) mul8s_error::ms#6
(const string) mul8s_error::str = (string) "signed multiply mismatch @"
(const string) mul8s_error::str1 = (string) "*@"
(const string) mul8s_error::str2 = (string) " slow:@"
(const string) mul8s_error::str3 = (string) " / normal:@"
(const string) mul8s_error::str4 = (string) " / fast:@"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(bool~) mul8u::$0
(byte~) mul8u::$1
(bool~) mul8u::$2
(bool~) mul8u::$3
(word~) mul8u::$4
(byte~) mul8u::$5
(word~) mul8u::$6
(label) mul8u::@1
(label) mul8u::@2
(label) mul8u::@3
(label) mul8u::@4
(label) mul8u::@7
(label) mul8u::@return
(byte) mul8u::a
(byte) mul8u::a#0
(byte) mul8u::a#1
(byte) mul8u::a#2
(byte) mul8u::a#3
(byte) mul8u::a#4
(byte) mul8u::a#5
(byte) mul8u::a#6
(byte) mul8u::a#7
(byte) mul8u::b
(byte) mul8u::b#0
(byte) mul8u::b#1
(byte) mul8u::b#2
(word) mul8u::mb
(word) mul8u::mb#0
(word) mul8u::mb#1
(word) mul8u::mb#2
(word) mul8u::mb#3
(word) mul8u::mb#4
(word) mul8u::mb#5
(word) mul8u::res
(word) mul8u::res#0
(word) mul8u::res#1
(word) mul8u::res#2
(word) mul8u::res#3
(word) mul8u::res#4
(word) mul8u::res#5
(word) mul8u::res#6
(word) mul8u::return
(word) mul8u::return#0
(word) mul8u::return#1
(word) mul8u::return#2
(word) mul8u::return#3
(word) mul8u::return#4
(word) mul8u::return#5
(word) mul8u::return#6
(void()) mul8u_compare()
(word~) mul8u_compare::$0
(word~) mul8u_compare::$1
(bool~) mul8u_compare::$10
(bool~) mul8u_compare::$11
(word~) mul8u_compare::$2
(bool~) mul8u_compare::$3
(bool~) mul8u_compare::$4
(bool~) mul8u_compare::$5
(bool~) mul8u_compare::$6
(bool~) mul8u_compare::$7
(bool~) mul8u_compare::$8
(label) mul8u_compare::@1
(label) mul8u_compare::@10
(label) mul8u_compare::@11
(label) mul8u_compare::@12
(label) mul8u_compare::@13
(label) mul8u_compare::@14
(label) mul8u_compare::@15
(label) mul8u_compare::@16
(label) mul8u_compare::@17
(label) mul8u_compare::@2
(label) mul8u_compare::@3
(label) mul8u_compare::@4
(label) mul8u_compare::@5
(label) mul8u_compare::@6
(label) mul8u_compare::@7
(label) mul8u_compare::@8
(label) mul8u_compare::@return
(byte) mul8u_compare::a
(byte) mul8u_compare::a#0
(byte) mul8u_compare::a#1
(byte) mul8u_compare::a#10
(byte) mul8u_compare::a#11
(byte) mul8u_compare::a#12
(byte) mul8u_compare::a#13
(byte) mul8u_compare::a#2
(byte) mul8u_compare::a#3
(byte) mul8u_compare::a#4
(byte) mul8u_compare::a#5
(byte) mul8u_compare::a#6
(byte) mul8u_compare::a#7
(byte) mul8u_compare::a#8
(byte) mul8u_compare::a#9
(byte) mul8u_compare::b
(byte) mul8u_compare::b#0
(byte) mul8u_compare::b#1
(byte) mul8u_compare::b#10
(byte) mul8u_compare::b#11
(byte) mul8u_compare::b#2
(byte) mul8u_compare::b#3
(byte) mul8u_compare::b#4
(byte) mul8u_compare::b#5
(byte) mul8u_compare::b#6
(byte) mul8u_compare::b#7
(byte) mul8u_compare::b#8
(byte) mul8u_compare::b#9
(word) mul8u_compare::mf
(word) mul8u_compare::mf#0
(word) mul8u_compare::mf#1
(word) mul8u_compare::mf#2
(word) mul8u_compare::mf#3
(word) mul8u_compare::mf#4
(word) mul8u_compare::mf#5
(word) mul8u_compare::mf#6
(word) mul8u_compare::mn
(word) mul8u_compare::mn#0
(word) mul8u_compare::mn#1
(word) mul8u_compare::mn#2
(word) mul8u_compare::mn#3
(word) mul8u_compare::mn#4
(word) mul8u_compare::mn#5
(word) mul8u_compare::ms
(word) mul8u_compare::ms#0
(word) mul8u_compare::ms#1
(word) mul8u_compare::ms#2
(word) mul8u_compare::ms#3
(word) mul8u_compare::ms#4
(word) mul8u_compare::ms#5
(word) mul8u_compare::ms#6
(word) mul8u_compare::ms#7
(byte) mul8u_compare::ok
(byte) mul8u_compare::ok#0
(byte) mul8u_compare::ok#1
(byte) mul8u_compare::ok#2
(byte) mul8u_compare::ok#3
(byte) mul8u_compare::ok#4
(const string) mul8u_compare::str = (string) "multiply results match!@"
(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
(label) mul8u_error::@1
(label) mul8u_error::@10
(label) mul8u_error::@11
(label) mul8u_error::@2
(label) mul8u_error::@3
(label) mul8u_error::@4
(label) mul8u_error::@5
(label) mul8u_error::@6
(label) mul8u_error::@7
(label) mul8u_error::@8
(label) mul8u_error::@9
(label) mul8u_error::@return
(byte) mul8u_error::a
(byte) mul8u_error::a#0
(byte) mul8u_error::a#1
(byte) mul8u_error::a#2
(byte) mul8u_error::b
(byte) mul8u_error::b#0
(byte) mul8u_error::b#1
(byte) mul8u_error::b#2
(byte) mul8u_error::b#3
(byte) mul8u_error::b#4
(word) mul8u_error::mf
(word) mul8u_error::mf#0
(word) mul8u_error::mf#1
(word) mul8u_error::mf#10
(word) mul8u_error::mf#2
(word) mul8u_error::mf#3
(word) mul8u_error::mf#4
(word) mul8u_error::mf#5
(word) mul8u_error::mf#6
(word) mul8u_error::mf#7
(word) mul8u_error::mf#8
(word) mul8u_error::mf#9
(word) mul8u_error::mn
(word) mul8u_error::mn#0
(word) mul8u_error::mn#1
(word) mul8u_error::mn#2
(word) mul8u_error::mn#3
(word) mul8u_error::mn#4
(word) mul8u_error::mn#5
(word) mul8u_error::mn#6
(word) mul8u_error::mn#7
(word) mul8u_error::mn#8
(word) mul8u_error::ms
(word) mul8u_error::ms#0
(word) mul8u_error::ms#1
(word) mul8u_error::ms#2
(word) mul8u_error::ms#3
(word) mul8u_error::ms#4
(word) mul8u_error::ms#5
(word) mul8u_error::ms#6
(const string) mul8u_error::str = (string) "multiply mismatch @"
(const string) mul8u_error::str1 = (string) "*@"
(const string) mul8u_error::str2 = (string) " slow:@"
(const string) mul8u_error::str3 = (string) " / normal:@"
(const string) mul8u_error::str4 = (string) " / fast:@"
(byte[512]) mula_sqr1_hi
(byte[512]) mula_sqr1_hi#0
(byte[512]) mula_sqr1_lo
(byte[512]) mula_sqr1_lo#0
(byte[512]) mula_sqr2_hi
(byte[512]) mula_sqr2_hi#0
(byte[512]) mula_sqr2_lo
(byte[512]) mula_sqr2_lo#0
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
(signed word~) mulf8s::$1
(label) mulf8s::@2
(label) mulf8s::@3
(label) mulf8s::@4
(label) mulf8s::@return
(signed byte) mulf8s::a
(signed byte) mulf8s::a#0
(signed byte) mulf8s::a#1
(signed byte) mulf8s::b
(signed byte) mulf8s::b#0
(signed byte) mulf8s::b#1
(signed byte) mulf8s::b#2
(signed byte) mulf8s::b#3
(signed byte) mulf8s::b#4
(label) mulf8s::mulf8s_prepare1
(byte~) mulf8s::mulf8s_prepare1_$0
(byte) mulf8s::mulf8s_prepare1_$0#0
(signed byte) mulf8s::mulf8s_prepare1_a
(signed byte) mulf8s::mulf8s_prepare1_a#0
(signed byte) mulf8s::mulf8s_prepare1_a#1
(signed word) mulf8s::return
(signed word) mulf8s::return#0
(signed word) mulf8s::return#1
(signed word) mulf8s::return#2
(signed word) mulf8s::return#3
(signed word) mulf8s::return#4
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
(byte~) mulf8s_prepared::$0
(word~) mulf8s_prepared::$1
(byte~) mulf8s_prepared::$11
(byte~) mulf8s_prepared::$12
(byte~) mulf8s_prepared::$13
(signed word~) mulf8s_prepared::$14
(byte~) mulf8s_prepared::$15
(byte~) mulf8s_prepared::$16
(bool~) mulf8s_prepared::$2
(bool~) mulf8s_prepared::$3
(byte~) mulf8s_prepared::$5
(byte~) mulf8s_prepared::$6
(byte~) mulf8s_prepared::$7
(bool~) mulf8s_prepared::$8
(bool~) mulf8s_prepared::$9
(label) mulf8s_prepared::@1
(label) mulf8s_prepared::@2
(label) mulf8s_prepared::@3
(label) mulf8s_prepared::@4
(label) mulf8s_prepared::@6
(label) mulf8s_prepared::@return
(signed byte) mulf8s_prepared::b
(signed byte) mulf8s_prepared::b#0
(signed byte) mulf8s_prepared::b#1
(signed byte) mulf8s_prepared::b#2
(signed byte) mulf8s_prepared::b#3
(signed byte) mulf8s_prepared::b#4
(word) mulf8s_prepared::m
(word) mulf8s_prepared::m#0
(word) mulf8s_prepared::m#1
(word) mulf8s_prepared::m#2
(word) mulf8s_prepared::m#3
(word) mulf8s_prepared::m#4
(word) mulf8s_prepared::m#5
(word) mulf8s_prepared::m#6
(signed byte*) mulf8s_prepared::memA
(signed byte*) mulf8s_prepared::memA#0
(signed word) mulf8s_prepared::return
(signed word) mulf8s_prepared::return#0
(signed word) mulf8s_prepared::return#1
(signed word) mulf8s_prepared::return#2
(signed word) mulf8s_prepared::return#3
(signed word) mulf8s_prepared::return#4
(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
(word~) mulf8u::$1
(label) mulf8u::@2
(label) mulf8u::@3
(label) mulf8u::@return
(byte) mulf8u::a
(byte) mulf8u::a#0
(byte) mulf8u::a#1
(byte) mulf8u::b
(byte) mulf8u::b#0
(byte) mulf8u::b#1
(byte) mulf8u::b#2
(word) mulf8u::return
(word) mulf8u::return#0
(word) mulf8u::return#1
(word) mulf8u::return#2
(word) mulf8u::return#3
(word) mulf8u::return#4
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
(label) mulf8u_prepare::@return
(byte) mulf8u_prepare::a
(byte) mulf8u_prepare::a#0
(byte) mulf8u_prepare::a#1
(byte) mulf8u_prepare::a#2
(byte*) mulf8u_prepare::memA
(byte*) mulf8u_prepare::memA#0
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
(label) mulf8u_prepared::@return
(byte) mulf8u_prepared::b
(byte) mulf8u_prepared::b#0
(byte) mulf8u_prepared::b#1
(byte) mulf8u_prepared::b#2
(byte*) mulf8u_prepared::memB
(byte*) mulf8u_prepared::memB#0
(byte*) mulf8u_prepared::resL
(byte*) mulf8u_prepared::resL#0
(word) mulf8u_prepared::return
(word) mulf8u_prepared::return#0
(word) mulf8u_prepared::return#1
(word) mulf8u_prepared::return#2
(word) mulf8u_prepared::return#3
(word) mulf8u_prepared::return#4
(word) mulf8u_prepared::return#5
(word) mulf8u_prepared::return#6
(void()) mulf_init()
(byte*~) mulf_init::$0
(byte*~) mulf_init::$1
(signed byte/signed word/signed dword~) mulf_init::$10
(byte~) mulf_init::$11
(byte~) mulf_init::$12
(bool~) mulf_init::$13
(bool~) mulf_init::$14
(byte*~) mulf_init::$15
(bool~) mulf_init::$16
(byte*~) mulf_init::$17
(byte*~) mulf_init::$18
(byte*~) mulf_init::$19
(byte~) mulf_init::$2
(byte*~) mulf_init::$20
(bool~) mulf_init::$3
(bool~) mulf_init::$4
(byte~) mulf_init::$5
(byte~) mulf_init::$6
(word~) mulf_init::$7
(byte*~) mulf_init::$8
(bool~) mulf_init::$9
(label) mulf_init::@1
(label) mulf_init::@2
(label) mulf_init::@3
(label) mulf_init::@4
(label) mulf_init::@5
(label) mulf_init::@6
(label) mulf_init::@7
(label) mulf_init::@8
(label) mulf_init::@return
(byte) mulf_init::c
(byte) mulf_init::c#0
(byte) mulf_init::c#1
(byte) mulf_init::c#2
(byte) mulf_init::c#3
(byte) mulf_init::c#4
(byte) mulf_init::dir
(byte) mulf_init::dir#0
(byte) mulf_init::dir#1
(byte) mulf_init::dir#2
(byte) mulf_init::dir#3
(word) mulf_init::sqr
(word) mulf_init::sqr#0
(word) mulf_init::sqr#1
(word) mulf_init::sqr#2
(word) mulf_init::sqr#3
(word) mulf_init::sqr#4
(word) mulf_init::sqr#5
(byte*) mulf_init::sqr1_hi
(byte*) mulf_init::sqr1_hi#0
(byte*) mulf_init::sqr1_hi#1
(byte*) mulf_init::sqr1_hi#2
(byte*) mulf_init::sqr1_hi#3
(byte*) mulf_init::sqr1_hi#4
(byte*) mulf_init::sqr1_lo
(byte*) mulf_init::sqr1_lo#0
(byte*) mulf_init::sqr1_lo#1
(byte*) mulf_init::sqr1_lo#2
(byte*) mulf_init::sqr1_lo#3
(byte*) mulf_init::sqr1_lo#4
(byte*) mulf_init::sqr2_hi
(byte*) mulf_init::sqr2_hi#0
(byte*) mulf_init::sqr2_hi#1
(byte*) mulf_init::sqr2_hi#2
(byte*) mulf_init::sqr2_hi#3
(byte*) mulf_init::sqr2_hi#4
(byte*) mulf_init::sqr2_lo
(byte*) mulf_init::sqr2_lo#0
(byte*) mulf_init::sqr2_lo#1
(byte*) mulf_init::sqr2_lo#2
(byte*) mulf_init::sqr2_lo#3
(byte*) mulf_init::sqr2_lo#4
(byte) mulf_init::x_2
(byte) mulf_init::x_2#0
(byte) mulf_init::x_2#1
(byte) mulf_init::x_2#2
(byte) mulf_init::x_2#3
(byte) mulf_init::x_2#4
(byte) mulf_init::x_255
(byte) mulf_init::x_255#0
(byte) mulf_init::x_255#1
(byte) mulf_init::x_255#2
(byte) mulf_init::x_255#3
(byte) mulf_init::x_255#4
(void()) mulf_init_asm()
(label) mulf_init_asm::@return
(byte*) mulf_init_asm::mem
(byte*) mulf_init_asm::mem#0
(byte[512]) mulf_sqr1_hi
(byte[512]) mulf_sqr1_hi#0
(byte[512]) mulf_sqr1_lo
(byte[512]) mulf_sqr1_lo#0
(byte[512]) mulf_sqr2_hi
(byte[512]) mulf_sqr2_hi#0
(byte[512]) mulf_sqr2_lo
(byte[512]) mulf_sqr2_lo#0
(void()) mulf_tables_cmp()
(bool~) mulf_tables_cmp::$0
(bool~) mulf_tables_cmp::$1
(bool~) mulf_tables_cmp::$10
(word~) mulf_tables_cmp::$3
(word~) mulf_tables_cmp::$6
(word/signed word/dword/signed dword~) mulf_tables_cmp::$8
(byte*~) mulf_tables_cmp::$9
(label) mulf_tables_cmp::@1
(label) mulf_tables_cmp::@10
(label) mulf_tables_cmp::@11
(label) mulf_tables_cmp::@2
(label) mulf_tables_cmp::@3
(label) mulf_tables_cmp::@5
(label) mulf_tables_cmp::@6
(label) mulf_tables_cmp::@7
(label) mulf_tables_cmp::@8
(label) mulf_tables_cmp::@9
(label) mulf_tables_cmp::@return
(byte*) mulf_tables_cmp::asm_sqr
(byte*) mulf_tables_cmp::asm_sqr#0
(byte*) mulf_tables_cmp::asm_sqr#1
(byte*) mulf_tables_cmp::asm_sqr#2
(byte*) mulf_tables_cmp::asm_sqr#3
(byte*) mulf_tables_cmp::asm_sqr#4
(byte*) mulf_tables_cmp::asm_sqr#5
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#0
(byte*) mulf_tables_cmp::kc_sqr#1
(byte*) mulf_tables_cmp::kc_sqr#2
(byte*) mulf_tables_cmp::kc_sqr#3
(byte*) mulf_tables_cmp::kc_sqr#4
(byte*) mulf_tables_cmp::kc_sqr#5
(byte*) mulf_tables_cmp::kc_sqr#6
(byte*) mulf_tables_cmp::kc_sqr#7
(const string) mulf_tables_cmp::str = (string) "multiply table mismatch at @"
(const string) mulf_tables_cmp::str1 = (string) " / @"
(const string) mulf_tables_cmp::str2 = (string) "multiply tables match!@"
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(bool~) muls8s::$0
(bool~) muls8s::$1
(bool~) muls8s::$2
(signed word~) muls8s::$3
(bool~) muls8s::$4
(signed word~) muls8s::$5
(bool~) muls8s::$6
(label) muls8s::@1
(label) muls8s::@2
(label) muls8s::@3
(label) muls8s::@4
(label) muls8s::@5
(label) muls8s::@6
(label) muls8s::@7
(label) muls8s::@return
(signed byte) muls8s::a
(signed byte) muls8s::a#0
(signed byte) muls8s::a#1
(signed byte) muls8s::a#2
(signed byte) muls8s::a#3
(signed byte) muls8s::a#4
(signed byte) muls8s::a#5
(signed byte) muls8s::a#6
(signed byte) muls8s::b
(signed byte) muls8s::b#0
(signed byte) muls8s::b#1
(signed byte) muls8s::b#2
(signed byte) muls8s::b#3
(signed byte) muls8s::b#4
(signed byte) muls8s::b#5
(signed byte) muls8s::b#6
(signed byte) muls8s::i
(signed byte) muls8s::i#0
(signed byte) muls8s::i#1
(signed byte) muls8s::i#2
(signed byte) muls8s::j
(signed byte) muls8s::j#0
(signed byte) muls8s::j#1
(signed byte) muls8s::j#2
(signed word) muls8s::m
(signed word) muls8s::m#0
(signed word) muls8s::m#1
(signed word) muls8s::m#2
(signed word) muls8s::m#3
(signed word) muls8s::m#4
(signed word) muls8s::m#5
(signed word) muls8s::m#6
(signed word) muls8s::m#7
(signed word) muls8s::m#8
(signed word) muls8s::m#9
(signed word) muls8s::return
(signed word) muls8s::return#0
(signed word) muls8s::return#1
(signed word) muls8s::return#2
(signed word) muls8s::return#3
(signed word) muls8s::return#4
(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
(bool~) muls8u::$0
(bool~) muls8u::$1
(word~) muls8u::$2
(bool~) muls8u::$3
(label) muls8u::@1
(label) muls8u::@2
(label) muls8u::@3
(label) muls8u::@return
(byte) muls8u::a
(byte) muls8u::a#0
(byte) muls8u::a#1
(byte) muls8u::a#2
(byte) muls8u::a#3
(byte) muls8u::b
(byte) muls8u::b#0
(byte) muls8u::b#1
(byte) muls8u::b#2
(byte) muls8u::b#3
(byte) muls8u::i
(byte) muls8u::i#0
(byte) muls8u::i#1
(byte) muls8u::i#2
(word) muls8u::m
(word) muls8u::m#0
(word) muls8u::m#1
(word) muls8u::m#2
(word) muls8u::m#3
(word) muls8u::m#4
(word) muls8u::return
(word) muls8u::return#0
(word) muls8u::return#1
(word) muls8u::return#2
(word) muls8u::return#3
(word) muls8u::return#4
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0
(byte~) print_byte::$2
(label) print_byte::@1
(label) print_byte::@2
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0
(byte) print_byte::b#1
(byte) print_byte::b#2
(byte) print_byte::b#3
(byte) print_byte::b#4
(byte) print_byte::b#5
(byte) print_byte::b#6
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#0
(byte) print_char::ch#1
(byte) print_char::ch#2
(byte) print_char::ch#3
(byte) print_char::ch#4
(byte) print_char::ch#5
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
(byte*) print_char_cursor#10
(byte*) print_char_cursor#100
(byte*) print_char_cursor#101
(byte*) print_char_cursor#102
(byte*) print_char_cursor#103
(byte*) print_char_cursor#104
(byte*) print_char_cursor#105
(byte*) print_char_cursor#106
(byte*) print_char_cursor#107
(byte*) print_char_cursor#108
(byte*) print_char_cursor#109
(byte*) print_char_cursor#11
(byte*) print_char_cursor#110
(byte*) print_char_cursor#111
(byte*) print_char_cursor#112
(byte*) print_char_cursor#113
(byte*) print_char_cursor#114
(byte*) print_char_cursor#115
(byte*) print_char_cursor#116
(byte*) print_char_cursor#117
(byte*) print_char_cursor#118
(byte*) print_char_cursor#119
(byte*) print_char_cursor#12
(byte*) print_char_cursor#120
(byte*) print_char_cursor#121
(byte*) print_char_cursor#122
(byte*) print_char_cursor#123
(byte*) print_char_cursor#124
(byte*) print_char_cursor#125
(byte*) print_char_cursor#126
(byte*) print_char_cursor#127
(byte*) print_char_cursor#128
(byte*) print_char_cursor#129
(byte*) print_char_cursor#13
(byte*) print_char_cursor#130
(byte*) print_char_cursor#131
(byte*) print_char_cursor#132
(byte*) print_char_cursor#133
(byte*) print_char_cursor#134
(byte*) print_char_cursor#135
(byte*) print_char_cursor#136
(byte*) print_char_cursor#137
(byte*) print_char_cursor#138
(byte*) print_char_cursor#139
(byte*) print_char_cursor#14
(byte*) print_char_cursor#140
(byte*) print_char_cursor#141
(byte*) print_char_cursor#142
(byte*) print_char_cursor#143
(byte*) print_char_cursor#144
(byte*) print_char_cursor#145
(byte*) print_char_cursor#146
(byte*) print_char_cursor#147
(byte*) print_char_cursor#148
(byte*) print_char_cursor#149
(byte*) print_char_cursor#15
(byte*) print_char_cursor#150
(byte*) print_char_cursor#151
(byte*) print_char_cursor#152
(byte*) print_char_cursor#153
(byte*) print_char_cursor#154
(byte*) print_char_cursor#155
(byte*) print_char_cursor#156
(byte*) print_char_cursor#157
(byte*) print_char_cursor#158
(byte*) print_char_cursor#159
(byte*) print_char_cursor#16
(byte*) print_char_cursor#160
(byte*) print_char_cursor#161
(byte*) print_char_cursor#162
(byte*) print_char_cursor#163
(byte*) print_char_cursor#164
(byte*) print_char_cursor#165
(byte*) print_char_cursor#166
(byte*) print_char_cursor#167
(byte*) print_char_cursor#168
(byte*) print_char_cursor#169
(byte*) print_char_cursor#17
(byte*) print_char_cursor#170
(byte*) print_char_cursor#171
(byte*) print_char_cursor#172
(byte*) print_char_cursor#173
(byte*) print_char_cursor#174
(byte*) print_char_cursor#175
(byte*) print_char_cursor#176
(byte*) print_char_cursor#177
(byte*) print_char_cursor#178
(byte*) print_char_cursor#179
(byte*) print_char_cursor#18
(byte*) print_char_cursor#180
(byte*) print_char_cursor#181
(byte*) print_char_cursor#182
(byte*) print_char_cursor#183
(byte*) print_char_cursor#184
(byte*) print_char_cursor#185
(byte*) print_char_cursor#186
(byte*) print_char_cursor#19
(byte*) print_char_cursor#2
(byte*) print_char_cursor#20
(byte*) print_char_cursor#21
(byte*) print_char_cursor#22
(byte*) print_char_cursor#23
(byte*) print_char_cursor#24
(byte*) print_char_cursor#25
(byte*) print_char_cursor#26
(byte*) print_char_cursor#27
(byte*) print_char_cursor#28
(byte*) print_char_cursor#29
(byte*) print_char_cursor#3
(byte*) print_char_cursor#30
(byte*) print_char_cursor#31
(byte*) print_char_cursor#32
(byte*) print_char_cursor#33
(byte*) print_char_cursor#34
(byte*) print_char_cursor#35
(byte*) print_char_cursor#36
(byte*) print_char_cursor#37
(byte*) print_char_cursor#38
(byte*) print_char_cursor#39
(byte*) print_char_cursor#4
(byte*) print_char_cursor#40
(byte*) print_char_cursor#41
(byte*) print_char_cursor#42
(byte*) print_char_cursor#43
(byte*) print_char_cursor#44
(byte*) print_char_cursor#45
(byte*) print_char_cursor#46
(byte*) print_char_cursor#47
(byte*) print_char_cursor#48
(byte*) print_char_cursor#49
(byte*) print_char_cursor#5
(byte*) print_char_cursor#50
(byte*) print_char_cursor#51
(byte*) print_char_cursor#52
(byte*) print_char_cursor#53
(byte*) print_char_cursor#54
(byte*) print_char_cursor#55
(byte*) print_char_cursor#56
(byte*) print_char_cursor#57
(byte*) print_char_cursor#58
(byte*) print_char_cursor#59
(byte*) print_char_cursor#6
(byte*) print_char_cursor#60
(byte*) print_char_cursor#61
(byte*) print_char_cursor#62
(byte*) print_char_cursor#63
(byte*) print_char_cursor#64
(byte*) print_char_cursor#65
(byte*) print_char_cursor#66
(byte*) print_char_cursor#67
(byte*) print_char_cursor#68
(byte*) print_char_cursor#69
(byte*) print_char_cursor#7
(byte*) print_char_cursor#70
(byte*) print_char_cursor#71
(byte*) print_char_cursor#72
(byte*) print_char_cursor#73
(byte*) print_char_cursor#74
(byte*) print_char_cursor#75
(byte*) print_char_cursor#76
(byte*) print_char_cursor#77
(byte*) print_char_cursor#78
(byte*) print_char_cursor#79
(byte*) print_char_cursor#8
(byte*) print_char_cursor#80
(byte*) print_char_cursor#81
(byte*) print_char_cursor#82
(byte*) print_char_cursor#83
(byte*) print_char_cursor#84
(byte*) print_char_cursor#85
(byte*) print_char_cursor#86
(byte*) print_char_cursor#87
(byte*) print_char_cursor#88
(byte*) print_char_cursor#89
(byte*) print_char_cursor#9
(byte*) print_char_cursor#90
(byte*) print_char_cursor#91
(byte*) print_char_cursor#92
(byte*) print_char_cursor#93
(byte*) print_char_cursor#94
(byte*) print_char_cursor#95
(byte*) print_char_cursor#96
(byte*) print_char_cursor#97
(byte*) print_char_cursor#98
(byte*) print_char_cursor#99
(void()) print_cls()
(byte*~) print_cls::$0
(bool~) print_cls::$1
(label) print_cls::@1
(label) print_cls::@2
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#0
(byte*) print_cls::sc#1
(byte*) print_cls::sc#2
(byte[]) print_hextab
(byte[]) print_hextab#0
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
(byte*) print_line_cursor#10
(byte*) print_line_cursor#100
(byte*) print_line_cursor#101
(byte*) print_line_cursor#102
(byte*) print_line_cursor#103
(byte*) print_line_cursor#104
(byte*) print_line_cursor#105
(byte*) print_line_cursor#106
(byte*) print_line_cursor#107
(byte*) print_line_cursor#108
(byte*) print_line_cursor#109
(byte*) print_line_cursor#11
(byte*) print_line_cursor#110
(byte*) print_line_cursor#111
(byte*) print_line_cursor#112
(byte*) print_line_cursor#113
(byte*) print_line_cursor#114
(byte*) print_line_cursor#115
(byte*) print_line_cursor#12
(byte*) print_line_cursor#13
(byte*) print_line_cursor#14
(byte*) print_line_cursor#15
(byte*) print_line_cursor#16
(byte*) print_line_cursor#17
(byte*) print_line_cursor#18
(byte*) print_line_cursor#19
(byte*) print_line_cursor#2
(byte*) print_line_cursor#20
(byte*) print_line_cursor#21
(byte*) print_line_cursor#22
(byte*) print_line_cursor#23
(byte*) print_line_cursor#24
(byte*) print_line_cursor#25
(byte*) print_line_cursor#26
(byte*) print_line_cursor#27
(byte*) print_line_cursor#28
(byte*) print_line_cursor#29
(byte*) print_line_cursor#3
(byte*) print_line_cursor#30
(byte*) print_line_cursor#31
(byte*) print_line_cursor#32
(byte*) print_line_cursor#33
(byte*) print_line_cursor#34
(byte*) print_line_cursor#35
(byte*) print_line_cursor#36
(byte*) print_line_cursor#37
(byte*) print_line_cursor#38
(byte*) print_line_cursor#39
(byte*) print_line_cursor#4
(byte*) print_line_cursor#40
(byte*) print_line_cursor#41
(byte*) print_line_cursor#42
(byte*) print_line_cursor#43
(byte*) print_line_cursor#44
(byte*) print_line_cursor#45
(byte*) print_line_cursor#46
(byte*) print_line_cursor#47
(byte*) print_line_cursor#48
(byte*) print_line_cursor#49
(byte*) print_line_cursor#5
(byte*) print_line_cursor#50
(byte*) print_line_cursor#51
(byte*) print_line_cursor#52
(byte*) print_line_cursor#53
(byte*) print_line_cursor#54
(byte*) print_line_cursor#55
(byte*) print_line_cursor#56
(byte*) print_line_cursor#57
(byte*) print_line_cursor#58
(byte*) print_line_cursor#59
(byte*) print_line_cursor#6
(byte*) print_line_cursor#60
(byte*) print_line_cursor#61
(byte*) print_line_cursor#62
(byte*) print_line_cursor#63
(byte*) print_line_cursor#64
(byte*) print_line_cursor#65
(byte*) print_line_cursor#66
(byte*) print_line_cursor#67
(byte*) print_line_cursor#68
(byte*) print_line_cursor#69
(byte*) print_line_cursor#7
(byte*) print_line_cursor#70
(byte*) print_line_cursor#71
(byte*) print_line_cursor#72
(byte*) print_line_cursor#73
(byte*) print_line_cursor#74
(byte*) print_line_cursor#75
(byte*) print_line_cursor#76
(byte*) print_line_cursor#77
(byte*) print_line_cursor#78
(byte*) print_line_cursor#79
(byte*) print_line_cursor#8
(byte*) print_line_cursor#80
(byte*) print_line_cursor#81
(byte*) print_line_cursor#82
(byte*) print_line_cursor#83
(byte*) print_line_cursor#84
(byte*) print_line_cursor#85
(byte*) print_line_cursor#86
(byte*) print_line_cursor#87
(byte*) print_line_cursor#88
(byte*) print_line_cursor#89
(byte*) print_line_cursor#9
(byte*) print_line_cursor#90
(byte*) print_line_cursor#91
(byte*) print_line_cursor#92
(byte*) print_line_cursor#93
(byte*) print_line_cursor#94
(byte*) print_line_cursor#95
(byte*) print_line_cursor#96
(byte*) print_line_cursor#97
(byte*) print_line_cursor#98
(byte*) print_line_cursor#99
(void()) print_ln()
(byte*~) print_ln::$0
(bool~) print_ln::$1
(label) print_ln::@1
(label) print_ln::@2
(label) print_ln::@return
(void()) print_sbyte((signed byte) print_sbyte::b)
(bool~) print_sbyte::$0
(signed byte~) print_sbyte::$3
(byte~) print_sbyte::$4
(label) print_sbyte::@1
(label) print_sbyte::@2
(label) print_sbyte::@3
(label) print_sbyte::@5
(label) print_sbyte::@6
(label) print_sbyte::@7
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0
(signed byte) print_sbyte::b#1
(signed byte) print_sbyte::b#2
(signed byte) print_sbyte::b#3
(signed byte) print_sbyte::b#4
(signed byte) print_sbyte::b#5
(signed byte) print_sbyte::b#6
(signed byte) print_sbyte::b#7
(signed byte) print_sbyte::b#8
(byte*) print_screen
(byte*) print_screen#0
(byte*) print_screen#1
(byte*) print_screen#2
(byte*) print_screen#3
(byte*) print_screen#4
(byte*) print_screen#5
(byte*) print_screen#6
(byte*) print_screen#7
(byte*) print_screen#8
(byte*) print_screen#9
(void()) print_str((byte*) print_str::str)
(bool~) print_str::$0
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0
(byte*) print_str::str#1
(byte*) print_str::str#10
(byte*) print_str::str#11
(byte*) print_str::str#12
(byte*) print_str::str#13
(byte*) print_str::str#14
(byte*) print_str::str#15
(byte*) print_str::str#16
(byte*) print_str::str#17
(byte*) print_str::str#18
(byte*) print_str::str#2
(byte*) print_str::str#3
(byte*) print_str::str#4
(byte*) print_str::str#5
(byte*) print_str::str#6
(byte*) print_str::str#7
(byte*) print_str::str#8
(byte*) print_str::str#9
(void()) print_sword((signed word) print_sword::w)
(bool~) print_sword::$0
(bool~) print_sword::$1
(signed word~) print_sword::$3
(word~) print_sword::$4
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0
(signed word) print_sword::w#1
(signed word) print_sword::w#2
(signed word) print_sword::w#3
(signed word) print_sword::w#4
(signed word) print_sword::w#5
(signed word) print_sword::w#6
(signed word) print_sword::w#7
(void()) print_word((word) print_word::w)
(byte~) print_word::$0
(byte~) print_word::$2
(label) print_word::@1
(label) print_word::@2
(label) print_word::@return
(word) print_word::w
(word) print_word::w#0
(word) print_word::w#1
(word) print_word::w#2
(word) print_word::w#3
(word) print_word::w#4
(word) print_word::w#5
(word) print_word::w#6
(word) print_word::w#7

Inversing boolean not [28] (bool~) print_sword::$1 ← (signed word) print_sword::w#4 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [27] (bool~) print_sword::$0 ← (signed word) print_sword::w#4 < (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [130] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [129] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [156] (bool~) mul8s::$4 ← (signed byte) mul8s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [155] (bool~) mul8s::$3 ← (signed byte) mul8s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [160] (bool~) mul8s::$10 ← (signed byte) mul8s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [159] (bool~) mul8s::$9 ← (signed byte) mul8s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [196] (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [195] (bool~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [226] (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [225] (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [279] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [278] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [283] (bool~) mulf8s_prepared::$9 ← (signed byte) mulf8s_prepared::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [282] (bool~) mulf8s_prepared::$8 ← (signed byte) mulf8s_prepared::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [351] (bool~) muls8u::$1 ← (byte) muls8u::a#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [350] (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [374] (bool~) muls8s::$2 ← (signed byte) muls8s::a#2 <= (byte/signed byte/word/signed word/dword/signed dword) 0 from [373] (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [413] (bool~) mulf_tables_cmp::$1 ← *((byte*) mulf_tables_cmp::kc_sqr#2) == *((byte*) mulf_tables_cmp::asm_sqr#2) from [412] (bool~) mulf_tables_cmp::$0 ← *((byte*) mulf_tables_cmp::kc_sqr#2) != *((byte*) mulf_tables_cmp::asm_sqr#2)
Inversing boolean not [483] (bool~) mul8u_compare::$4 ← (word) mul8u_compare::ms#1 == (word) mul8u_compare::mf#1 from [482] (bool~) mul8u_compare::$3 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1
Inversing boolean not [487] (bool~) mul8u_compare::$6 ← (word) mul8u_compare::ms#2 == (word) mul8u_compare::mn#1 from [486] (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1
Inversing boolean not [493] (bool~) mul8u_compare::$8 ← (byte) mul8u_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [492] (bool~) mul8u_compare::$7 ← (byte) mul8u_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [608] (bool~) mul8s_compare::$6 ← (signed word) mul8s_compare::ms#1 == (signed word) mul8s_compare::mf#1 from [607] (bool~) mul8s_compare::$5 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1
Inversing boolean not [612] (bool~) mul8s_compare::$8 ← (signed word) mul8s_compare::ms#2 == (signed word) mul8s_compare::mn#1 from [611] (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1
Inversing boolean not [618] (bool~) mul8s_compare::$10 ← (byte) mul8s_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [617] (bool~) mul8s_compare::$9 ← (byte) mul8s_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#89 (byte*) print_char_cursor#176 (byte*) print_screen#9 (byte*) print_line_cursor#78 (byte*) print_char_cursor#171 (byte*) print_screen#8 (byte*) print_line_cursor#67 (byte*) print_char_cursor#163 (byte*) print_screen#7 (byte*) print_line_cursor#66 (byte*) print_char_cursor#162 (byte*) print_screen#6 (byte*) print_line_cursor#56 (byte*) print_char_cursor#151 (byte*) print_screen#5 
Alias (byte*) print_str::str#16 = (byte*) print_str::str#17 
Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#68 (byte*) print_char_cursor#2 
Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#3 (byte*) print_line_cursor#25 (byte*) print_char_cursor#70 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 
Alias (word) print_word::w#0 = (word~) print_sword::$4 
Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#71 (byte*) print_char_cursor#73 (byte*) print_char_cursor#7 
Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#153 
Alias (signed word) print_sword::w#4 = (signed word) print_sword::w#7 (signed word) print_sword::w#6 
Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#72 
Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$3 
Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#154 (byte*) print_char_cursor#137 
Alias (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#4 (signed byte) print_sbyte::b#8 (signed byte) print_sbyte::b#7 
Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#8 
Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$3 
Alias (byte*) print_char_cursor#75 = (byte*) print_char_cursor#9 
Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$4 
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#11 
Alias (byte) print_byte::b#1 = (byte~) print_word::$0 
Alias (word) print_word::w#6 = (word) print_word::w#7 
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#78 
Alias (byte) print_byte::b#2 = (byte~) print_word::$2 
Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#14 
Alias (byte) print_byte::b#5 = (byte) print_byte::b#6 
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#81 
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#17 
Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#19 
Alias (byte*) print_line_cursor#26 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#20 (byte*) print_char_cursor#86 (byte*) print_line_cursor#4 (byte*) print_char_cursor#21 
Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7 
Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 
Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#4 (word) mul8u::return#1 
Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 
Alias (word) mul8u::mb#1 = (word~) mul8u::$6 
Alias (word) mul8u::res#1 = (word~) mul8u::$4 
Alias (byte) mul8u::a#1 = (byte~) mul8s::$0 
Alias (byte) mul8u::b#0 = (byte~) mul8s::$1 
Alias (word) mul8u::return#2 = (word) mul8u::return#5 
Alias (signed byte) mul8s::a#1 = (signed byte) mul8s::a#2 (signed byte) mul8s::a#5 
Alias (signed byte) mul8s::b#1 = (signed byte) mul8s::b#4 (signed byte) mul8s::b#3 
Alias (word) mul8s::m#0 = (word~) mul8s::$2 (word) mul8s::m#3 
Alias (byte~) mul8s::$16 = (byte~) mul8s::$8 
Alias (signed word) mul8s::return#0 = (signed word~) mul8s::$15 (signed word) mul8s::return#3 (signed word) mul8s::return#1 
Alias (word) mul8s::m#5 = (word) mul8s::m#6 
Alias (signed byte) mul8s::a#3 = (signed byte) mul8s::a#4 
Alias (byte~) mul8s::$17 = (byte~) mul8s::$14 
Alias (byte*) mulf_init::sqr1_hi#0 = (byte*~) mulf_init::$0 
Alias (byte*) mulf_init::sqr1_lo#0 = (byte*~) mulf_init::$1 
Alias (word) mulf_init::sqr#1 = (word~) mulf_init::$7 
Alias (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#4 
Alias (word) mulf_init::sqr#4 = (word) mulf_init::sqr#5 
Alias (byte*) mulf_init::sqr1_lo#3 = (byte*) mulf_init::sqr1_lo#4 
Alias (byte*) mulf_init::sqr1_hi#3 = (byte*) mulf_init::sqr1_hi#4 
Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#4 
Alias (byte) mulf_init::x_255#0 = (byte~) mulf_init::$11 
Alias (byte) mulf_init::x_255#1 = (byte~) mulf_init::$12 (byte) mulf_init::x_255#4 
Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 
Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 
Alias (word) mulf8u_prepared::return#0 = (word) mulf8u_prepared::return#4 (word) mulf8u_prepared::return#1 
Alias (byte) mulf8u::b#1 = (byte) mulf8u::b#2 
Alias (word) mulf8u_prepared::return#2 = (word) mulf8u_prepared::return#5 
Alias (word) mulf8u::return#0 = (word~) mulf8u::$1 (word) mulf8u::return#3 (word) mulf8u::return#1 
Alias (byte) mulf8u_prepared::b#1 = (byte~) mulf8s_prepared::$0 
Alias (word) mulf8u_prepared::return#3 = (word) mulf8u_prepared::return#6 
Alias (signed byte) mulf8s_prepared::b#1 = (signed byte) mulf8s_prepared::b#4 (signed byte) mulf8s_prepared::b#3 
Alias (word) mulf8s_prepared::m#0 = (word~) mulf8s_prepared::$1 (word) mulf8s_prepared::m#3 
Alias (byte~) mulf8s_prepared::$15 = (byte~) mulf8s_prepared::$7 
Alias (signed word) mulf8s_prepared::return#0 = (signed word~) mulf8s_prepared::$14 (signed word) mulf8s_prepared::return#3 (signed word) mulf8s_prepared::return#1 
Alias (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#6 
Alias (byte~) mulf8s_prepared::$16 = (byte~) mulf8s_prepared::$13 
Alias (signed byte) mulf8s::mulf8s_prepare1_a#0 = (signed byte) mulf8s::a#1 (signed byte) mulf8s::mulf8s_prepare1_a#1 
Alias (signed byte) mulf8s::b#1 = (signed byte) mulf8s::b#3 (signed byte) mulf8s::b#4 (signed byte) mulf8s::b#2 
Alias (byte) mulf8u_prepare::a#1 = (byte) mulf8s::mulf8s_prepare1_$0#0 
Alias (signed word) mulf8s_prepared::return#2 = (signed word) mulf8s_prepared::return#4 
Alias (signed word) mulf8s::return#0 = (signed word~) mulf8s::$1 (signed word) mulf8s::return#3 (signed word) mulf8s::return#1 
Alias (byte*) BGCOL#1 = (byte*) BGCOL#24 (byte*) BGCOL#21 (byte*) BGCOL#16 (byte*) BGCOL#37 (byte*) BGCOL#38 
Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#57 (byte*) print_line_cursor#47 
Alias (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#87 (byte*) print_char_cursor#155 
Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#88 
Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#6 
Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#89 
Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#7 
Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#90 (byte*) print_char_cursor#91 (byte*) print_char_cursor#26 
Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#8 (byte*) print_line_cursor#31 (byte*) print_line_cursor#9 
Alias (word) muls8u::return#0 = (word) muls8u::m#2 (word) muls8u::return#3 (word) muls8u::return#1 
Alias (word) muls8u::m#0 = (word) muls8u::m#4 
Alias (byte) muls8u::b#2 = (byte) muls8u::b#3 
Alias (byte) muls8u::a#1 = (byte) muls8u::a#3 
Alias (word) muls8u::m#1 = (word~) muls8u::$2 
Alias (signed word) muls8s::m#0 = (signed word) muls8s::m#8 (signed word) muls8s::m#9 (signed word) muls8s::m#7 (signed word) muls8s::m#6 
Alias (signed byte) muls8s::b#3 = (signed byte) muls8s::b#4 (signed byte) muls8s::b#5 (signed byte) muls8s::b#6 
Alias (signed byte) muls8s::a#1 = (signed byte) muls8s::a#6 (signed byte) muls8s::a#2 (signed byte) muls8s::a#5 
Alias (signed word) muls8s::m#1 = (signed word~) muls8s::$3 
Alias (signed word) muls8s::return#0 = (signed word) muls8s::m#4 (signed word) muls8s::return#3 (signed word) muls8s::return#1 
Alias (signed word) muls8s::m#2 = (signed word~) muls8s::$5 
Alias (byte*) BGCOL#0 = (byte*) BGCOL#15 (byte*) BGCOL#5 
Alias (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#3 (byte*) mulf_tables_cmp::asm_sqr#5 (byte*) mulf_tables_cmp::asm_sqr#4 
Alias (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#3 (byte*) mulf_tables_cmp::kc_sqr#7 (byte*) mulf_tables_cmp::kc_sqr#6 (byte*) mulf_tables_cmp::kc_sqr#5 (byte*) mulf_tables_cmp::kc_sqr#4 
Alias (byte*) BGCOL#10 = (byte*) BGCOL#6 (byte*) BGCOL#2 
Alias (byte*) print_char_cursor#143 = (byte*) print_char_cursor#157 (byte*) print_char_cursor#156 (byte*) print_char_cursor#144 
Alias (byte*) print_line_cursor#48 = (byte*) print_line_cursor#69 (byte*) print_line_cursor#79 (byte*) print_line_cursor#91 (byte*) print_line_cursor#80 (byte*) print_line_cursor#68 (byte*) print_line_cursor#58 (byte*) print_line_cursor#59 (byte*) print_line_cursor#49 
Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#92 
Alias (word) print_word::w#1 = (word~) mulf_tables_cmp::$3 
Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#93 
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#94 
Alias (word) print_word::w#2 = (word~) mulf_tables_cmp::$6 
Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#95 
Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#96 
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#32 
Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#97 
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#33 
Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#98 
Alias (word) muls8u::return#2 = (word) muls8u::return#4 
Alias (byte) mul8u_compare::a#12 = (byte) mul8u_compare::a#3 (byte) mul8u_compare::a#2 (byte) mul8u_compare::a#4 (byte) mul8u_compare::a#13 
Alias (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#3 (byte) mul8u_compare::b#2 (byte) mul8u_compare::b#4 (byte) mul8u_compare::b#11 
Alias (byte*) BGCOL#17 = (byte*) BGCOL#25 (byte*) BGCOL#27 (byte*) BGCOL#22 (byte*) BGCOL#18 
Alias (byte*) print_char_cursor#172 = (byte*) print_char_cursor#179 (byte*) print_char_cursor#181 (byte*) print_char_cursor#177 (byte*) print_char_cursor#173 
Alias (byte*) print_line_cursor#100 = (byte*) print_line_cursor#96 (byte*) print_line_cursor#92 (byte*) print_line_cursor#81 (byte*) print_line_cursor#82 
Alias (word) mul8u_compare::ms#0 = (word~) mul8u_compare::$0 (word) mul8u_compare::ms#4 (word) mul8u_compare::ms#1 (word) mul8u_compare::ms#5 
Alias (word) mulf8u::return#2 = (word) mulf8u::return#4 
Alias (word) mul8u_compare::mf#0 = (word~) mul8u_compare::$1 (word) mul8u_compare::mf#1 (word) mul8u_compare::mf#6 
Alias (word) mul8u::return#3 = (word) mul8u::return#6 
Alias (word) mul8u_compare::mn#0 = (word~) mul8u_compare::$2 (word) mul8u_compare::mn#3 
Alias (byte) mul8u_compare::b#8 = (byte) mul8u_compare::b#9 
Alias (byte*) BGCOL#11 = (byte*) BGCOL#12 
Alias (byte) mul8u_compare::a#10 = (byte) mul8u_compare::a#11 
Alias (word) mul8u_compare::ms#2 = (word) mul8u_compare::ms#7 
Alias (word) mul8u_compare::mn#1 = (word) mul8u_compare::mn#5 
Alias (word) mul8u_compare::mf#4 = (word) mul8u_compare::mf#5 
Alias (byte*) print_char_cursor#165 = (byte*) print_char_cursor#166 
Alias (byte*) print_line_cursor#70 = (byte*) print_line_cursor#71 
Alias (byte) mul8u_compare::b#5 = (byte) mul8u_compare::b#7 (byte) mul8u_compare::b#6 
Alias (byte) mul8u_compare::a#5 = (byte) mul8u_compare::a#8 (byte) mul8u_compare::a#9 (byte) mul8u_compare::a#6 
Alias (byte*) print_char_cursor#145 = (byte*) print_char_cursor#167 (byte*) print_char_cursor#158 (byte*) print_char_cursor#159 (byte*) print_char_cursor#146 
Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#83 (byte*) print_line_cursor#60 (byte*) print_line_cursor#72 (byte*) print_line_cursor#61 (byte*) print_line_cursor#51 
Alias (byte*) BGCOL#3 = (byte*) BGCOL#30 (byte*) BGCOL#7 (byte*) BGCOL#34 
Alias (word) mul8u_compare::ms#3 = (word) mul8u_compare::ms#6 
Alias (word) mul8u_compare::mn#2 = (word) mul8u_compare::mn#4 
Alias (word) mul8u_compare::mf#2 = (word) mul8u_compare::mf#3 
Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#99 
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#34 
Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#35 
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#35 
Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#36 
Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#36 
Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#37 
Alias (byte) mul8u_error::a#1 = (byte) mul8u_error::a#2 
Alias (byte) mul8u_error::b#1 = (byte) mul8u_error::b#3 (byte) mul8u_error::b#4 (byte) mul8u_error::b#2 
Alias (word) mul8u_error::ms#1 = (word) mul8u_error::ms#5 (word) mul8u_error::ms#6 (word) mul8u_error::ms#4 (word) mul8u_error::ms#3 (word) mul8u_error::ms#2 
Alias (word) mul8u_error::mn#1 = (word) mul8u_error::mn#7 (word) mul8u_error::mn#8 (word) mul8u_error::mn#6 (word) mul8u_error::mn#5 (word) mul8u_error::mn#4 (word) mul8u_error::mn#3 (word) mul8u_error::mn#2 
Alias (word) mul8u_error::mf#1 = (word) mul8u_error::mf#9 (word) mul8u_error::mf#10 (word) mul8u_error::mf#8 (word) mul8u_error::mf#7 (word) mul8u_error::mf#6 (word) mul8u_error::mf#5 (word) mul8u_error::mf#4 (word) mul8u_error::mf#3 (word) mul8u_error::mf#2 
Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#112 (byte*) print_line_cursor#114 (byte*) print_line_cursor#109 (byte*) print_line_cursor#105 (byte*) print_line_cursor#97 (byte*) print_line_cursor#93 (byte*) print_line_cursor#84 (byte*) print_line_cursor#73 (byte*) print_line_cursor#62 (byte*) print_line_cursor#52 
Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#38 
Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#39 
Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#40 
Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#41 
Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#42 
Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#43 
Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#44 
Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#45 
Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#46 
Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#47 
Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#37 (byte*) print_line_cursor#38 (byte*) print_line_cursor#16 
Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#114 (byte*) print_char_cursor#49 
Alias (signed byte) mul8s_compare::a#0 = (signed byte/signed word/signed dword~) mul8s_compare::$0 
Alias (signed byte) mul8s_compare::b#0 = (signed byte/signed word/signed dword~) mul8s_compare::$1 
Alias (signed word) muls8s::return#2 = (signed word) muls8s::return#4 
Alias (signed byte) mul8s_compare::a#12 = (signed byte) mul8s_compare::a#3 (signed byte) mul8s_compare::a#2 (signed byte) mul8s_compare::a#4 (signed byte) mul8s_compare::a#13 
Alias (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#3 (signed byte) mul8s_compare::b#2 (signed byte) mul8s_compare::b#4 (signed byte) mul8s_compare::b#11 
Alias (byte*) BGCOL#19 = (byte*) BGCOL#26 (byte*) BGCOL#28 (byte*) BGCOL#23 (byte*) BGCOL#20 
Alias (byte*) print_char_cursor#174 = (byte*) print_char_cursor#180 (byte*) print_char_cursor#182 (byte*) print_char_cursor#178 (byte*) print_char_cursor#175 
Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#98 (byte*) print_line_cursor#94 (byte*) print_line_cursor#85 (byte*) print_line_cursor#86 
Alias (signed word) mul8s_compare::ms#0 = (signed word~) mul8s_compare::$2 (signed word) mul8s_compare::ms#4 (signed word) mul8s_compare::ms#1 (signed word) mul8s_compare::ms#5 
Alias (signed word) mulf8s::return#2 = (signed word) mulf8s::return#4 
Alias (signed word) mul8s_compare::mf#0 = (signed word~) mul8s_compare::$3 (signed word) mul8s_compare::mf#1 (signed word) mul8s_compare::mf#6 
Alias (signed word) mul8s::return#2 = (signed word) mul8s::return#4 
Alias (signed word) mul8s_compare::mn#0 = (signed word~) mul8s_compare::$4 (signed word) mul8s_compare::mn#3 
Alias (signed byte) mul8s_compare::b#8 = (signed byte) mul8s_compare::b#9 
Alias (byte*) BGCOL#13 = (byte*) BGCOL#14 
Alias (signed byte) mul8s_compare::a#10 = (signed byte) mul8s_compare::a#11 
Alias (signed word) mul8s_compare::ms#2 = (signed word) mul8s_compare::ms#7 
Alias (signed word) mul8s_compare::mn#1 = (signed word) mul8s_compare::mn#5 
Alias (signed word) mul8s_compare::mf#4 = (signed word) mul8s_compare::mf#5 
Alias (byte*) print_char_cursor#168 = (byte*) print_char_cursor#169 
Alias (byte*) print_line_cursor#74 = (byte*) print_line_cursor#75 
Alias (signed byte) mul8s_compare::b#5 = (signed byte) mul8s_compare::b#7 (signed byte) mul8s_compare::b#6 
Alias (signed byte) mul8s_compare::a#5 = (signed byte) mul8s_compare::a#8 (signed byte) mul8s_compare::a#9 (signed byte) mul8s_compare::a#6 
Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#170 (byte*) print_char_cursor#160 (byte*) print_char_cursor#161 (byte*) print_char_cursor#149 
Alias (byte*) print_line_cursor#53 = (byte*) print_line_cursor#87 (byte*) print_line_cursor#63 (byte*) print_line_cursor#76 (byte*) print_line_cursor#64 (byte*) print_line_cursor#54 
Alias (byte*) BGCOL#32 = (byte*) BGCOL#8 (byte*) BGCOL#4 (byte*) BGCOL#36 
Alias (signed word) mul8s_compare::ms#3 = (signed word) mul8s_compare::ms#6 
Alias (signed word) mul8s_compare::mn#2 = (signed word) mul8s_compare::mn#4 
Alias (signed word) mul8s_compare::mf#2 = (signed word) mul8s_compare::mf#3 
Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#50 
Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#39 
Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#51 
Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#40 
Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#52 
Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#41 
Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#53 
Alias (signed byte) mul8s_error::a#1 = (signed byte) mul8s_error::a#2 
Alias (signed byte) mul8s_error::b#1 = (signed byte) mul8s_error::b#3 (signed byte) mul8s_error::b#4 (signed byte) mul8s_error::b#2 
Alias (signed word) mul8s_error::ms#1 = (signed word) mul8s_error::ms#5 (signed word) mul8s_error::ms#6 (signed word) mul8s_error::ms#4 (signed word) mul8s_error::ms#3 (signed word) mul8s_error::ms#2 
Alias (signed word) mul8s_error::mn#1 = (signed word) mul8s_error::mn#7 (signed word) mul8s_error::mn#8 (signed word) mul8s_error::mn#6 (signed word) mul8s_error::mn#5 (signed word) mul8s_error::mn#4 (signed word) mul8s_error::mn#3 (signed word) mul8s_error::mn#2 
Alias (signed word) mul8s_error::mf#1 = (signed word) mul8s_error::mf#9 (signed word) mul8s_error::mf#10 (signed word) mul8s_error::mf#8 (signed word) mul8s_error::mf#7 (signed word) mul8s_error::mf#6 (signed word) mul8s_error::mf#5 (signed word) mul8s_error::mf#4 (signed word) mul8s_error::mf#3 (signed word) mul8s_error::mf#2 
Alias (byte*) print_line_cursor#103 = (byte*) print_line_cursor#113 (byte*) print_line_cursor#115 (byte*) print_line_cursor#111 (byte*) print_line_cursor#107 (byte*) print_line_cursor#99 (byte*) print_line_cursor#95 (byte*) print_line_cursor#88 (byte*) print_line_cursor#77 (byte*) print_line_cursor#65 (byte*) print_line_cursor#55 
Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#54 
Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#55 
Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#56 
Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#57 
Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#58 
Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#59 
Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#60 
Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#61 
Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#62 
Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#63 
Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#43 (byte*) print_line_cursor#21 
Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#130 (byte*) print_char_cursor#65 
Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#44 
Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#66 
Successful SSA optimization Pass2AliasElimination
Alias (byte) mul8u::a#3 = (byte) mul8u::a#5 
Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 
Alias (signed byte) mul8s::b#1 = (signed byte) mul8s::b#2 
Alias (signed byte) mul8s::a#1 = (signed byte) mul8s::a#3 
Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#3 
Alias (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#3 
Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#3 
Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#3 
Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#3 
Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#3 
Alias (signed byte) mulf8s_prepared::b#1 = (signed byte) mulf8s_prepared::b#2 
Alias (word) mul8u_compare::ms#0 = (word) mul8u_compare::ms#2 (word) mul8u_compare::ms#3 
Alias (word) mul8u_compare::mn#0 = (word) mul8u_compare::mn#1 (word) mul8u_compare::mn#2 
Alias (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#8 (byte) mul8u_compare::b#5 
Alias (byte*) BGCOL#11 = (byte*) BGCOL#17 (byte*) BGCOL#3 
Alias (byte) mul8u_compare::a#10 = (byte) mul8u_compare::a#12 (byte) mul8u_compare::a#5 
Alias (word) mul8u_compare::mf#0 = (word) mul8u_compare::mf#4 (word) mul8u_compare::mf#2 
Alias (byte*) print_char_cursor#145 = (byte*) print_char_cursor#165 (byte*) print_char_cursor#172 
Alias (byte*) print_line_cursor#100 = (byte*) print_line_cursor#70 (byte*) print_line_cursor#50 
Alias (signed word) mul8s_compare::ms#0 = (signed word) mul8s_compare::ms#2 (signed word) mul8s_compare::ms#3 
Alias (signed word) mul8s_compare::mn#0 = (signed word) mul8s_compare::mn#1 (signed word) mul8s_compare::mn#2 
Alias (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#8 (signed byte) mul8s_compare::b#5 
Alias (byte*) BGCOL#13 = (byte*) BGCOL#19 (byte*) BGCOL#32 
Alias (signed byte) mul8s_compare::a#10 = (signed byte) mul8s_compare::a#12 (signed byte) mul8s_compare::a#5 
Alias (signed word) mul8s_compare::mf#0 = (signed word) mul8s_compare::mf#4 (signed word) mul8s_compare::mf#2 
Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#168 (byte*) print_char_cursor#174 
Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#74 (byte*) print_line_cursor#53 
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) print_char_cursor#69
Self Phi Eliminated (byte*) print_line_cursor#26
Self Phi Eliminated (byte) muls8u::b#1
Self Phi Eliminated (byte) muls8u::a#2
Self Phi Eliminated (signed byte) muls8s::b#1
Self Phi Eliminated (signed byte) muls8s::a#3
Self Phi Eliminated (signed byte) muls8s::b#2
Self Phi Eliminated (signed byte) muls8s::a#4
Self Phi Eliminated (byte*) BGCOL#10
Self Phi Eliminated (byte*) print_char_cursor#143
Self Phi Eliminated (byte*) print_line_cursor#48
Self Phi Eliminated (byte) mul8u_compare::a#10
Self Phi Eliminated (byte*) BGCOL#11
Self Phi Eliminated (byte*) print_char_cursor#145
Self Phi Eliminated (byte*) print_line_cursor#100
Self Phi Eliminated (signed byte) mul8s_compare::a#10
Self Phi Eliminated (byte*) BGCOL#13
Self Phi Eliminated (byte*) print_char_cursor#148
Self Phi Eliminated (byte*) print_line_cursor#102
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) print_char_cursor#69 (byte*) print_char_cursor#133
Redundant Phi (byte*) print_char_cursor#5 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#6 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#74 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#75 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#12 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#13 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#15 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#4
Redundant Phi (byte*) print_line_cursor#26 (byte*) print_screen#1
Redundant Phi (signed byte) mul8s::a#1 (signed byte) mul8s::a#0
Redundant Phi (signed byte) mul8s::b#1 (signed byte) mul8s::b#0
Redundant Phi (byte) mulf8u::a#1 (byte) mulf8u::a#0
Redundant Phi (byte) mulf8u::b#1 (byte) mulf8u::b#0
Redundant Phi (signed byte) mulf8s_prepared::b#1 (signed byte) mulf8s_prepared::b#0
Redundant Phi (signed byte) mulf8s::mulf8s_prepare1_a#0 (signed byte) mulf8s::a#0
Redundant Phi (signed byte) mulf8s::b#1 (signed byte) mulf8s::b#0
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0
Redundant Phi (byte*) print_screen#4 (byte*) print_line_cursor#0
Redundant Phi (byte*) print_line_cursor#46 (byte*) print_line_cursor#0
Redundant Phi (byte*) print_char_cursor#141 (byte*) print_line_cursor#0
Redundant Phi (byte*) print_line_cursor#27 (byte*) print_line_cursor#26
Redundant Phi (byte*) print_char_cursor#142 (byte*) print_line_cursor#26
Redundant Phi (byte*) print_char_cursor#23 (byte*) print_char_cursor#31
Redundant Phi (byte*) print_line_cursor#28 (byte*) print_line_cursor#10
Redundant Phi (byte*) print_char_cursor#24 (byte*) print_char_cursor#100
Redundant Phi (byte*) print_line_cursor#29 (byte*) print_line_cursor#13
Redundant Phi (byte*) print_char_cursor#25 (byte*) print_char_cursor#116
Redundant Phi (byte*) print_line_cursor#30 (byte*) print_line_cursor#18
Redundant Phi (byte) muls8u::a#1 (byte) muls8u::a#0
Redundant Phi (byte) muls8u::b#2 (byte) muls8u::b#0
Redundant Phi (byte) muls8u::b#1 (byte) muls8u::b#2
Redundant Phi (byte) muls8u::a#2 (byte) muls8u::a#1
Redundant Phi (signed byte) muls8s::a#1 (signed byte) muls8s::a#0
Redundant Phi (signed byte) muls8s::b#3 (signed byte) muls8s::b#0
Redundant Phi (signed byte) muls8s::b#1 (signed byte) muls8s::b#3
Redundant Phi (signed byte) muls8s::a#3 (signed byte) muls8s::a#1
Redundant Phi (signed byte) muls8s::b#2 (signed byte) muls8s::b#3
Redundant Phi (signed byte) muls8s::a#4 (signed byte) muls8s::a#1
Redundant Phi (byte*) BGCOL#9 (byte*) BGCOL#1
Redundant Phi (byte*) print_char_cursor#164 (byte*) print_char_cursor#142
Redundant Phi (byte*) print_line_cursor#90 (byte*) print_line_cursor#27
Redundant Phi (byte*) BGCOL#10 (byte*) BGCOL#9
Redundant Phi (byte*) print_char_cursor#143 (byte*) print_char_cursor#164
Redundant Phi (byte*) print_line_cursor#48 (byte*) print_line_cursor#90
Redundant Phi (byte*) print_char_cursor#27 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#28 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#29 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#30 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#32 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#33 (byte*) print_line_cursor#1
Redundant Phi (byte*) BGCOL#33 (byte*) BGCOL#1
Redundant Phi (byte*) print_char_cursor#185 (byte*) print_char_cursor#23
Redundant Phi (byte*) print_line_cursor#108 (byte*) print_line_cursor#28
Redundant Phi (byte) mul8u_compare::a#10 (byte) mul8u_compare::a#7
Redundant Phi (byte*) BGCOL#11 (byte*) BGCOL#29
Redundant Phi (byte*) print_char_cursor#145 (byte*) print_char_cursor#183
Redundant Phi (byte*) print_line_cursor#100 (byte*) print_line_cursor#104
Redundant Phi (byte*) print_char_cursor#34 (byte*) print_char_cursor#113
Redundant Phi (byte*) print_line_cursor#12 (byte*) print_line_cursor#15
Redundant Phi (byte*) print_char_cursor#101 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_line_cursor#14 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#102 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#147 (byte*) print_char_cursor#145
Redundant Phi (byte) mul8u_error::a#1 (byte) mul8u_error::a#0
Redundant Phi (byte) mul8u_error::b#1 (byte) mul8u_error::b#0
Redundant Phi (word) mul8u_error::ms#1 (word) mul8u_error::ms#0
Redundant Phi (word) mul8u_error::mn#1 (word) mul8u_error::mn#0
Redundant Phi (word) mul8u_error::mf#1 (word) mul8u_error::mf#0
Redundant Phi (byte*) print_line_cursor#101 (byte*) print_line_cursor#100
Redundant Phi (byte*) print_char_cursor#103 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#104 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#105 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#106 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#107 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#108 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#109 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#110 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#111 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#112 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_line_cursor#15 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#113 (byte*) print_line_cursor#1
Redundant Phi (byte*) BGCOL#35 (byte*) BGCOL#1
Redundant Phi (byte*) print_char_cursor#186 (byte*) print_char_cursor#24
Redundant Phi (byte*) print_line_cursor#110 (byte*) print_line_cursor#29
Redundant Phi (signed byte) mul8s_compare::a#10 (signed byte) mul8s_compare::a#7
Redundant Phi (byte*) BGCOL#13 (byte*) BGCOL#31
Redundant Phi (byte*) print_char_cursor#148 (byte*) print_char_cursor#184
Redundant Phi (byte*) print_line_cursor#102 (byte*) print_line_cursor#106
Redundant Phi (byte*) print_char_cursor#115 (byte*) print_char_cursor#129
Redundant Phi (byte*) print_line_cursor#17 (byte*) print_line_cursor#20
Redundant Phi (byte*) print_char_cursor#117 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_line_cursor#19 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#118 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#150 (byte*) print_char_cursor#148
Redundant Phi (signed byte) mul8s_error::a#1 (signed byte) mul8s_error::a#0
Redundant Phi (signed byte) mul8s_error::b#1 (signed byte) mul8s_error::b#0
Redundant Phi (signed word) mul8s_error::ms#1 (signed word) mul8s_error::ms#0
Redundant Phi (signed word) mul8s_error::mn#1 (signed word) mul8s_error::mn#0
Redundant Phi (signed word) mul8s_error::mf#1 (signed word) mul8s_error::mf#0
Redundant Phi (byte*) print_line_cursor#103 (byte*) print_line_cursor#102
Redundant Phi (byte*) print_char_cursor#119 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#120 (byte*) print_char_cursor#10
Redundant Phi (byte*) print_char_cursor#121 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#122 (byte*) print_char_cursor#10
Redundant Phi (byte*) print_char_cursor#123 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#124 (byte*) print_char_cursor#5
Redundant Phi (byte*) print_char_cursor#125 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#126 (byte*) print_char_cursor#5
Redundant Phi (byte*) print_char_cursor#127 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#128 (byte*) print_char_cursor#5
Redundant Phi (byte*) print_line_cursor#20 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#129 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#22 (byte*) print_line_cursor#30
Redundant Phi (byte*) print_char_cursor#131 (byte*) print_char_cursor#25
Successful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) print_char_cursor#135 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#136 (byte*) print_char_cursor#132
Redundant Phi (byte*) print_char_cursor#138 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#100 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#13 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#116 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#18 (byte*) print_line_cursor#1
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2
Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1
Simple Condition (bool~) print_sword::$1 [29] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
Simple Condition (bool~) print_sbyte::$0 [48] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1
Simple Condition (bool~) print_cls::$1 [113] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
Simple Condition (bool~) mul8u::$0 [126] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
Simple Condition (bool~) mul8u::$3 [131] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
Simple Condition (bool~) mul8s::$4 [157] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1
Simple Condition (bool~) mul8s::$10 [161] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2
Simple Condition (bool~) mulf_init::$4 [197] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
Simple Condition (bool~) mulf_init::$9 [209] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$8) goto mulf_init::@1
Simple Condition (bool~) mulf_init::$14 [227] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@4
Simple Condition (bool~) mulf_init::$16 [232] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$15) goto mulf_init::@3
Simple Condition (bool~) mulf8s_prepared::$3 [280] if(*((signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
Simple Condition (bool~) mulf8s_prepared::$9 [284] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
Simple Condition (bool~) muls8u::$1 [352] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1
Simple Condition (bool~) muls8u::$3 [362] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2
Simple Condition (bool~) muls8s::$0 [369] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1
Simple Condition (bool~) muls8s::$2 [375] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@2
Simple Condition (bool~) muls8s::$4 [384] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3
Simple Condition (bool~) muls8s::$6 [392] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5
Simple Condition (bool~) mulf_tables_cmp::$1 [414] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2
Simple Condition (bool~) mulf_tables_cmp::$10 [421] if((byte*) mulf_tables_cmp::kc_sqr#1<(byte*~) mulf_tables_cmp::$9) goto mulf_tables_cmp::@1
Simple Condition (bool~) mul8u_compare::$4 [484] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
Simple Condition (bool~) mul8u_compare::$6 [488] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@4
Simple Condition (bool~) mul8u_compare::$8 [494] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5
Simple Condition (bool~) mul8u_compare::$10 [500] if((byte) mul8u_compare::b#1!=rangelast(0,255)) goto mul8u_compare::@2
Simple Condition (bool~) mul8u_compare::$11 [519] if((byte) mul8u_compare::a#1!=rangelast(0,255)) goto mul8u_compare::@1
Simple Condition (bool~) mul8s_compare::$6 [609] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3
Simple Condition (bool~) mul8s_compare::$8 [613] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@4
Simple Condition (bool~) mul8s_compare::$10 [619] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5
Simple Condition (bool~) mul8s_compare::$13 [626] if((signed byte) mul8s_compare::b#1!=(signed byte/signed word/signed dword~) mul8s_compare::$12) goto mul8s_compare::@2
Simple Condition (bool~) mul8s_compare::$15 [646] if((signed byte) mul8s_compare::a#1!=(signed byte/signed word/signed dword~) mul8s_compare::$14) goto mul8s_compare::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
Constant (const byte) print_char::ch#0 = '-'
Constant (const byte) print_char::ch#1 = '-'
Constant (const byte) print_char::ch#2 = ' '
Constant (const byte[]) print_hextab#0 = $0
Constant (const word) mul8u::res#0 = 0
Constant (const byte[512]) mulf_sqr1_lo#0 = { fill( 512, 0) }
Constant (const byte[512]) mulf_sqr1_hi#0 = { fill( 512, 0) }
Constant (const byte[512]) mulf_sqr2_lo#0 = { fill( 512, 0) }
Constant (const byte[512]) mulf_sqr2_hi#0 = { fill( 512, 0) }
Constant (const word) mulf_init::sqr#0 = 0
Constant (const byte) mulf_init::x_2#0 = 0
Constant (const byte) mulf_init::c#0 = 0
Constant (const signed byte/signed word/signed dword) mulf_init::$10 = -1
Constant (const byte) mulf_init::dir#0 = 255
Constant (const byte) mulf_init::dir#1 = 1
Constant (const byte*) mulf8u_prepare::memA#0 = ((byte*))253
Constant (const byte*) mulf8u_prepared::resL#0 = ((byte*))254
Constant (const byte*) mulf8u_prepared::memB#0 = ((byte*))255
Constant (const signed byte*) mulf8s_prepared::memA#0 = ((signed byte*))253
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const word) muls8u::m#0 = 0
Constant (const byte) muls8u::i#0 = 0
Constant (const signed word) muls8s::m#0 = 0
Constant (const signed byte) muls8s::i#0 = 0
Constant (const signed byte) muls8s::j#0 = 0
Constant (const byte[512]) mula_sqr1_lo#0 = { fill( 512, 0) }
Constant (const byte[512]) mula_sqr1_hi#0 = { fill( 512, 0) }
Constant (const byte[512]) mula_sqr2_lo#0 = { fill( 512, 0) }
Constant (const byte[512]) mula_sqr2_hi#0 = { fill( 512, 0) }
Constant (const byte*) mulf_init_asm::mem#0 = ((byte*))255
Constant (const word/signed word/dword/signed dword) mulf_tables_cmp::$8 = 512*4
Constant (const byte*) print_str::str#1 = mulf_tables_cmp::str
Constant (const byte*) print_str::str#2 = mulf_tables_cmp::str1
Constant (const byte*) print_str::str#3 = mulf_tables_cmp::str2
Constant (const byte) mul8u_compare::a#0 = 0
Constant (const byte) mul8u_compare::b#0 = 0
Constant (const byte) mul8u_compare::ok#0 = 1
Constant (const byte) mul8u_compare::ok#1 = 0
Constant (const byte) mul8u_compare::ok#2 = 0
Constant (const byte*) print_str::str#4 = mul8u_compare::str
Constant (const byte*) print_str::str#5 = mul8u_error::str
Constant (const byte*) print_str::str#6 = mul8u_error::str1
Constant (const byte*) print_str::str#7 = mul8u_error::str2
Constant (const byte*) print_str::str#8 = mul8u_error::str3
Constant (const byte*) print_str::str#9 = mul8u_error::str4
Constant (const signed byte) mul8s_compare::a#0 = -128
Constant (const signed byte) mul8s_compare::b#0 = -128
Constant (const byte) mul8s_compare::ok#0 = 1
Constant (const byte) mul8s_compare::ok#1 = 0
Constant (const byte) mul8s_compare::ok#2 = 0
Constant (const signed byte/signed word/signed dword) mul8s_compare::$12 = -128
Constant (const signed byte/signed word/signed dword) mul8s_compare::$14 = -128
Constant (const byte*) print_str::str#10 = mul8s_compare::str
Constant (const byte*) print_str::str#11 = mul8s_error::str
Constant (const byte*) print_str::str#12 = mul8s_error::str1
Constant (const byte*) print_str::str#13 = mul8s_error::str2
Constant (const byte*) print_str::str#14 = mul8s_error::str3
Constant (const byte*) print_str::str#15 = mul8s_error::str4
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
Constant (const byte*) mulf_init::sqr1_hi#0 = mulf_sqr1_hi#0+1
Constant (const byte*) mulf_init::sqr1_lo#0 = mulf_sqr1_lo#0+1
Constant (const byte*) mulf_init::$8 = mulf_sqr1_lo#0+512
Constant (const byte) mulf_init::x_255#0 = ((byte))mulf_init::$10
Constant (const byte*) mulf_init::sqr2_hi#0 = mulf_sqr2_hi#0
Constant (const byte*) mulf_init::sqr2_lo#0 = mulf_sqr2_lo#0
Constant (const byte*) mulf_init::$15 = mulf_sqr2_lo#0+511
Constant (const byte*) mulf_init::$17 = mulf_sqr2_lo#0+511
Constant (const byte*) mulf_init::$18 = mulf_sqr1_lo#0+256
Constant (const byte*) mulf_init::$19 = mulf_sqr2_hi#0+511
Constant (const byte*) mulf_init::$20 = mulf_sqr1_hi#0+256
Constant (const byte*) mulf_tables_cmp::asm_sqr#0 = mula_sqr1_lo#0
Constant (const byte*) mulf_tables_cmp::kc_sqr#0 = mulf_sqr1_lo#0
Constant (const byte*) mulf_tables_cmp::$9 = mulf_sqr1_lo#0+mulf_tables_cmp::$8
Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantStringConsolidation
Fixing inline constructor with mulf8u_prepared::$0 ← *(mulf8u_prepared::memB#0) w= *(mulf8u_prepared::resL#0)
Successful SSA optimization Pass2FixInlineConstructors
Eliminating Noop Cast (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#5
Eliminating Noop Cast (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#5
Eliminating Noop Cast (byte) mul8u::a#1 ← ((byte)) (signed byte) mul8s::a#0
Eliminating Noop Cast (byte) mul8u::b#0 ← ((byte)) (signed byte) mul8s::b#0
Eliminating Noop Cast (byte~) mul8s::$7 ← ((byte)) (signed byte) mul8s::b#0
Eliminating Noop Cast (signed word) mul8s::return#0 ← ((signed word)) (word) mul8s::m#4
Eliminating Noop Cast (byte~) mul8s::$13 ← ((byte)) (signed byte) mul8s::a#0
Eliminating Noop Cast (byte) mulf8u_prepared::b#1 ← ((byte)) (signed byte) mulf8s_prepared::b#0
Eliminating Noop Cast (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#0
Eliminating Noop Cast (signed word) mulf8s_prepared::return#0 ← ((signed word)) (word) mulf8s_prepared::m#4
Eliminating Noop Cast (byte~) mulf8s_prepared::$12 ← ((byte)) *((const signed byte*) mulf8s_prepared::memA#0)
Eliminating Noop Cast (byte) mulf8u_prepare::a#1 ← ((byte)) (signed byte) mulf8s::a#0
Eliminating Noop Cast (word) print_word::w#1 ← ((word)) (byte*) mulf_tables_cmp::asm_sqr#2
Eliminating Noop Cast (word) print_word::w#2 ← ((word)) (byte*) mulf_tables_cmp::kc_sqr#2
Successful SSA optimization Pass2NopCastElimination
Resolved ranged next value mul8u_compare::b#1 ← ++ mul8u_compare::b#10 to ++
Resolved ranged comparison value if(mul8u_compare::b#1!=rangelast(0,255)) goto mul8u_compare::@2 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value mul8u_compare::a#1 ← ++ mul8u_compare::a#7 to ++
Resolved ranged comparison value if(mul8u_compare::a#1!=rangelast(0,255)) goto mul8u_compare::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_sword::@3
Culled Empty Block (label) print_sbyte::@6
Culled Empty Block (label) print_sbyte::@7
Culled Empty Block (label) print_word::@2
Culled Empty Block (label) @12
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) mul8u::@3
Culled Empty Block (label) @24
Culled Empty Block (label) mulf_init::@6
Culled Empty Block (label) mulf8s::@3
Culled Empty Block (label) @33
Culled Empty Block (label) main::@6
Culled Empty Block (label) muls8u::@3
Culled Empty Block (label) muls8s::@1
Culled Empty Block (label) muls8s::@2
Culled Empty Block (label) muls8s::@7
Culled Empty Block (label) @36
Culled Empty Block (label) mulf_tables_cmp::@9
Culled Empty Block (label) mulf_tables_cmp::@11
Culled Empty Block (label) mul8u_compare::@15
Culled Empty Block (label) mul8u_compare::@17
Culled Empty Block (label) mul8u_error::@11
Culled Empty Block (label) mul8s_compare::@15
Culled Empty Block (label) mul8s_compare::@17
Culled Empty Block (label) mul8s_error::@11
Culled Empty Block (label) @43
Successful SSA optimization Pass2CullEmptyBlocks
Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$0 
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) BGCOL#29
Self Phi Eliminated (byte*) print_char_cursor#183
Self Phi Eliminated (byte*) print_line_cursor#104
Self Phi Eliminated (byte*) BGCOL#31
Self Phi Eliminated (byte*) print_char_cursor#184
Self Phi Eliminated (byte*) print_line_cursor#106
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) BGCOL#29 (const byte*) BGCOL#0
Redundant Phi (byte*) print_char_cursor#183 (byte*) print_char_cursor#31
Redundant Phi (byte*) print_line_cursor#104 (byte*) print_line_cursor#10
Redundant Phi (byte*) BGCOL#31 (const byte*) BGCOL#0
Redundant Phi (byte*) print_char_cursor#184 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#106 (byte*) print_line_cursor#1
Successful SSA optimization Pass2RedundantPhiElimination
Inlining constant with var siblings (const byte*) print_str::str#1
Inlining constant with var siblings (const byte*) print_str::str#2
Inlining constant with var siblings (const byte*) print_str::str#3
Inlining constant with var siblings (const byte*) print_str::str#4
Inlining constant with var siblings (const byte*) print_str::str#5
Inlining constant with var siblings (const byte*) print_str::str#6
Inlining constant with var siblings (const byte*) print_str::str#7
Inlining constant with var siblings (const byte*) print_str::str#8
Inlining constant with var siblings (const byte*) print_str::str#9
Inlining constant with var siblings (const byte*) print_str::str#10
Inlining constant with var siblings (const byte*) print_str::str#11
Inlining constant with var siblings (const byte*) print_str::str#12
Inlining constant with var siblings (const byte*) print_str::str#13
Inlining constant with var siblings (const byte*) print_str::str#14
Inlining constant with var siblings (const byte*) print_str::str#15
Inlining constant with var siblings (const byte) print_char::ch#0
Inlining constant with var siblings (const byte) print_char::ch#1
Inlining constant with var siblings (const byte) print_char::ch#2
Inlining constant with var siblings (const byte*) print_cls::sc#0
Inlining constant with var siblings (const word) mul8u::res#0
Inlining constant with var siblings (const word) mulf_init::sqr#0
Inlining constant with var siblings (const byte) mulf_init::x_2#0
Inlining constant with var siblings (const byte) mulf_init::c#0
Inlining constant with var siblings (const byte) mulf_init::dir#0
Inlining constant with var siblings (const byte) mulf_init::dir#1
Inlining constant with var siblings (const byte*) mulf_init::sqr1_hi#0
Inlining constant with var siblings (const byte*) mulf_init::sqr1_lo#0
Inlining constant with var siblings (const byte) mulf_init::x_255#0
Inlining constant with var siblings (const byte*) mulf_init::sqr2_hi#0
Inlining constant with var siblings (const byte*) mulf_init::sqr2_lo#0
Inlining constant with var siblings (const word) muls8u::m#0
Inlining constant with var siblings (const byte) muls8u::i#0
Inlining constant with var siblings (const signed word) muls8s::m#0
Inlining constant with var siblings (const signed byte) muls8s::i#0
Inlining constant with var siblings (const signed byte) muls8s::j#0
Inlining constant with var siblings (const byte*) mulf_tables_cmp::asm_sqr#0
Inlining constant with var siblings (const byte*) mulf_tables_cmp::kc_sqr#0
Inlining constant with var siblings (const byte) mul8u_compare::a#0
Inlining constant with var siblings (const byte) mul8u_compare::b#0
Inlining constant with var siblings (const byte) mul8u_compare::ok#0
Inlining constant with var siblings (const byte) mul8u_compare::ok#1
Inlining constant with var siblings (const byte) mul8u_compare::ok#2
Inlining constant with var siblings (const signed byte) mul8s_compare::a#0
Inlining constant with var siblings (const signed byte) mul8s_compare::b#0
Inlining constant with var siblings (const byte) mul8s_compare::ok#0
Inlining constant with var siblings (const byte) mul8s_compare::ok#1
Inlining constant with var siblings (const byte) mul8s_compare::ok#2
Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined mulf_init::sqr2_lo#0 = (const byte[512]) mulf_sqr2_lo#0
Constant inlined mulf_init::sqr2_hi#0 = (const byte[512]) mulf_sqr2_hi#0
Constant inlined mul8u_compare::ok#2 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul8u_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul8u_compare::ok#0 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined $0 = (const byte[]) print_hextab#0
Constant inlined mul8s_compare::b#0 = -(byte/word/signed word/dword/signed dword) 128
Constant inlined mulf_init::dir#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mulf_init::dir#0 = (byte/word/signed word/dword/signed dword) 255
Constant inlined mulf_init::$20 = (const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256
Constant inlined mul8s_compare::$12 = -(byte/word/signed word/dword/signed dword) 128
Constant inlined mulf_init::x_255#0 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mul8s_compare::$14 = -(byte/word/signed word/dword/signed dword) 128
Constant inlined mulf_tables_cmp::kc_sqr#0 = (const byte[512]) mulf_sqr1_lo#0
Constant inlined mul8u_compare::b#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mulf_init::x_2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined mul8s_compare::ok#0 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mul8s_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined muls8s::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined muls8s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#9 = (const string) str4
Constant inlined mul8u::res#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mulf_init::sqr1_hi#0 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mulf_init::$10 = -(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mul8s_compare::ok#2 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mulf_init::sqr1_lo#0 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined print_str::str#4 = (const string) mul8u_compare::str
Constant inlined mulf_init::$15 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511
Constant inlined print_str::str#3 = (const string) mulf_tables_cmp::str2
Constant inlined print_str::str#2 = (const string) mulf_tables_cmp::str1
Constant inlined print_str::str#1 = (const string) mulf_tables_cmp::str
Constant inlined mulf_init::$18 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256
Constant inlined print_str::str#8 = (const string) str3
Constant inlined mulf_init::$19 = (const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511
Constant inlined print_str::str#7 = (const string) str2
Constant inlined print_str::str#6 = (const string) str1
Constant inlined mulf_init::$17 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511
Constant inlined print_str::str#5 = (const string) mul8u_error::str
Constant inlined mulf_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined print_str::str#13 = (const string) str2
Constant inlined print_str::str#12 = (const string) str1
Constant inlined print_str::str#11 = (const string) mul8s_error::str
Constant inlined print_str::str#10 = (const string) mul8s_compare::str
Constant inlined print_str::str#15 = (const string) str4
Constant inlined print_str::str#14 = (const string) str3
Constant inlined mul8u_compare::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul8s_compare::a#0 = -(byte/word/signed word/dword/signed dword) 128
Constant inlined mulf_tables_cmp::$9 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined mulf_tables_cmp::$8 = (word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined mulf_init::sqr#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined muls8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul8s_error::str1 = (const string) str1
Constant inlined mul8s_error::str2 = (const string) str2
Constant inlined mul8s_error::str3 = (const string) str3
Constant inlined muls8u::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul8s_error::str4 = (const string) str4
Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined mulf_init::$8 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512
Constant inlined print_char::ch#2 = (byte) ' '
Constant inlined muls8s::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mulf_tables_cmp::asm_sqr#0 = (const byte[512]) mula_sqr1_lo#0
Constant inlined print_char::ch#1 = (byte) '-'
Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined mul8u_error::str1 = (const string) str1
Constant inlined mul8u_error::str2 = (const string) str2
Constant inlined mul8u_error::str3 = (const string) str3
Constant inlined mul8u_error::str4 = (const string) str4
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting mul8s_compare::@18(between mul8s_compare::@10 and mul8s_compare::@1)
Added new block during phi lifting mul8s_compare::@19(between mul8s_compare::@5 and mul8s_compare::@2)
Added new block during phi lifting mul8s_compare::@20(between mul8s_compare::@3 and mul8s_compare::@4)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1)
Added new block during phi lifting mul8s::@7(between mul8s::@6 and mul8s::@1)
Added new block during phi lifting mul8s::@8(between mul8s::@1 and mul8s::@2)
Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4)
Added new block during phi lifting mulf8s_prepared::@7(between mulf8s_prepared::@6 and mulf8s_prepared::@1)
Added new block during phi lifting mulf8s_prepared::@8(between mulf8s_prepared::@1 and mulf8s_prepared::@2)
Added new block during phi lifting muls8s::@12(between muls8s::@3 and muls8s::@3)
Added new block during phi lifting muls8s::@13(between muls8s::@3 and muls8s::@4)
Added new block during phi lifting muls8s::@14(between muls8s::@5 and muls8s::@4)
Added new block during phi lifting muls8s::@15(between muls8s::@5 and muls8s::@5)
Added new block during phi lifting mul8u_compare::@18(between mul8u_compare::@10 and mul8u_compare::@1)
Added new block during phi lifting mul8u_compare::@19(between mul8u_compare::@5 and mul8u_compare::@2)
Added new block during phi lifting mul8u_compare::@20(between mul8u_compare::@3 and mul8u_compare::@4)
Added new block during phi lifting muls8u::@6(between muls8u::@2 and muls8u::@2)
Added new block during phi lifting muls8u::@7(between muls8u::@2 and muls8u::@1)
Added new block during phi lifting mulf_tables_cmp::@12(between mulf_tables_cmp::@2 and mulf_tables_cmp::@1)
Added new block during phi lifting mulf_init::@9(between mulf_init::@2 and mulf_init::@1)
Added new block during phi lifting mulf_init::@10(between mulf_init::@1 and mulf_init::@2)
Added new block during phi lifting mulf_init::@11(between mulf_init::@4 and mulf_init::@3)
Added new block during phi lifting mulf_init::@12(between mulf_init::@3 and mulf_init::@4)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @42
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of mul8s_compare
Adding NOP phi() at start of mul8s_compare::@6
Adding NOP phi() at start of mul8s_compare::@7
Adding NOP phi() at start of mulf8s
Adding NOP phi() at start of mul8u_compare
Adding NOP phi() at start of mul8u_compare::@6
Adding NOP phi() at start of mul8u_compare::@7
Adding NOP phi() at start of mulf_tables_cmp
Adding NOP phi() at start of mulf_tables_cmp::@5
Adding NOP phi() at start of mulf_init
Adding NOP phi() at start of mulf_init::@7
Adding NOP phi() at start of print_cls
CALL GRAPH
Calls in [] to main:2 
Calls in [main] to print_cls:5 mulf_init:7 mulf_init_asm:9 mulf_tables_cmp:11 mul8u_compare:13 mul8s_compare:15 
Calls in [mul8s_compare] to muls8s:22 mulf8s:27 mul8s:32 mul8s_error:48 print_str:55 print_ln:58 
Calls in [mul8s_error] to print_str:81 print_sbyte:84 print_str:86 print_sbyte:89 print_str:91 print_sword:94 print_str:96 print_sword:99 print_str:101 print_sword:104 print_ln:107 
Calls in [print_sword] to print_char:112 print_word:119 
Calls in [print_word] to print_byte:127 print_byte:131 
Calls in [print_byte] to print_char:138 print_char:143 
Calls in [print_sbyte] to print_char:152 print_byte:157 print_char:160 
Calls in [mul8s] to mul8u:165 
Calls in [mulf8s] to mulf8u_prepare:203 mulf8s_prepared:205 
Calls in [mulf8s_prepared] to mulf8u_prepared:210 
Calls in [mul8u_compare] to muls8u:260 mulf8u:265 mul8u:272 mul8u_error:288 print_str:295 print_ln:298 
Calls in [mul8u_error] to print_str:303 print_byte:307 print_str:309 print_byte:313 print_str:315 print_word:319 print_str:321 print_word:325 print_str:327 print_word:331 print_ln:334 
Calls in [mulf8u] to mulf8u_prepare:338 mulf8u_prepared:341 
Calls in [mulf_tables_cmp] to print_str:359 print_word:362 print_str:364 print_word:367 print_str:375 print_ln:377 

Created 63 initial phi equivalence classes
Not coalescing [54] print_char_cursor#192 ← print_line_cursor#1
Coalesced [56] print_line_cursor#116 ← print_line_cursor#1
Coalesced [57] print_char_cursor#187 ← print_char_cursor#132
Coalesced [59] mul8s_compare::a#14 ← mul8s_compare::a#1
Coalesced [60] mul8s_compare::b#12 ← mul8s_compare::b#1
Coalesced [61] mul8s_compare::ok#5 ← mul8s_compare::ok#4
Coalesced [63] print_line_cursor#120 ← print_line_cursor#45
Coalesced (already) [68] print_line_cursor#121 ← print_line_cursor#1
Coalesced [70] print_str::str#19 ← print_str::str#18
Coalesced [71] print_char_cursor#205 ← print_char_cursor#152
Coalesced [78] print_str::str#20 ← print_str::str#0
Coalesced [79] print_char_cursor#206 ← print_char_cursor#1
Not coalescing [80] print_char_cursor#193 ← print_line_cursor#1
Coalesced [83] print_sbyte::b#9 ← print_sbyte::b#1
Coalesced [85] print_char_cursor#194 ← print_char_cursor#18
Coalesced [88] print_sbyte::b#10 ← print_sbyte::b#2
Coalesced (already) [90] print_char_cursor#195 ← print_char_cursor#18
Coalesced [93] print_sword::w#8 ← print_sword::w#1
Coalesced (already) [95] print_char_cursor#196 ← print_char_cursor#18
Coalesced [98] print_sword::w#9 ← print_sword::w#2
Coalesced (already) [100] print_char_cursor#197 ← print_char_cursor#18
Coalesced [103] print_sword::w#10 ← print_sword::w#3
Coalesced (already) [105] print_line_cursor#117 ← print_line_cursor#1
Coalesced (already) [106] print_char_cursor#188 ← print_char_cursor#18
Coalesced [111] print_char_cursor#224 ← print_char_cursor#132
Coalesced [114] print_sword::w#12 ← print_sword::w#0
Coalesced [115] print_char_cursor#208 ← print_char_cursor#18
Coalesced [118] print_char_cursor#214 ← print_char_cursor#134
Coalesced [121] print_sword::w#11 ← print_sword::w#4
Coalesced (already) [122] print_char_cursor#207 ← print_char_cursor#132
Coalesced [125] print_byte::b#10 ← print_byte::b#1
Coalesced [126] print_char_cursor#218 ← print_char_cursor#139
Coalesced [129] print_byte::b#11 ← print_byte::b#2
Coalesced (already) [130] print_char_cursor#219 ← print_char_cursor#18
Coalesced [136] print_char::ch#6 ← print_char::ch#3
Coalesced (already) [137] print_char_cursor#220 ← print_char_cursor#140
Coalesced [141] print_char::ch#7 ← print_char::ch#4
Coalesced (already) [142] print_char_cursor#221 ← print_char_cursor#18
Coalesced (already) [151] print_char_cursor#223 ← print_char_cursor#132
Coalesced [153] print_sbyte::b#12 ← print_sbyte::b#3
Coalesced (already) [156] print_char_cursor#217 ← print_char_cursor#18
Coalesced (already) [159] print_char_cursor#222 ← print_char_cursor#132
Coalesced [162] print_sbyte::b#11 ← print_sbyte::b#0
Coalesced [172] mul8s::m#7 ← mul8s::m#1
Coalesced [178] mul8s::m#10 ← mul8s::m#2
Coalesced [181] mul8s::m#9 ← mul8s::m#5
Coalesced [182] mul8s::m#8 ← mul8s::m#0
Coalesced [185] mul8u::a#10 ← mul8u::a#6
Coalesced [186] mul8u::mb#6 ← mul8u::mb#0
Coalesced [193] mul8u::res#9 ← mul8u::res#1
Coalesced [197] mul8u::a#11 ← mul8u::a#0
Coalesced [198] mul8u::res#7 ← mul8u::res#6
Coalesced [199] mul8u::mb#7 ← mul8u::mb#1
Coalesced (already) [200] mul8u::res#8 ← mul8u::res#2
Coalesced [217] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1
Coalesced [223] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2
Coalesced [226] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5
Coalesced [227] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0
Coalesced [243] muls8s::return#5 ← muls8s::m#1
Coalesced [246] muls8s::m#10 ← muls8s::m#1
Coalesced [247] muls8s::j#3 ← muls8s::j#1
Coalesced [252] muls8s::return#6 ← muls8s::m#2
Coalesced [253] muls8s::m#11 ← muls8s::m#2
Coalesced [254] muls8s::i#3 ← muls8s::i#1
Coalesced [270] mul8u::b#4 ← mul8u::b#1
Coalesced [271] mul8u::a#9 ← mul8u::a#2
Coalesced [294] print_char_cursor#198 ← print_char_cursor#31
Coalesced [296] print_line_cursor#118 ← print_line_cursor#10
Coalesced (already) [297] print_char_cursor#189 ← print_char_cursor#132
Coalesced [299] mul8u_compare::a#14 ← mul8u_compare::a#1
Coalesced [300] mul8u_compare::b#12 ← mul8u_compare::b#1
Coalesced [301] mul8u_compare::ok#5 ← mul8u_compare::ok#4
Coalesced (already) [302] print_char_cursor#199 ← print_char_cursor#31
Coalesced [305] print_byte::b#7 ← print_byte::b#3
Coalesced (already) [306] print_char_cursor#215 ← print_char_cursor#132
Coalesced (already) [308] print_char_cursor#200 ← print_char_cursor#18
Coalesced [311] print_byte::b#8 ← print_byte::b#4
Coalesced (already) [312] print_char_cursor#216 ← print_char_cursor#132
Coalesced (already) [314] print_char_cursor#201 ← print_char_cursor#18
Coalesced [317] print_word::w#8 ← print_word::w#3
Coalesced (already) [318] print_char_cursor#209 ← print_char_cursor#132
Coalesced (already) [320] print_char_cursor#202 ← print_char_cursor#18
Coalesced [323] print_word::w#9 ← print_word::w#4
Coalesced (already) [324] print_char_cursor#210 ← print_char_cursor#132
Coalesced (already) [326] print_char_cursor#203 ← print_char_cursor#18
Coalesced [329] print_word::w#10 ← print_word::w#5
Coalesced (already) [330] print_char_cursor#211 ← print_char_cursor#132
Coalesced (already) [332] print_line_cursor#119 ← print_line_cursor#10
Coalesced (already) [333] print_char_cursor#190 ← print_char_cursor#18
Coalesced [337] mulf8u_prepare::a#4 ← mulf8u_prepare::a#0
Coalesced [340] mulf8u_prepared::b#4 ← mulf8u_prepared::b#0
Coalesced [350] muls8u::return#5 ← muls8u::m#1
Coalesced [353] muls8u::m#5 ← muls8u::m#1
Coalesced [354] muls8u::i#3 ← muls8u::i#1
Coalesced (already) [361] print_char_cursor#212 ← print_char_cursor#132
Coalesced (already) [363] print_char_cursor#204 ← print_char_cursor#18
Coalesced (already) [366] print_char_cursor#213 ← print_char_cursor#132
Coalesced (already) [368] print_char_cursor#226 ← print_char_cursor#18
Coalesced (already) [376] print_char_cursor#191 ← print_char_cursor#132
Not coalescing [378] print_char_cursor#225 ← print_line_cursor#1
Coalesced (already) [379] print_line_cursor#122 ← print_line_cursor#1
Coalesced [380] mulf_tables_cmp::kc_sqr#8 ← mulf_tables_cmp::kc_sqr#1
Coalesced [381] mulf_tables_cmp::asm_sqr#6 ← mulf_tables_cmp::asm_sqr#1
Coalesced [395] mulf_init::sqr#8 ← mulf_init::sqr#2
Coalesced [396] mulf_init::x_2#7 ← mulf_init::x_2#1
Coalesced [419] mulf_init::x_255#5 ← mulf_init::x_255#1
Coalesced [420] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1
Coalesced [421] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1
Coalesced [422] mulf_init::dir#4 ← mulf_init::dir#3
Coalesced (already) [423] mulf_init::dir#5 ← mulf_init::dir#2
Coalesced [424] mulf_init::c#5 ← mulf_init::c#1
Coalesced [425] mulf_init::sqr#6 ← mulf_init::sqr#1
Coalesced [426] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1
Coalesced [427] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1
Coalesced [428] mulf_init::x_2#5 ← mulf_init::x_2#2
Coalesced [429] mulf_init::sqr#7 ← mulf_init::sqr#4
Coalesced (already) [430] mulf_init::x_2#6 ← mulf_init::x_2#3
Coalesced [437] print_cls::sc#3 ← print_cls::sc#1
Coalesced down to 39 phi equivalence classes
Culled Empty Block (label) mul8s_compare::@7
Culled Empty Block (label) mul8s_compare::@18
Culled Empty Block (label) mul8s_compare::@19
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_sword::@5
Culled Empty Block (label) mul8s::@8
Culled Empty Block (label) mul8s::@7
Culled Empty Block (label) mul8u::@10
Culled Empty Block (label) mulf8s_prepared::@8
Culled Empty Block (label) mulf8s_prepared::@7
Culled Empty Block (label) muls8s::@13
Culled Empty Block (label) muls8s::@12
Culled Empty Block (label) muls8s::@14
Culled Empty Block (label) muls8s::@15
Culled Empty Block (label) mul8u_compare::@7
Culled Empty Block (label) mul8u_compare::@18
Culled Empty Block (label) mul8u_compare::@19
Culled Empty Block (label) muls8u::@7
Culled Empty Block (label) muls8u::@6
Culled Empty Block (label) mulf_tables_cmp::@12
Culled Empty Block (label) mulf_init::@7
Culled Empty Block (label) mulf_init::@11
Culled Empty Block (label) mulf_init::@9
Culled Empty Block (label) mulf_init::@10
Culled Empty Block (label) print_cls::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @42
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of mul8s_compare
Adding NOP phi() at start of mul8s_compare::@6
Adding NOP phi() at start of mul8s_compare::@16
Adding NOP phi() at start of mul8s_compare::@20
Adding NOP phi() at start of mul8s_error::@2
Adding NOP phi() at start of mul8s_error::@4
Adding NOP phi() at start of mul8s_error::@6
Adding NOP phi() at start of mul8s_error::@8
Adding NOP phi() at start of mul8s_error::@10
Adding NOP phi() at start of print_sword::@2
Adding NOP phi() at start of print_sbyte::@3
Adding NOP phi() at start of print_sbyte::@1
Adding NOP phi() at start of mulf8s
Adding NOP phi() at start of mul8u_compare
Adding NOP phi() at start of mul8u_compare::@6
Adding NOP phi() at start of mul8u_compare::@11
Adding NOP phi() at start of mul8u_compare::@16
Adding NOP phi() at start of mul8u_compare::@20
Adding NOP phi() at start of mul8u_error
Adding NOP phi() at start of mul8u_error::@2
Adding NOP phi() at start of mul8u_error::@4
Adding NOP phi() at start of mul8u_error::@6
Adding NOP phi() at start of mul8u_error::@8
Adding NOP phi() at start of mul8u_error::@10
Adding NOP phi() at start of mulf_tables_cmp
Adding NOP phi() at start of mulf_tables_cmp::@7
Adding NOP phi() at start of mulf_tables_cmp::@5
Adding NOP phi() at start of mulf_tables_cmp::@10
Adding NOP phi() at start of mulf_init
Adding NOP phi() at start of mulf_init::@12
Adding NOP phi() at start of print_cls

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@42
@42: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @42
  [3] phi()
main: scope:[main]  from @42
  [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5
  [5] call print_cls 
  to:main::@1
main::@1: scope:[main]  from main
  [6] phi()
  [7] call mulf_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  [8] phi()
  [9] call mulf_init_asm 
  to:main::@3
main::@3: scope:[main]  from main::@2
  [10] phi()
  [11] call mulf_tables_cmp 
  to:main::@4
main::@4: scope:[main]  from main::@3
  [12] phi()
  [13] call mul8u_compare 
  to:main::@5
main::@5: scope:[main]  from main::@4
  [14] phi()
  [15] call mul8s_compare 
  to:main::@return
main::@return: scope:[main]  from main::@5
  [16] return 
  to:@return
mul8s_compare: scope:[mul8s_compare]  from main::@5
  [17] phi()
  to:mul8s_compare::@1
mul8s_compare::@1: scope:[mul8s_compare]  from mul8s_compare mul8s_compare::@10
  [18] (signed byte) mul8s_compare::a#7 ← phi( mul8s_compare/-(byte/word/signed word/dword/signed dword) 128 mul8s_compare::@10/(signed byte) mul8s_compare::a#1 )
  to:mul8s_compare::@2
mul8s_compare::@2: scope:[mul8s_compare]  from mul8s_compare::@1 mul8s_compare::@5
  [19] (signed byte) mul8s_compare::b#10 ← phi( mul8s_compare::@1/-(byte/word/signed word/dword/signed dword) 128 mul8s_compare::@5/(signed byte) mul8s_compare::b#1 )
  [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7
  [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10
  [22] call muls8s 
  [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0
  to:mul8s_compare::@12
mul8s_compare::@12: scope:[mul8s_compare]  from mul8s_compare::@2
  [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2
  [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7
  [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10
  [27] call mulf8s 
  [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
  to:mul8s_compare::@13
mul8s_compare::@13: scope:[mul8s_compare]  from mul8s_compare::@12
  [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2
  [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7
  [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10
  [32] call mul8s 
  [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4
  to:mul8s_compare::@14
mul8s_compare::@14: scope:[mul8s_compare]  from mul8s_compare::@13
  [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2
  [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3
  to:mul8s_compare::@6
mul8s_compare::@6: scope:[mul8s_compare]  from mul8s_compare::@14
  [36] phi()
  to:mul8s_compare::@3
mul8s_compare::@3: scope:[mul8s_compare]  from mul8s_compare::@14 mul8s_compare::@6
  [37] (byte) mul8s_compare::ok#4 ← phi( mul8s_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8s_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20
  to:mul8s_compare::@4
mul8s_compare::@4: scope:[mul8s_compare]  from mul8s_compare::@20 mul8s_compare::@3
  [39] (byte) mul8s_compare::ok#3 ← phi( mul8s_compare::@20/(byte) mul8s_compare::ok#4 mul8s_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5
  to:mul8s_compare::@8
mul8s_compare::@8: scope:[mul8s_compare]  from mul8s_compare::@4
  [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
  [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7
  [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10
  [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0
  [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0
  [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0
  [47] call mul8s_error 
  to:mul8s_compare::@return
mul8s_compare::@return: scope:[mul8s_compare]  from mul8s_compare::@16 mul8s_compare::@8
  [48] return 
  to:@return
mul8s_compare::@5: scope:[mul8s_compare]  from mul8s_compare::@4
  [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10
  [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2
  to:mul8s_compare::@10
mul8s_compare::@10: scope:[mul8s_compare]  from mul8s_compare::@5
  [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7
  [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1
  to:mul8s_compare::@11
mul8s_compare::@11: scope:[mul8s_compare]  from mul8s_compare::@10
  [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1
  [54] call print_str 
  to:mul8s_compare::@16
mul8s_compare::@16: scope:[mul8s_compare]  from mul8s_compare::@11
  [55] phi()
  [56] call print_ln 
  to:mul8s_compare::@return
mul8s_compare::@20: scope:[mul8s_compare]  from mul8s_compare::@3
  [57] phi()
  to:mul8s_compare::@4
print_ln: scope:[print_ln]  from mul8s_compare::@16 mul8s_error::@10 mul8u_compare::@16 mul8u_error::@10 mulf_tables_cmp::@10
  [58] (byte*) print_char_cursor#133 ← phi( mul8s_compare::@16/(byte*) print_char_cursor#132 mul8s_error::@10/(byte*) print_char_cursor#18 mul8u_compare::@16/(byte*) print_char_cursor#132 mul8u_error::@10/(byte*) print_char_cursor#18 mulf_tables_cmp::@10/(byte*) print_char_cursor#132 )
  [58] (byte*) print_line_cursor#45 ← phi( mul8s_compare::@16/(byte*) print_line_cursor#1 mul8s_error::@10/(byte*) print_line_cursor#1 mul8u_compare::@16/(byte*) print_line_cursor#10 mul8u_error::@10/(byte*) print_line_cursor#10 mulf_tables_cmp::@10/((byte*))(word/signed word/dword/signed dword) 1024 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [59] (byte*) print_line_cursor#23 ← phi( print_ln/(byte*) print_line_cursor#45 print_ln::@1/(byte*) print_line_cursor#1 )
  [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40
  [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [62] return 
  to:@return
print_str: scope:[print_str]  from mul8s_compare::@11 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@11 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@5 mulf_tables_cmp::@7
  [63] (byte*) print_char_cursor#152 ← phi( mul8s_compare::@11/(byte*~) print_char_cursor#192 mul8s_error/(byte*~) print_char_cursor#193 mul8s_error::@2/(byte*) print_char_cursor#18 mul8s_error::@4/(byte*) print_char_cursor#18 mul8s_error::@6/(byte*) print_char_cursor#18 mul8s_error::@8/(byte*) print_char_cursor#18 mul8u_compare::@11/(byte*) print_char_cursor#31 mul8u_error/(byte*) print_char_cursor#31 mul8u_error::@2/(byte*) print_char_cursor#18 mul8u_error::@4/(byte*) print_char_cursor#18 mul8u_error::@6/(byte*) print_char_cursor#18 mul8u_error::@8/(byte*) print_char_cursor#18 mulf_tables_cmp::@3/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@5/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@7/(byte*) print_char_cursor#18 )
  [63] (byte*) print_str::str#18 ← phi( mul8s_compare::@11/(const string) mul8s_compare::str mul8s_error/(const string) mul8s_error::str mul8s_error::@2/(const string) str1 mul8s_error::@4/(const string) str2 mul8s_error::@6/(const string) str3 mul8s_error::@8/(const string) str4 mul8u_compare::@11/(const string) mul8u_compare::str mul8u_error/(const string) mul8u_error::str mul8u_error::@2/(const string) str1 mul8u_error::@4/(const string) str2 mul8u_error::@6/(const string) str3 mul8u_error::@8/(const string) str4 mulf_tables_cmp::@3/(const string) mulf_tables_cmp::str mulf_tables_cmp::@5/(const string) mulf_tables_cmp::str2 mulf_tables_cmp::@7/(const string) mulf_tables_cmp::str1 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [64] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 )
  [64] (byte*) print_str::str#16 ← phi( print_str/(byte*) print_str::str#18 print_str::@2/(byte*) print_str::str#0 )
  [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [66] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16)
  [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132
  [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16
  to:print_str::@1
mul8s_error: scope:[mul8s_error]  from mul8s_compare::@8
  [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1
  [71] call print_str 
  to:mul8s_error::@1
mul8s_error::@1: scope:[mul8s_error]  from mul8s_error
  [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0
  [73] call print_sbyte 
  to:mul8s_error::@2
mul8s_error::@2: scope:[mul8s_error]  from mul8s_error::@1
  [74] phi()
  [75] call print_str 
  to:mul8s_error::@3
mul8s_error::@3: scope:[mul8s_error]  from mul8s_error::@2
  [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0
  [77] call print_sbyte 
  to:mul8s_error::@4
mul8s_error::@4: scope:[mul8s_error]  from mul8s_error::@3
  [78] phi()
  [79] call print_str 
  to:mul8s_error::@5
mul8s_error::@5: scope:[mul8s_error]  from mul8s_error::@4
  [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0
  [81] call print_sword 
  to:mul8s_error::@6
mul8s_error::@6: scope:[mul8s_error]  from mul8s_error::@5
  [82] phi()
  [83] call print_str 
  to:mul8s_error::@7
mul8s_error::@7: scope:[mul8s_error]  from mul8s_error::@6
  [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0
  [85] call print_sword 
  to:mul8s_error::@8
mul8s_error::@8: scope:[mul8s_error]  from mul8s_error::@7
  [86] phi()
  [87] call print_str 
  to:mul8s_error::@9
mul8s_error::@9: scope:[mul8s_error]  from mul8s_error::@8
  [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0
  [89] call print_sword 
  to:mul8s_error::@10
mul8s_error::@10: scope:[mul8s_error]  from mul8s_error::@9
  [90] phi()
  [91] call print_ln 
  to:mul8s_error::@return
mul8s_error::@return: scope:[mul8s_error]  from mul8s_error::@10
  [92] return 
  to:@return
print_sword: scope:[print_sword]  from mul8s_error::@5 mul8s_error::@7 mul8s_error::@9
  [93] (signed word) print_sword::w#4 ← phi( mul8s_error::@5/(signed word) print_sword::w#1 mul8s_error::@7/(signed word) print_sword::w#2 mul8s_error::@9/(signed word) print_sword::w#3 )
  [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword
  [95] phi()
  [96] call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@2
  [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4
  to:print_sword::@1
print_sword::@1: scope:[print_sword]  from print_sword print_sword::@4
  [98] (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#132 print_sword::@4/(byte*) print_char_cursor#18 )
  [98] (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#4 print_sword::@4/(signed word) print_sword::w#0 )
  [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5
  [100] call print_word 
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@1
  [101] return 
  to:@return
print_word: scope:[print_word]  from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@6 mulf_tables_cmp::@8 print_sword::@1
  [102] (byte*) print_char_cursor#139 ← phi( mul8u_error::@5/(byte*) print_char_cursor#132 mul8u_error::@7/(byte*) print_char_cursor#132 mul8u_error::@9/(byte*) print_char_cursor#132 mulf_tables_cmp::@6/(byte*) print_char_cursor#132 mulf_tables_cmp::@8/(byte*) print_char_cursor#132 print_sword::@1/(byte*) print_char_cursor#134 )
  [102] (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@6/(word~) print_word::w#11 mulf_tables_cmp::@8/(word~) print_word::w#12 print_sword::@1/(word~) print_word::w#13 )
  [103] (byte) print_byte::b#1 ← > (word) print_word::w#6
  [104] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [105] (byte) print_byte::b#2 ← < (word) print_word::w#6
  [106] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [107] return 
  to:@return
print_byte: scope:[print_byte]  from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1
  [108] (byte*) print_char_cursor#140 ← phi( mul8u_error::@1/(byte*) print_char_cursor#132 mul8u_error::@3/(byte*) print_char_cursor#132 print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#18 )
  [108] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 )
  [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4
  [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
  [111] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15
  [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
  [114] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [115] return 
  to:@return
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2
  [116] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#140 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#132 )
  [116] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' )
  [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5
  [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [119] return 
  to:@return
print_sbyte: scope:[print_sbyte]  from mul8s_error::@1 mul8s_error::@3
  [120] (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 )
  [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1
  to:print_sbyte::@3
print_sbyte::@3: scope:[print_sbyte]  from print_sbyte
  [122] phi()
  [123] call print_char 
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@3 print_sbyte::@5
  [124] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 )
  [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5
  [126] call print_byte 
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@2
  [127] return 
  to:@return
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte
  [128] phi()
  [129] call print_char 
  to:print_sbyte::@5
print_sbyte::@5: scope:[print_sbyte]  from print_sbyte::@1
  [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3
  to:print_sbyte::@2
mul8s: scope:[mul8s]  from mul8s_compare::@13
  [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0
  [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0
  [133] call mul8u 
  [134] (word) mul8u::return#2 ← (word) mul8u::res#2
  to:mul8s::@6
mul8s::@6: scope:[mul8s]  from mul8s
  [135] (word) mul8s::m#0 ← (word) mul8u::return#2
  [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1
  to:mul8s::@3
mul8s::@3: scope:[mul8s]  from mul8s::@6
  [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0
  [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0
  [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16
  to:mul8s::@1
mul8s::@1: scope:[mul8s]  from mul8s::@3 mul8s::@6
  [140] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 )
  [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2
  to:mul8s::@4
mul8s::@4: scope:[mul8s]  from mul8s::@1
  [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5
  [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0
  [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17
  to:mul8s::@2
mul8s::@2: scope:[mul8s]  from mul8s::@1 mul8s::@4
  [145] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 )
  to:mul8s::@return
mul8s::@return: scope:[mul8s]  from mul8s::@2
  [146] return 
  to:@return
mul8u: scope:[mul8u]  from mul8s mul8u_compare::@13
  [147] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 )
  [147] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 )
  [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2
  to:mul8u::@1
mul8u::@1: scope:[mul8u]  from mul8u mul8u::@4
  [149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 )
  [149] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 )
  [149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 )
  [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
  to:mul8u::@return
mul8u::@return: scope:[mul8u]  from mul8u::@1
  [151] return 
  to:@return
mul8u::@2: scope:[mul8u]  from mul8u::@1
  [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
  [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
  to:mul8u::@7
mul8u::@7: scope:[mul8u]  from mul8u::@2
  [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
  to:mul8u::@4
mul8u::@4: scope:[mul8u]  from mul8u::@2 mul8u::@7
  [155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 )
  [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
  to:mul8u::@1
mulf8s: scope:[mulf8s]  from mul8s_compare::@12
  [158] phi()
  to:mulf8s::mulf8s_prepare1
mulf8s::mulf8s_prepare1: scope:[mulf8s]  from mulf8s
  [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0
  [160] call mulf8u_prepare 
  to:mulf8s::@2
mulf8s::@2: scope:[mulf8s]  from mulf8s::mulf8s_prepare1
  [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0
  [162] call mulf8s_prepared 
  [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4
  to:mulf8s::@4
mulf8s::@4: scope:[mulf8s]  from mulf8s::@2
  [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2
  to:mulf8s::@return
mulf8s::@return: scope:[mulf8s]  from mulf8s::@4
  [165] return 
  to:@return
mulf8s_prepared: scope:[mulf8s_prepared]  from mulf8s::@2
  [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0
  [167] call mulf8u_prepared 
  [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
  to:mulf8s_prepared::@6
mulf8s_prepared::@6: scope:[mulf8s_prepared]  from mulf8s_prepared
  [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
  [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
  to:mulf8s_prepared::@3
mulf8s_prepared::@3: scope:[mulf8s_prepared]  from mulf8s_prepared::@6
  [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0
  [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0
  [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
  to:mulf8s_prepared::@1
mulf8s_prepared::@1: scope:[mulf8s_prepared]  from mulf8s_prepared::@3 mulf8s_prepared::@6
  [174] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
  [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
  to:mulf8s_prepared::@4
mulf8s_prepared::@4: scope:[mulf8s_prepared]  from mulf8s_prepared::@1
  [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
  [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
  [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
  to:mulf8s_prepared::@2
mulf8s_prepared::@2: scope:[mulf8s_prepared]  from mulf8s_prepared::@1 mulf8s_prepared::@4
  [179] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
  to:mulf8s_prepared::@return
mulf8s_prepared::@return: scope:[mulf8s_prepared]  from mulf8s_prepared::@2
  [180] return 
  to:@return
mulf8u_prepared: scope:[mulf8u_prepared]  from mulf8s_prepared mulf8u::@2
  [181] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 )
  [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2
  asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  }
  [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
  to:mulf8u_prepared::@return
mulf8u_prepared::@return: scope:[mulf8u_prepared]  from mulf8u_prepared
  [185] return 
  to:@return
mulf8u_prepare: scope:[mulf8u_prepare]  from mulf8s::mulf8s_prepare1 mulf8u
  [186] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 )
  [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
  asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  }
  to:mulf8u_prepare::@return
mulf8u_prepare::@return: scope:[mulf8u_prepare]  from mulf8u_prepare
  [189] return 
  to:@return
muls8s: scope:[muls8s]  from mul8s_compare::@2
  [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5
  to:muls8s::@6
muls8s::@6: scope:[muls8s]  from muls8s
  [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4
  to:muls8s::@3
muls8s::@3: scope:[muls8s]  from muls8s::@3 muls8s::@6
  [192] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [192] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0
  [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2
  [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3
  to:muls8s::@4
muls8s::@4: scope:[muls8s]  from muls8s::@3 muls8s::@5 muls8s::@6
  [196] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 )
  to:muls8s::@return
muls8s::@return: scope:[muls8s]  from muls8s::@4
  [197] return 
  to:@return
muls8s::@5: scope:[muls8s]  from muls8s muls8s::@5
  [198] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 )
  [198] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 )
  [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0
  [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2
  [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5
  to:muls8s::@4
mul8u_compare: scope:[mul8u_compare]  from main::@4
  [202] phi()
  to:mul8u_compare::@1
mul8u_compare::@1: scope:[mul8u_compare]  from mul8u_compare mul8u_compare::@10
  [203] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 )
  to:mul8u_compare::@2
mul8u_compare::@2: scope:[mul8u_compare]  from mul8u_compare::@1 mul8u_compare::@5
  [204] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 )
  [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
  [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10
  [207] call muls8u 
  [208] (word) muls8u::return#2 ← (word) muls8u::return#0
  to:mul8u_compare::@12
mul8u_compare::@12: scope:[mul8u_compare]  from mul8u_compare::@2
  [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
  [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7
  [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10
  [212] call mulf8u 
  [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0
  to:mul8u_compare::@13
mul8u_compare::@13: scope:[mul8u_compare]  from mul8u_compare::@12
  [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
  [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7
  [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10
  [217] call mul8u 
  [218] (word) mul8u::return#3 ← (word) mul8u::res#2
  to:mul8u_compare::@14
mul8u_compare::@14: scope:[mul8u_compare]  from mul8u_compare::@13
  [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
  [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
  to:mul8u_compare::@6
mul8u_compare::@6: scope:[mul8u_compare]  from mul8u_compare::@14
  [221] phi()
  to:mul8u_compare::@3
mul8u_compare::@3: scope:[mul8u_compare]  from mul8u_compare::@14 mul8u_compare::@6
  [222] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20
  to:mul8u_compare::@4
mul8u_compare::@4: scope:[mul8u_compare]  from mul8u_compare::@20 mul8u_compare::@3
  [224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5
  to:mul8u_compare::@8
mul8u_compare::@8: scope:[mul8u_compare]  from mul8u_compare::@4
  [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
  [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7
  [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
  [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
  [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
  [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
  [232] call mul8u_error 
  to:mul8u_compare::@return
mul8u_compare::@return: scope:[mul8u_compare]  from mul8u_compare::@16 mul8u_compare::@8
  [233] return 
  to:@return
mul8u_compare::@5: scope:[mul8u_compare]  from mul8u_compare::@4
  [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10
  [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2
  to:mul8u_compare::@10
mul8u_compare::@10: scope:[mul8u_compare]  from mul8u_compare::@5
  [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7
  [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1
  to:mul8u_compare::@11
mul8u_compare::@11: scope:[mul8u_compare]  from mul8u_compare::@10
  [238] phi()
  [239] call print_str 
  to:mul8u_compare::@16
mul8u_compare::@16: scope:[mul8u_compare]  from mul8u_compare::@11
  [240] phi()
  [241] call print_ln 
  to:mul8u_compare::@return
mul8u_compare::@20: scope:[mul8u_compare]  from mul8u_compare::@3
  [242] phi()
  to:mul8u_compare::@4
mul8u_error: scope:[mul8u_error]  from mul8u_compare::@8
  [243] phi()
  [244] call print_str 
  to:mul8u_error::@1
mul8u_error::@1: scope:[mul8u_error]  from mul8u_error
  [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
  [246] call print_byte 
  to:mul8u_error::@2
mul8u_error::@2: scope:[mul8u_error]  from mul8u_error::@1
  [247] phi()
  [248] call print_str 
  to:mul8u_error::@3
mul8u_error::@3: scope:[mul8u_error]  from mul8u_error::@2
  [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0
  [250] call print_byte 
  to:mul8u_error::@4
mul8u_error::@4: scope:[mul8u_error]  from mul8u_error::@3
  [251] phi()
  [252] call print_str 
  to:mul8u_error::@5
mul8u_error::@5: scope:[mul8u_error]  from mul8u_error::@4
  [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0
  [254] call print_word 
  to:mul8u_error::@6
mul8u_error::@6: scope:[mul8u_error]  from mul8u_error::@5
  [255] phi()
  [256] call print_str 
  to:mul8u_error::@7
mul8u_error::@7: scope:[mul8u_error]  from mul8u_error::@6
  [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0
  [258] call print_word 
  to:mul8u_error::@8
mul8u_error::@8: scope:[mul8u_error]  from mul8u_error::@7
  [259] phi()
  [260] call print_str 
  to:mul8u_error::@9
mul8u_error::@9: scope:[mul8u_error]  from mul8u_error::@8
  [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0
  [262] call print_word 
  to:mul8u_error::@10
mul8u_error::@10: scope:[mul8u_error]  from mul8u_error::@9
  [263] phi()
  [264] call print_ln 
  to:mul8u_error::@return
mul8u_error::@return: scope:[mul8u_error]  from mul8u_error::@10
  [265] return 
  to:@return
mulf8u: scope:[mulf8u]  from mul8u_compare::@12
  [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
  [267] call mulf8u_prepare 
  to:mulf8u::@2
mulf8u::@2: scope:[mulf8u]  from mulf8u
  [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
  [269] call mulf8u_prepared 
  [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
  to:mulf8u::@3
mulf8u::@3: scope:[mulf8u]  from mulf8u::@2
  [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
  to:mulf8u::@return
mulf8u::@return: scope:[mulf8u]  from mulf8u::@3
  [272] return 
  to:@return
muls8u: scope:[muls8u]  from mul8u_compare::@2
  [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1
  to:muls8u::@2
muls8u::@2: scope:[muls8u]  from muls8u muls8u::@2
  [274] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [274] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0
  [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2
  [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2
  to:muls8u::@1
muls8u::@1: scope:[muls8u]  from muls8u muls8u::@2
  [278] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 )
  to:muls8u::@return
muls8u::@return: scope:[muls8u]  from muls8u::@1
  [279] return 
  to:@return
mulf_tables_cmp: scope:[mulf_tables_cmp]  from main::@3
  [280] phi()
  to:mulf_tables_cmp::@1
mulf_tables_cmp::@1: scope:[mulf_tables_cmp]  from mulf_tables_cmp mulf_tables_cmp::@2
  [281] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 )
  [281] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 )
  [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2
  to:mulf_tables_cmp::@3
mulf_tables_cmp::@3: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@1
  [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
  [284] call print_str 
  to:mulf_tables_cmp::@6
mulf_tables_cmp::@6: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@3
  [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
  [286] call print_word 
  to:mulf_tables_cmp::@7
mulf_tables_cmp::@7: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@6
  [287] phi()
  [288] call print_str 
  to:mulf_tables_cmp::@8
mulf_tables_cmp::@8: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@7
  [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2
  [290] call print_word 
  to:mulf_tables_cmp::@return
mulf_tables_cmp::@return: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@10 mulf_tables_cmp::@8
  [291] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 )
  [291] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 )
  [292] return 
  to:@return
mulf_tables_cmp::@2: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@1
  [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2
  [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2
  [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1
  to:mulf_tables_cmp::@5
mulf_tables_cmp::@5: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@2
  [296] phi()
  [297] call print_str 
  to:mulf_tables_cmp::@10
mulf_tables_cmp::@10: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@5
  [298] phi()
  [299] call print_ln 
  [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1
  to:mulf_tables_cmp::@return
mulf_init_asm: scope:[mulf_init_asm]  from main::@2
  asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!-  }
  [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0)
  [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0)
  [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0)
  [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0)
  to:mulf_init_asm::@return
mulf_init_asm::@return: scope:[mulf_init_asm]  from mulf_init_asm
  [306] return 
  to:@return
mulf_init: scope:[mulf_init]  from main::@1
  [307] phi()
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@2
  [308] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
  [308] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
  [308] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
  [308] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
  [308] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
  [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
  [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
  to:mulf_init::@5
mulf_init::@5: scope:[mulf_init]  from mulf_init::@1
  [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
  [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
  to:mulf_init::@2
mulf_init::@2: scope:[mulf_init]  from mulf_init::@1 mulf_init::@5
  [314] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
  [314] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
  [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
  [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
  [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
  [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
  [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
  [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
  to:mulf_init::@3
mulf_init::@3: scope:[mulf_init]  from mulf_init::@2 mulf_init::@4
  [323] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
  [323] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
  [323] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
  [323] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
  [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
  [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
  [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
  to:mulf_init::@4
mulf_init::@4: scope:[mulf_init]  from mulf_init::@12 mulf_init::@3
  [329] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
  [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
  [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
  to:mulf_init::@8
mulf_init::@8: scope:[mulf_init]  from mulf_init::@4
  [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
  [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
  to:mulf_init::@return
mulf_init::@return: scope:[mulf_init]  from mulf_init::@8
  [334] return 
  to:@return
mulf_init::@12: scope:[mulf_init]  from mulf_init::@3
  [335] phi()
  to:mulf_init::@4
print_cls: scope:[print_cls]  from main
  [336] phi()
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  [337] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
  [338] *((byte*) print_cls::sc#2) ← (byte) ' '
  [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
  [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  [341] return 
  to:@return


VARIABLE REGISTER WEIGHTS
(byte*) BGCOL
(void()) main()
(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
(byte~) mul8s::$12 4.0
(byte~) mul8s::$16 4.0
(byte~) mul8s::$17 4.0
(byte~) mul8s::$6 4.0
(signed byte) mul8s::a
(signed byte) mul8s::a#0 7.357142857142858
(signed byte) mul8s::b
(signed byte) mul8s::b#0 9.363636363636363
(word) mul8s::m
(word) mul8s::m#0 2.0
(word) mul8s::m#1 4.0
(word) mul8s::m#2 4.0
(word) mul8s::m#4 1.3333333333333333
(word) mul8s::m#5 2.5
(signed word) mul8s::return
(signed word) mul8s::return#2 202.0
(void()) mul8s_compare()
(signed byte) mul8s_compare::a
(signed byte) mul8s_compare::a#1 16.5
(signed byte) mul8s_compare::a#7 12.11111111111111
(signed byte) mul8s_compare::b
(signed byte) mul8s_compare::b#1 151.5
(signed byte) mul8s_compare::b#10 20.279999999999998
(signed word) mul8s_compare::mf
(signed word) mul8s_compare::mf#0 11.333333333333332
(signed word) mul8s_compare::mn
(signed word) mul8s_compare::mn#0 17.0
(signed word) mul8s_compare::ms
(signed word) mul8s_compare::ms#0 14.523809523809522
(byte) mul8s_compare::ok
(byte) mul8s_compare::ok#3 202.0
(byte) mul8s_compare::ok#4 33.666666666666664
(void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf)
(signed byte) mul8s_error::a
(signed byte) mul8s_error::a#0 0.5714285714285714
(signed byte) mul8s_error::b
(signed byte) mul8s_error::b#0 0.4
(signed word) mul8s_error::mf
(signed word) mul8s_error::mf#0 0.21052631578947367
(signed word) mul8s_error::mn
(signed word) mul8s_error::mn#0 0.25
(signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 0.3076923076923077
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 2002.0
(byte) mul8u::a
(byte) mul8u::a#0 1001.0
(byte) mul8u::a#2 101.0
(byte) mul8u::a#3 667.6666666666667
(byte) mul8u::a#6 52.5
(byte~) mul8u::a#8 4.0
(byte) mul8u::b
(byte) mul8u::b#1 202.0
(byte) mul8u::b#2 105.0
(byte~) mul8u::b#3 2.0
(word) mul8u::mb
(word) mul8u::mb#0 4.0
(word) mul8u::mb#1 2002.0
(word) mul8u::mb#2 429.2857142857143
(word) mul8u::res
(word) mul8u::res#1 2002.0
(word) mul8u::res#2 443.7142857142857
(word) mul8u::res#6 1001.0
(word) mul8u::return
(word) mul8u::return#2 4.0
(word) mul8u::return#3 202.0
(void()) mul8u_compare()
(byte) mul8u_compare::a
(byte) mul8u_compare::a#1 16.5
(byte) mul8u_compare::a#7 12.11111111111111
(byte) mul8u_compare::b
(byte) mul8u_compare::b#1 151.5
(byte) mul8u_compare::b#10 20.279999999999998
(word) mul8u_compare::mf
(word) mul8u_compare::mf#0 11.333333333333332
(word) mul8u_compare::mn
(word) mul8u_compare::mn#0 17.0
(word) mul8u_compare::ms
(word) mul8u_compare::ms#0 14.523809523809522
(byte) mul8u_compare::ok
(byte) mul8u_compare::ok#3 202.0
(byte) mul8u_compare::ok#4 33.666666666666664
(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
(byte) mul8u_error::a
(byte) mul8u_error::a#0 0.5714285714285714
(byte) mul8u_error::b
(byte) mul8u_error::b#0 0.4
(word) mul8u_error::mf
(word) mul8u_error::mf#0 0.21052631578947367
(word) mul8u_error::mn
(word) mul8u_error::mn#0 0.25
(word) mul8u_error::ms
(word) mul8u_error::ms#0 0.3076923076923077
(byte[512]) mula_sqr1_hi
(byte[512]) mula_sqr1_lo
(byte[512]) mula_sqr2_hi
(byte[512]) mula_sqr2_lo
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
(signed byte) mulf8s::a
(signed byte) mulf8s::a#0 33.666666666666664
(signed byte) mulf8s::b
(signed byte) mulf8s::b#0 25.75
(byte~) mulf8s::mulf8s_prepare1_$0
(signed byte) mulf8s::mulf8s_prepare1_a
(signed word) mulf8s::return
(signed word) mulf8s::return#0 34.33333333333333
(signed word) mulf8s::return#2 202.0
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
(byte~) mulf8s_prepared::$11 4.0
(byte~) mulf8s_prepared::$15 4.0
(byte~) mulf8s_prepared::$16 4.0
(byte~) mulf8s_prepared::$5 4.0
(signed byte) mulf8s_prepared::b
(signed byte) mulf8s_prepared::b#0 0.4
(word) mulf8s_prepared::m
(word) mulf8s_prepared::m#0 2.0
(word) mulf8s_prepared::m#1 4.0
(word) mulf8s_prepared::m#2 4.0
(word) mulf8s_prepared::m#4 1.3333333333333333
(word) mulf8s_prepared::m#5 2.5
(signed byte*) mulf8s_prepared::memA
(signed word) mulf8s_prepared::return
(signed word) mulf8s_prepared::return#2 4.0
(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
(byte) mulf8u::a
(byte) mulf8u::a#0 51.5
(byte) mulf8u::b
(byte) mulf8u::b#0 34.33333333333333
(word) mulf8u::return
(word) mulf8u::return#0 34.33333333333333
(word) mulf8u::return#2 202.0
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
(byte) mulf8u_prepare::a
(byte) mulf8u_prepare::a#0 4.0
(byte) mulf8u_prepare::a#2 6.0
(byte~) mulf8u_prepare::a#3 4.0
(byte*) mulf8u_prepare::memA
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
(byte) mulf8u_prepared::b
(byte) mulf8u_prepared::b#0 4.0
(byte) mulf8u_prepared::b#2 6.0
(byte~) mulf8u_prepared::b#3 4.0
(byte*) mulf8u_prepared::memB
(byte*) mulf8u_prepared::resL
(word) mulf8u_prepared::return
(word) mulf8u_prepared::return#0 1.5
(word) mulf8u_prepared::return#2 4.0
(word) mulf8u_prepared::return#3 4.0
(void()) mulf_init()
(byte~) mulf_init::$2 22.0
(byte~) mulf_init::$5 22.0
(byte~) mulf_init::$6 22.0
(byte) mulf_init::c
(byte) mulf_init::c#1 2.357142857142857
(byte) mulf_init::c#2 22.0
(byte) mulf_init::dir
(byte) mulf_init::dir#2 4.714285714285714
(byte) mulf_init::dir#3 7.333333333333333
(word) mulf_init::sqr
(word) mulf_init::sqr#1 7.333333333333333
(word) mulf_init::sqr#2 22.0
(word) mulf_init::sqr#3 9.166666666666666
(word) mulf_init::sqr#4 6.6000000000000005
(byte*) mulf_init::sqr1_hi
(byte*) mulf_init::sqr1_hi#1 5.5
(byte*) mulf_init::sqr1_hi#2 3.0
(byte*) mulf_init::sqr1_lo
(byte*) mulf_init::sqr1_lo#1 16.5
(byte*) mulf_init::sqr1_lo#2 2.5384615384615383
(byte*) mulf_init::sqr2_hi
(byte*) mulf_init::sqr2_hi#1 3.142857142857143
(byte*) mulf_init::sqr2_hi#2 11.0
(byte*) mulf_init::sqr2_lo
(byte*) mulf_init::sqr2_lo#1 16.5
(byte*) mulf_init::sqr2_lo#2 4.125
(byte) mulf_init::x_2
(byte) mulf_init::x_2#1 11.0
(byte) mulf_init::x_2#2 4.888888888888889
(byte) mulf_init::x_2#3 8.25
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 5.5
(byte) mulf_init::x_255#2 11.0
(void()) mulf_init_asm()
(byte*) mulf_init_asm::mem
(byte[512]) mulf_sqr1_hi
(byte[512]) mulf_sqr1_lo
(byte[512]) mulf_sqr2_hi
(byte[512]) mulf_sqr2_lo
(void()) mulf_tables_cmp()
(byte*) mulf_tables_cmp::asm_sqr
(byte*) mulf_tables_cmp::asm_sqr#1 7.333333333333333
(byte*) mulf_tables_cmp::asm_sqr#2 8.25
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#1 16.5
(byte*) mulf_tables_cmp::kc_sqr#2 3.666666666666667
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(signed byte) muls8s::a
(signed byte) muls8s::a#0 175.58333333333334
(signed byte) muls8s::b
(signed byte) muls8s::b#0 191.1818181818182
(signed byte) muls8s::i
(signed byte) muls8s::i#1 1501.5
(signed byte) muls8s::i#2 1001.0
(signed byte) muls8s::j
(signed byte) muls8s::j#1 1501.5
(signed byte) muls8s::j#2 1001.0
(signed word) muls8s::m
(signed word) muls8s::m#1 1001.0
(signed word) muls8s::m#2 1001.0
(signed word) muls8s::m#3 2002.0
(signed word) muls8s::m#5 2002.0
(signed word) muls8s::return
(signed word) muls8s::return#0 701.0
(signed word) muls8s::return#2 202.0
(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
(byte) muls8u::a
(byte) muls8u::a#0 157.71428571428572
(byte) muls8u::b
(byte) muls8u::b#0 183.66666666666669
(byte) muls8u::i
(byte) muls8u::i#1 1501.5
(byte) muls8u::i#2 1001.0
(word) muls8u::m
(word) muls8u::m#1 1001.0
(word) muls8u::m#3 2002.0
(word) muls8u::return
(word) muls8u::return#0 367.33333333333337
(word) muls8u::return#2 202.0
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 4.0
(byte~) print_byte::$2 4.0
(byte) print_byte::b
(byte) print_byte::b#1 4.0
(byte) print_byte::b#2 4.0
(byte) print_byte::b#3 4.0
(byte) print_byte::b#4 4.0
(byte) print_byte::b#5 3.5
(byte~) print_byte::b#9 4.0
(void()) print_char((byte) print_char::ch)
(byte) print_char::ch
(byte) print_char::ch#3 4.0
(byte) print_char::ch#4 4.0
(byte) print_char::ch#5 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 11.0
(byte*) print_char_cursor#132 1.536585365853659
(byte*) print_char_cursor#133 5.25
(byte*) print_char_cursor#134 3.0
(byte*) print_char_cursor#139 7.0
(byte*) print_char_cursor#140 3.9999999999999996
(byte*) print_char_cursor#152 28.0
(byte*) print_char_cursor#18 0.7555555555555553
(byte*~) print_char_cursor#192 4.0
(byte*~) print_char_cursor#193 4.0
(byte*~) print_char_cursor#225 4.0
(byte*) print_char_cursor#31 0.1951219512195122
(byte*) print_char_cursor#84 7.0
(void()) print_cls()
(byte*) print_cls::sc
(byte*) print_cls::sc#1 16.5
(byte*) print_cls::sc#2 16.5
(byte[]) print_hextab
(byte*) print_line_cursor
(byte*) print_line_cursor#1 0.6338028169014083
(byte*) print_line_cursor#10 0.09523809523809523
(byte*) print_line_cursor#23 24.0
(byte*) print_line_cursor#45 10.0
(void()) print_ln()
(void()) print_sbyte((signed byte) print_sbyte::b)
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0 4.0
(signed byte) print_sbyte::b#1 4.0
(signed byte) print_sbyte::b#2 4.0
(signed byte) print_sbyte::b#3 1.6666666666666665
(signed byte) print_sbyte::b#5 4.0
(byte*) print_screen
(void()) print_str((byte*) print_str::str)
(byte*) print_str::str
(byte*) print_str::str#0 22.0
(byte*) print_str::str#16 11.5
(byte*) print_str::str#18 2.0
(void()) print_sword((signed word) print_sword::w)
(signed word) print_sword::w
(signed word) print_sword::w#0 4.0
(signed word) print_sword::w#1 4.0
(signed word) print_sword::w#2 4.0
(signed word) print_sword::w#3 4.0
(signed word) print_sword::w#4 3.0
(signed word) print_sword::w#5 4.0
(void()) print_word((word) print_word::w)
(word) print_word::w
(word~) print_word::w#11 4.0
(word~) print_word::w#12 4.0
(word~) print_word::w#13 4.0
(word) print_word::w#3 4.0
(word) print_word::w#4 4.0
(word) print_word::w#5 4.0
(word) print_word::w#6 5.333333333333333

Initial phi equivalence classes
[ mul8s_compare::a#7 mul8s_compare::a#1 ]
[ mul8s_compare::b#10 mul8s_compare::b#1 ]
[ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
[ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ]
[ print_str::str#16 print_str::str#18 print_str::str#0 ]
[ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ]
[ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ]
[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
[ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ]
[ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
[ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ]
[ mul8u::b#2 mul8u::b#3 mul8u::b#1 ]
[ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
[ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
[ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ]
[ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ]
[ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ]
[ muls8s::j#2 muls8s::j#1 ]
[ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ]
[ muls8s::i#2 muls8s::i#1 ]
[ mul8u_compare::a#7 mul8u_compare::a#1 ]
[ mul8u_compare::b#10 mul8u_compare::b#1 ]
[ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
[ muls8u::i#2 muls8u::i#1 ]
[ muls8u::return#0 muls8u::m#3 muls8u::m#1 ]
[ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ]
[ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ]
[ mulf_init::c#2 mulf_init::c#1 ]
[ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ]
[ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ]
[ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
[ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
[ mulf_init::x_255#2 mulf_init::x_255#1 ]
[ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ]
[ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
[ mulf_init::dir#2 mulf_init::dir#3 ]
[ print_cls::sc#2 print_cls::sc#1 ]
Added variable muls8s::a#0 to zero page equivalence class [ muls8s::a#0 ]
Added variable muls8s::b#0 to zero page equivalence class [ muls8s::b#0 ]
Added variable muls8s::return#2 to zero page equivalence class [ muls8s::return#2 ]
Added variable mul8s_compare::ms#0 to zero page equivalence class [ mul8s_compare::ms#0 ]
Added variable mulf8s::a#0 to zero page equivalence class [ mulf8s::a#0 ]
Added variable mulf8s::b#0 to zero page equivalence class [ mulf8s::b#0 ]
Added variable mulf8s::return#2 to zero page equivalence class [ mulf8s::return#2 ]
Added variable mul8s_compare::mf#0 to zero page equivalence class [ mul8s_compare::mf#0 ]
Added variable mul8s::a#0 to zero page equivalence class [ mul8s::a#0 ]
Added variable mul8s::b#0 to zero page equivalence class [ mul8s::b#0 ]
Added variable mul8s::return#2 to zero page equivalence class [ mul8s::return#2 ]
Added variable mul8s_compare::mn#0 to zero page equivalence class [ mul8s_compare::mn#0 ]
Added variable mul8s_error::a#0 to zero page equivalence class [ mul8s_error::a#0 ]
Added variable mul8s_error::b#0 to zero page equivalence class [ mul8s_error::b#0 ]
Added variable mul8s_error::ms#0 to zero page equivalence class [ mul8s_error::ms#0 ]
Added variable mul8s_error::mn#0 to zero page equivalence class [ mul8s_error::mn#0 ]
Added variable mul8s_error::mf#0 to zero page equivalence class [ mul8s_error::mf#0 ]
Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ]
Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ]
Added variable mul8u::return#2 to zero page equivalence class [ mul8u::return#2 ]
Added variable mul8s::$6 to zero page equivalence class [ mul8s::$6 ]
Added variable mul8s::$16 to zero page equivalence class [ mul8s::$16 ]
Added variable mul8s::$12 to zero page equivalence class [ mul8s::$12 ]
Added variable mul8s::$17 to zero page equivalence class [ mul8s::$17 ]
Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ]
Added variable mulf8s_prepared::b#0 to zero page equivalence class [ mulf8s_prepared::b#0 ]
Added variable mulf8s_prepared::return#2 to zero page equivalence class [ mulf8s_prepared::return#2 ]
Added variable mulf8s::return#0 to zero page equivalence class [ mulf8s::return#0 ]
Added variable mulf8u_prepared::return#3 to zero page equivalence class [ mulf8u_prepared::return#3 ]
Added variable mulf8s_prepared::$5 to zero page equivalence class [ mulf8s_prepared::$5 ]
Added variable mulf8s_prepared::$15 to zero page equivalence class [ mulf8s_prepared::$15 ]
Added variable mulf8s_prepared::$11 to zero page equivalence class [ mulf8s_prepared::$11 ]
Added variable mulf8s_prepared::$16 to zero page equivalence class [ mulf8s_prepared::$16 ]
Added variable mulf8u_prepared::return#0 to zero page equivalence class [ mulf8u_prepared::return#0 ]
Added variable muls8u::a#0 to zero page equivalence class [ muls8u::a#0 ]
Added variable muls8u::b#0 to zero page equivalence class [ muls8u::b#0 ]
Added variable muls8u::return#2 to zero page equivalence class [ muls8u::return#2 ]
Added variable mul8u_compare::ms#0 to zero page equivalence class [ mul8u_compare::ms#0 ]
Added variable mulf8u::a#0 to zero page equivalence class [ mulf8u::a#0 ]
Added variable mulf8u::b#0 to zero page equivalence class [ mulf8u::b#0 ]
Added variable mulf8u::return#2 to zero page equivalence class [ mulf8u::return#2 ]
Added variable mul8u_compare::mf#0 to zero page equivalence class [ mul8u_compare::mf#0 ]
Added variable mul8u::return#3 to zero page equivalence class [ mul8u::return#3 ]
Added variable mul8u_compare::mn#0 to zero page equivalence class [ mul8u_compare::mn#0 ]
Added variable mul8u_error::a#0 to zero page equivalence class [ mul8u_error::a#0 ]
Added variable mul8u_error::b#0 to zero page equivalence class [ mul8u_error::b#0 ]
Added variable mul8u_error::ms#0 to zero page equivalence class [ mul8u_error::ms#0 ]
Added variable mul8u_error::mn#0 to zero page equivalence class [ mul8u_error::mn#0 ]
Added variable mul8u_error::mf#0 to zero page equivalence class [ mul8u_error::mf#0 ]
Added variable mulf8u_prepared::return#2 to zero page equivalence class [ mulf8u_prepared::return#2 ]
Added variable mulf8u::return#0 to zero page equivalence class [ mulf8u::return#0 ]
Added variable mulf_init::$2 to zero page equivalence class [ mulf_init::$2 ]
Added variable mulf_init::$5 to zero page equivalence class [ mulf_init::$5 ]
Added variable mulf_init::$6 to zero page equivalence class [ mulf_init::$6 ]
Complete equivalence classes
[ mul8s_compare::a#7 mul8s_compare::a#1 ]
[ mul8s_compare::b#10 mul8s_compare::b#1 ]
[ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
[ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ]
[ print_str::str#16 print_str::str#18 print_str::str#0 ]
[ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ]
[ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ]
[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
[ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ]
[ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
[ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ]
[ mul8u::b#2 mul8u::b#3 mul8u::b#1 ]
[ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
[ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
[ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ]
[ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ]
[ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ]
[ muls8s::j#2 muls8s::j#1 ]
[ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ]
[ muls8s::i#2 muls8s::i#1 ]
[ mul8u_compare::a#7 mul8u_compare::a#1 ]
[ mul8u_compare::b#10 mul8u_compare::b#1 ]
[ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
[ muls8u::i#2 muls8u::i#1 ]
[ muls8u::return#0 muls8u::m#3 muls8u::m#1 ]
[ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ]
[ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ]
[ mulf_init::c#2 mulf_init::c#1 ]
[ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ]
[ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ]
[ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
[ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
[ mulf_init::x_255#2 mulf_init::x_255#1 ]
[ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ]
[ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
[ mulf_init::dir#2 mulf_init::dir#3 ]
[ print_cls::sc#2 print_cls::sc#1 ]
[ muls8s::a#0 ]
[ muls8s::b#0 ]
[ muls8s::return#2 ]
[ mul8s_compare::ms#0 ]
[ mulf8s::a#0 ]
[ mulf8s::b#0 ]
[ mulf8s::return#2 ]
[ mul8s_compare::mf#0 ]
[ mul8s::a#0 ]
[ mul8s::b#0 ]
[ mul8s::return#2 ]
[ mul8s_compare::mn#0 ]
[ mul8s_error::a#0 ]
[ mul8s_error::b#0 ]
[ mul8s_error::ms#0 ]
[ mul8s_error::mn#0 ]
[ mul8s_error::mf#0 ]
[ print_byte::$0 ]
[ print_byte::$2 ]
[ mul8u::return#2 ]
[ mul8s::$6 ]
[ mul8s::$16 ]
[ mul8s::$12 ]
[ mul8s::$17 ]
[ mul8u::$1 ]
[ mulf8s_prepared::b#0 ]
[ mulf8s_prepared::return#2 ]
[ mulf8s::return#0 ]
[ mulf8u_prepared::return#3 ]
[ mulf8s_prepared::$5 ]
[ mulf8s_prepared::$15 ]
[ mulf8s_prepared::$11 ]
[ mulf8s_prepared::$16 ]
[ mulf8u_prepared::return#0 ]
[ muls8u::a#0 ]
[ muls8u::b#0 ]
[ muls8u::return#2 ]
[ mul8u_compare::ms#0 ]
[ mulf8u::a#0 ]
[ mulf8u::b#0 ]
[ mulf8u::return#2 ]
[ mul8u_compare::mf#0 ]
[ mul8u::return#3 ]
[ mul8u_compare::mn#0 ]
[ mul8u_error::a#0 ]
[ mul8u_error::b#0 ]
[ mul8u_error::ms#0 ]
[ mul8u_error::mn#0 ]
[ mul8u_error::mf#0 ]
[ mulf8u_prepared::return#2 ]
[ mulf8u::return#0 ]
[ mulf_init::$2 ]
[ mulf_init::$5 ]
[ mulf_init::$6 ]
Allocated zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ]
Allocated zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ]
Allocated zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
Allocated zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ]
Allocated zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ]
Allocated zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ]
Allocated zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ]
Allocated zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
Allocated zp ZP_BYTE:14 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
Allocated zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ]
Allocated zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
Allocated zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ]
Allocated zp ZP_BYTE:20 [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ]
Allocated zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
Allocated zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
Allocated zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
Allocated zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ]
Allocated zp ZP_BYTE:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ]
Allocated zp ZP_BYTE:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ]
Allocated zp ZP_BYTE:30 [ muls8s::j#2 muls8s::j#1 ]
Allocated zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ]
Allocated zp ZP_BYTE:33 [ muls8s::i#2 muls8s::i#1 ]
Allocated zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Allocated zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Allocated zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
Allocated zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ]
Allocated zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ]
Allocated zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ]
Allocated zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ]
Allocated zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ]
Allocated zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ]
Allocated zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ]
Allocated zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Allocated zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
Allocated zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Allocated zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ]
Allocated zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
Allocated zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ]
Allocated zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ]
Allocated zp ZP_BYTE:60 [ muls8s::a#0 ]
Allocated zp ZP_BYTE:61 [ muls8s::b#0 ]
Allocated zp ZP_WORD:62 [ muls8s::return#2 ]
Allocated zp ZP_WORD:64 [ mul8s_compare::ms#0 ]
Allocated zp ZP_BYTE:66 [ mulf8s::a#0 ]
Allocated zp ZP_BYTE:67 [ mulf8s::b#0 ]
Allocated zp ZP_WORD:68 [ mulf8s::return#2 ]
Allocated zp ZP_WORD:70 [ mul8s_compare::mf#0 ]
Allocated zp ZP_BYTE:72 [ mul8s::a#0 ]
Allocated zp ZP_BYTE:73 [ mul8s::b#0 ]
Allocated zp ZP_WORD:74 [ mul8s::return#2 ]
Allocated zp ZP_WORD:76 [ mul8s_compare::mn#0 ]
Allocated zp ZP_BYTE:78 [ mul8s_error::a#0 ]
Allocated zp ZP_BYTE:79 [ mul8s_error::b#0 ]
Allocated zp ZP_WORD:80 [ mul8s_error::ms#0 ]
Allocated zp ZP_WORD:82 [ mul8s_error::mn#0 ]
Allocated zp ZP_WORD:84 [ mul8s_error::mf#0 ]
Allocated zp ZP_BYTE:86 [ print_byte::$0 ]
Allocated zp ZP_BYTE:87 [ print_byte::$2 ]
Allocated zp ZP_WORD:88 [ mul8u::return#2 ]
Allocated zp ZP_BYTE:90 [ mul8s::$6 ]
Allocated zp ZP_BYTE:91 [ mul8s::$16 ]
Allocated zp ZP_BYTE:92 [ mul8s::$12 ]
Allocated zp ZP_BYTE:93 [ mul8s::$17 ]
Allocated zp ZP_BYTE:94 [ mul8u::$1 ]
Allocated zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ]
Allocated zp ZP_WORD:96 [ mulf8s_prepared::return#2 ]
Allocated zp ZP_WORD:98 [ mulf8s::return#0 ]
Allocated zp ZP_WORD:100 [ mulf8u_prepared::return#3 ]
Allocated zp ZP_BYTE:102 [ mulf8s_prepared::$5 ]
Allocated zp ZP_BYTE:103 [ mulf8s_prepared::$15 ]
Allocated zp ZP_BYTE:104 [ mulf8s_prepared::$11 ]
Allocated zp ZP_BYTE:105 [ mulf8s_prepared::$16 ]
Allocated zp ZP_WORD:106 [ mulf8u_prepared::return#0 ]
Allocated zp ZP_BYTE:108 [ muls8u::a#0 ]
Allocated zp ZP_BYTE:109 [ muls8u::b#0 ]
Allocated zp ZP_WORD:110 [ muls8u::return#2 ]
Allocated zp ZP_WORD:112 [ mul8u_compare::ms#0 ]
Allocated zp ZP_BYTE:114 [ mulf8u::a#0 ]
Allocated zp ZP_BYTE:115 [ mulf8u::b#0 ]
Allocated zp ZP_WORD:116 [ mulf8u::return#2 ]
Allocated zp ZP_WORD:118 [ mul8u_compare::mf#0 ]
Allocated zp ZP_WORD:120 [ mul8u::return#3 ]
Allocated zp ZP_WORD:122 [ mul8u_compare::mn#0 ]
Allocated zp ZP_BYTE:124 [ mul8u_error::a#0 ]
Allocated zp ZP_BYTE:125 [ mul8u_error::b#0 ]
Allocated zp ZP_WORD:126 [ mul8u_error::ms#0 ]
Allocated zp ZP_WORD:128 [ mul8u_error::mn#0 ]
Allocated zp ZP_WORD:130 [ mul8u_error::mf#0 ]
Allocated zp ZP_WORD:132 [ mulf8u_prepared::return#2 ]
Allocated zp ZP_WORD:134 [ mulf8u::return#0 ]
Allocated zp ZP_BYTE:136 [ mulf_init::$2 ]
Allocated zp ZP_BYTE:137 [ mulf_init::$5 ]
Allocated zp ZP_BYTE:138 [ mulf_init::$6 ]

INITIAL ASM
//SEG0 File Comments
// Test the fast multiplication library
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label BGCOL = $d021
  .label print_char_cursor = $f
  .label print_line_cursor = 5
//SEG3 @begin
bbegin:
//SEG4 [1] phi from @begin to @42 [phi:@begin->@42]
b42_from_bbegin:
  jmp b42
//SEG5 @42
b42:
//SEG6 [2] call main 
  jsr main
//SEG7 [3] phi from @42 to @end [phi:@42->@end]
bend_from_b42:
  jmp bend
//SEG8 @end
bend:
//SEG9 main
main: {
  //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
  //SEG11 [5] call print_cls 
  //SEG12 [336] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
  //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
  b1_from_main:
    jmp b1
  //SEG14 main::@1
  b1:
  //SEG15 [7] call mulf_init 
  //SEG16 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init]
  mulf_init_from_b1:
    jsr mulf_init
  //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
  //SEG18 main::@2
  b2:
  //SEG19 [9] call mulf_init_asm 
    jsr mulf_init_asm
  //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  b3_from_b2:
    jmp b3
  //SEG21 main::@3
  b3:
  //SEG22 [11] call mulf_tables_cmp 
  //SEG23 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp]
  mulf_tables_cmp_from_b3:
    jsr mulf_tables_cmp
  //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  b4_from_b3:
    jmp b4
  //SEG25 main::@4
  b4:
  //SEG26 [13] call mul8u_compare 
  //SEG27 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare]
  mul8u_compare_from_b4:
    jsr mul8u_compare
  //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
  b5_from_b4:
    jmp b5
  //SEG29 main::@5
  b5:
  //SEG30 [15] call mul8s_compare 
  //SEG31 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare]
  mul8s_compare_from_b5:
    jsr mul8s_compare
    jmp breturn
  //SEG32 main::@return
  breturn:
  //SEG33 [16] return 
    rts
}
//SEG34 mul8s_compare
// Perform all possible signed byte multiplications (slow and fast) and compare the results
mul8s_compare: {
    .label ms = $40
    .label mf = $46
    .label mn = $4c
    .label b = 3
    .label a = 2
    .label ok = 4
  //SEG35 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1]
  b1_from_mul8s_compare:
  //SEG36 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 
    lda #-$80
    sta a
    jmp b1
  //SEG37 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1]
  b1_from_b10:
  //SEG38 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy 
    jmp b1
  //SEG39 mul8s_compare::@1
  b1:
  //SEG40 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2]
  b2_from_b1:
  //SEG41 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 
    lda #-$80
    sta b
    jmp b2
  //SEG42 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2]
  b2_from_b5:
  //SEG43 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy 
    jmp b2
  //SEG44 mul8s_compare::@2
  b2:
  //SEG45 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 
    lda a
    sta muls8s.a
  //SEG46 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 
    lda b
    sta muls8s.b
  //SEG47 [22] call muls8s 
    jsr muls8s
  //SEG48 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 -- vwsz1=vwsz2 
    lda muls8s.return
    sta muls8s.return_2
    lda muls8s.return+1
    sta muls8s.return_2+1
    jmp b12
  //SEG49 mul8s_compare::@12
  b12:
  //SEG50 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 -- vwsz1=vwsz2 
    lda muls8s.return_2
    sta ms
    lda muls8s.return_2+1
    sta ms+1
  //SEG51 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 
    lda a
    sta mulf8s.a
  //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 
    lda b
    sta mulf8s.b
  //SEG53 [27] call mulf8s 
  //SEG54 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s]
  mulf8s_from_b12:
    jsr mulf8s
  //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 -- vwsz1=vwsz2 
    lda mulf8s.return
    sta mulf8s.return_2
    lda mulf8s.return+1
    sta mulf8s.return_2+1
    jmp b13
  //SEG56 mul8s_compare::@13
  b13:
  //SEG57 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 -- vwsz1=vwsz2 
    lda mulf8s.return_2
    sta mf
    lda mulf8s.return_2+1
    sta mf+1
  //SEG58 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 
    lda a
    sta mul8s.a
  //SEG59 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 
    lda b
    sta mul8s.b
  //SEG60 [32] call mul8s 
    jsr mul8s
  //SEG61 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 -- vwsz1=vwsz2 
    lda mul8s.m
    sta mul8s.return
    lda mul8s.m+1
    sta mul8s.return+1
    jmp b14
  //SEG62 mul8s_compare::@14
  b14:
  //SEG63 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 -- vwsz1=vwsz2 
    lda mul8s.return
    sta mn
    lda mul8s.return+1
    sta mn+1
  //SEG64 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 
    lda ms
    cmp mf
    bne !+
    lda ms+1
    cmp mf+1
    beq b3_from_b14
  !:
  //SEG65 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6]
  b6_from_b14:
    jmp b6
  //SEG66 mul8s_compare::@6
  b6:
  //SEG67 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3]
  b3_from_b6:
  //SEG68 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta ok
    jmp b3
  //SEG69 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3]
  b3_from_b14:
  //SEG70 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta ok
    jmp b3
  //SEG71 mul8s_compare::@3
  b3:
  //SEG72 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 
    lda ms
    cmp mn
    bne !+
    lda ms+1
    cmp mn+1
    beq b20_from_b3
  !:
  //SEG73 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4]
  b4_from_b3:
  //SEG74 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuz1=vbuc1 
    lda #0
    sta ok
    jmp b4
  //SEG75 mul8s_compare::@4
  b4:
  //SEG76 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuz1_neq_0_then_la1 
    lda ok
    cmp #0
    bne b5
    jmp b8
  //SEG77 mul8s_compare::@8
  b8:
  //SEG78 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG79 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsz1=vbsz2 
    lda a
    sta mul8s_error.a
  //SEG80 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 
    lda b
    sta mul8s_error.b
  //SEG81 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 -- vwsz1=vwsz2 
    lda ms
    sta mul8s_error.ms
    lda ms+1
    sta mul8s_error.ms+1
  //SEG82 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 -- vwsz1=vwsz2 
    lda mn
    sta mul8s_error.mn
    lda mn+1
    sta mul8s_error.mn+1
  //SEG83 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 -- vwsz1=vwsz2 
    lda mf
    sta mul8s_error.mf
    lda mf+1
    sta mul8s_error.mf+1
  //SEG84 [47] call mul8s_error 
    jsr mul8s_error
    jmp breturn
  //SEG85 mul8s_compare::@return
  breturn:
  //SEG86 [48] return 
    rts
  //SEG87 mul8s_compare::@5
  b5:
  //SEG88 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 
    inc b
  //SEG89 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 
    lda b
    cmp #-$80
    bne b2_from_b5
    jmp b10
  //SEG90 mul8s_compare::@10
  b10:
  //SEG91 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 
    inc a
  //SEG92 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 
    lda a
    cmp #-$80
    bne b1_from_b10
    jmp b11
  //SEG93 mul8s_compare::@11
  b11:
  //SEG94 [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG95 [54] call print_str 
  //SEG96 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str]
  print_str_from_b11:
  //SEG97 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy 
  //SEG98 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG99 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16]
  b16_from_b11:
    jmp b16
  //SEG100 mul8s_compare::@16
  b16:
  //SEG101 [56] call print_ln 
  //SEG102 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln]
  print_ln_from_b16:
  //SEG103 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy 
  //SEG104 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG105 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20]
  b20_from_b3:
    jmp b20
  //SEG106 mul8s_compare::@20
  b20:
  //SEG107 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4]
  b4_from_b20:
  //SEG108 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy 
    jmp b4
    str: .text "signed multiply results match!@"
}
//SEG109 print_ln
// Print a newline
print_ln: {
  //SEG110 [59] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
  b1_from_print_ln:
  b1_from_b1:
  //SEG111 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    jmp b1
  //SEG112 print_ln::@1
  b1:
  //SEG113 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 
    lda print_line_cursor
    clc
    adc #$28
    sta print_line_cursor
    bcc !+
    inc print_line_cursor+1
  !:
  //SEG114 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda print_line_cursor+1
    cmp print_char_cursor+1
    bcc b1_from_b1
    bne !+
    lda print_line_cursor
    cmp print_char_cursor
    bcc b1_from_b1
  !:
    jmp breturn
  //SEG115 print_ln::@return
  breturn:
  //SEG116 [62] return 
    rts
}
//SEG117 print_str
// Print a zero-terminated string
// print_str(byte* zeropage(7) str)
print_str: {
    .label str = 7
  //SEG118 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
  b1_from_print_str:
  b1_from_b2:
  //SEG119 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG120 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp b1
  //SEG121 print_str::@1
  b1:
  //SEG122 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
    jmp breturn
  //SEG123 print_str::@return
  breturn:
  //SEG124 [66] return 
    rts
  //SEG125 print_str::@2
  b2:
  //SEG126 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
  //SEG127 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
  //SEG128 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1_from_b2
}
//SEG129 mul8s_error
// mul8s_error(signed byte zeropage($4e) a, signed byte zeropage($4f) b, signed word zeropage($50) ms, signed word zeropage($52) mn, signed word zeropage($54) mf)
mul8s_error: {
    .label a = $4e
    .label b = $4f
    .label ms = $50
    .label mn = $52
    .label mf = $54
  //SEG130 [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG131 [71] call print_str 
  //SEG132 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str]
  print_str_from_mul8s_error:
  //SEG133 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy 
  //SEG134 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b1
  //SEG135 mul8s_error::@1
  b1:
  //SEG136 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0 -- vbsz1=vbsz2 
    lda a
    sta print_sbyte.b
  //SEG137 [73] call print_sbyte 
  //SEG138 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte]
  print_sbyte_from_b1:
  //SEG139 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy 
    jsr print_sbyte
  //SEG140 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2]
  b2_from_b1:
    jmp b2
  //SEG141 mul8s_error::@2
  b2:
  //SEG142 [75] call print_str 
  //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
  print_str_from_b2:
  //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy 
  //SEG145 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b3
  //SEG146 mul8s_error::@3
  b3:
  //SEG147 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsz1=vbsz2 
    lda b
    sta print_sbyte.b
  //SEG148 [77] call print_sbyte 
  //SEG149 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte]
  print_sbyte_from_b3:
  //SEG150 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy 
    jsr print_sbyte
  //SEG151 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4]
  b4_from_b3:
    jmp b4
  //SEG152 mul8s_error::@4
  b4:
  //SEG153 [79] call print_str 
  //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
  print_str_from_b4:
  //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy 
  //SEG156 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG157 mul8s_error::@5
  b5:
  //SEG158 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 -- vwsz1=vwsz2 
    lda ms
    sta print_sword.w
    lda ms+1
    sta print_sword.w+1
  //SEG159 [81] call print_sword 
  //SEG160 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword]
  print_sword_from_b5:
  //SEG161 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG162 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6]
  b6_from_b5:
    jmp b6
  //SEG163 mul8s_error::@6
  b6:
  //SEG164 [83] call print_str 
  //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
  print_str_from_b6:
  //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy 
  //SEG167 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str.str
    lda #>str3
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG168 mul8s_error::@7
  b7:
  //SEG169 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 
    lda mn
    sta print_sword.w
    lda mn+1
    sta print_sword.w+1
  //SEG170 [85] call print_sword 
  //SEG171 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword]
  print_sword_from_b7:
  //SEG172 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG173 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8]
  b8_from_b7:
    jmp b8
  //SEG174 mul8s_error::@8
  b8:
  //SEG175 [87] call print_str 
  //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
  print_str_from_b8:
  //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy 
  //SEG178 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str.str
    lda #>str4
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG179 mul8s_error::@9
  b9:
  //SEG180 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 
    lda mf
    sta print_sword.w
    lda mf+1
    sta print_sword.w+1
  //SEG181 [89] call print_sword 
  //SEG182 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword]
  print_sword_from_b9:
  //SEG183 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG184 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10]
  b10_from_b9:
    jmp b10
  //SEG185 mul8s_error::@10
  b10:
  //SEG186 [91] call print_ln 
  //SEG187 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln]
  print_ln_from_b10:
  //SEG188 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy 
  //SEG189 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG190 mul8s_error::@return
  breturn:
  //SEG191 [92] return 
    rts
    str: .text "signed multiply mismatch @"
}
//SEG192 print_sword
// Print a signed word as HEX
// print_sword(signed word zeropage(9) w)
print_sword: {
    .label w = 9
  //SEG193 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 
    lda w+1
    bpl b1_from_print_sword
  //SEG194 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2]
  b2_from_print_sword:
    jmp b2
  //SEG195 print_sword::@2
  b2:
  //SEG196 [96] call print_char 
  //SEG197 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char]
  print_char_from_b2:
  //SEG198 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy 
  //SEG199 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta print_char.ch
    jsr print_char
    jmp b4
  //SEG200 print_sword::@4
  b4:
  //SEG201 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 
    sec
    lda w
    eor #$ff
    adc #0
    sta w
    lda w+1
    eor #$ff
    adc #0
    sta w+1
  //SEG202 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1]
  b1_from_print_sword:
  b1_from_b4:
  //SEG203 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy 
  //SEG204 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy 
    jmp b1
  //SEG205 print_sword::@1
  b1:
  //SEG206 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 
    lda w
    sta print_word.w
    lda w+1
    sta print_word.w+1
  //SEG207 [100] call print_word 
  //SEG208 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word]
  print_word_from_b1:
  //SEG209 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy 
  //SEG210 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy 
    jsr print_word
    jmp breturn
  //SEG211 print_sword::@return
  breturn:
  //SEG212 [101] return 
    rts
}
//SEG213 print_word
// Print a word as HEX
// print_word(word zeropage($b) w)
print_word: {
    .label w = $b
  //SEG214 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuz1=_hi_vwuz2 
    lda w+1
    sta print_byte.b
  //SEG215 [104] call print_byte 
  //SEG216 [108] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
  //SEG217 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy 
  //SEG218 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp b1
  //SEG219 print_word::@1
  b1:
  //SEG220 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuz1=_lo_vwuz2 
    lda w
    sta print_byte.b
  //SEG221 [106] call print_byte 
  //SEG222 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from_b1:
  //SEG223 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy 
  //SEG224 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    jmp breturn
  //SEG225 print_word::@return
  breturn:
  //SEG226 [107] return 
    rts
}
//SEG227 print_byte
// Print a byte as HEX
// print_byte(byte zeropage($d) b)
print_byte: {
    .label _0 = $56
    .label _2 = $57
    .label b = $d
  //SEG228 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 
    lda b
    lsr
    lsr
    lsr
    lsr
    sta _0
  //SEG229 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy _0
    lda print_hextab,y
    sta print_char.ch
  //SEG230 [111] call print_char 
  //SEG231 [116] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
  //SEG232 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy 
  //SEG233 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    jmp b1
  //SEG234 print_byte::@1
  b1:
  //SEG235 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 
    lda #$f
    and b
    sta _2
  //SEG236 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy _2
    lda print_hextab,y
    sta print_char.ch
  //SEG237 [114] call print_char 
  //SEG238 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from_b1:
  //SEG239 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy 
  //SEG240 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    jmp breturn
  //SEG241 print_byte::@return
  breturn:
  //SEG242 [115] return 
    rts
}
//SEG243 print_char
// Print a single char
// print_char(byte zeropage($e) ch)
print_char: {
    .label ch = $e
  //SEG244 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 
    lda ch
    ldy #0
    sta (print_char_cursor),y
  //SEG245 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
    jmp breturn
  //SEG246 print_char::@return
  breturn:
  //SEG247 [119] return 
    rts
}
//SEG248 print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte zeropage($11) b)
print_sbyte: {
    .label b = $11
  //SEG249 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 
    lda b
    bmi b1_from_print_sbyte
  //SEG250 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
  b3_from_print_sbyte:
    jmp b3
  //SEG251 print_sbyte::@3
  b3:
  //SEG252 [123] call print_char 
  //SEG253 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
  print_char_from_b3:
  //SEG254 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy 
  //SEG255 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta print_char.ch
    jsr print_char
  //SEG256 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2]
  b2_from_b3:
  b2_from_b5:
  //SEG257 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy 
    jmp b2
  //SEG258 print_sbyte::@2
  b2:
  //SEG259 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5 -- vbuz1=vbuz2 
    lda b
    sta print_byte.b
  //SEG260 [126] call print_byte 
  //SEG261 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  print_byte_from_b2:
  //SEG262 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
  //SEG263 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
    jmp breturn
  //SEG264 print_sbyte::@return
  breturn:
  //SEG265 [127] return 
    rts
  //SEG266 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  b1_from_print_sbyte:
    jmp b1
  //SEG267 print_sbyte::@1
  b1:
  //SEG268 [129] call print_char 
  //SEG269 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  print_char_from_b1:
  //SEG270 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy 
  //SEG271 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta print_char.ch
    jsr print_char
    jmp b5
  //SEG272 print_sbyte::@5
  b5:
  //SEG273 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsz1=_neg_vbsz1 
    lda b
    eor #$ff
    clc
    adc #1
    sta b
    jmp b2_from_b5
}
//SEG274 mul8s
// Multiply of two signed bytes to a signed word
// Fixes offsets introduced by using unsigned multiplication
// mul8s(signed byte zeropage($48) a, signed byte zeropage($49) b)
mul8s: {
    .label _6 = $5a
    .label _12 = $5c
    .label _16 = $5b
    .label _17 = $5d
    .label m = $12
    .label a = $48
    .label b = $49
    .label return = $4a
  //SEG275 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2 
    lda b
    sta mul8u.b
  //SEG276 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2 
    lda a
    sta mul8u.a
  //SEG277 [133] call mul8u 
  //SEG278 [147] phi from mul8s to mul8u [phi:mul8s->mul8u]
  mul8u_from_mul8s:
  //SEG279 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy 
  //SEG280 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy 
    jsr mul8u
  //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 
    lda mul8u.res
    sta mul8u.return
    lda mul8u.res+1
    sta mul8u.return+1
    jmp b6
  //SEG282 mul8s::@6
  b6:
  //SEG283 [135] (word) mul8s::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 
    lda mul8u.return
    sta m
    lda mul8u.return+1
    sta m+1
  //SEG284 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 
    lda a
    cmp #0
    bpl b1_from_b6
    jmp b3
  //SEG285 mul8s::@3
  b3:
  //SEG286 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 
    lda m+1
    sta _6
  //SEG287 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 
    lda _6
    sec
    sbc b
    sta _16
  //SEG288 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 
    lda _16
    sta m+1
  //SEG289 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1]
  b1_from_b3:
  b1_from_b6:
  //SEG290 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy 
    jmp b1
  //SEG291 mul8s::@1
  b1:
  //SEG292 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsz1_ge_0_then_la1 
    lda b
    cmp #0
    bpl b2_from_b1
    jmp b4
  //SEG293 mul8s::@4
  b4:
  //SEG294 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 
    lda m+1
    sta _12
  //SEG295 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 
    lda _12
    sec
    sbc a
    sta _17
  //SEG296 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 
    lda _17
    sta m+1
  //SEG297 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG298 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy 
    jmp b2
  //SEG299 mul8s::@2
  b2:
    jmp breturn
  //SEG300 mul8s::@return
  breturn:
  //SEG301 [146] return 
    rts
}
//SEG302 mul8u
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte zeropage($15) a, byte zeropage($14) b)
mul8u: {
    .label _1 = $5e
    .label mb = $18
    .label a = $15
    .label res = $16
    .label return = $58
    .label b = $14
    .label return_3 = $78
  //SEG303 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 
    lda b
    sta mb
    lda #0
    sta mb+1
  //SEG304 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
  b1_from_mul8u:
  //SEG305 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy 
  //SEG306 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta res
    lda #>0
    sta res+1
  //SEG307 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy 
    jmp b1
  //SEG308 mul8u::@1
  b1:
  //SEG309 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 
    lda a
    cmp #0
    bne b2
    jmp breturn
  //SEG310 mul8u::@return
  breturn:
  //SEG311 [151] return 
    rts
  //SEG312 mul8u::@2
  b2:
  //SEG313 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 
    lda #1
    and a
    sta _1
  //SEG314 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 
    lda _1
    cmp #0
    beq b4_from_b2
    jmp b7
  //SEG315 mul8u::@7
  b7:
  //SEG316 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 
    lda res
    clc
    adc mb
    sta res
    lda res+1
    adc mb+1
    sta res+1
  //SEG317 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4]
  b4_from_b2:
  b4_from_b7:
  //SEG318 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy 
    jmp b4
  //SEG319 mul8u::@4
  b4:
  //SEG320 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 
    lsr a
  //SEG321 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl mb
    rol mb+1
  //SEG322 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1]
  b1_from_b4:
  //SEG323 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy 
  //SEG324 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy 
  //SEG325 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy 
    jmp b1
}
//SEG326 mulf8s
// Fast multiply two signed bytes to a word result
// mulf8s(signed byte zeropage($42) a, signed byte zeropage($43) b)
mulf8s: {
    .label return = $62
    .label a = $42
    .label b = $43
    .label return_2 = $44
    jmp mulf8s_prepare1
  //SEG327 mulf8s::mulf8s_prepare1
  mulf8s_prepare1:
  //SEG328 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 
    lda a
    sta mulf8u_prepare.a
  //SEG329 [160] call mulf8u_prepare 
  //SEG330 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare]
  mulf8u_prepare_from_mulf8s_prepare1:
  //SEG331 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    jmp b2
  //SEG332 mulf8s::@2
  b2:
  //SEG333 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 
    lda b
    sta mulf8s_prepared.b
  //SEG334 [162] call mulf8s_prepared 
    jsr mulf8s_prepared
  //SEG335 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 
    lda mulf8s_prepared.m
    sta mulf8s_prepared.return
    lda mulf8s_prepared.m+1
    sta mulf8s_prepared.return+1
    jmp b4
  //SEG336 mulf8s::@4
  b4:
  //SEG337 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 
    lda mulf8s_prepared.return
    sta return
    lda mulf8s_prepared.return+1
    sta return+1
    jmp breturn
  //SEG338 mulf8s::@return
  breturn:
  //SEG339 [165] return 
    rts
}
//SEG340 mulf8s_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8s_prepare(byte a)
// mulf8s_prepared(signed byte zeropage($5f) b)
mulf8s_prepared: {
    .label memA = $fd
    .label _5 = $66
    .label _11 = $68
    .label _15 = $67
    .label _16 = $69
    .label m = $1a
    .label b = $5f
    .label return = $60
  //SEG341 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 
    lda b
    sta mulf8u_prepared.b
  //SEG342 [167] call mulf8u_prepared 
  //SEG343 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared]
  mulf8u_prepared_from_mulf8s_prepared:
  //SEG344 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
  //SEG345 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 
    lda mulf8u_prepared.return
    sta mulf8u_prepared.return_3
    lda mulf8u_prepared.return+1
    sta mulf8u_prepared.return_3+1
    jmp b6
  //SEG346 mulf8s_prepared::@6
  b6:
  //SEG347 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 
    lda mulf8u_prepared.return_3
    sta m
    lda mulf8u_prepared.return_3+1
    sta m+1
  //SEG348 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 
    lda memA
    cmp #0
    bpl b1_from_b6
    jmp b3
  //SEG349 mulf8s_prepared::@3
  b3:
  //SEG350 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 
    lda m+1
    sta _5
  //SEG351 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 
    lda _5
    sec
    sbc b
    sta _15
  //SEG352 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 
    lda _15
    sta m+1
  //SEG353 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1]
  b1_from_b3:
  b1_from_b6:
  //SEG354 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy 
    jmp b1
  //SEG355 mulf8s_prepared::@1
  b1:
  //SEG356 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 
    lda b
    cmp #0
    bpl b2_from_b1
    jmp b4
  //SEG357 mulf8s_prepared::@4
  b4:
  //SEG358 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 
    lda m+1
    sta _11
  //SEG359 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 
    lda _11
    sec
    sbc memA
    sta _16
  //SEG360 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 
    lda _16
    sta m+1
  //SEG361 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG362 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy 
    jmp b2
  //SEG363 mulf8s_prepared::@2
  b2:
    jmp breturn
  //SEG364 mulf8s_prepared::@return
  breturn:
  //SEG365 [180] return 
    rts
}
//SEG366 mulf8u_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8u_prepare(byte a)
// mulf8u_prepared(byte zeropage($1c) b)
mulf8u_prepared: {
    .label resL = $fe
    .label memB = $ff
    .label return = $6a
    .label b = $1c
    .label return_2 = $84
    .label return_3 = $64
  //SEG367 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 
    lda b
    sta memB
  //SEG368 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  }
    ldx memB
    sec
  sm1:
    lda mulf_sqr1_lo,x
  sm2:
    sbc mulf_sqr2_lo,x
    sta resL
  sm3:
    lda mulf_sqr1_hi,x
  sm4:
    sbc mulf_sqr2_hi,x
    sta memB
  //SEG369 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda resL
    sta return
    lda memB
    sta return+1
    jmp breturn
  //SEG370 mulf8u_prepared::@return
  breturn:
  //SEG371 [185] return 
    rts
}
//SEG372 mulf8u_prepare
// Prepare for fast multiply with an unsigned byte to a word result
// mulf8u_prepare(byte zeropage($1d) a)
mulf8u_prepare: {
    .label memA = $fd
    .label a = $1d
  //SEG373 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 
    lda a
    sta memA
  //SEG374 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  }
    lda memA
    sta mulf8u_prepared.sm1+1
    sta mulf8u_prepared.sm3+1
    eor #$ff
    sta mulf8u_prepared.sm2+1
    sta mulf8u_prepared.sm4+1
    jmp breturn
  //SEG375 mulf8u_prepare::@return
  breturn:
  //SEG376 [189] return 
    rts
}
//SEG377 muls8s
// Slow multiplication of signed bytes
// Perform a signed multiplication by repeated addition/subtraction
// muls8s(signed byte zeropage($3c) a, signed byte zeropage($3d) b)
muls8s: {
    .label m = $1f
    .label j = $1e
    .label return = $1f
    .label i = $21
    .label a = $3c
    .label b = $3d
    .label return_2 = $3e
  //SEG378 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 
    lda a
    bmi b5_from_muls8s
    jmp b6
  //SEG379 muls8s::@6
  b6:
  //SEG380 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 
    lda a
    cmp #1
    bmi b4_from_b6
  //SEG381 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3]
  b3_from_b6:
  //SEG382 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsz1=vbuc1 
    lda #0
    sta j
  //SEG383 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 
    lda #<0
    sta m
    lda #>0
    sta m+1
    jmp b3
  //SEG384 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3]
  b3_from_b3:
  //SEG385 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy 
  //SEG386 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy 
    jmp b3
  //SEG387 muls8s::@3
  b3:
  //SEG388 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 
    lda b
    sta $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta $ff
    clc
    lda m
    adc $fe
    sta m
    lda m+1
    adc $ff
    sta m+1
  //SEG389 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 
    inc j
  //SEG390 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsz1_neq_vbsz2_then_la1 
    lda j
    cmp a
    bne b3_from_b3
  //SEG391 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4]
  b4_from_b3:
  b4_from_b5:
  //SEG392 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy 
    jmp b4
  //SEG393 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4]
  b4_from_b6:
  //SEG394 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 
    lda #<0
    sta return
    lda #>0
    sta return+1
    jmp b4
  //SEG395 muls8s::@4
  b4:
    jmp breturn
  //SEG396 muls8s::@return
  breturn:
  //SEG397 [197] return 
    rts
  //SEG398 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5]
  b5_from_muls8s:
  //SEG399 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsz1=vbuc1 
    lda #0
    sta i
  //SEG400 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 
    lda #<0
    sta m
    lda #>0
    sta m+1
    jmp b5
  //SEG401 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5]
  b5_from_b5:
  //SEG402 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy 
  //SEG403 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy 
    jmp b5
  //SEG404 muls8s::@5
  b5:
  //SEG405 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 
    lda b
    sta $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta $ff
    sec
    lda m
    sbc $fe
    sta m
    lda m+1
    sbc $ff
    sta m+1
  //SEG406 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 
    dec i
  //SEG407 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsz1_neq_vbsz2_then_la1 
    lda i
    cmp a
    bne b5_from_b5
    jmp b4_from_b5
}
//SEG408 mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = $70
    .label mf = $76
    .label mn = $7a
    .label b = $23
    .label a = $22
    .label ok = $24
  //SEG409 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
  b1_from_mul8u_compare:
  //SEG410 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta a
    jmp b1
  //SEG411 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1]
  b1_from_b10:
  //SEG412 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy 
    jmp b1
  //SEG413 mul8u_compare::@1
  b1:
  //SEG414 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
  b2_from_b1:
  //SEG415 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta b
    jmp b2
  //SEG416 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
  b2_from_b5:
  //SEG417 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy 
    jmp b2
  //SEG418 mul8u_compare::@2
  b2:
  //SEG419 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda a
    sta muls8u.a
  //SEG420 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda b
    sta muls8u.b
  //SEG421 [207] call muls8u 
    jsr muls8u
  //SEG422 [208] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 
    lda muls8u.return
    sta muls8u.return_2
    lda muls8u.return+1
    sta muls8u.return_2+1
    jmp b12
  //SEG423 mul8u_compare::@12
  b12:
  //SEG424 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 
    lda muls8u.return_2
    sta ms
    lda muls8u.return_2+1
    sta ms+1
  //SEG425 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda a
    sta mulf8u.a
  //SEG426 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda b
    sta mulf8u.b
  //SEG427 [212] call mulf8u 
    jsr mulf8u
  //SEG428 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 
    lda mulf8u.return
    sta mulf8u.return_2
    lda mulf8u.return+1
    sta mulf8u.return_2+1
    jmp b13
  //SEG429 mul8u_compare::@13
  b13:
  //SEG430 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 
    lda mulf8u.return_2
    sta mf
    lda mulf8u.return_2+1
    sta mf+1
  //SEG431 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda a
    sta mul8u.a
  //SEG432 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda b
    sta mul8u.b
  //SEG433 [217] call mul8u 
  //SEG434 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u]
  mul8u_from_b13:
  //SEG435 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy 
  //SEG436 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy 
    jsr mul8u
  //SEG437 [218] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 
    lda mul8u.res
    sta mul8u.return_3
    lda mul8u.res+1
    sta mul8u.return_3+1
    jmp b14
  //SEG438 mul8u_compare::@14
  b14:
  //SEG439 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 
    lda mul8u.return_3
    sta mn
    lda mul8u.return_3+1
    sta mn+1
  //SEG440 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 
    lda ms
    cmp mf
    bne !+
    lda ms+1
    cmp mf+1
    beq b3_from_b14
  !:
  //SEG441 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6]
  b6_from_b14:
    jmp b6
  //SEG442 mul8u_compare::@6
  b6:
  //SEG443 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
  b3_from_b6:
  //SEG444 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta ok
    jmp b3
  //SEG445 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3]
  b3_from_b14:
  //SEG446 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta ok
    jmp b3
  //SEG447 mul8u_compare::@3
  b3:
  //SEG448 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 
    lda ms
    cmp mn
    bne !+
    lda ms+1
    cmp mn+1
    beq b20_from_b3
  !:
  //SEG449 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
  b4_from_b3:
  //SEG450 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuz1=vbuc1 
    lda #0
    sta ok
    jmp b4
  //SEG451 mul8u_compare::@4
  b4:
  //SEG452 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuz1_neq_0_then_la1 
    lda ok
    cmp #0
    bne b5
    jmp b8
  //SEG453 mul8u_compare::@8
  b8:
  //SEG454 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG455 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda a
    sta mul8u_error.a
  //SEG456 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda b
    sta mul8u_error.b
  //SEG457 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 
    lda ms
    sta mul8u_error.ms
    lda ms+1
    sta mul8u_error.ms+1
  //SEG458 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 
    lda mn
    sta mul8u_error.mn
    lda mn+1
    sta mul8u_error.mn+1
  //SEG459 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 
    lda mf
    sta mul8u_error.mf
    lda mf+1
    sta mul8u_error.mf+1
  //SEG460 [232] call mul8u_error 
  //SEG461 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error]
  mul8u_error_from_b8:
    jsr mul8u_error
    jmp breturn
  //SEG462 mul8u_compare::@return
  breturn:
  //SEG463 [233] return 
    rts
  //SEG464 mul8u_compare::@5
  b5:
  //SEG465 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc b
  //SEG466 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 
    lda b
    cmp #0
    bne b2_from_b5
    jmp b10
  //SEG467 mul8u_compare::@10
  b10:
  //SEG468 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc a
  //SEG469 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 
    lda a
    cmp #0
    bne b1_from_b10
  //SEG470 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11]
  b11_from_b10:
    jmp b11
  //SEG471 mul8u_compare::@11
  b11:
  //SEG472 [239] call print_str 
  //SEG473 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str]
  print_str_from_b11:
  //SEG474 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy 
  //SEG475 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG476 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16]
  b16_from_b11:
    jmp b16
  //SEG477 mul8u_compare::@16
  b16:
  //SEG478 [241] call print_ln 
  //SEG479 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln]
  print_ln_from_b16:
  //SEG480 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy 
  //SEG481 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG482 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20]
  b20_from_b3:
    jmp b20
  //SEG483 mul8u_compare::@20
  b20:
  //SEG484 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4]
  b4_from_b20:
  //SEG485 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy 
    jmp b4
    str: .text "multiply results match!@"
}
//SEG486 mul8u_error
// mul8u_error(byte zeropage($7c) a, byte zeropage($7d) b, word zeropage($7e) ms, word zeropage($80) mn, word zeropage($82) mf)
mul8u_error: {
    .label a = $7c
    .label b = $7d
    .label ms = $7e
    .label mn = $80
    .label mf = $82
  //SEG487 [244] call print_str 
  //SEG488 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
  print_str_from_mul8u_error:
  //SEG489 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy 
  //SEG490 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b1
  //SEG491 mul8u_error::@1
  b1:
  //SEG492 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 
    lda a
    sta print_byte.b
  //SEG493 [246] call print_byte 
  //SEG494 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
  print_byte_from_b1:
  //SEG495 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
  //SEG496 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG497 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2]
  b2_from_b1:
    jmp b2
  //SEG498 mul8u_error::@2
  b2:
  //SEG499 [248] call print_str 
  //SEG500 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
  print_str_from_b2:
  //SEG501 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy 
  //SEG502 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b3
  //SEG503 mul8u_error::@3
  b3:
  //SEG504 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 
    lda b
    sta print_byte.b
  //SEG505 [250] call print_byte 
  //SEG506 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
  print_byte_from_b3:
  //SEG507 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
  //SEG508 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG509 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4]
  b4_from_b3:
    jmp b4
  //SEG510 mul8u_error::@4
  b4:
  //SEG511 [252] call print_str 
  //SEG512 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
  print_str_from_b4:
  //SEG513 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy 
  //SEG514 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG515 mul8u_error::@5
  b5:
  //SEG516 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 
    lda ms
    sta print_word.w
    lda ms+1
    sta print_word.w+1
  //SEG517 [254] call print_word 
  //SEG518 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
  print_word_from_b5:
  //SEG519 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy 
  //SEG520 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy 
    jsr print_word
  //SEG521 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6]
  b6_from_b5:
    jmp b6
  //SEG522 mul8u_error::@6
  b6:
  //SEG523 [256] call print_str 
  //SEG524 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
  print_str_from_b6:
  //SEG525 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy 
  //SEG526 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str.str
    lda #>str3
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG527 mul8u_error::@7
  b7:
  //SEG528 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 
    lda mn
    sta print_word.w
    lda mn+1
    sta print_word.w+1
  //SEG529 [258] call print_word 
  //SEG530 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
  print_word_from_b7:
  //SEG531 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy 
  //SEG532 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy 
    jsr print_word
  //SEG533 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8]
  b8_from_b7:
    jmp b8
  //SEG534 mul8u_error::@8
  b8:
  //SEG535 [260] call print_str 
  //SEG536 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
  print_str_from_b8:
  //SEG537 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy 
  //SEG538 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str.str
    lda #>str4
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG539 mul8u_error::@9
  b9:
  //SEG540 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 
    lda mf
    sta print_word.w
    lda mf+1
    sta print_word.w+1
  //SEG541 [262] call print_word 
  //SEG542 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
  print_word_from_b9:
  //SEG543 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy 
  //SEG544 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy 
    jsr print_word
  //SEG545 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10]
  b10_from_b9:
    jmp b10
  //SEG546 mul8u_error::@10
  b10:
  //SEG547 [264] call print_ln 
  //SEG548 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
  print_ln_from_b10:
  //SEG549 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
  //SEG550 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG551 mul8u_error::@return
  breturn:
  //SEG552 [265] return 
    rts
    str: .text "multiply mismatch @"
}
//SEG553 mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte zeropage($72) a, byte zeropage($73) b)
mulf8u: {
    .label return = $86
    .label a = $72
    .label b = $73
    .label return_2 = $74
  //SEG554 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 
    lda a
    sta mulf8u_prepare.a
  //SEG555 [267] call mulf8u_prepare 
  //SEG556 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare]
  mulf8u_prepare_from_mulf8u:
  //SEG557 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    jmp b2
  //SEG558 mulf8u::@2
  b2:
  //SEG559 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 
    lda b
    sta mulf8u_prepared.b
  //SEG560 [269] call mulf8u_prepared 
  //SEG561 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared]
  mulf8u_prepared_from_b2:
  //SEG562 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
  //SEG563 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 
    lda mulf8u_prepared.return
    sta mulf8u_prepared.return_2
    lda mulf8u_prepared.return+1
    sta mulf8u_prepared.return_2+1
    jmp b3
  //SEG564 mulf8u::@3
  b3:
  //SEG565 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 
    lda mulf8u_prepared.return_2
    sta return
    lda mulf8u_prepared.return_2+1
    sta return+1
    jmp breturn
  //SEG566 mulf8u::@return
  breturn:
  //SEG567 [272] return 
    rts
}
//SEG568 muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zeropage($6c) a, byte zeropage($6d) b)
muls8u: {
    .label return = $26
    .label m = $26
    .label i = $25
    .label a = $6c
    .label b = $6d
    .label return_2 = $6e
  //SEG569 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda a
    cmp #0
    beq b1_from_muls8u
  //SEG570 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
  b2_from_muls8u:
  //SEG571 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG572 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 
    lda #<0
    sta m
    lda #>0
    sta m+1
    jmp b2
  //SEG573 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2]
  b2_from_b2:
  //SEG574 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy 
  //SEG575 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy 
    jmp b2
  //SEG576 muls8u::@2
  b2:
  //SEG577 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 
    lda b
    clc
    adc m
    sta m
    lda #0
    adc m+1
    sta m+1
  //SEG578 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG579 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuz1_neq_vbuz2_then_la1 
    lda i
    cmp a
    bne b2_from_b2
  //SEG580 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
  b1_from_b2:
  //SEG581 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    jmp b1
  //SEG582 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  b1_from_muls8u:
  //SEG583 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 
    lda #<0
    sta return
    lda #>0
    sta return+1
    jmp b1
  //SEG584 muls8u::@1
  b1:
    jmp breturn
  //SEG585 muls8u::@return
  breturn:
  //SEG586 [279] return 
    rts
}
//SEG587 mulf_tables_cmp
// Compare the ASM-based mul tables with the KC-based mul tables
// Red screen on failure - green on success
mulf_tables_cmp: {
    .label asm_sqr = $2a
    .label kc_sqr = $28
  //SEG588 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
  b1_from_mulf_tables_cmp:
  //SEG589 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 
    lda #<mula_sqr1_lo
    sta asm_sqr
    lda #>mula_sqr1_lo
    sta asm_sqr+1
  //SEG590 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo
    sta kc_sqr
    lda #>mulf_sqr1_lo
    sta kc_sqr+1
    jmp b1
  //SEG591 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1]
  b1_from_b2:
  //SEG592 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy 
  //SEG593 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy 
    jmp b1
  //SEG594 mulf_tables_cmp::@1
  b1:
  //SEG595 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 
    ldy #0
    lda (kc_sqr),y
    ldy #0
    cmp (asm_sqr),y
    beq b2
    jmp b3
  //SEG596 mulf_tables_cmp::@3
  b3:
  //SEG597 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG598 [284] call print_str 
  //SEG599 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
  print_str_from_b3:
  //SEG600 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG601 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b6
  //SEG602 mulf_tables_cmp::@6
  b6:
  //SEG603 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 
    lda asm_sqr
    sta print_word.w
    lda asm_sqr+1
    sta print_word.w+1
  //SEG604 [286] call print_word 
  //SEG605 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word]
  print_word_from_b6:
  //SEG606 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy 
  //SEG607 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy 
    jsr print_word
  //SEG608 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7]
  b7_from_b6:
    jmp b7
  //SEG609 mulf_tables_cmp::@7
  b7:
  //SEG610 [288] call print_str 
  //SEG611 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str]
  print_str_from_b7:
  //SEG612 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy 
  //SEG613 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b8
  //SEG614 mulf_tables_cmp::@8
  b8:
  //SEG615 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 
    lda kc_sqr
    sta print_word.w
    lda kc_sqr+1
    sta print_word.w+1
  //SEG616 [290] call print_word 
  //SEG617 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
  print_word_from_b8:
  //SEG618 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
  //SEG619 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy 
    jsr print_word
  //SEG620 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return]
  breturn_from_b8:
  //SEG621 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
  //SEG622 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
  //SEG623 mulf_tables_cmp::@return
  breturn:
  //SEG624 [292] return 
    rts
  //SEG625 mulf_tables_cmp::@2
  b2:
  //SEG626 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 
    inc asm_sqr
    bne !+
    inc asm_sqr+1
  !:
  //SEG627 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 
    inc kc_sqr
    bne !+
    inc kc_sqr+1
  !:
  //SEG628 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 
    lda kc_sqr+1
    cmp #>mulf_sqr1_lo+$200*4
    bcc b1_from_b2
    bne !+
    lda kc_sqr
    cmp #<mulf_sqr1_lo+$200*4
    bcc b1_from_b2
  !:
  //SEG629 [296] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5]
  b5_from_b2:
    jmp b5
  //SEG630 mulf_tables_cmp::@5
  b5:
  //SEG631 [297] call print_str 
  //SEG632 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
  print_str_from_b5:
  //SEG633 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG634 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG635 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10]
  b10_from_b5:
    jmp b10
  //SEG636 mulf_tables_cmp::@10
  b10:
  //SEG637 [299] call print_ln 
  //SEG638 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln]
  print_ln_from_b10:
  //SEG639 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy 
  //SEG640 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
    jsr print_ln
  //SEG641 [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG642 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
  breturn_from_b10:
  //SEG643 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy 
  //SEG644 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
    str: .text "multiply table mismatch at @"
    str1: .text " / @"
    str2: .text "multiply tables match!@"
}
//SEG645 mulf_init_asm
// Initialize the multiplication tables using ASM code from
// http://codebase64.org/doku.php?id=base:seriously_fast_multiplication
mulf_init_asm: {
    // Ensure the ASM tables are not detected as unused by the optimizer
    .label mem = $ff
  //SEG646 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!-  }
    ldx #0
    txa
    .byte $c9
  lb1:
    tya
    adc #0
  ml1:
    sta mula_sqr1_hi,x
    tay
    cmp #$40
    txa
    ror
  ml9:
    adc #0
    sta ml9+1
    inx
  ml0:
    sta mula_sqr1_lo,x
    bne lb1
    inc ml0+2
    inc ml1+2
    clc
    iny
    bne lb1
    ldx #0
    ldy #$ff
  !:
    lda mula_sqr1_hi+1,x
    sta mula_sqr2_hi+$100,x
    lda mula_sqr1_hi,x
    sta mula_sqr2_hi,y
    lda mula_sqr1_lo+1,x
    sta mula_sqr2_lo+$100,x
    lda mula_sqr1_lo,x
    sta mula_sqr2_lo,y
    dey
    inx
    bne !-
  //SEG647 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
  //SEG648 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
  //SEG649 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
  //SEG650 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
    jmp breturn
  //SEG651 mulf_init_asm::@return
  breturn:
  //SEG652 [306] return 
    rts
}
//SEG653 mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    .label _2 = $88
    .label _5 = $89
    .label _6 = $8a
    .label c = $2c
    .label sqr1_hi = $2f
    .label sqr = $32
    .label sqr1_lo = $2d
    .label x_2 = $31
    .label sqr2_hi = $37
    .label x_255 = $34
    .label sqr2_lo = $35
    .label dir = $39
  //SEG654 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  b1_from_mulf_init:
  //SEG655 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta x_2
  //SEG656 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_hi+1
    sta sqr1_hi
    lda #>mulf_sqr1_hi+1
    sta sqr1_hi+1
  //SEG657 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo+1
    sta sqr1_lo
    lda #>mulf_sqr1_lo+1
    sta sqr1_lo+1
  //SEG658 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 
    lda #<0
    sta sqr
    lda #>0
    sta sqr+1
  //SEG659 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 
    lda #0
    sta c
    jmp b1
  //SEG660 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1]
  b1_from_b2:
  //SEG661 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy 
  //SEG662 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy 
  //SEG663 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy 
  //SEG664 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy 
  //SEG665 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy 
    jmp b1
  //SEG666 mulf_init::@1
  b1:
  //SEG667 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc c
  //SEG668 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 
    lda #1
    and c
    sta _2
  //SEG669 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 
    lda _2
    cmp #0
    bne b2_from_b1
    jmp b5
  //SEG670 mulf_init::@5
  b5:
  //SEG671 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 
    inc x_2
  //SEG672 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc sqr
    bne !+
    inc sqr+1
  !:
  //SEG673 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2]
  b2_from_b1:
  b2_from_b5:
  //SEG674 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy 
  //SEG675 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy 
    jmp b2
  //SEG676 mulf_init::@2
  b2:
  //SEG677 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 
    lda sqr
    sta _5
  //SEG678 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 
    lda _5
    ldy #0
    sta (sqr1_lo),y
  //SEG679 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 
    lda sqr+1
    sta _6
  //SEG680 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 
    lda _6
    ldy #0
    sta (sqr1_hi),y
  //SEG681 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 
    inc sqr1_hi
    bne !+
    inc sqr1_hi+1
  !:
  //SEG682 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda x_2
    clc
    adc sqr
    sta sqr
    lda #0
    adc sqr+1
    sta sqr+1
  //SEG683 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 
    inc sqr1_lo
    bne !+
    inc sqr1_lo+1
  !:
  //SEG684 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sqr1_lo+1
    cmp #>mulf_sqr1_lo+$200
    bne b1_from_b2
    lda sqr1_lo
    cmp #<mulf_sqr1_lo+$200
    bne b1_from_b2
  //SEG685 [323] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3]
  b3_from_b2:
  //SEG686 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 
    lda #$ff
    sta dir
  //SEG687 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_hi
    sta sqr2_hi
    lda #>mulf_sqr2_hi
    sta sqr2_hi+1
  //SEG688 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_lo
    sta sqr2_lo
    lda #>mulf_sqr2_lo
    sta sqr2_lo+1
  //SEG689 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 
    lda #-1
    sta x_255
    jmp b3
  //SEG690 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3]
  b3_from_b4:
  //SEG691 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy 
  //SEG692 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy 
  //SEG693 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy 
  //SEG694 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy 
    jmp b3
  //SEG695 mulf_init::@3
  b3:
  //SEG696 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 
    ldy x_255
    lda mulf_sqr1_lo,y
    ldy #0
    sta (sqr2_lo),y
  //SEG697 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 
    ldy x_255
    lda mulf_sqr1_hi,y
    ldy #0
    sta (sqr2_hi),y
  //SEG698 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 
    inc sqr2_hi
    bne !+
    inc sqr2_hi+1
  !:
  //SEG699 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 
    lda x_255
    clc
    adc dir
    sta x_255
  //SEG700 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 
    lda x_255
    cmp #0
    bne b12_from_b3
  //SEG701 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4]
  b4_from_b3:
  //SEG702 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 
    lda #1
    sta dir
    jmp b4
  //SEG703 mulf_init::@4
  b4:
  //SEG704 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 
    inc sqr2_lo
    bne !+
    inc sqr2_lo+1
  !:
  //SEG705 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 
    lda sqr2_lo+1
    cmp #>mulf_sqr2_lo+$1ff
    bne b3_from_b4
    lda sqr2_lo
    cmp #<mulf_sqr2_lo+$1ff
    bne b3_from_b4
    jmp b8
  //SEG706 mulf_init::@8
  b8:
  //SEG707 [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) -- _deref_pbuc1=_deref_pbuc2 
    // Set the very last value g(511) = f(256)
    lda mulf_sqr1_lo+$100
    sta mulf_sqr2_lo+$1ff
  //SEG708 [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
    jmp breturn
  //SEG709 mulf_init::@return
  breturn:
  //SEG710 [334] return 
    rts
  //SEG711 [335] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12]
  b12_from_b3:
    jmp b12
  //SEG712 mulf_init::@12
  b12:
  //SEG713 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4]
  b4_from_b12:
  //SEG714 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy 
    jmp b4
}
//SEG715 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = $3a
  //SEG716 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  b1_from_print_cls:
  //SEG717 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
    jmp b1
  //SEG718 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  b1_from_b1:
  //SEG719 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
    jmp b1
  //SEG720 print_cls::@1
  b1:
  //SEG721 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG722 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG723 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1_from_b1
    lda sc
    cmp #<$400+$3e8
    bne b1_from_b1
    jmp breturn
  //SEG724 print_cls::@return
  breturn:
  //SEG725 [341] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255).
  // <f(x) = <(( x * x )/4)
  .align $100
  mulf_sqr1_lo: .fill $200, 0
  // >f(x) = >(( x * x )/4)
  .align $100
  mulf_sqr1_hi: .fill $200, 0
  // <g(x) =  <((( x - 255) * ( x - 255 ))/4)
  .align $100
  mulf_sqr2_lo: .fill $200, 0
  // >g(x) = >((( x - 255) * ( x - 255 ))/4)
  .align $100
  mulf_sqr2_hi: .fill $200, 0
  // ASM based multiplication tables
  // <(( x * x )/4)
  .align $100
  mula_sqr1_lo: .fill $200, 0
  // >(( x * x )/4)
  .align $100
  mula_sqr1_hi: .fill $200, 0
  // <((( x - 255) * ( x - 255 ))/4)
  .align $100
  mula_sqr2_lo: .fill $200, 0
  // >((( x - 255) * ( x - 255 ))/4)
  .align $100
  mula_sqr2_hi: .fill $200, 0
  str4: .text " / fast:@"
  str3: .text " / normal:@"
  str1: .text "*@"
  str2: .text " slow:@"

REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ]
Statement [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 print_line_cursor#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
Statement [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 [ mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ mul8s_error::a#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ mul8s_error::b#0 ]
Statement [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_char_cursor#192 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#192 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a 
Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a 
Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:78 [ mul8s_error::a#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:79 [ mul8s_error::b#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ mul8u_error::a#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:124 [ mul8u_error::a#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:125 [ mul8u_error::b#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:125 [ mul8u_error::b#0 ]
Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ) always clobbers reg byte a 
Statement [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ) always clobbers reg byte a 
Statement [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ) always clobbers reg byte a 
Statement [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#3 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a 
Statement [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] ) always clobbers reg byte a 
Statement [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#134 print_word::w#13 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] ) always clobbers reg byte a 
Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a 
Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
Statement [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a 
Statement [134] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ mul8s::a#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ mul8s::b#0 ]
Statement [135] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a 
Statement [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a 
Statement [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a 
Statement [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a 
Statement [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a 
Statement [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Statement [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a 
Statement [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a 
Statement [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a 
Statement [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a 
Statement [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ]
Statement [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a 
Statement [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a 
Statement [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a 
Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a 
Statement [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a 
Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a 
Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  } always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162::mulf8u_prepared:167 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a 
Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  } always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ mulf8s::b#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:115 [ mulf8u::b#0 ]
Statement [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ muls8s::a#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ muls8s::b#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ muls8s::j#2 muls8s::j#1 ]
Statement [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ muls8s::i#2 muls8s::i#1 ]
Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a 
Statement [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a 
Statement [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [218] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a 
Statement [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a 
Statement [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a 
Statement [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a 
Statement [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a 
Statement [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a 
Statement [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:207 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:108 [ muls8u::a#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:109 [ muls8u::b#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ]
Statement [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y 
Statement [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a 
Statement [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a 
Statement [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a 
Statement [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a 
Statement [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a 
Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!-  } always clobbers reg byte a reg byte x reg byte y 
Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ]
Statement [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a 
Statement [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Statement [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a 
Statement [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y 
Statement [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a 
Statement [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a 
Statement [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ]
Statement [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y 
Statement [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a 
Statement [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a 
Statement [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [338] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a 
Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 [ mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_char_cursor#192 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#192 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a 
Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a 
Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ) always clobbers reg byte a 
Statement [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ) always clobbers reg byte a 
Statement [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ) always clobbers reg byte a 
Statement [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#3 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a 
Statement [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] ) always clobbers reg byte a 
Statement [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#134 print_word::w#13 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] ) always clobbers reg byte a 
Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a 
Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a 
Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y 
Statement [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a 
Statement [134] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a 
Statement [135] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a 
Statement [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a 
Statement [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a 
Statement [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a 
Statement [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a 
Statement [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a 
Statement [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a 
Statement [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a 
Statement [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a 
Statement [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a 
Statement [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a 
Statement [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a 
Statement [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a 
Statement [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a 
Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a 
Statement [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a 
Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a 
Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  } always clobbers reg byte a reg byte x 
Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162::mulf8u_prepared:167 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a 
Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  } always clobbers reg byte a 
Statement [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a 
Statement [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a 
Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a 
Statement [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a 
Statement [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [218] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a 
Statement [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a 
Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a 
Statement [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a 
Statement [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a 
Statement [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a 
Statement [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a 
Statement [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:207 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a 
Statement [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y 
Statement [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a 
Statement [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a 
Statement [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a 
Statement [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a 
Statement [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a 
Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!-  } always clobbers reg byte a reg byte x reg byte y 
Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a 
Statement [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a 
Statement [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y 
Statement [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a 
Statement [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y 
Statement [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a 
Statement [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a 
Statement [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y 
Statement [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y 
Statement [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a 
Statement [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a 
Statement [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [338] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a 
Potential registers zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] : zp ZP_BYTE:2 , reg byte y , 
Potential registers zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] : zp ZP_BYTE:3 , reg byte y , 
Potential registers zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] : zp ZP_WORD:5 , 
Potential registers zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] : zp ZP_WORD:7 , 
Potential registers zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] : zp ZP_WORD:9 , 
Potential registers zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] : zp ZP_WORD:11 , 
Potential registers zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:13 , reg byte x , 
Potential registers zp ZP_BYTE:14 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] : zp ZP_WORD:15 , 
Potential registers zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , 
Potential registers zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] : zp ZP_WORD:18 , 
Potential registers zp ZP_BYTE:20 [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:22 , 
Potential registers zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp ZP_WORD:24 , 
Potential registers zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] : zp ZP_WORD:26 , 
Potential registers zp ZP_BYTE:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:30 [ muls8s::j#2 muls8s::j#1 ] : zp ZP_BYTE:30 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] : zp ZP_WORD:31 , 
Potential registers zp ZP_BYTE:33 [ muls8s::i#2 muls8s::i#1 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] : zp ZP_BYTE:34 , reg byte y , 
Potential registers zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] : zp ZP_BYTE:35 , reg byte y , 
Potential registers zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] : zp ZP_WORD:38 , 
Potential registers zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] : zp ZP_WORD:40 , 
Potential registers zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] : zp ZP_WORD:42 , 
Potential registers zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] : zp ZP_BYTE:44 , reg byte x , 
Potential registers zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] : zp ZP_WORD:45 , 
Potential registers zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] : zp ZP_WORD:47 , 
Potential registers zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] : zp ZP_BYTE:49 , reg byte x , 
Potential registers zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] : zp ZP_WORD:50 , 
Potential registers zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] : zp ZP_BYTE:52 , reg byte x , 
Potential registers zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] : zp ZP_WORD:53 , 
Potential registers zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] : zp ZP_WORD:55 , 
Potential registers zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] : zp ZP_BYTE:57 , reg byte x , 
Potential registers zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:58 , 
Potential registers zp ZP_BYTE:60 [ muls8s::a#0 ] : zp ZP_BYTE:60 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:61 [ muls8s::b#0 ] : zp ZP_BYTE:61 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:62 [ muls8s::return#2 ] : zp ZP_WORD:62 , 
Potential registers zp ZP_WORD:64 [ mul8s_compare::ms#0 ] : zp ZP_WORD:64 , 
Potential registers zp ZP_BYTE:66 [ mulf8s::a#0 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:67 [ mulf8s::b#0 ] : zp ZP_BYTE:67 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:68 [ mulf8s::return#2 ] : zp ZP_WORD:68 , 
Potential registers zp ZP_WORD:70 [ mul8s_compare::mf#0 ] : zp ZP_WORD:70 , 
Potential registers zp ZP_BYTE:72 [ mul8s::a#0 ] : zp ZP_BYTE:72 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:73 [ mul8s::b#0 ] : zp ZP_BYTE:73 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:74 [ mul8s::return#2 ] : zp ZP_WORD:74 , 
Potential registers zp ZP_WORD:76 [ mul8s_compare::mn#0 ] : zp ZP_WORD:76 , 
Potential registers zp ZP_BYTE:78 [ mul8s_error::a#0 ] : zp ZP_BYTE:78 , reg byte x , 
Potential registers zp ZP_BYTE:79 [ mul8s_error::b#0 ] : zp ZP_BYTE:79 , reg byte x , 
Potential registers zp ZP_WORD:80 [ mul8s_error::ms#0 ] : zp ZP_WORD:80 , 
Potential registers zp ZP_WORD:82 [ mul8s_error::mn#0 ] : zp ZP_WORD:82 , 
Potential registers zp ZP_WORD:84 [ mul8s_error::mf#0 ] : zp ZP_WORD:84 , 
Potential registers zp ZP_BYTE:86 [ print_byte::$0 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:87 [ print_byte::$2 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:88 [ mul8u::return#2 ] : zp ZP_WORD:88 , 
Potential registers zp ZP_BYTE:90 [ mul8s::$6 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:91 [ mul8s::$16 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:92 [ mul8s::$12 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:93 [ mul8s::$17 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:94 [ mul8u::$1 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] : zp ZP_BYTE:95 , reg byte y , 
Potential registers zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] : zp ZP_WORD:96 , 
Potential registers zp ZP_WORD:98 [ mulf8s::return#0 ] : zp ZP_WORD:98 , 
Potential registers zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] : zp ZP_WORD:100 , 
Potential registers zp ZP_BYTE:102 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:103 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:104 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:105 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:106 , 
Potential registers zp ZP_BYTE:108 [ muls8u::a#0 ] : zp ZP_BYTE:108 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:109 [ muls8u::b#0 ] : zp ZP_BYTE:109 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:110 [ muls8u::return#2 ] : zp ZP_WORD:110 , 
Potential registers zp ZP_WORD:112 [ mul8u_compare::ms#0 ] : zp ZP_WORD:112 , 
Potential registers zp ZP_BYTE:114 [ mulf8u::a#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:115 [ mulf8u::b#0 ] : zp ZP_BYTE:115 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:116 [ mulf8u::return#2 ] : zp ZP_WORD:116 , 
Potential registers zp ZP_WORD:118 [ mul8u_compare::mf#0 ] : zp ZP_WORD:118 , 
Potential registers zp ZP_WORD:120 [ mul8u::return#3 ] : zp ZP_WORD:120 , 
Potential registers zp ZP_WORD:122 [ mul8u_compare::mn#0 ] : zp ZP_WORD:122 , 
Potential registers zp ZP_BYTE:124 [ mul8u_error::a#0 ] : zp ZP_BYTE:124 , reg byte x , 
Potential registers zp ZP_BYTE:125 [ mul8u_error::b#0 ] : zp ZP_BYTE:125 , reg byte x , 
Potential registers zp ZP_WORD:126 [ mul8u_error::ms#0 ] : zp ZP_WORD:126 , 
Potential registers zp ZP_WORD:128 [ mul8u_error::mn#0 ] : zp ZP_WORD:128 , 
Potential registers zp ZP_WORD:130 [ mul8u_error::mf#0 ] : zp ZP_WORD:130 , 
Potential registers zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:132 , 
Potential registers zp ZP_WORD:134 [ mulf8u::return#0 ] : zp ZP_WORD:134 , 
Potential registers zp ZP_BYTE:136 [ mulf_init::$2 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:137 [ mulf_init::$5 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:138 [ mulf_init::$6 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [muls8s] 6,707: zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] 2,502.5: zp ZP_BYTE:30 [ muls8s::j#2 muls8s::j#1 ] 2,502.5: zp ZP_BYTE:33 [ muls8s::i#2 muls8s::i#1 ] 202: zp ZP_WORD:62 [ muls8s::return#2 ] 191.18: zp ZP_BYTE:61 [ muls8s::b#0 ] 175.58: zp ZP_BYTE:60 [ muls8s::a#0 ] 
Uplift Scope [mul8u] 3,446.71: zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,435.29: zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,002: zp ZP_BYTE:94 [ mul8u::$1 ] 1,826.17: zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 309: zp ZP_BYTE:20 [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] 202: zp ZP_WORD:120 [ mul8u::return#3 ] 4: zp ZP_WORD:88 [ mul8u::return#2 ] 
Uplift Scope [muls8u] 3,370.33: zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 2,502.5: zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ] 202: zp ZP_WORD:110 [ muls8u::return#2 ] 183.67: zp ZP_BYTE:109 [ muls8u::b#0 ] 157.71: zp ZP_BYTE:108 [ muls8u::a#0 ] 
Uplift Scope [mul8u_compare] 235.67: zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 171.78: zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 28.61: zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 17: zp ZP_WORD:122 [ mul8u_compare::mn#0 ] 14.52: zp ZP_WORD:112 [ mul8u_compare::ms#0 ] 11.33: zp ZP_WORD:118 [ mul8u_compare::mf#0 ] 
Uplift Scope [mul8s_compare] 235.67: zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] 171.78: zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] 28.61: zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] 17: zp ZP_WORD:76 [ mul8s_compare::mn#0 ] 14.52: zp ZP_WORD:64 [ mul8s_compare::ms#0 ] 11.33: zp ZP_WORD:70 [ mul8s_compare::mf#0 ] 
Uplift Scope [mulf8u] 202: zp ZP_WORD:116 [ mulf8u::return#2 ] 51.5: zp ZP_BYTE:114 [ mulf8u::a#0 ] 34.33: zp ZP_BYTE:115 [ mulf8u::b#0 ] 34.33: zp ZP_WORD:134 [ mulf8u::return#0 ] 
Uplift Scope [mulf8s] 202: zp ZP_WORD:68 [ mulf8s::return#2 ] 34.33: zp ZP_WORD:98 [ mulf8s::return#0 ] 33.67: zp ZP_BYTE:66 [ mulf8s::a#0 ] 25.75: zp ZP_BYTE:67 [ mulf8s::b#0 ] 
Uplift Scope [mulf_init] 45.1: zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:136 [ mulf_init::$2 ] 22: zp ZP_BYTE:137 [ mulf_init::$5 ] 22: zp ZP_BYTE:138 [ mulf_init::$6 ] 20.62: zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] 
Uplift Scope [mul8s] 202: zp ZP_WORD:74 [ mul8s::return#2 ] 13.83: zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 9.36: zp ZP_BYTE:73 [ mul8s::b#0 ] 7.36: zp ZP_BYTE:72 [ mul8s::a#0 ] 4: zp ZP_BYTE:90 [ mul8s::$6 ] 4: zp ZP_BYTE:91 [ mul8s::$16 ] 4: zp ZP_BYTE:92 [ mul8s::$12 ] 4: zp ZP_BYTE:93 [ mul8s::$17 ] 
Uplift Scope [] 79.74: zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] 34.73: zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] 
Uplift Scope [mulf_tables_cmp] 20.17: zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] 15.58: zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] 
Uplift Scope [print_str] 35.5: zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] 
Uplift Scope [mulf8s_prepared] 13.83: zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] 4: zp ZP_BYTE:102 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:103 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:104 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:105 [ mulf8s_prepared::$16 ] 0.4: zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] 
Uplift Scope [print_cls] 33: zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] 
Uplift Scope [print_byte] 23.5: zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:86 [ print_byte::$0 ] 4: zp ZP_BYTE:87 [ print_byte::$2 ] 
Uplift Scope [print_word] 29.33: zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] 
Uplift Scope [mulf8u_prepared] 14: zp ZP_BYTE:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] 4: zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] 4: zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] 1.5: zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] 
Uplift Scope [print_sword] 23: zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] 
Uplift Scope [print_sbyte] 17.67: zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] 
Uplift Scope [print_char] 14: zp ZP_BYTE:14 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] 
Uplift Scope [mulf8u_prepare] 14: zp ZP_BYTE:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] 
Uplift Scope [mul8u_error] 0.57: zp ZP_BYTE:124 [ mul8u_error::a#0 ] 0.4: zp ZP_BYTE:125 [ mul8u_error::b#0 ] 0.31: zp ZP_WORD:126 [ mul8u_error::ms#0 ] 0.25: zp ZP_WORD:128 [ mul8u_error::mn#0 ] 0.21: zp ZP_WORD:130 [ mul8u_error::mf#0 ] 
Uplift Scope [mul8s_error] 0.57: zp ZP_BYTE:78 [ mul8s_error::a#0 ] 0.4: zp ZP_BYTE:79 [ mul8s_error::b#0 ] 0.31: zp ZP_WORD:80 [ mul8s_error::ms#0 ] 0.25: zp ZP_WORD:82 [ mul8s_error::mn#0 ] 0.21: zp ZP_WORD:84 [ mul8s_error::mf#0 ] 
Uplift Scope [print_ln] 
Uplift Scope [main] 
Uplift Scope [mulf_init_asm] 

Uplifting [muls8s] best 318118 combination zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] zp ZP_WORD:62 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp ZP_BYTE:60 [ muls8s::a#0 ] 
Uplifting [mul8u] best 308509 combination zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] zp ZP_WORD:120 [ mul8u::return#3 ] zp ZP_WORD:88 [ mul8u::return#2 ] 
Uplifting [muls8u] best 298209 combination zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:110 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:108 [ muls8u::a#0 ] 
Uplifting [mul8u_compare] best 297009 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp ZP_WORD:122 [ mul8u_compare::mn#0 ] zp ZP_WORD:112 [ mul8u_compare::ms#0 ] zp ZP_WORD:118 [ mul8u_compare::mf#0 ] 
Uplifting [mul8s_compare] best 295809 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] zp ZP_WORD:76 [ mul8s_compare::mn#0 ] zp ZP_WORD:64 [ mul8s_compare::ms#0 ] zp ZP_WORD:70 [ mul8s_compare::mf#0 ] 
Uplifting [mulf8u] best 295203 combination zp ZP_WORD:116 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp ZP_WORD:134 [ mulf8u::return#0 ] 
Uplifting [mulf8s] best 294597 combination zp ZP_WORD:68 [ mulf8s::return#2 ] zp ZP_WORD:98 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] 
Uplifting [mulf_init] best 294347 combination zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] 
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [mul8s] best 294034 combination zp ZP_WORD:74 [ mul8s::return#2 ] zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp ZP_BYTE:72 [ mul8s::a#0 ] reg byte a [ mul8s::$6 ] reg byte a [ mul8s::$16 ] zp ZP_BYTE:92 [ mul8s::$12 ] zp ZP_BYTE:93 [ mul8s::$17 ] 
Limited combination testing to 100 combinations of 2304 possible.
Uplifting [] best 294034 combination zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] 
Uplifting [mulf_tables_cmp] best 294034 combination zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] 
Uplifting [print_str] best 294034 combination zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] 
Uplifting [mulf8s_prepared] best 294010 combination zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] 
Limited combination testing to 100 combinations of 512 possible.
Uplifting [print_cls] best 294010 combination zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] 
Uplifting [print_byte] best 293989 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] 
Uplifting [print_word] best 293989 combination zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] 
Uplifting [mulf8u_prepared] best 293980 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] 
Uplifting [print_sword] best 293980 combination zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] 
Uplifting [print_sbyte] best 293968 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] 
Uplifting [print_char] best 293950 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] 
Uplifting [mulf8u_prepare] best 293941 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] 
Uplifting [mul8u_error] best 293935 combination reg byte x [ mul8u_error::a#0 ] zp ZP_BYTE:125 [ mul8u_error::b#0 ] zp ZP_WORD:126 [ mul8u_error::ms#0 ] zp ZP_WORD:128 [ mul8u_error::mn#0 ] zp ZP_WORD:130 [ mul8u_error::mf#0 ] 
Uplifting [mul8s_error] best 293929 combination reg byte x [ mul8s_error::a#0 ] zp ZP_BYTE:79 [ mul8s_error::b#0 ] zp ZP_WORD:80 [ mul8s_error::ms#0 ] zp ZP_WORD:82 [ mul8s_error::mn#0 ] zp ZP_WORD:84 [ mul8s_error::mf#0 ] 
Uplifting [print_ln] best 293929 combination 
Uplifting [main] best 293929 combination 
Uplifting [mulf_init_asm] best 293929 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:60 [ muls8s::a#0 ]
Uplifting [muls8s] best 293929 combination zp ZP_BYTE:60 [ muls8s::a#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ]
Uplifting [mul8s_compare] best 293929 combination zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Uplifting [mul8u_compare] best 293929 combination zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:108 [ muls8u::a#0 ]
Uplifting [muls8u] best 293929 combination zp ZP_BYTE:108 [ muls8u::a#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ]
Uplifting [mul8s_compare] best 293929 combination zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Uplifting [mul8u_compare] best 293929 combination zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Uplifting [mulf_init] best 293929 combination zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Uplifting [mulf_init] best 293789 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ]
Uplifting [mulf_init] best 293789 combination zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:72 [ mul8s::a#0 ]
Uplifting [mul8s] best 293789 combination zp ZP_BYTE:72 [ mul8s::a#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:92 [ mul8s::$12 ]
Uplifting [mul8s] best 293783 combination reg byte a [ mul8s::$12 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:93 [ mul8s::$17 ]
Uplifting [mul8s] best 293777 combination reg byte a [ mul8s::$17 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:79 [ mul8s_error::b#0 ]
Uplifting [mul8s_error] best 293777 combination zp ZP_BYTE:79 [ mul8s_error::b#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:95 [ mulf8s_prepared::b#0 ]
Uplifting [mulf8s_prepared] best 293777 combination zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:125 [ mul8u_error::b#0 ]
Uplifting [mul8u_error] best 293777 combination zp ZP_BYTE:125 [ mul8u_error::b#0 ] 
Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] ] with [ zp ZP_BYTE:60 [ muls8s::a#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 ] ] with [ zp ZP_BYTE:72 [ mul8s::a#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] ] with [ zp ZP_BYTE:79 [ mul8s_error::b#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] ] with [ zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] ] with [ zp ZP_WORD:80 [ mul8s_error::ms#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] ] with [ zp ZP_WORD:74 [ mul8s::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 ] ] with [ zp ZP_WORD:88 [ mul8u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:120 [ mul8u::return#3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 ] ] with [ zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] ] with [ zp ZP_WORD:62 [ muls8s::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] ] with [ zp ZP_BYTE:108 [ muls8u::a#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] ] with [ zp ZP_BYTE:125 [ mul8u_error::b#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] with [ zp ZP_WORD:110 [ muls8u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:68 [ mulf8s::return#2 ] ] with [ zp ZP_WORD:70 [ mul8s_compare::mf#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:68 [ mulf8s::return#2 mul8s_compare::mf#0 ] ] with [ zp ZP_WORD:98 [ mulf8s::return#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:76 [ mul8s_compare::mn#0 ] ] with [ zp ZP_WORD:82 [ mul8s_error::mn#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] ] with [ zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:112 [ mul8u_compare::ms#0 ] ] with [ zp ZP_WORD:126 [ mul8u_error::ms#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 ] ] with [ zp ZP_WORD:118 [ mul8u_compare::mf#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 ] ] with [ zp ZP_WORD:134 [ mulf8u::return#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:122 [ mul8u_compare::mn#0 ] ] with [ zp ZP_WORD:128 [ mul8u_error::mn#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 ] ] with [ zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] with [ zp ZP_WORD:64 [ mul8s_compare::ms#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 ] ] with [ zp ZP_WORD:112 [ mul8u_compare::ms#0 mul8u_error::ms#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 ] ] with [ zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp ZP_WORD:76 [ mul8s_compare::mn#0 mul8s_error::mn#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 ] ] with [ zp ZP_WORD:68 [ mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 ] ] with [ zp ZP_WORD:106 [ mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 ] ] with [ zp ZP_WORD:130 [ mul8u_error::mf#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 ] ] with [ zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 ] ] with [ zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_compare::mn#0 mul8s_error::mn#0 ] ] with [ zp ZP_WORD:122 [ mul8u_compare::mn#0 mul8u_error::mn#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] with [ zp ZP_WORD:84 [ mul8s_error::mf#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 ] ] with [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 ] ] with [ zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ] ] with [ zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] with [ zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] ]
Coalescing zero page register [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 ] ] with [ zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ] with [ zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] ] with [ zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] ] with [ zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] with [ zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] ] with [ zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] ] with [ zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ] with [ zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ]
Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_str::str#16 print_str::str#18 print_str::str#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
Allocated (was zp ZP_WORD:15) zp ZP_WORD:10 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ]
Allocated (was zp ZP_WORD:18) zp ZP_WORD:12 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_compare::mn#0 mul8s_error::mn#0 mul8u_compare::mn#0 mul8u_error::mn#0 ]
Allocated (was zp ZP_WORD:26) zp ZP_WORD:14 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ]

ASSEMBLER BEFORE OPTIMIZATION
//SEG0 File Comments
// Test the fast multiplication library
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label BGCOL = $d021
  .label print_char_cursor = $a
  .label print_line_cursor = 4
//SEG3 @begin
bbegin:
//SEG4 [1] phi from @begin to @42 [phi:@begin->@42]
b42_from_bbegin:
  jmp b42
//SEG5 @42
b42:
//SEG6 [2] call main 
  jsr main
//SEG7 [3] phi from @42 to @end [phi:@42->@end]
bend_from_b42:
  jmp bend
//SEG8 @end
bend:
//SEG9 main
main: {
  //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
  //SEG11 [5] call print_cls 
  //SEG12 [336] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
  //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
  b1_from_main:
    jmp b1
  //SEG14 main::@1
  b1:
  //SEG15 [7] call mulf_init 
  //SEG16 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init]
  mulf_init_from_b1:
    jsr mulf_init
  //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
  //SEG18 main::@2
  b2:
  //SEG19 [9] call mulf_init_asm 
    jsr mulf_init_asm
  //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  b3_from_b2:
    jmp b3
  //SEG21 main::@3
  b3:
  //SEG22 [11] call mulf_tables_cmp 
  //SEG23 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp]
  mulf_tables_cmp_from_b3:
    jsr mulf_tables_cmp
  //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  b4_from_b3:
    jmp b4
  //SEG25 main::@4
  b4:
  //SEG26 [13] call mul8u_compare 
  //SEG27 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare]
  mul8u_compare_from_b4:
    jsr mul8u_compare
  //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
  b5_from_b4:
    jmp b5
  //SEG29 main::@5
  b5:
  //SEG30 [15] call mul8s_compare 
  //SEG31 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare]
  mul8s_compare_from_b5:
    jsr mul8s_compare
    jmp breturn
  //SEG32 main::@return
  breturn:
  //SEG33 [16] return 
    rts
}
//SEG34 mul8s_compare
// Perform all possible signed byte multiplications (slow and fast) and compare the results
mul8s_compare: {
    .label ms = 8
    .label mf = $e
    .label mn = $c
    .label b = 3
    .label a = 2
  //SEG35 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1]
  b1_from_mul8s_compare:
  //SEG36 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 
    lda #-$80
    sta a
    jmp b1
  //SEG37 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1]
  b1_from_b10:
  //SEG38 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy 
    jmp b1
  //SEG39 mul8s_compare::@1
  b1:
  //SEG40 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2]
  b2_from_b1:
  //SEG41 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 
    lda #-$80
    sta b
    jmp b2
  //SEG42 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2]
  b2_from_b5:
  //SEG43 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy 
    jmp b2
  //SEG44 mul8s_compare::@2
  b2:
  //SEG45 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7
  //SEG46 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 
    ldx b
  //SEG47 [22] call muls8s 
    jsr muls8s
  //SEG48 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0
    jmp b12
  //SEG49 mul8s_compare::@12
  b12:
  //SEG50 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2
  //SEG51 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsaa=vbsz1 
    lda a
  //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 
    ldx b
  //SEG53 [27] call mulf8s 
  //SEG54 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s]
  mulf8s_from_b12:
    jsr mulf8s
  //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
    jmp b13
  //SEG56 mul8s_compare::@13
  b13:
  //SEG57 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2
  //SEG58 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7
  //SEG59 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsyy=vbsz1 
    ldy b
  //SEG60 [32] call mul8s 
    jsr mul8s
  //SEG61 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4
    jmp b14
  //SEG62 mul8s_compare::@14
  b14:
  //SEG63 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2
  //SEG64 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 
    lda ms
    cmp mf
    bne !+
    lda ms+1
    cmp mf+1
    beq b3_from_b14
  !:
  //SEG65 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6]
  b6_from_b14:
    jmp b6
  //SEG66 mul8s_compare::@6
  b6:
  //SEG67 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3]
  b3_from_b6:
  //SEG68 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
  //SEG69 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3]
  b3_from_b14:
  //SEG70 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
    jmp b3
  //SEG71 mul8s_compare::@3
  b3:
  //SEG72 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 
    lda ms
    cmp mn
    bne !+
    lda ms+1
    cmp mn+1
    beq b20_from_b3
  !:
  //SEG73 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4]
  b4_from_b3:
  //SEG74 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b4
  //SEG75 mul8s_compare::@4
  b4:
  //SEG76 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b5
    jmp b8
  //SEG77 mul8s_compare::@8
  b8:
  //SEG78 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG79 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsxx=vbsz1 
    ldx a
  //SEG80 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10
  //SEG81 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0
  //SEG82 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0
  //SEG83 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0
  //SEG84 [47] call mul8s_error 
    jsr mul8s_error
    jmp breturn
  //SEG85 mul8s_compare::@return
  breturn:
  //SEG86 [48] return 
    rts
  //SEG87 mul8s_compare::@5
  b5:
  //SEG88 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 
    inc b
  //SEG89 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 
    lda b
    cmp #-$80
    bne b2_from_b5
    jmp b10
  //SEG90 mul8s_compare::@10
  b10:
  //SEG91 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 
    inc a
  //SEG92 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 
    lda a
    cmp #-$80
    bne b1_from_b10
    jmp b11
  //SEG93 mul8s_compare::@11
  b11:
  //SEG94 [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG95 [54] call print_str 
  //SEG96 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str]
  print_str_from_b11:
  //SEG97 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy 
  //SEG98 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG99 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16]
  b16_from_b11:
    jmp b16
  //SEG100 mul8s_compare::@16
  b16:
  //SEG101 [56] call print_ln 
  //SEG102 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln]
  print_ln_from_b16:
  //SEG103 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy 
  //SEG104 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG105 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20]
  b20_from_b3:
    jmp b20
  //SEG106 mul8s_compare::@20
  b20:
  //SEG107 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4]
  b4_from_b20:
  //SEG108 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy 
    jmp b4
    str: .text "signed multiply results match!@"
}
//SEG109 print_ln
// Print a newline
print_ln: {
  //SEG110 [59] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
  b1_from_print_ln:
  b1_from_b1:
  //SEG111 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    jmp b1
  //SEG112 print_ln::@1
  b1:
  //SEG113 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 
    lda print_line_cursor
    clc
    adc #$28
    sta print_line_cursor
    bcc !+
    inc print_line_cursor+1
  !:
  //SEG114 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda print_line_cursor+1
    cmp print_char_cursor+1
    bcc b1_from_b1
    bne !+
    lda print_line_cursor
    cmp print_char_cursor
    bcc b1_from_b1
  !:
    jmp breturn
  //SEG115 print_ln::@return
  breturn:
  //SEG116 [62] return 
    rts
}
//SEG117 print_str
// Print a zero-terminated string
// print_str(byte* zeropage(6) str)
print_str: {
    .label str = 6
  //SEG118 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
  b1_from_print_str:
  b1_from_b2:
  //SEG119 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG120 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp b1
  //SEG121 print_str::@1
  b1:
  //SEG122 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
    jmp breturn
  //SEG123 print_str::@return
  breturn:
  //SEG124 [66] return 
    rts
  //SEG125 print_str::@2
  b2:
  //SEG126 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
  //SEG127 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
  //SEG128 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1_from_b2
}
//SEG129 mul8s_error
// mul8s_error(signed byte register(X) a, signed byte zeropage(3) b, signed word zeropage(8) ms, signed word zeropage($c) mn, signed word zeropage($e) mf)
mul8s_error: {
    .label b = 3
    .label ms = 8
    .label mn = $c
    .label mf = $e
  //SEG130 [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG131 [71] call print_str 
  //SEG132 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str]
  print_str_from_mul8s_error:
  //SEG133 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy 
  //SEG134 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b1
  //SEG135 mul8s_error::@1
  b1:
  //SEG136 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0
  //SEG137 [73] call print_sbyte 
  //SEG138 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte]
  print_sbyte_from_b1:
  //SEG139 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy 
    jsr print_sbyte
  //SEG140 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2]
  b2_from_b1:
    jmp b2
  //SEG141 mul8s_error::@2
  b2:
  //SEG142 [75] call print_str 
  //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
  print_str_from_b2:
  //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy 
  //SEG145 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b3
  //SEG146 mul8s_error::@3
  b3:
  //SEG147 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsxx=vbsz1 
    ldx b
  //SEG148 [77] call print_sbyte 
  //SEG149 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte]
  print_sbyte_from_b3:
  //SEG150 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy 
    jsr print_sbyte
  //SEG151 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4]
  b4_from_b3:
    jmp b4
  //SEG152 mul8s_error::@4
  b4:
  //SEG153 [79] call print_str 
  //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
  print_str_from_b4:
  //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy 
  //SEG156 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG157 mul8s_error::@5
  b5:
  //SEG158 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0
  //SEG159 [81] call print_sword 
  //SEG160 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword]
  print_sword_from_b5:
  //SEG161 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG162 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6]
  b6_from_b5:
    jmp b6
  //SEG163 mul8s_error::@6
  b6:
  //SEG164 [83] call print_str 
  //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
  print_str_from_b6:
  //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy 
  //SEG167 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str.str
    lda #>str3
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG168 mul8s_error::@7
  b7:
  //SEG169 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 
    lda mn
    sta print_sword.w
    lda mn+1
    sta print_sword.w+1
  //SEG170 [85] call print_sword 
  //SEG171 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword]
  print_sword_from_b7:
  //SEG172 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG173 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8]
  b8_from_b7:
    jmp b8
  //SEG174 mul8s_error::@8
  b8:
  //SEG175 [87] call print_str 
  //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
  print_str_from_b8:
  //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy 
  //SEG178 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str.str
    lda #>str4
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG179 mul8s_error::@9
  b9:
  //SEG180 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 
    lda mf
    sta print_sword.w
    lda mf+1
    sta print_sword.w+1
  //SEG181 [89] call print_sword 
  //SEG182 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword]
  print_sword_from_b9:
  //SEG183 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG184 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10]
  b10_from_b9:
    jmp b10
  //SEG185 mul8s_error::@10
  b10:
  //SEG186 [91] call print_ln 
  //SEG187 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln]
  print_ln_from_b10:
  //SEG188 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy 
  //SEG189 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG190 mul8s_error::@return
  breturn:
  //SEG191 [92] return 
    rts
    str: .text "signed multiply mismatch @"
}
//SEG192 print_sword
// Print a signed word as HEX
// print_sword(signed word zeropage(8) w)
print_sword: {
    .label w = 8
  //SEG193 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 
    lda w+1
    bpl b1_from_print_sword
  //SEG194 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2]
  b2_from_print_sword:
    jmp b2
  //SEG195 print_sword::@2
  b2:
  //SEG196 [96] call print_char 
  //SEG197 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char]
  print_char_from_b2:
  //SEG198 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy 
  //SEG199 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp b4
  //SEG200 print_sword::@4
  b4:
  //SEG201 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 
    sec
    lda w
    eor #$ff
    adc #0
    sta w
    lda w+1
    eor #$ff
    adc #0
    sta w+1
  //SEG202 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1]
  b1_from_print_sword:
  b1_from_b4:
  //SEG203 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy 
  //SEG204 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy 
    jmp b1
  //SEG205 print_sword::@1
  b1:
  //SEG206 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5
  //SEG207 [100] call print_word 
  //SEG208 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word]
  print_word_from_b1:
  //SEG209 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy 
  //SEG210 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy 
    jsr print_word
    jmp breturn
  //SEG211 print_sword::@return
  breturn:
  //SEG212 [101] return 
    rts
}
//SEG213 print_word
// Print a word as HEX
// print_word(word zeropage(8) w)
print_word: {
    .label w = 8
  //SEG214 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 
    lda w+1
    tax
  //SEG215 [104] call print_byte 
  //SEG216 [108] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
  //SEG217 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy 
  //SEG218 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp b1
  //SEG219 print_word::@1
  b1:
  //SEG220 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 
    lda w
    tax
  //SEG221 [106] call print_byte 
  //SEG222 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from_b1:
  //SEG223 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy 
  //SEG224 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    jmp breturn
  //SEG225 print_word::@return
  breturn:
  //SEG226 [107] return 
    rts
}
//SEG227 print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
  //SEG228 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
  //SEG229 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
  //SEG230 [111] call print_char 
  //SEG231 [116] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
  //SEG232 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy 
  //SEG233 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    jmp b1
  //SEG234 print_byte::@1
  b1:
  //SEG235 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #$f
  //SEG236 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
  //SEG237 [114] call print_char 
  //SEG238 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from_b1:
  //SEG239 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy 
  //SEG240 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    jmp breturn
  //SEG241 print_byte::@return
  breturn:
  //SEG242 [115] return 
    rts
}
//SEG243 print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
  //SEG244 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
  //SEG245 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
    jmp breturn
  //SEG246 print_char::@return
  breturn:
  //SEG247 [119] return 
    rts
}
//SEG248 print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte register(X) b)
print_sbyte: {
  //SEG249 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi b1_from_print_sbyte
  //SEG250 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
  b3_from_print_sbyte:
    jmp b3
  //SEG251 print_sbyte::@3
  b3:
  //SEG252 [123] call print_char 
  //SEG253 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
  print_char_from_b3:
  //SEG254 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy 
  //SEG255 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
  //SEG256 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2]
  b2_from_b3:
  b2_from_b5:
  //SEG257 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy 
    jmp b2
  //SEG258 print_sbyte::@2
  b2:
  //SEG259 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5
  //SEG260 [126] call print_byte 
  //SEG261 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  print_byte_from_b2:
  //SEG262 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
  //SEG263 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
    jmp breturn
  //SEG264 print_sbyte::@return
  breturn:
  //SEG265 [127] return 
    rts
  //SEG266 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  b1_from_print_sbyte:
    jmp b1
  //SEG267 print_sbyte::@1
  b1:
  //SEG268 [129] call print_char 
  //SEG269 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  print_char_from_b1:
  //SEG270 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy 
  //SEG271 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp b5
  //SEG272 print_sbyte::@5
  b5:
  //SEG273 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
    jmp b2_from_b5
}
//SEG274 mul8s
// Multiply of two signed bytes to a signed word
// Fixes offsets introduced by using unsigned multiplication
// mul8s(signed byte zeropage(2) a, signed byte register(Y) b)
mul8s: {
    .label m = $c
    .label a = 2
    .label return = $c
  //SEG275 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy 
    tya
  //SEG276 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 
    ldx a
  //SEG277 [133] call mul8u 
  //SEG278 [147] phi from mul8s to mul8u [phi:mul8s->mul8u]
  mul8u_from_mul8s:
  //SEG279 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy 
  //SEG280 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy 
    jsr mul8u
  //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2
    jmp b6
  //SEG282 mul8s::@6
  b6:
  //SEG283 [135] (word) mul8s::m#0 ← (word) mul8u::return#2
  //SEG284 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 
    lda a
    cmp #0
    bpl b1_from_b6
    jmp b3
  //SEG285 mul8s::@3
  b3:
  //SEG286 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 
    lda m+1
  //SEG287 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy 
    sty $ff
    sec
    sbc $ff
  //SEG288 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa 
    sta m+1
  //SEG289 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1]
  b1_from_b3:
  b1_from_b6:
  //SEG290 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy 
    jmp b1
  //SEG291 mul8s::@1
  b1:
  //SEG292 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 
    cpy #0
    bpl b2_from_b1
    jmp b4
  //SEG293 mul8s::@4
  b4:
  //SEG294 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 
    lda m+1
  //SEG295 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 
    sec
    sbc a
  //SEG296 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa 
    sta m+1
  //SEG297 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG298 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy 
    jmp b2
  //SEG299 mul8s::@2
  b2:
    jmp breturn
  //SEG300 mul8s::@return
  breturn:
  //SEG301 [146] return 
    rts
}
//SEG302 mul8u
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte register(X) a, byte register(A) b)
mul8u: {
    .label mb = 6
    .label res = $c
    .label return = $c
  //SEG303 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa 
    sta mb
    lda #0
    sta mb+1
  //SEG304 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
  b1_from_mul8u:
  //SEG305 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy 
  //SEG306 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta res
    lda #>0
    sta res+1
  //SEG307 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy 
    jmp b1
  //SEG308 mul8u::@1
  b1:
  //SEG309 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b2
    jmp breturn
  //SEG310 mul8u::@return
  breturn:
  //SEG311 [151] return 
    rts
  //SEG312 mul8u::@2
  b2:
  //SEG313 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #1
  //SEG314 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b4_from_b2
    jmp b7
  //SEG315 mul8u::@7
  b7:
  //SEG316 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 
    lda res
    clc
    adc mb
    sta res
    lda res+1
    adc mb+1
    sta res+1
  //SEG317 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4]
  b4_from_b2:
  b4_from_b7:
  //SEG318 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy 
    jmp b4
  //SEG319 mul8u::@4
  b4:
  //SEG320 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
  //SEG321 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl mb
    rol mb+1
  //SEG322 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1]
  b1_from_b4:
  //SEG323 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy 
  //SEG324 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy 
  //SEG325 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy 
    jmp b1
}
//SEG326 mulf8s
// Fast multiply two signed bytes to a word result
// mulf8s(signed byte register(A) a, signed byte register(X) b)
mulf8s: {
    .label return = $e
    jmp mulf8s_prepare1
  //SEG327 mulf8s::mulf8s_prepare1
  mulf8s_prepare1:
  //SEG328 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0
  //SEG329 [160] call mulf8u_prepare 
  //SEG330 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare]
  mulf8u_prepare_from_mulf8s_prepare1:
  //SEG331 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    jmp b2
  //SEG332 mulf8s::@2
  b2:
  //SEG333 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx 
    stx mulf8s_prepared.b
  //SEG334 [162] call mulf8s_prepared 
    jsr mulf8s_prepared
  //SEG335 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4
    jmp b4
  //SEG336 mulf8s::@4
  b4:
  //SEG337 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2
    jmp breturn
  //SEG338 mulf8s::@return
  breturn:
  //SEG339 [165] return 
    rts
}
//SEG340 mulf8s_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8s_prepare(byte a)
// mulf8s_prepared(signed byte zeropage(3) b)
mulf8s_prepared: {
    .label memA = $fd
    .label m = $e
    .label b = 3
    .label return = $e
  //SEG341 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 
    ldx b
  //SEG342 [167] call mulf8u_prepared 
  //SEG343 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared]
  mulf8u_prepared_from_mulf8s_prepared:
  //SEG344 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
  //SEG345 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
    jmp b6
  //SEG346 mulf8s_prepared::@6
  b6:
  //SEG347 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
  //SEG348 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 
    lda memA
    cmp #0
    bpl b1_from_b6
    jmp b3
  //SEG349 mulf8s_prepared::@3
  b3:
  //SEG350 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 
    lda m+1
  //SEG351 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 
    sec
    sbc b
  //SEG352 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa 
    sta m+1
  //SEG353 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1]
  b1_from_b3:
  b1_from_b6:
  //SEG354 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy 
    jmp b1
  //SEG355 mulf8s_prepared::@1
  b1:
  //SEG356 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 
    lda b
    cmp #0
    bpl b2_from_b1
    jmp b4
  //SEG357 mulf8s_prepared::@4
  b4:
  //SEG358 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 
    lda m+1
  //SEG359 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 
    sec
    sbc memA
  //SEG360 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa 
    sta m+1
  //SEG361 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG362 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy 
    jmp b2
  //SEG363 mulf8s_prepared::@2
  b2:
    jmp breturn
  //SEG364 mulf8s_prepared::@return
  breturn:
  //SEG365 [180] return 
    rts
}
//SEG366 mulf8u_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8u_prepare(byte a)
// mulf8u_prepared(byte register(X) b)
mulf8u_prepared: {
    .label resL = $fe
    .label memB = $ff
    .label return = $e
  //SEG367 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx 
    stx memB
  //SEG368 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  }
    ldx memB
    sec
  sm1:
    lda mulf_sqr1_lo,x
  sm2:
    sbc mulf_sqr2_lo,x
    sta resL
  sm3:
    lda mulf_sqr1_hi,x
  sm4:
    sbc mulf_sqr2_hi,x
    sta memB
  //SEG369 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda resL
    sta return
    lda memB
    sta return+1
    jmp breturn
  //SEG370 mulf8u_prepared::@return
  breturn:
  //SEG371 [185] return 
    rts
}
//SEG372 mulf8u_prepare
// Prepare for fast multiply with an unsigned byte to a word result
// mulf8u_prepare(byte register(A) a)
mulf8u_prepare: {
    .label memA = $fd
  //SEG373 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa 
    sta memA
  //SEG374 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  }
    lda memA
    sta mulf8u_prepared.sm1+1
    sta mulf8u_prepared.sm3+1
    eor #$ff
    sta mulf8u_prepared.sm2+1
    sta mulf8u_prepared.sm4+1
    jmp breturn
  //SEG375 mulf8u_prepare::@return
  breturn:
  //SEG376 [189] return 
    rts
}
//SEG377 muls8s
// Slow multiplication of signed bytes
// Perform a signed multiplication by repeated addition/subtraction
// muls8s(signed byte zeropage(2) a, signed byte register(X) b)
muls8s: {
    .label m = 8
    .label return = 8
    .label a = 2
  //SEG378 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 
    lda a
    bmi b5_from_muls8s
    jmp b6
  //SEG379 muls8s::@6
  b6:
  //SEG380 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 
    lda a
    cmp #1
    bmi b4_from_b6
  //SEG381 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3]
  b3_from_b6:
  //SEG382 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 
    lda #0
    tay
  //SEG383 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 
    lda #<0
    sta m
    lda #>0
    sta m+1
    jmp b3
  //SEG384 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3]
  b3_from_b3:
  //SEG385 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy 
  //SEG386 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy 
    jmp b3
  //SEG387 muls8s::@3
  b3:
  //SEG388 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx 
    txa
    sta $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta $ff
    clc
    lda m
    adc $fe
    sta m
    lda m+1
    adc $ff
    sta m+1
  //SEG389 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy 
    iny
  //SEG390 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 
    cpy a
    bne b3_from_b3
  //SEG391 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4]
  b4_from_b3:
  b4_from_b5:
  //SEG392 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy 
    jmp b4
  //SEG393 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4]
  b4_from_b6:
  //SEG394 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 
    lda #<0
    sta return
    lda #>0
    sta return+1
    jmp b4
  //SEG395 muls8s::@4
  b4:
    jmp breturn
  //SEG396 muls8s::@return
  breturn:
  //SEG397 [197] return 
    rts
  //SEG398 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5]
  b5_from_muls8s:
  //SEG399 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 
    lda #0
    tay
  //SEG400 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 
    lda #<0
    sta m
    lda #>0
    sta m+1
    jmp b5
  //SEG401 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5]
  b5_from_b5:
  //SEG402 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy 
  //SEG403 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy 
    jmp b5
  //SEG404 muls8s::@5
  b5:
  //SEG405 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx 
    txa
    sta $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta $ff
    sec
    lda m
    sbc $fe
    sta m
    lda m+1
    sbc $ff
    sta m+1
  //SEG406 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy 
    dey
  //SEG407 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 
    cpy a
    bne b5_from_b5
    jmp b4_from_b5
}
//SEG408 mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = 8
    .label mf = $e
    .label mn = $c
    .label b = 3
    .label a = 2
  //SEG409 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
  b1_from_mul8u_compare:
  //SEG410 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta a
    jmp b1
  //SEG411 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1]
  b1_from_b10:
  //SEG412 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy 
    jmp b1
  //SEG413 mul8u_compare::@1
  b1:
  //SEG414 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
  b2_from_b1:
  //SEG415 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta b
    jmp b2
  //SEG416 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
  b2_from_b5:
  //SEG417 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy 
    jmp b2
  //SEG418 mul8u_compare::@2
  b2:
  //SEG419 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
  //SEG420 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx b
  //SEG421 [207] call muls8u 
    jsr muls8u
  //SEG422 [208] (word) muls8u::return#2 ← (word) muls8u::return#0
    jmp b12
  //SEG423 mul8u_compare::@12
  b12:
  //SEG424 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
  //SEG425 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 
    lda a
  //SEG426 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx b
  //SEG427 [212] call mulf8u 
    jsr mulf8u
  //SEG428 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0
    jmp b13
  //SEG429 mul8u_compare::@13
  b13:
  //SEG430 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
  //SEG431 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx a
  //SEG432 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 
    lda b
  //SEG433 [217] call mul8u 
  //SEG434 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u]
  mul8u_from_b13:
  //SEG435 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy 
  //SEG436 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy 
    jsr mul8u
  //SEG437 [218] (word) mul8u::return#3 ← (word) mul8u::res#2
    jmp b14
  //SEG438 mul8u_compare::@14
  b14:
  //SEG439 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
  //SEG440 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 
    lda ms
    cmp mf
    bne !+
    lda ms+1
    cmp mf+1
    beq b3_from_b14
  !:
  //SEG441 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6]
  b6_from_b14:
    jmp b6
  //SEG442 mul8u_compare::@6
  b6:
  //SEG443 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
  b3_from_b6:
  //SEG444 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
  //SEG445 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3]
  b3_from_b14:
  //SEG446 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
    jmp b3
  //SEG447 mul8u_compare::@3
  b3:
  //SEG448 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 
    lda ms
    cmp mn
    bne !+
    lda ms+1
    cmp mn+1
    beq b20_from_b3
  !:
  //SEG449 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
  b4_from_b3:
  //SEG450 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b4
  //SEG451 mul8u_compare::@4
  b4:
  //SEG452 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b5
    jmp b8
  //SEG453 mul8u_compare::@8
  b8:
  //SEG454 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG455 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx a
  //SEG456 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
  //SEG457 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
  //SEG458 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
  //SEG459 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
  //SEG460 [232] call mul8u_error 
  //SEG461 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error]
  mul8u_error_from_b8:
    jsr mul8u_error
    jmp breturn
  //SEG462 mul8u_compare::@return
  breturn:
  //SEG463 [233] return 
    rts
  //SEG464 mul8u_compare::@5
  b5:
  //SEG465 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc b
  //SEG466 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 
    lda b
    cmp #0
    bne b2_from_b5
    jmp b10
  //SEG467 mul8u_compare::@10
  b10:
  //SEG468 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc a
  //SEG469 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 
    lda a
    cmp #0
    bne b1_from_b10
  //SEG470 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11]
  b11_from_b10:
    jmp b11
  //SEG471 mul8u_compare::@11
  b11:
  //SEG472 [239] call print_str 
  //SEG473 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str]
  print_str_from_b11:
  //SEG474 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy 
  //SEG475 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG476 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16]
  b16_from_b11:
    jmp b16
  //SEG477 mul8u_compare::@16
  b16:
  //SEG478 [241] call print_ln 
  //SEG479 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln]
  print_ln_from_b16:
  //SEG480 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy 
  //SEG481 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG482 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20]
  b20_from_b3:
    jmp b20
  //SEG483 mul8u_compare::@20
  b20:
  //SEG484 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4]
  b4_from_b20:
  //SEG485 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy 
    jmp b4
    str: .text "multiply results match!@"
}
//SEG486 mul8u_error
// mul8u_error(byte register(X) a, byte zeropage(3) b, word zeropage(8) ms, word zeropage($c) mn, word zeropage($e) mf)
mul8u_error: {
    .label b = 3
    .label ms = 8
    .label mn = $c
    .label mf = $e
  //SEG487 [244] call print_str 
  //SEG488 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
  print_str_from_mul8u_error:
  //SEG489 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy 
  //SEG490 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b1
  //SEG491 mul8u_error::@1
  b1:
  //SEG492 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
  //SEG493 [246] call print_byte 
  //SEG494 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
  print_byte_from_b1:
  //SEG495 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
  //SEG496 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG497 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2]
  b2_from_b1:
    jmp b2
  //SEG498 mul8u_error::@2
  b2:
  //SEG499 [248] call print_str 
  //SEG500 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
  print_str_from_b2:
  //SEG501 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy 
  //SEG502 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b3
  //SEG503 mul8u_error::@3
  b3:
  //SEG504 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 
    ldx b
  //SEG505 [250] call print_byte 
  //SEG506 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
  print_byte_from_b3:
  //SEG507 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
  //SEG508 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG509 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4]
  b4_from_b3:
    jmp b4
  //SEG510 mul8u_error::@4
  b4:
  //SEG511 [252] call print_str 
  //SEG512 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
  print_str_from_b4:
  //SEG513 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy 
  //SEG514 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG515 mul8u_error::@5
  b5:
  //SEG516 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0
  //SEG517 [254] call print_word 
  //SEG518 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
  print_word_from_b5:
  //SEG519 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy 
  //SEG520 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy 
    jsr print_word
  //SEG521 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6]
  b6_from_b5:
    jmp b6
  //SEG522 mul8u_error::@6
  b6:
  //SEG523 [256] call print_str 
  //SEG524 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
  print_str_from_b6:
  //SEG525 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy 
  //SEG526 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str.str
    lda #>str3
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG527 mul8u_error::@7
  b7:
  //SEG528 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 
    lda mn
    sta print_word.w
    lda mn+1
    sta print_word.w+1
  //SEG529 [258] call print_word 
  //SEG530 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
  print_word_from_b7:
  //SEG531 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy 
  //SEG532 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy 
    jsr print_word
  //SEG533 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8]
  b8_from_b7:
    jmp b8
  //SEG534 mul8u_error::@8
  b8:
  //SEG535 [260] call print_str 
  //SEG536 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
  print_str_from_b8:
  //SEG537 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy 
  //SEG538 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str.str
    lda #>str4
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG539 mul8u_error::@9
  b9:
  //SEG540 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 
    lda mf
    sta print_word.w
    lda mf+1
    sta print_word.w+1
  //SEG541 [262] call print_word 
  //SEG542 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
  print_word_from_b9:
  //SEG543 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy 
  //SEG544 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy 
    jsr print_word
  //SEG545 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10]
  b10_from_b9:
    jmp b10
  //SEG546 mul8u_error::@10
  b10:
  //SEG547 [264] call print_ln 
  //SEG548 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
  print_ln_from_b10:
  //SEG549 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
  //SEG550 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG551 mul8u_error::@return
  breturn:
  //SEG552 [265] return 
    rts
    str: .text "multiply mismatch @"
}
//SEG553 mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte register(A) a, byte register(X) b)
mulf8u: {
    .label return = $e
  //SEG554 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
  //SEG555 [267] call mulf8u_prepare 
  //SEG556 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare]
  mulf8u_prepare_from_mulf8u:
  //SEG557 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    jmp b2
  //SEG558 mulf8u::@2
  b2:
  //SEG559 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
  //SEG560 [269] call mulf8u_prepared 
  //SEG561 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared]
  mulf8u_prepared_from_b2:
  //SEG562 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
  //SEG563 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
    jmp b3
  //SEG564 mulf8u::@3
  b3:
  //SEG565 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
    jmp breturn
  //SEG566 mulf8u::@return
  breturn:
  //SEG567 [272] return 
    rts
}
//SEG568 muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zeropage(2) a, byte register(X) b)
muls8u: {
    .label return = 8
    .label m = 8
    .label a = 2
  //SEG569 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda a
    cmp #0
    beq b1_from_muls8u
  //SEG570 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
  b2_from_muls8u:
  //SEG571 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 
    ldy #0
  //SEG572 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 
    lda #<0
    sta m
    lda #>0
    sta m+1
    jmp b2
  //SEG573 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2]
  b2_from_b2:
  //SEG574 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy 
  //SEG575 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy 
    jmp b2
  //SEG576 muls8u::@2
  b2:
  //SEG577 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx 
    txa
    clc
    adc m
    sta m
    lda #0
    adc m+1
    sta m+1
  //SEG578 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy 
    iny
  //SEG579 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 
    cpy a
    bne b2_from_b2
  //SEG580 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
  b1_from_b2:
  //SEG581 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    jmp b1
  //SEG582 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  b1_from_muls8u:
  //SEG583 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 
    lda #<0
    sta return
    lda #>0
    sta return+1
    jmp b1
  //SEG584 muls8u::@1
  b1:
    jmp breturn
  //SEG585 muls8u::@return
  breturn:
  //SEG586 [279] return 
    rts
}
//SEG587 mulf_tables_cmp
// Compare the ASM-based mul tables with the KC-based mul tables
// Red screen on failure - green on success
mulf_tables_cmp: {
    .label asm_sqr = 8
    .label kc_sqr = 4
  //SEG588 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
  b1_from_mulf_tables_cmp:
  //SEG589 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 
    lda #<mula_sqr1_lo
    sta asm_sqr
    lda #>mula_sqr1_lo
    sta asm_sqr+1
  //SEG590 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo
    sta kc_sqr
    lda #>mulf_sqr1_lo
    sta kc_sqr+1
    jmp b1
  //SEG591 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1]
  b1_from_b2:
  //SEG592 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy 
  //SEG593 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy 
    jmp b1
  //SEG594 mulf_tables_cmp::@1
  b1:
  //SEG595 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 
    ldy #0
    lda (kc_sqr),y
    ldy #0
    cmp (asm_sqr),y
    beq b2
    jmp b3
  //SEG596 mulf_tables_cmp::@3
  b3:
  //SEG597 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG598 [284] call print_str 
  //SEG599 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
  print_str_from_b3:
  //SEG600 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG601 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b6
  //SEG602 mulf_tables_cmp::@6
  b6:
  //SEG603 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
  //SEG604 [286] call print_word 
  //SEG605 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word]
  print_word_from_b6:
  //SEG606 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy 
  //SEG607 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy 
    jsr print_word
  //SEG608 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7]
  b7_from_b6:
    jmp b7
  //SEG609 mulf_tables_cmp::@7
  b7:
  //SEG610 [288] call print_str 
  //SEG611 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str]
  print_str_from_b7:
  //SEG612 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy 
  //SEG613 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b8
  //SEG614 mulf_tables_cmp::@8
  b8:
  //SEG615 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 
    lda kc_sqr
    sta print_word.w
    lda kc_sqr+1
    sta print_word.w+1
  //SEG616 [290] call print_word 
  //SEG617 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
  print_word_from_b8:
  //SEG618 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
  //SEG619 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy 
    jsr print_word
  //SEG620 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return]
  breturn_from_b8:
  //SEG621 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
  //SEG622 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
  //SEG623 mulf_tables_cmp::@return
  breturn:
  //SEG624 [292] return 
    rts
  //SEG625 mulf_tables_cmp::@2
  b2:
  //SEG626 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 
    inc asm_sqr
    bne !+
    inc asm_sqr+1
  !:
  //SEG627 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 
    inc kc_sqr
    bne !+
    inc kc_sqr+1
  !:
  //SEG628 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 
    lda kc_sqr+1
    cmp #>mulf_sqr1_lo+$200*4
    bcc b1_from_b2
    bne !+
    lda kc_sqr
    cmp #<mulf_sqr1_lo+$200*4
    bcc b1_from_b2
  !:
  //SEG629 [296] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5]
  b5_from_b2:
    jmp b5
  //SEG630 mulf_tables_cmp::@5
  b5:
  //SEG631 [297] call print_str 
  //SEG632 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
  print_str_from_b5:
  //SEG633 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG634 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG635 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10]
  b10_from_b5:
    jmp b10
  //SEG636 mulf_tables_cmp::@10
  b10:
  //SEG637 [299] call print_ln 
  //SEG638 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln]
  print_ln_from_b10:
  //SEG639 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy 
  //SEG640 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
    jsr print_ln
  //SEG641 [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG642 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
  breturn_from_b10:
  //SEG643 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy 
  //SEG644 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
    str: .text "multiply table mismatch at @"
    str1: .text " / @"
    str2: .text "multiply tables match!@"
}
//SEG645 mulf_init_asm
// Initialize the multiplication tables using ASM code from
// http://codebase64.org/doku.php?id=base:seriously_fast_multiplication
mulf_init_asm: {
    // Ensure the ASM tables are not detected as unused by the optimizer
    .label mem = $ff
  //SEG646 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!-  }
    ldx #0
    txa
    .byte $c9
  lb1:
    tya
    adc #0
  ml1:
    sta mula_sqr1_hi,x
    tay
    cmp #$40
    txa
    ror
  ml9:
    adc #0
    sta ml9+1
    inx
  ml0:
    sta mula_sqr1_lo,x
    bne lb1
    inc ml0+2
    inc ml1+2
    clc
    iny
    bne lb1
    ldx #0
    ldy #$ff
  !:
    lda mula_sqr1_hi+1,x
    sta mula_sqr2_hi+$100,x
    lda mula_sqr1_hi,x
    sta mula_sqr2_hi,y
    lda mula_sqr1_lo+1,x
    sta mula_sqr2_lo+$100,x
    lda mula_sqr1_lo,x
    sta mula_sqr2_lo,y
    dey
    inx
    bne !-
  //SEG647 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
  //SEG648 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
  //SEG649 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
  //SEG650 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
    jmp breturn
  //SEG651 mulf_init_asm::@return
  breturn:
  //SEG652 [306] return 
    rts
}
//SEG653 mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    .label sqr1_hi = 6
    .label sqr = 8
    .label sqr1_lo = 4
    .label x_2 = 2
    .label sqr2_hi = 6
    .label sqr2_lo = 4
    .label dir = 2
  //SEG654 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  b1_from_mulf_init:
  //SEG655 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta x_2
  //SEG656 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_hi+1
    sta sqr1_hi
    lda #>mulf_sqr1_hi+1
    sta sqr1_hi+1
  //SEG657 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo+1
    sta sqr1_lo
    lda #>mulf_sqr1_lo+1
    sta sqr1_lo+1
  //SEG658 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 
    lda #<0
    sta sqr
    lda #>0
    sta sqr+1
  //SEG659 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 
    ldx #0
    jmp b1
  //SEG660 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1]
  b1_from_b2:
  //SEG661 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy 
  //SEG662 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy 
  //SEG663 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy 
  //SEG664 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy 
  //SEG665 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy 
    jmp b1
  //SEG666 mulf_init::@1
  b1:
  //SEG667 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG668 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #1
  //SEG669 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne b2_from_b1
    jmp b5
  //SEG670 mulf_init::@5
  b5:
  //SEG671 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 
    inc x_2
  //SEG672 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc sqr
    bne !+
    inc sqr+1
  !:
  //SEG673 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2]
  b2_from_b1:
  b2_from_b5:
  //SEG674 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy 
  //SEG675 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy 
    jmp b2
  //SEG676 mulf_init::@2
  b2:
  //SEG677 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 
    lda sqr
  //SEG678 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_lo),y
  //SEG679 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 
    lda sqr+1
  //SEG680 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_hi),y
  //SEG681 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 
    inc sqr1_hi
    bne !+
    inc sqr1_hi+1
  !:
  //SEG682 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda x_2
    clc
    adc sqr
    sta sqr
    lda #0
    adc sqr+1
    sta sqr+1
  //SEG683 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 
    inc sqr1_lo
    bne !+
    inc sqr1_lo+1
  !:
  //SEG684 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sqr1_lo+1
    cmp #>mulf_sqr1_lo+$200
    bne b1_from_b2
    lda sqr1_lo
    cmp #<mulf_sqr1_lo+$200
    bne b1_from_b2
  //SEG685 [323] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3]
  b3_from_b2:
  //SEG686 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 
    lda #$ff
    sta dir
  //SEG687 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_hi
    sta sqr2_hi
    lda #>mulf_sqr2_hi
    sta sqr2_hi+1
  //SEG688 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_lo
    sta sqr2_lo
    lda #>mulf_sqr2_lo
    sta sqr2_lo+1
  //SEG689 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 
    ldx #-1
    jmp b3
  //SEG690 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3]
  b3_from_b4:
  //SEG691 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy 
  //SEG692 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy 
  //SEG693 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy 
  //SEG694 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy 
    jmp b3
  //SEG695 mulf_init::@3
  b3:
  //SEG696 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda mulf_sqr1_lo,x
    ldy #0
    sta (sqr2_lo),y
  //SEG697 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda mulf_sqr1_hi,x
    ldy #0
    sta (sqr2_hi),y
  //SEG698 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 
    inc sqr2_hi
    bne !+
    inc sqr2_hi+1
  !:
  //SEG699 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 
    txa
    clc
    adc dir
    tax
  //SEG700 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b12_from_b3
  //SEG701 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4]
  b4_from_b3:
  //SEG702 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 
    lda #1
    sta dir
    jmp b4
  //SEG703 mulf_init::@4
  b4:
  //SEG704 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 
    inc sqr2_lo
    bne !+
    inc sqr2_lo+1
  !:
  //SEG705 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 
    lda sqr2_lo+1
    cmp #>mulf_sqr2_lo+$1ff
    bne b3_from_b4
    lda sqr2_lo
    cmp #<mulf_sqr2_lo+$1ff
    bne b3_from_b4
    jmp b8
  //SEG706 mulf_init::@8
  b8:
  //SEG707 [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) -- _deref_pbuc1=_deref_pbuc2 
    // Set the very last value g(511) = f(256)
    lda mulf_sqr1_lo+$100
    sta mulf_sqr2_lo+$1ff
  //SEG708 [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
    jmp breturn
  //SEG709 mulf_init::@return
  breturn:
  //SEG710 [334] return 
    rts
  //SEG711 [335] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12]
  b12_from_b3:
    jmp b12
  //SEG712 mulf_init::@12
  b12:
  //SEG713 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4]
  b4_from_b12:
  //SEG714 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy 
    jmp b4
}
//SEG715 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = 4
  //SEG716 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  b1_from_print_cls:
  //SEG717 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
    jmp b1
  //SEG718 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  b1_from_b1:
  //SEG719 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
    jmp b1
  //SEG720 print_cls::@1
  b1:
  //SEG721 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG722 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG723 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1_from_b1
    lda sc
    cmp #<$400+$3e8
    bne b1_from_b1
    jmp breturn
  //SEG724 print_cls::@return
  breturn:
  //SEG725 [341] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255).
  // <f(x) = <(( x * x )/4)
  .align $100
  mulf_sqr1_lo: .fill $200, 0
  // >f(x) = >(( x * x )/4)
  .align $100
  mulf_sqr1_hi: .fill $200, 0
  // <g(x) =  <((( x - 255) * ( x - 255 ))/4)
  .align $100
  mulf_sqr2_lo: .fill $200, 0
  // >g(x) = >((( x - 255) * ( x - 255 ))/4)
  .align $100
  mulf_sqr2_hi: .fill $200, 0
  // ASM based multiplication tables
  // <(( x * x )/4)
  .align $100
  mula_sqr1_lo: .fill $200, 0
  // >(( x * x )/4)
  .align $100
  mula_sqr1_hi: .fill $200, 0
  // <((( x - 255) * ( x - 255 ))/4)
  .align $100
  mula_sqr2_lo: .fill $200, 0
  // >((( x - 255) * ( x - 255 ))/4)
  .align $100
  mula_sqr2_hi: .fill $200, 0
  str4: .text " / fast:@"
  str3: .text " / normal:@"
  str1: .text "*@"
  str2: .text " slow:@"

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b42
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp b5
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b12
Removing instruction jmp b13
Removing instruction jmp b14
Removing instruction jmp b6
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp b8
Removing instruction jmp breturn
Removing instruction jmp b10
Removing instruction jmp b11
Removing instruction jmp b16
Removing instruction jmp b20
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp b5
Removing instruction jmp b6
Removing instruction jmp b7
Removing instruction jmp b8
Removing instruction jmp b9
Removing instruction jmp b10
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp b4
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp b3
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b5
Removing instruction jmp b6
Removing instruction jmp b3
Removing instruction jmp b1
Removing instruction jmp b4
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b7
Removing instruction jmp b4
Removing instruction jmp mulf8s_prepare1
Removing instruction jmp b2
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b6
Removing instruction jmp b3
Removing instruction jmp b1
Removing instruction jmp b4
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp b6
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b5
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b12
Removing instruction jmp b13
Removing instruction jmp b14
Removing instruction jmp b6
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp b8
Removing instruction jmp breturn
Removing instruction jmp b10
Removing instruction jmp b11
Removing instruction jmp b16
Removing instruction jmp b20
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp b5
Removing instruction jmp b6
Removing instruction jmp b7
Removing instruction jmp b8
Removing instruction jmp b9
Removing instruction jmp b10
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b3
Removing instruction jmp b6
Removing instruction jmp b7
Removing instruction jmp b8
Removing instruction jmp breturn
Removing instruction jmp b5
Removing instruction jmp b10
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b5
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp b8
Removing instruction jmp breturn
Removing instruction jmp b12
Removing instruction jmp b1
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy #0
Removing instruction lda #>0
Removing instruction ldx memB
Removing instruction lda memA
Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #<0
Removing instruction lda #>0
Replacing instruction lda #<0 with TYA
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction ldy #0
Removing instruction lda #>0
Replacing instruction ldx #0 with TAX
Removing instruction ldy #0
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b20_from_b3 with b20
Replacing label b2_from_b5 with b2
Replacing label b1_from_b10 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b2 with b1
Replacing label b1_from_print_sword with b1
Replacing label b1_from_print_sbyte with b1
Replacing label b2_from_b5 with b2
Replacing label b1_from_b6 with b1
Replacing label b2_from_b1 with b2
Replacing label b4_from_b2 with b4
Replacing label b1_from_b6 with b1
Replacing label b2_from_b1 with b2
Replacing label b3_from_b3 with b3
Replacing label b5_from_b5 with b5
Replacing label b20_from_b3 with b20
Replacing label b2_from_b5 with b2
Replacing label b1_from_b10 with b1
Replacing label b2_from_b2 with b2
Replacing label b1_from_b2 with b1
Replacing label b1_from_b2 with b1
Replacing label b2_from_b1 with b2
Replacing label b1_from_b2 with b1
Replacing label b1_from_b2 with b1
Replacing label b12_from_b3 with b12
Replacing label b3_from_b4 with b3
Replacing label b3_from_b4 with b3
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Removing instruction b42_from_bbegin:
Removing instruction b42:
Removing instruction bend_from_b42:
Removing instruction b1_from_main:
Removing instruction mulf_init_from_b1:
Removing instruction b2_from_b1:
Removing instruction b3_from_b2:
Removing instruction mulf_tables_cmp_from_b3:
Removing instruction b4_from_b3:
Removing instruction mul8u_compare_from_b4:
Removing instruction b5_from_b4:
Removing instruction mul8s_compare_from_b5:
Removing instruction b1_from_b10:
Removing instruction b2_from_b1:
Removing instruction b2_from_b5:
Removing instruction b6_from_b14:
Removing instruction b3_from_b6:
Removing instruction b16_from_b11:
Removing instruction print_ln_from_b16:
Removing instruction b20_from_b3:
Removing instruction b4_from_b20:
Removing instruction b1_from_print_ln:
Removing instruction b1_from_b1:
Removing instruction b1_from_print_str:
Removing instruction b1_from_b2:
Removing instruction print_sbyte_from_b1:
Removing instruction b2_from_b1:
Removing instruction print_str_from_b2:
Removing instruction b4_from_b3:
Removing instruction print_str_from_b4:
Removing instruction print_sword_from_b5:
Removing instruction b6_from_b5:
Removing instruction print_str_from_b6:
Removing instruction b8_from_b7:
Removing instruction print_str_from_b8:
Removing instruction b10_from_b9:
Removing instruction print_ln_from_b10:
Removing instruction b2_from_print_sword:
Removing instruction print_char_from_b2:
Removing instruction b1_from_print_sword:
Removing instruction b1_from_b4:
Removing instruction print_word_from_b1:
Removing instruction b3_from_print_sbyte:
Removing instruction print_char_from_b3:
Removing instruction b2_from_b3:
Removing instruction b2_from_b5:
Removing instruction print_byte_from_b2:
Removing instruction b1_from_print_sbyte:
Removing instruction print_char_from_b1:
Removing instruction b1_from_b3:
Removing instruction b1_from_b6:
Removing instruction b2_from_b1:
Removing instruction b2_from_b4:
Removing instruction breturn:
Removing instruction b4_from_b2:
Removing instruction b4_from_b7:
Removing instruction mulf8u_prepare_from_mulf8s_prepare1:
Removing instruction breturn:
Removing instruction b1_from_b3:
Removing instruction b1_from_b6:
Removing instruction b2_from_b1:
Removing instruction b2_from_b4:
Removing instruction breturn:
Removing instruction b3_from_b3:
Removing instruction b4_from_b3:
Removing instruction breturn:
Removing instruction b5_from_b5:
Removing instruction b1_from_b10:
Removing instruction b2_from_b1:
Removing instruction b2_from_b5:
Removing instruction b6_from_b14:
Removing instruction b3_from_b6:
Removing instruction b11_from_b10:
Removing instruction print_str_from_b11:
Removing instruction b16_from_b11:
Removing instruction print_ln_from_b16:
Removing instruction b20_from_b3:
Removing instruction b4_from_b20:
Removing instruction print_byte_from_b1:
Removing instruction b2_from_b1:
Removing instruction print_str_from_b2:
Removing instruction b4_from_b3:
Removing instruction print_str_from_b4:
Removing instruction print_word_from_b5:
Removing instruction b6_from_b5:
Removing instruction print_str_from_b6:
Removing instruction b8_from_b7:
Removing instruction print_str_from_b8:
Removing instruction b10_from_b9:
Removing instruction print_ln_from_b10:
Removing instruction mulf8u_prepared_from_b2:
Removing instruction breturn:
Removing instruction b2_from_b2:
Removing instruction breturn:
Removing instruction b1_from_b2:
Removing instruction print_word_from_b6:
Removing instruction b7_from_b6:
Removing instruction print_str_from_b7:
Removing instruction b5_from_b2:
Removing instruction print_str_from_b5:
Removing instruction b10_from_b5:
Removing instruction print_ln_from_b10:
Removing instruction b1_from_b2:
Removing instruction b2_from_b1:
Removing instruction b2_from_b5:
Removing instruction b3_from_b4:
Removing instruction b12_from_b3:
Removing instruction b4_from_b12:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction bend:
Removing instruction print_cls_from_main:
Removing instruction b1:
Removing instruction b2:
Removing instruction b3:
Removing instruction b4:
Removing instruction b5:
Removing instruction breturn:
Removing instruction b1_from_mul8s_compare:
Removing instruction b12:
Removing instruction mulf8s_from_b12:
Removing instruction b13:
Removing instruction b14:
Removing instruction b6:
Removing instruction b4_from_b3:
Removing instruction b8:
Removing instruction b10:
Removing instruction b11:
Removing instruction print_str_from_b11:
Removing instruction b16:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction print_str_from_mul8s_error:
Removing instruction b1:
Removing instruction b2:
Removing instruction b3:
Removing instruction print_sbyte_from_b3:
Removing instruction b4:
Removing instruction b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction print_sword_from_b7:
Removing instruction b8:
Removing instruction b9:
Removing instruction print_sword_from_b9:
Removing instruction b10:
Removing instruction breturn:
Removing instruction b2:
Removing instruction b4:
Removing instruction breturn:
Removing instruction print_byte_from_print_word:
Removing instruction b1:
Removing instruction print_byte_from_b1:
Removing instruction breturn:
Removing instruction print_char_from_print_byte:
Removing instruction b1:
Removing instruction print_char_from_b1:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b5:
Removing instruction mul8u_from_mul8s:
Removing instruction b6:
Removing instruction b3:
Removing instruction b4:
Removing instruction b1_from_mul8u:
Removing instruction breturn:
Removing instruction b7:
Removing instruction b1_from_b4:
Removing instruction mulf8s_prepare1:
Removing instruction b2:
Removing instruction b4:
Removing instruction mulf8u_prepared_from_mulf8s_prepared:
Removing instruction b6:
Removing instruction b3:
Removing instruction b4:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b6:
Removing instruction b3_from_b6:
Removing instruction b1_from_mul8u_compare:
Removing instruction b12:
Removing instruction b13:
Removing instruction mul8u_from_b13:
Removing instruction b14:
Removing instruction b6:
Removing instruction b4_from_b3:
Removing instruction b8:
Removing instruction mul8u_error_from_b8:
Removing instruction b10:
Removing instruction b11:
Removing instruction b16:
Removing instruction print_str_from_mul8u_error:
Removing instruction b1:
Removing instruction b2:
Removing instruction b3:
Removing instruction print_byte_from_b3:
Removing instruction b4:
Removing instruction b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction print_word_from_b7:
Removing instruction b8:
Removing instruction b9:
Removing instruction print_word_from_b9:
Removing instruction b10:
Removing instruction breturn:
Removing instruction mulf8u_prepare_from_mulf8u:
Removing instruction b2:
Removing instruction b3:
Removing instruction b2_from_muls8u:
Removing instruction b1_from_b2:
Removing instruction b1_from_mulf_tables_cmp:
Removing instruction b3:
Removing instruction print_str_from_b3:
Removing instruction b6:
Removing instruction b7:
Removing instruction b8:
Removing instruction print_word_from_b8:
Removing instruction breturn_from_b8:
Removing instruction b5:
Removing instruction b10:
Removing instruction breturn_from_b10:
Removing instruction breturn:
Removing instruction b1_from_mulf_init:
Removing instruction b5:
Removing instruction b3_from_b2:
Removing instruction b4_from_b3:
Removing instruction b8:
Removing instruction breturn:
Removing instruction b1_from_print_cls:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Skipping double jump to b4 in beq b20
Skipping double jump to b4 in jmp b4_from_b5
Skipping double jump to b4 in beq b20
Skipping double jump to b4 in bne b12
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label b3_from_b14 to b6
Relabelling long label b4_from_b5 to b1
Relabelling long label b4_from_b6 to b2
Relabelling long label b5_from_muls8s to b6
Relabelling long label b3_from_b14 to b6
Relabelling long label b1_from_muls8u to b3
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b5
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b3
Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #<0
Removing instruction lda a
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction bbegin:
Removing instruction b20:
Removing instruction b1:
Removing instruction b20:
Removing instruction b12:
Succesful ASM optimization Pass5UnusedLabelElimination
Removing unreachable instruction jmp b4
Removing unreachable instruction jmp b4
Removing unreachable instruction jmp b4
Succesful ASM optimization Pass5UnreachableCodeElimination

FINAL SYMBOL TABLE
(label) @42
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@return
(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
(byte~) mul8s::$12 reg byte a 4.0
(byte~) mul8s::$16 reg byte a 4.0
(byte~) mul8s::$17 reg byte a 4.0
(byte~) mul8s::$6 reg byte a 4.0
(label) mul8s::@1
(label) mul8s::@2
(label) mul8s::@3
(label) mul8s::@4
(label) mul8s::@6
(label) mul8s::@return
(signed byte) mul8s::a
(signed byte) mul8s::a#0 a zp ZP_BYTE:2 7.357142857142858
(signed byte) mul8s::b
(signed byte) mul8s::b#0 reg byte y 9.363636363636363
(word) mul8s::m
(word) mul8s::m#0 m zp ZP_WORD:12 2.0
(word) mul8s::m#1 m zp ZP_WORD:12 4.0
(word) mul8s::m#2 m zp ZP_WORD:12 4.0
(word) mul8s::m#4 m zp ZP_WORD:12 1.3333333333333333
(word) mul8s::m#5 m zp ZP_WORD:12 2.5
(signed word) mul8s::return
(signed word) mul8s::return#2 return zp ZP_WORD:12 202.0
(void()) mul8s_compare()
(label) mul8s_compare::@1
(label) mul8s_compare::@10
(label) mul8s_compare::@11
(label) mul8s_compare::@12
(label) mul8s_compare::@13
(label) mul8s_compare::@14
(label) mul8s_compare::@16
(label) mul8s_compare::@2
(label) mul8s_compare::@20
(label) mul8s_compare::@3
(label) mul8s_compare::@4
(label) mul8s_compare::@5
(label) mul8s_compare::@6
(label) mul8s_compare::@8
(label) mul8s_compare::@return
(signed byte) mul8s_compare::a
(signed byte) mul8s_compare::a#1 a zp ZP_BYTE:2 16.5
(signed byte) mul8s_compare::a#7 a zp ZP_BYTE:2 12.11111111111111
(signed byte) mul8s_compare::b
(signed byte) mul8s_compare::b#1 b zp ZP_BYTE:3 151.5
(signed byte) mul8s_compare::b#10 b zp ZP_BYTE:3 20.279999999999998
(signed word) mul8s_compare::mf
(signed word) mul8s_compare::mf#0 mf zp ZP_WORD:14 11.333333333333332
(signed word) mul8s_compare::mn
(signed word) mul8s_compare::mn#0 mn zp ZP_WORD:12 17.0
(signed word) mul8s_compare::ms
(signed word) mul8s_compare::ms#0 ms zp ZP_WORD:8 14.523809523809522
(byte) mul8s_compare::ok
(byte) mul8s_compare::ok#3 reg byte x 202.0
(byte) mul8s_compare::ok#4 reg byte x 33.666666666666664
(const string) mul8s_compare::str str = (string) "signed multiply results match!@"
(void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf)
(label) mul8s_error::@1
(label) mul8s_error::@10
(label) mul8s_error::@2
(label) mul8s_error::@3
(label) mul8s_error::@4
(label) mul8s_error::@5
(label) mul8s_error::@6
(label) mul8s_error::@7
(label) mul8s_error::@8
(label) mul8s_error::@9
(label) mul8s_error::@return
(signed byte) mul8s_error::a
(signed byte) mul8s_error::a#0 reg byte x 0.5714285714285714
(signed byte) mul8s_error::b
(signed byte) mul8s_error::b#0 b zp ZP_BYTE:3 0.4
(signed word) mul8s_error::mf
(signed word) mul8s_error::mf#0 mf zp ZP_WORD:14 0.21052631578947367
(signed word) mul8s_error::mn
(signed word) mul8s_error::mn#0 mn zp ZP_WORD:12 0.25
(signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077
(const string) mul8s_error::str str = (string) "signed multiply mismatch @"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1
(label) mul8u::@2
(label) mul8u::@4
(label) mul8u::@7
(label) mul8u::@return
(byte) mul8u::a
(byte) mul8u::a#0 reg byte x 1001.0
(byte) mul8u::a#2 reg byte x 101.0
(byte) mul8u::a#3 reg byte x 667.6666666666667
(byte) mul8u::a#6 reg byte x 52.5
(byte~) mul8u::a#8 reg byte x 4.0
(byte) mul8u::b
(byte) mul8u::b#1 reg byte a 202.0
(byte) mul8u::b#2 reg byte a 105.0
(byte~) mul8u::b#3 reg byte a 2.0
(word) mul8u::mb
(word) mul8u::mb#0 mb zp ZP_WORD:6 4.0
(word) mul8u::mb#1 mb zp ZP_WORD:6 2002.0
(word) mul8u::mb#2 mb zp ZP_WORD:6 429.2857142857143
(word) mul8u::res
(word) mul8u::res#1 res zp ZP_WORD:12 2002.0
(word) mul8u::res#2 res zp ZP_WORD:12 443.7142857142857
(word) mul8u::res#6 res zp ZP_WORD:12 1001.0
(word) mul8u::return
(word) mul8u::return#2 return zp ZP_WORD:12 4.0
(word) mul8u::return#3 return zp ZP_WORD:12 202.0
(void()) mul8u_compare()
(label) mul8u_compare::@1
(label) mul8u_compare::@10
(label) mul8u_compare::@11
(label) mul8u_compare::@12
(label) mul8u_compare::@13
(label) mul8u_compare::@14
(label) mul8u_compare::@16
(label) mul8u_compare::@2
(label) mul8u_compare::@20
(label) mul8u_compare::@3
(label) mul8u_compare::@4
(label) mul8u_compare::@5
(label) mul8u_compare::@6
(label) mul8u_compare::@8
(label) mul8u_compare::@return
(byte) mul8u_compare::a
(byte) mul8u_compare::a#1 a zp ZP_BYTE:2 16.5
(byte) mul8u_compare::a#7 a zp ZP_BYTE:2 12.11111111111111
(byte) mul8u_compare::b
(byte) mul8u_compare::b#1 b zp ZP_BYTE:3 151.5
(byte) mul8u_compare::b#10 b zp ZP_BYTE:3 20.279999999999998
(word) mul8u_compare::mf
(word) mul8u_compare::mf#0 mf zp ZP_WORD:14 11.333333333333332
(word) mul8u_compare::mn
(word) mul8u_compare::mn#0 mn zp ZP_WORD:12 17.0
(word) mul8u_compare::ms
(word) mul8u_compare::ms#0 ms zp ZP_WORD:8 14.523809523809522
(byte) mul8u_compare::ok
(byte) mul8u_compare::ok#3 reg byte x 202.0
(byte) mul8u_compare::ok#4 reg byte x 33.666666666666664
(const string) mul8u_compare::str str = (string) "multiply results match!@"
(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
(label) mul8u_error::@1
(label) mul8u_error::@10
(label) mul8u_error::@2
(label) mul8u_error::@3
(label) mul8u_error::@4
(label) mul8u_error::@5
(label) mul8u_error::@6
(label) mul8u_error::@7
(label) mul8u_error::@8
(label) mul8u_error::@9
(label) mul8u_error::@return
(byte) mul8u_error::a
(byte) mul8u_error::a#0 reg byte x 0.5714285714285714
(byte) mul8u_error::b
(byte) mul8u_error::b#0 b zp ZP_BYTE:3 0.4
(word) mul8u_error::mf
(word) mul8u_error::mf#0 mf zp ZP_WORD:14 0.21052631578947367
(word) mul8u_error::mn
(word) mul8u_error::mn#0 mn zp ZP_WORD:12 0.25
(word) mul8u_error::ms
(word) mul8u_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077
(const string) mul8u_error::str str = (string) "multiply mismatch @"
(byte[512]) mula_sqr1_hi
(const byte[512]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( 512, 0) }
(byte[512]) mula_sqr1_lo
(const byte[512]) mula_sqr1_lo#0 mula_sqr1_lo = { fill( 512, 0) }
(byte[512]) mula_sqr2_hi
(const byte[512]) mula_sqr2_hi#0 mula_sqr2_hi = { fill( 512, 0) }
(byte[512]) mula_sqr2_lo
(const byte[512]) mula_sqr2_lo#0 mula_sqr2_lo = { fill( 512, 0) }
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
(label) mulf8s::@2
(label) mulf8s::@4
(label) mulf8s::@return
(signed byte) mulf8s::a
(signed byte) mulf8s::a#0 reg byte a 33.666666666666664
(signed byte) mulf8s::b
(signed byte) mulf8s::b#0 reg byte x 25.75
(label) mulf8s::mulf8s_prepare1
(byte~) mulf8s::mulf8s_prepare1_$0
(signed byte) mulf8s::mulf8s_prepare1_a
(signed word) mulf8s::return
(signed word) mulf8s::return#0 return zp ZP_WORD:14 34.33333333333333
(signed word) mulf8s::return#2 return zp ZP_WORD:14 202.0
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
(byte~) mulf8s_prepared::$11 reg byte a 4.0
(byte~) mulf8s_prepared::$15 reg byte a 4.0
(byte~) mulf8s_prepared::$16 reg byte a 4.0
(byte~) mulf8s_prepared::$5 reg byte a 4.0
(label) mulf8s_prepared::@1
(label) mulf8s_prepared::@2
(label) mulf8s_prepared::@3
(label) mulf8s_prepared::@4
(label) mulf8s_prepared::@6
(label) mulf8s_prepared::@return
(signed byte) mulf8s_prepared::b
(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.4
(word) mulf8s_prepared::m
(word) mulf8s_prepared::m#0 m zp ZP_WORD:14 2.0
(word) mulf8s_prepared::m#1 m zp ZP_WORD:14 4.0
(word) mulf8s_prepared::m#2 m zp ZP_WORD:14 4.0
(word) mulf8s_prepared::m#4 m zp ZP_WORD:14 1.3333333333333333
(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.5
(signed byte*) mulf8s_prepared::memA
(const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253
(signed word) mulf8s_prepared::return
(signed word) mulf8s_prepared::return#2 return zp ZP_WORD:14 4.0
(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
(label) mulf8u::@2
(label) mulf8u::@3
(label) mulf8u::@return
(byte) mulf8u::a
(byte) mulf8u::a#0 reg byte a 51.5
(byte) mulf8u::b
(byte) mulf8u::b#0 reg byte x 34.33333333333333
(word) mulf8u::return
(word) mulf8u::return#0 return zp ZP_WORD:14 34.33333333333333
(word) mulf8u::return#2 return zp ZP_WORD:14 202.0
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
(label) mulf8u_prepare::@return
(byte) mulf8u_prepare::a
(byte) mulf8u_prepare::a#0 reg byte a 4.0
(byte) mulf8u_prepare::a#2 reg byte a 6.0
(byte~) mulf8u_prepare::a#3 reg byte a 4.0
(byte*) mulf8u_prepare::memA
(const byte*) mulf8u_prepare::memA#0 memA = ((byte*))(byte/word/signed word/dword/signed dword) 253
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
(label) mulf8u_prepared::@return
(byte) mulf8u_prepared::b
(byte) mulf8u_prepared::b#0 reg byte x 4.0
(byte) mulf8u_prepared::b#2 reg byte x 6.0
(byte~) mulf8u_prepared::b#3 reg byte x 4.0
(byte*) mulf8u_prepared::memB
(const byte*) mulf8u_prepared::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255
(byte*) mulf8u_prepared::resL
(const byte*) mulf8u_prepared::resL#0 resL = ((byte*))(byte/word/signed word/dword/signed dword) 254
(word) mulf8u_prepared::return
(word) mulf8u_prepared::return#0 return zp ZP_WORD:14 1.5
(word) mulf8u_prepared::return#2 return zp ZP_WORD:14 4.0
(word) mulf8u_prepared::return#3 return zp ZP_WORD:14 4.0
(void()) mulf_init()
(byte~) mulf_init::$2 reg byte a 22.0
(byte~) mulf_init::$5 reg byte a 22.0
(byte~) mulf_init::$6 reg byte a 22.0
(label) mulf_init::@1
(label) mulf_init::@12
(label) mulf_init::@2
(label) mulf_init::@3
(label) mulf_init::@4
(label) mulf_init::@5
(label) mulf_init::@8
(label) mulf_init::@return
(byte) mulf_init::c
(byte) mulf_init::c#1 reg byte x 2.357142857142857
(byte) mulf_init::c#2 reg byte x 22.0
(byte) mulf_init::dir
(byte) mulf_init::dir#2 dir zp ZP_BYTE:2 4.714285714285714
(byte) mulf_init::dir#3 dir zp ZP_BYTE:2 7.333333333333333
(word) mulf_init::sqr
(word) mulf_init::sqr#1 sqr zp ZP_WORD:8 7.333333333333333
(word) mulf_init::sqr#2 sqr zp ZP_WORD:8 22.0
(word) mulf_init::sqr#3 sqr zp ZP_WORD:8 9.166666666666666
(word) mulf_init::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005
(byte*) mulf_init::sqr1_hi
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0
(byte*) mulf_init::sqr1_lo
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383
(byte*) mulf_init::sqr2_hi
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0
(byte*) mulf_init::sqr2_lo
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125
(byte) mulf_init::x_2
(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:2 11.0
(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889
(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:2 8.25
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 5.5
(byte) mulf_init::x_255#2 reg byte x 11.0
(void()) mulf_init_asm()
(label) mulf_init_asm::@return
(byte*) mulf_init_asm::mem
(const byte*) mulf_init_asm::mem#0 mem = ((byte*))(byte/word/signed word/dword/signed dword) 255
(byte[512]) mulf_sqr1_hi
(const byte[512]) mulf_sqr1_hi#0 mulf_sqr1_hi = { fill( 512, 0) }
(byte[512]) mulf_sqr1_lo
(const byte[512]) mulf_sqr1_lo#0 mulf_sqr1_lo = { fill( 512, 0) }
(byte[512]) mulf_sqr2_hi
(const byte[512]) mulf_sqr2_hi#0 mulf_sqr2_hi = { fill( 512, 0) }
(byte[512]) mulf_sqr2_lo
(const byte[512]) mulf_sqr2_lo#0 mulf_sqr2_lo = { fill( 512, 0) }
(void()) mulf_tables_cmp()
(label) mulf_tables_cmp::@1
(label) mulf_tables_cmp::@10
(label) mulf_tables_cmp::@2
(label) mulf_tables_cmp::@3
(label) mulf_tables_cmp::@5
(label) mulf_tables_cmp::@6
(label) mulf_tables_cmp::@7
(label) mulf_tables_cmp::@8
(label) mulf_tables_cmp::@return
(byte*) mulf_tables_cmp::asm_sqr
(byte*) mulf_tables_cmp::asm_sqr#1 asm_sqr zp ZP_WORD:8 7.333333333333333
(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp ZP_WORD:8 8.25
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp ZP_WORD:4 16.5
(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.666666666666667
(const string) mulf_tables_cmp::str str = (string) "multiply table mismatch at @"
(const string) mulf_tables_cmp::str1 str1 = (string) " / @"
(const string) mulf_tables_cmp::str2 str2 = (string) "multiply tables match!@"
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(label) muls8s::@3
(label) muls8s::@4
(label) muls8s::@5
(label) muls8s::@6
(label) muls8s::@return
(signed byte) muls8s::a
(signed byte) muls8s::a#0 a zp ZP_BYTE:2 175.58333333333334
(signed byte) muls8s::b
(signed byte) muls8s::b#0 reg byte x 191.1818181818182
(signed byte) muls8s::i
(signed byte) muls8s::i#1 reg byte y 1501.5
(signed byte) muls8s::i#2 reg byte y 1001.0
(signed byte) muls8s::j
(signed byte) muls8s::j#1 reg byte y 1501.5
(signed byte) muls8s::j#2 reg byte y 1001.0
(signed word) muls8s::m
(signed word) muls8s::m#1 m zp ZP_WORD:8 1001.0
(signed word) muls8s::m#2 m zp ZP_WORD:8 1001.0
(signed word) muls8s::m#3 m zp ZP_WORD:8 2002.0
(signed word) muls8s::m#5 m zp ZP_WORD:8 2002.0
(signed word) muls8s::return
(signed word) muls8s::return#0 return zp ZP_WORD:8 701.0
(signed word) muls8s::return#2 return zp ZP_WORD:8 202.0
(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
(label) muls8u::@1
(label) muls8u::@2
(label) muls8u::@return
(byte) muls8u::a
(byte) muls8u::a#0 a zp ZP_BYTE:2 157.71428571428572
(byte) muls8u::b
(byte) muls8u::b#0 reg byte x 183.66666666666669
(byte) muls8u::i
(byte) muls8u::i#1 reg byte y 1501.5
(byte) muls8u::i#2 reg byte y 1001.0
(word) muls8u::m
(word) muls8u::m#1 m zp ZP_WORD:8 1001.0
(word) muls8u::m#3 m zp ZP_WORD:8 2002.0
(word) muls8u::return
(word) muls8u::return#0 return zp ZP_WORD:8 367.33333333333337
(word) muls8u::return#2 return zp ZP_WORD:8 202.0
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte a 4.0
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#1 reg byte x 4.0
(byte) print_byte::b#2 reg byte x 4.0
(byte) print_byte::b#3 reg byte x 4.0
(byte) print_byte::b#4 reg byte x 4.0
(byte) print_byte::b#5 reg byte x 3.5
(byte~) print_byte::b#9 reg byte x 4.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 11.0
(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:10 1.536585365853659
(byte*) print_char_cursor#133 print_char_cursor zp ZP_WORD:10 5.25
(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:10 3.0
(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:10 7.0
(byte*) print_char_cursor#140 print_char_cursor zp ZP_WORD:10 3.9999999999999996
(byte*) print_char_cursor#152 print_char_cursor zp ZP_WORD:10 28.0
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:10 0.7555555555555553
(byte*~) print_char_cursor#192 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#193 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#225 print_char_cursor zp ZP_WORD:10 4.0
(byte*) print_char_cursor#31 print_char_cursor zp ZP_WORD:10 0.1951219512195122
(byte*) print_char_cursor#84 print_char_cursor zp ZP_WORD:10 7.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5
(byte[]) print_hextab
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:4 0.6338028169014083
(byte*) print_line_cursor#10 print_line_cursor zp ZP_WORD:4 0.09523809523809523
(byte*) print_line_cursor#23 print_line_cursor zp ZP_WORD:4 24.0
(byte*) print_line_cursor#45 print_line_cursor zp ZP_WORD:4 10.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(void()) print_sbyte((signed byte) print_sbyte::b)
(label) print_sbyte::@1
(label) print_sbyte::@2
(label) print_sbyte::@3
(label) print_sbyte::@5
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0 reg byte x 4.0
(signed byte) print_sbyte::b#1 reg byte x 4.0
(signed byte) print_sbyte::b#2 reg byte x 4.0
(signed byte) print_sbyte::b#3 reg byte x 1.6666666666666665
(signed byte) print_sbyte::b#5 reg byte x 4.0
(byte*) print_screen
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:6 22.0
(byte*) print_str::str#16 str zp ZP_WORD:6 11.5
(byte*) print_str::str#18 str zp ZP_WORD:6 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#2 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#4 w zp ZP_WORD:8 3.0
(signed word) print_sword::w#5 w zp ZP_WORD:8 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word~) print_word::w#11 w zp ZP_WORD:8 4.0
(word~) print_word::w#12 w zp ZP_WORD:8 4.0
(word~) print_word::w#13 w zp ZP_WORD:8 4.0
(word) print_word::w#3 w zp ZP_WORD:8 4.0
(word) print_word::w#4 w zp ZP_WORD:8 4.0
(word) print_word::w#5 w zp ZP_WORD:8 4.0
(word) print_word::w#6 w zp ZP_WORD:8 5.333333333333333
(const string) str1 str1 = (string) "*@"
(const string) str2 str2 = (string) " slow:@"
(const string) str3 str3 = (string) " / normal:@"
(const string) str4 str4 = (string) " / fast:@"

zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 mulf8s_prepared::b#0 ]
reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
zp ZP_WORD:4 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:6 [ print_str::str#16 print_str::str#18 print_str::str#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
zp ZP_WORD:8 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
zp ZP_WORD:10 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ]
reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
zp ZP_WORD:12 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_compare::mn#0 mul8s_error::mn#0 mul8u_compare::mn#0 mul8u_error::mn#0 ]
reg byte a [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ]
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
zp ZP_WORD:14 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ]
reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ]
reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ]
reg byte y [ muls8s::j#2 muls8s::j#1 ]
reg byte y [ muls8s::i#2 muls8s::i#1 ]
reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
reg byte y [ muls8u::i#2 muls8u::i#1 ]
reg byte x [ mulf_init::c#2 mulf_init::c#1 ]
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
reg byte x [ muls8s::b#0 ]
reg byte a [ mulf8s::a#0 ]
reg byte x [ mulf8s::b#0 ]
reg byte y [ mul8s::b#0 ]
reg byte x [ mul8s_error::a#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ mul8s::$6 ]
reg byte a [ mul8s::$16 ]
reg byte a [ mul8s::$12 ]
reg byte a [ mul8s::$17 ]
reg byte a [ mul8u::$1 ]
reg byte a [ mulf8s_prepared::$5 ]
reg byte a [ mulf8s_prepared::$15 ]
reg byte a [ mulf8s_prepared::$11 ]
reg byte a [ mulf8s_prepared::$16 ]
reg byte x [ muls8u::b#0 ]
reg byte a [ mulf8u::a#0 ]
reg byte x [ mulf8u::b#0 ]
reg byte x [ mul8u_error::a#0 ]
reg byte a [ mulf_init::$2 ]
reg byte a [ mulf_init::$5 ]
reg byte a [ mulf_init::$6 ]


FINAL ASSEMBLER
Score: 224894

//SEG0 File Comments
// Test the fast multiplication library
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label BGCOL = $d021
  .label print_char_cursor = $a
  .label print_line_cursor = 4
//SEG3 @begin
//SEG4 [1] phi from @begin to @42 [phi:@begin->@42]
//SEG5 @42
//SEG6 [2] call main 
//SEG7 [3] phi from @42 to @end [phi:@42->@end]
//SEG8 @end
//SEG9 main
main: {
  //SEG10 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
  //SEG11 [5] call print_cls 
  //SEG12 [336] phi from main to print_cls [phi:main->print_cls]
    jsr print_cls
  //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
  //SEG14 main::@1
  //SEG15 [7] call mulf_init 
  //SEG16 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init]
    jsr mulf_init
  //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  //SEG18 main::@2
  //SEG19 [9] call mulf_init_asm 
    jsr mulf_init_asm
  //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  //SEG21 main::@3
  //SEG22 [11] call mulf_tables_cmp 
  //SEG23 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp]
    jsr mulf_tables_cmp
  //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  //SEG25 main::@4
  //SEG26 [13] call mul8u_compare 
  //SEG27 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare]
    jsr mul8u_compare
  //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
  //SEG29 main::@5
  //SEG30 [15] call mul8s_compare 
  //SEG31 [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare]
    jsr mul8s_compare
  //SEG32 main::@return
  //SEG33 [16] return 
    rts
}
//SEG34 mul8s_compare
// Perform all possible signed byte multiplications (slow and fast) and compare the results
mul8s_compare: {
    .label ms = 8
    .label mf = $e
    .label mn = $c
    .label b = 3
    .label a = 2
  //SEG35 [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1]
  //SEG36 [18] phi (signed byte) mul8s_compare::a#7 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 
    lda #-$80
    sta a
  //SEG37 [18] phi from mul8s_compare::@10 to mul8s_compare::@1 [phi:mul8s_compare::@10->mul8s_compare::@1]
  //SEG38 [18] phi (signed byte) mul8s_compare::a#7 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@10->mul8s_compare::@1#0] -- register_copy 
  //SEG39 mul8s_compare::@1
  b1:
  //SEG40 [19] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2]
  //SEG41 [19] phi (signed byte) mul8s_compare::b#10 = -(byte/word/signed word/dword/signed dword) 128 [phi:mul8s_compare::@1->mul8s_compare::@2#0] -- vbsz1=vbsc1 
    lda #-$80
    sta b
  //SEG42 [19] phi from mul8s_compare::@5 to mul8s_compare::@2 [phi:mul8s_compare::@5->mul8s_compare::@2]
  //SEG43 [19] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@5->mul8s_compare::@2#0] -- register_copy 
  //SEG44 mul8s_compare::@2
  b2:
  //SEG45 [20] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#7
  //SEG46 [21] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 
    ldx b
  //SEG47 [22] call muls8s 
    jsr muls8s
  //SEG48 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0
  //SEG49 mul8s_compare::@12
  //SEG50 [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2
  //SEG51 [25] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsaa=vbsz1 
    lda a
  //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 
    ldx b
  //SEG53 [27] call mulf8s 
  //SEG54 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s]
    jsr mulf8s
  //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
  //SEG56 mul8s_compare::@13
  //SEG57 [29] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2
  //SEG58 [30] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#7
  //SEG59 [31] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsyy=vbsz1 
    ldy b
  //SEG60 [32] call mul8s 
    jsr mul8s
  //SEG61 [33] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4
  //SEG62 mul8s_compare::@14
  //SEG63 [34] (signed word) mul8s_compare::mn#0 ← (signed word) mul8s::return#2
  //SEG64 [35] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -- vwsz1_eq_vwsz2_then_la1 
    lda ms
    cmp mf
    bne !+
    lda ms+1
    cmp mf+1
    beq b6
  !:
  //SEG65 [36] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6]
  //SEG66 mul8s_compare::@6
  //SEG67 [37] phi from mul8s_compare::@6 to mul8s_compare::@3 [phi:mul8s_compare::@6->mul8s_compare::@3]
  //SEG68 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@6->mul8s_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
  //SEG69 [37] phi from mul8s_compare::@14 to mul8s_compare::@3 [phi:mul8s_compare::@14->mul8s_compare::@3]
  b6:
  //SEG70 [37] phi (byte) mul8s_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8s_compare::@14->mul8s_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
  //SEG71 mul8s_compare::@3
  b3:
  //SEG72 [38] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@20 -- vwsz1_eq_vwsz2_then_la1 
    lda ms
    cmp mn
    bne !+
    lda ms+1
    cmp mn+1
    beq b4
  !:
  //SEG73 [39] phi from mul8s_compare::@3 to mul8s_compare::@4 [phi:mul8s_compare::@3->mul8s_compare::@4]
  //SEG74 [39] phi (byte) mul8s_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8s_compare::@3->mul8s_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG75 mul8s_compare::@4
  b4:
  //SEG76 [40] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b5
  //SEG77 mul8s_compare::@8
  //SEG78 [41] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG79 [42] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7 -- vbsxx=vbsz1 
    ldx a
  //SEG80 [43] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10
  //SEG81 [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0
  //SEG82 [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0
  //SEG83 [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0
  //SEG84 [47] call mul8s_error 
    jsr mul8s_error
  //SEG85 mul8s_compare::@return
  breturn:
  //SEG86 [48] return 
    rts
  //SEG87 mul8s_compare::@5
  b5:
  //SEG88 [49] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 
    inc b
  //SEG89 [50] if((signed byte) mul8s_compare::b#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@2 -- vbsz1_neq_vbsc1_then_la1 
    lda b
    cmp #-$80
    bne b2
  //SEG90 mul8s_compare::@10
  //SEG91 [51] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#7 -- vbsz1=_inc_vbsz1 
    inc a
  //SEG92 [52] if((signed byte) mul8s_compare::a#1!=-(byte/word/signed word/dword/signed dword) 128) goto mul8s_compare::@1 -- vbsz1_neq_vbsc1_then_la1 
    lda a
    cmp #-$80
    bne b1
  //SEG93 mul8s_compare::@11
  //SEG94 [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG95 [54] call print_str 
  //SEG96 [63] phi from mul8s_compare::@11 to print_str [phi:mul8s_compare::@11->print_str]
  //SEG97 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#192 [phi:mul8s_compare::@11->print_str#0] -- register_copy 
  //SEG98 [63] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@11->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG99 [55] phi from mul8s_compare::@11 to mul8s_compare::@16 [phi:mul8s_compare::@11->mul8s_compare::@16]
  //SEG100 mul8s_compare::@16
  //SEG101 [56] call print_ln 
  //SEG102 [58] phi from mul8s_compare::@16 to print_ln [phi:mul8s_compare::@16->print_ln]
  //SEG103 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8s_compare::@16->print_ln#0] -- register_copy 
  //SEG104 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@16->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG105 [57] phi from mul8s_compare::@3 to mul8s_compare::@20 [phi:mul8s_compare::@3->mul8s_compare::@20]
  //SEG106 mul8s_compare::@20
  //SEG107 [39] phi from mul8s_compare::@20 to mul8s_compare::@4 [phi:mul8s_compare::@20->mul8s_compare::@4]
  //SEG108 [39] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@20->mul8s_compare::@4#0] -- register_copy 
    str: .text "signed multiply results match!@"
}
//SEG109 print_ln
// Print a newline
print_ln: {
  //SEG110 [59] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
  //SEG111 [59] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
  //SEG112 print_ln::@1
  b1:
  //SEG113 [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 
    lda print_line_cursor
    clc
    adc #$28
    sta print_line_cursor
    bcc !+
    inc print_line_cursor+1
  !:
  //SEG114 [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda print_line_cursor+1
    cmp print_char_cursor+1
    bcc b1
    bne !+
    lda print_line_cursor
    cmp print_char_cursor
    bcc b1
  !:
  //SEG115 print_ln::@return
  //SEG116 [62] return 
    rts
}
//SEG117 print_str
// Print a zero-terminated string
// print_str(byte* zeropage(6) str)
print_str: {
    .label str = 6
  //SEG118 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
  //SEG119 [64] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG120 [64] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
  //SEG121 print_str::@1
  b1:
  //SEG122 [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
  //SEG123 print_str::@return
  //SEG124 [66] return 
    rts
  //SEG125 print_str::@2
  b2:
  //SEG126 [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    sta (print_char_cursor),y
  //SEG127 [68] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
  //SEG128 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1
}
//SEG129 mul8s_error
// mul8s_error(signed byte register(X) a, signed byte zeropage(3) b, signed word zeropage(8) ms, signed word zeropage($c) mn, signed word zeropage($e) mf)
mul8s_error: {
    .label b = 3
    .label ms = 8
    .label mn = $c
    .label mf = $e
  //SEG130 [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG131 [71] call print_str 
  //SEG132 [63] phi from mul8s_error to print_str [phi:mul8s_error->print_str]
  //SEG133 [63] phi (byte*) print_char_cursor#152 = (byte*~) print_char_cursor#193 [phi:mul8s_error->print_str#0] -- register_copy 
  //SEG134 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG135 mul8s_error::@1
  //SEG136 [72] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0
  //SEG137 [73] call print_sbyte 
  //SEG138 [120] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte]
  //SEG139 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy 
    jsr print_sbyte
  //SEG140 [74] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2]
  //SEG141 mul8s_error::@2
  //SEG142 [75] call print_str 
  //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
  //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy 
  //SEG145 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
  //SEG146 mul8s_error::@3
  //SEG147 [76] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsxx=vbsz1 
    ldx b
  //SEG148 [77] call print_sbyte 
  //SEG149 [120] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte]
  //SEG150 [120] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy 
    jsr print_sbyte
  //SEG151 [78] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4]
  //SEG152 mul8s_error::@4
  //SEG153 [79] call print_str 
  //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
  //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy 
  //SEG156 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG157 mul8s_error::@5
  //SEG158 [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0
  //SEG159 [81] call print_sword 
  //SEG160 [93] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword]
  //SEG161 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG162 [82] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6]
  //SEG163 mul8s_error::@6
  //SEG164 [83] call print_str 
  //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
  //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy 
  //SEG167 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str.str
    lda #>str3
    sta print_str.str+1
    jsr print_str
  //SEG168 mul8s_error::@7
  //SEG169 [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 
    lda mn
    sta print_sword.w
    lda mn+1
    sta print_sword.w+1
  //SEG170 [85] call print_sword 
  //SEG171 [93] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword]
  //SEG172 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG173 [86] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8]
  //SEG174 mul8s_error::@8
  //SEG175 [87] call print_str 
  //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
  //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy 
  //SEG178 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str.str
    lda #>str4
    sta print_str.str+1
    jsr print_str
  //SEG179 mul8s_error::@9
  //SEG180 [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 
    lda mf
    sta print_sword.w
    lda mf+1
    sta print_sword.w+1
  //SEG181 [89] call print_sword 
  //SEG182 [93] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword]
  //SEG183 [93] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy 
    jsr print_sword
  //SEG184 [90] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10]
  //SEG185 mul8s_error::@10
  //SEG186 [91] call print_ln 
  //SEG187 [58] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln]
  //SEG188 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8s_error::@10->print_ln#0] -- register_copy 
  //SEG189 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
  //SEG190 mul8s_error::@return
  //SEG191 [92] return 
    rts
    str: .text "signed multiply mismatch @"
}
//SEG192 print_sword
// Print a signed word as HEX
// print_sword(signed word zeropage(8) w)
print_sword: {
    .label w = 8
  //SEG193 [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 
    lda w+1
    bpl b1
  //SEG194 [95] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2]
  //SEG195 print_sword::@2
  //SEG196 [96] call print_char 
  //SEG197 [116] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char]
  //SEG198 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sword::@2->print_char#0] -- register_copy 
  //SEG199 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
  //SEG200 print_sword::@4
  //SEG201 [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 
    sec
    lda w
    eor #$ff
    adc #0
    sta w
    lda w+1
    eor #$ff
    adc #0
    sta w+1
  //SEG202 [98] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1]
  //SEG203 [98] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#132 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy 
  //SEG204 [98] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy 
  //SEG205 print_sword::@1
  b1:
  //SEG206 [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5
  //SEG207 [100] call print_word 
  //SEG208 [102] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word]
  //SEG209 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_word#0] -- register_copy 
  //SEG210 [102] phi (word) print_word::w#6 = (word~) print_word::w#13 [phi:print_sword::@1->print_word#1] -- register_copy 
    jsr print_word
  //SEG211 print_sword::@return
  //SEG212 [101] return 
    rts
}
//SEG213 print_word
// Print a word as HEX
// print_word(word zeropage(8) w)
print_word: {
    .label w = 8
  //SEG214 [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 
    lda w+1
    tax
  //SEG215 [104] call print_byte 
  //SEG216 [108] phi from print_word to print_byte [phi:print_word->print_byte]
  //SEG217 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#139 [phi:print_word->print_byte#0] -- register_copy 
  //SEG218 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG219 print_word::@1
  //SEG220 [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 
    lda w
    tax
  //SEG221 [106] call print_byte 
  //SEG222 [108] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  //SEG223 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy 
  //SEG224 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG225 print_word::@return
  //SEG226 [107] return 
    rts
}
//SEG227 print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
  //SEG228 [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
  //SEG229 [110] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
  //SEG230 [111] call print_char 
  //SEG231 [116] phi from print_byte to print_char [phi:print_byte->print_char]
  //SEG232 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#140 [phi:print_byte->print_char#0] -- register_copy 
  //SEG233 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
  //SEG234 print_byte::@1
  //SEG235 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #$f
  //SEG236 [113] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
  //SEG237 [114] call print_char 
  //SEG238 [116] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  //SEG239 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy 
  //SEG240 [116] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
  //SEG241 print_byte::@return
  //SEG242 [115] return 
    rts
}
//SEG243 print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
  //SEG244 [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
  //SEG245 [118] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
  //SEG246 print_char::@return
  //SEG247 [119] return 
    rts
}
//SEG248 print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte register(X) b)
print_sbyte: {
  //SEG249 [121] if((signed byte) print_sbyte::b#3<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi b1
  //SEG250 [122] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
  //SEG251 print_sbyte::@3
  //SEG252 [123] call print_char 
  //SEG253 [116] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
  //SEG254 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy 
  //SEG255 [116] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
  //SEG256 [124] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2]
  //SEG257 [124] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy 
  //SEG258 print_sbyte::@2
  b2:
  //SEG259 [125] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#5
  //SEG260 [126] call print_byte 
  //SEG261 [108] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  //SEG262 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
  //SEG263 [108] phi (byte) print_byte::b#5 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG264 print_sbyte::@return
  //SEG265 [127] return 
    rts
  //SEG266 [128] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  //SEG267 print_sbyte::@1
  b1:
  //SEG268 [129] call print_char 
  //SEG269 [116] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  //SEG270 [116] phi (byte*) print_char_cursor#84 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy 
  //SEG271 [116] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
  //SEG272 print_sbyte::@5
  //SEG273 [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
    jmp b2
}
//SEG274 mul8s
// Multiply of two signed bytes to a signed word
// Fixes offsets introduced by using unsigned multiplication
// mul8s(signed byte zeropage(2) a, signed byte register(Y) b)
mul8s: {
    .label m = $c
    .label a = 2
    .label return = $c
  //SEG275 [131] (byte~) mul8u::b#3 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy 
    tya
  //SEG276 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 
    ldx a
  //SEG277 [133] call mul8u 
  //SEG278 [147] phi from mul8s to mul8u [phi:mul8s->mul8u]
  //SEG279 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy 
  //SEG280 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy 
    jsr mul8u
  //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2
  //SEG282 mul8s::@6
  //SEG283 [135] (word) mul8s::m#0 ← (word) mul8u::return#2
  //SEG284 [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 
    lda a
    cmp #0
    bpl b1
  //SEG285 mul8s::@3
  //SEG286 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 
    lda m+1
  //SEG287 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy 
    sty $ff
    sec
    sbc $ff
  //SEG288 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa 
    sta m+1
  //SEG289 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1]
  //SEG290 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy 
  //SEG291 mul8s::@1
  b1:
  //SEG292 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 
    cpy #0
    bpl b2
  //SEG293 mul8s::@4
  //SEG294 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 
    lda m+1
  //SEG295 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 
    sec
    sbc a
  //SEG296 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa 
    sta m+1
  //SEG297 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2]
  //SEG298 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy 
  //SEG299 mul8s::@2
  b2:
  //SEG300 mul8s::@return
  //SEG301 [146] return 
    rts
}
//SEG302 mul8u
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte register(X) a, byte register(A) b)
mul8u: {
    .label mb = 6
    .label res = $c
    .label return = $c
  //SEG303 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa 
    sta mb
    lda #0
    sta mb+1
  //SEG304 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
  //SEG305 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy 
  //SEG306 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 
    sta res
    sta res+1
  //SEG307 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy 
  //SEG308 mul8u::@1
  b1:
  //SEG309 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b2
  //SEG310 mul8u::@return
  //SEG311 [151] return 
    rts
  //SEG312 mul8u::@2
  b2:
  //SEG313 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #1
  //SEG314 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b4
  //SEG315 mul8u::@7
  //SEG316 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 
    lda res
    clc
    adc mb
    sta res
    lda res+1
    adc mb+1
    sta res+1
  //SEG317 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4]
  //SEG318 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy 
  //SEG319 mul8u::@4
  b4:
  //SEG320 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
  //SEG321 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl mb
    rol mb+1
  //SEG322 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1]
  //SEG323 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy 
  //SEG324 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy 
  //SEG325 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy 
    jmp b1
}
//SEG326 mulf8s
// Fast multiply two signed bytes to a word result
// mulf8s(signed byte register(A) a, signed byte register(X) b)
mulf8s: {
    .label return = $e
  //SEG327 mulf8s::mulf8s_prepare1
  //SEG328 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0
  //SEG329 [160] call mulf8u_prepare 
  //SEG330 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare]
  //SEG331 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
  //SEG332 mulf8s::@2
  //SEG333 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx 
    stx mulf8s_prepared.b
  //SEG334 [162] call mulf8s_prepared 
    jsr mulf8s_prepared
  //SEG335 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4
  //SEG336 mulf8s::@4
  //SEG337 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2
  //SEG338 mulf8s::@return
  //SEG339 [165] return 
    rts
}
//SEG340 mulf8s_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8s_prepare(byte a)
// mulf8s_prepared(signed byte zeropage(3) b)
mulf8s_prepared: {
    .label memA = $fd
    .label m = $e
    .label b = 3
    .label return = $e
  //SEG341 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 
    ldx b
  //SEG342 [167] call mulf8u_prepared 
  //SEG343 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared]
  //SEG344 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
  //SEG345 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
  //SEG346 mulf8s_prepared::@6
  //SEG347 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
  //SEG348 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 
    lda memA
    cmp #0
    bpl b1
  //SEG349 mulf8s_prepared::@3
  //SEG350 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 
    lda m+1
  //SEG351 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 
    sec
    sbc b
  //SEG352 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa 
    sta m+1
  //SEG353 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1]
  //SEG354 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy 
  //SEG355 mulf8s_prepared::@1
  b1:
  //SEG356 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 
    lda b
    cmp #0
    bpl b2
  //SEG357 mulf8s_prepared::@4
  //SEG358 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 
    lda m+1
  //SEG359 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 
    sec
    sbc memA
  //SEG360 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa 
    sta m+1
  //SEG361 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2]
  //SEG362 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy 
  //SEG363 mulf8s_prepared::@2
  b2:
  //SEG364 mulf8s_prepared::@return
  //SEG365 [180] return 
    rts
}
//SEG366 mulf8u_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8u_prepare(byte a)
// mulf8u_prepared(byte register(X) b)
mulf8u_prepared: {
    .label resL = $fe
    .label memB = $ff
    .label return = $e
  //SEG367 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx 
    stx memB
  //SEG368 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  }
    sec
  sm1:
    lda mulf_sqr1_lo,x
  sm2:
    sbc mulf_sqr2_lo,x
    sta resL
  sm3:
    lda mulf_sqr1_hi,x
  sm4:
    sbc mulf_sqr2_hi,x
    sta memB
  //SEG369 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda resL
    sta return
    lda memB
    sta return+1
  //SEG370 mulf8u_prepared::@return
  //SEG371 [185] return 
    rts
}
//SEG372 mulf8u_prepare
// Prepare for fast multiply with an unsigned byte to a word result
// mulf8u_prepare(byte register(A) a)
mulf8u_prepare: {
    .label memA = $fd
  //SEG373 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa 
    sta memA
  //SEG374 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  }
    sta mulf8u_prepared.sm1+1
    sta mulf8u_prepared.sm3+1
    eor #$ff
    sta mulf8u_prepared.sm2+1
    sta mulf8u_prepared.sm4+1
  //SEG375 mulf8u_prepare::@return
  //SEG376 [189] return 
    rts
}
//SEG377 muls8s
// Slow multiplication of signed bytes
// Perform a signed multiplication by repeated addition/subtraction
// muls8s(signed byte zeropage(2) a, signed byte register(X) b)
muls8s: {
    .label m = 8
    .label return = 8
    .label a = 2
  //SEG378 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 
    lda a
    bmi b6
  //SEG379 muls8s::@6
  //SEG380 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 
    cmp #1
    bmi b2
  //SEG381 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3]
  //SEG382 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 
    lda #0
    tay
  //SEG383 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 
    sta m
    sta m+1
  //SEG384 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3]
  //SEG385 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy 
  //SEG386 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy 
  //SEG387 muls8s::@3
  b3:
  //SEG388 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx 
    txa
    sta $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta $ff
    clc
    lda m
    adc $fe
    sta m
    lda m+1
    adc $ff
    sta m+1
  //SEG389 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy 
    iny
  //SEG390 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 
    cpy a
    bne b3
  //SEG391 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4]
  //SEG392 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy 
    jmp b4
  //SEG393 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4]
  b2:
  //SEG394 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 
    lda #<0
    sta return
    sta return+1
  //SEG395 muls8s::@4
  b4:
  //SEG396 muls8s::@return
  //SEG397 [197] return 
    rts
  //SEG398 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5]
  b6:
  //SEG399 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 
    lda #0
    tay
  //SEG400 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 
    sta m
    sta m+1
  //SEG401 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5]
  //SEG402 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy 
  //SEG403 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy 
  //SEG404 muls8s::@5
  b5:
  //SEG405 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx 
    txa
    sta $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta $ff
    sec
    lda m
    sbc $fe
    sta m
    lda m+1
    sbc $ff
    sta m+1
  //SEG406 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy 
    dey
  //SEG407 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 
    cpy a
    bne b5
    jmp b4
}
//SEG408 mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = 8
    .label mf = $e
    .label mn = $c
    .label b = 3
    .label a = 2
  //SEG409 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
  //SEG410 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta a
  //SEG411 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1]
  //SEG412 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy 
  //SEG413 mul8u_compare::@1
  b1:
  //SEG414 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
  //SEG415 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta b
  //SEG416 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
  //SEG417 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy 
  //SEG418 mul8u_compare::@2
  b2:
  //SEG419 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
  //SEG420 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx b
  //SEG421 [207] call muls8u 
    jsr muls8u
  //SEG422 [208] (word) muls8u::return#2 ← (word) muls8u::return#0
  //SEG423 mul8u_compare::@12
  //SEG424 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
  //SEG425 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 
    lda a
  //SEG426 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx b
  //SEG427 [212] call mulf8u 
    jsr mulf8u
  //SEG428 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0
  //SEG429 mul8u_compare::@13
  //SEG430 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
  //SEG431 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx a
  //SEG432 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 
    lda b
  //SEG433 [217] call mul8u 
  //SEG434 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u]
  //SEG435 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy 
  //SEG436 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy 
    jsr mul8u
  //SEG437 [218] (word) mul8u::return#3 ← (word) mul8u::res#2
  //SEG438 mul8u_compare::@14
  //SEG439 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
  //SEG440 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 
    lda ms
    cmp mf
    bne !+
    lda ms+1
    cmp mf+1
    beq b6
  !:
  //SEG441 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6]
  //SEG442 mul8u_compare::@6
  //SEG443 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
  //SEG444 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
  //SEG445 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3]
  b6:
  //SEG446 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
  //SEG447 mul8u_compare::@3
  b3:
  //SEG448 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 
    lda ms
    cmp mn
    bne !+
    lda ms+1
    cmp mn+1
    beq b4
  !:
  //SEG449 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
  //SEG450 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG451 mul8u_compare::@4
  b4:
  //SEG452 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b5
  //SEG453 mul8u_compare::@8
  //SEG454 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG455 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx a
  //SEG456 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
  //SEG457 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
  //SEG458 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
  //SEG459 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
  //SEG460 [232] call mul8u_error 
  //SEG461 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error]
    jsr mul8u_error
  //SEG462 mul8u_compare::@return
  breturn:
  //SEG463 [233] return 
    rts
  //SEG464 mul8u_compare::@5
  b5:
  //SEG465 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc b
  //SEG466 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 
    lda b
    cmp #0
    bne b2
  //SEG467 mul8u_compare::@10
  //SEG468 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc a
  //SEG469 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 
    lda a
    cmp #0
    bne b1
  //SEG470 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11]
  //SEG471 mul8u_compare::@11
  //SEG472 [239] call print_str 
  //SEG473 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str]
  //SEG474 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy 
  //SEG475 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG476 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16]
  //SEG477 mul8u_compare::@16
  //SEG478 [241] call print_ln 
  //SEG479 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln]
  //SEG480 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy 
  //SEG481 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG482 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20]
  //SEG483 mul8u_compare::@20
  //SEG484 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4]
  //SEG485 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy 
    str: .text "multiply results match!@"
}
//SEG486 mul8u_error
// mul8u_error(byte register(X) a, byte zeropage(3) b, word zeropage(8) ms, word zeropage($c) mn, word zeropage($e) mf)
mul8u_error: {
    .label b = 3
    .label ms = 8
    .label mn = $c
    .label mf = $e
  //SEG487 [244] call print_str 
  //SEG488 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
  //SEG489 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy 
  //SEG490 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG491 mul8u_error::@1
  //SEG492 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
  //SEG493 [246] call print_byte 
  //SEG494 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
  //SEG495 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
  //SEG496 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG497 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2]
  //SEG498 mul8u_error::@2
  //SEG499 [248] call print_str 
  //SEG500 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
  //SEG501 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy 
  //SEG502 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
  //SEG503 mul8u_error::@3
  //SEG504 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 
    ldx b
  //SEG505 [250] call print_byte 
  //SEG506 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
  //SEG507 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
  //SEG508 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG509 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4]
  //SEG510 mul8u_error::@4
  //SEG511 [252] call print_str 
  //SEG512 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
  //SEG513 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy 
  //SEG514 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG515 mul8u_error::@5
  //SEG516 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0
  //SEG517 [254] call print_word 
  //SEG518 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
  //SEG519 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy 
  //SEG520 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy 
    jsr print_word
  //SEG521 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6]
  //SEG522 mul8u_error::@6
  //SEG523 [256] call print_str 
  //SEG524 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
  //SEG525 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy 
  //SEG526 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str.str
    lda #>str3
    sta print_str.str+1
    jsr print_str
  //SEG527 mul8u_error::@7
  //SEG528 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 
    lda mn
    sta print_word.w
    lda mn+1
    sta print_word.w+1
  //SEG529 [258] call print_word 
  //SEG530 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
  //SEG531 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy 
  //SEG532 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy 
    jsr print_word
  //SEG533 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8]
  //SEG534 mul8u_error::@8
  //SEG535 [260] call print_str 
  //SEG536 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
  //SEG537 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy 
  //SEG538 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str.str
    lda #>str4
    sta print_str.str+1
    jsr print_str
  //SEG539 mul8u_error::@9
  //SEG540 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 
    lda mf
    sta print_word.w
    lda mf+1
    sta print_word.w+1
  //SEG541 [262] call print_word 
  //SEG542 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
  //SEG543 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy 
  //SEG544 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy 
    jsr print_word
  //SEG545 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10]
  //SEG546 mul8u_error::@10
  //SEG547 [264] call print_ln 
  //SEG548 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
  //SEG549 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
  //SEG550 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
  //SEG551 mul8u_error::@return
  //SEG552 [265] return 
    rts
    str: .text "multiply mismatch @"
}
//SEG553 mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte register(A) a, byte register(X) b)
mulf8u: {
    .label return = $e
  //SEG554 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
  //SEG555 [267] call mulf8u_prepare 
  //SEG556 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare]
  //SEG557 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
  //SEG558 mulf8u::@2
  //SEG559 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
  //SEG560 [269] call mulf8u_prepared 
  //SEG561 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared]
  //SEG562 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
  //SEG563 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
  //SEG564 mulf8u::@3
  //SEG565 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
  //SEG566 mulf8u::@return
  //SEG567 [272] return 
    rts
}
//SEG568 muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zeropage(2) a, byte register(X) b)
muls8u: {
    .label return = 8
    .label m = 8
    .label a = 2
  //SEG569 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda a
    cmp #0
    beq b3
  //SEG570 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
  //SEG571 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 
    ldy #0
  //SEG572 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 
    tya
    sta m
    sta m+1
  //SEG573 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2]
  //SEG574 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy 
  //SEG575 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy 
  //SEG576 muls8u::@2
  b2:
  //SEG577 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx 
    txa
    clc
    adc m
    sta m
    lda #0
    adc m+1
    sta m+1
  //SEG578 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy 
    iny
  //SEG579 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 
    cpy a
    bne b2
  //SEG580 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
  //SEG581 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    jmp b1
  //SEG582 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  b3:
  //SEG583 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 
    lda #<0
    sta return
    sta return+1
  //SEG584 muls8u::@1
  b1:
  //SEG585 muls8u::@return
  //SEG586 [279] return 
    rts
}
//SEG587 mulf_tables_cmp
// Compare the ASM-based mul tables with the KC-based mul tables
// Red screen on failure - green on success
mulf_tables_cmp: {
    .label asm_sqr = 8
    .label kc_sqr = 4
  //SEG588 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
  //SEG589 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 
    lda #<mula_sqr1_lo
    sta asm_sqr
    lda #>mula_sqr1_lo
    sta asm_sqr+1
  //SEG590 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo
    sta kc_sqr
    lda #>mulf_sqr1_lo
    sta kc_sqr+1
  //SEG591 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1]
  //SEG592 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy 
  //SEG593 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy 
  //SEG594 mulf_tables_cmp::@1
  b1:
  //SEG595 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 
    ldy #0
    lda (kc_sqr),y
    cmp (asm_sqr),y
    beq b2
  //SEG596 mulf_tables_cmp::@3
  //SEG597 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
  //SEG598 [284] call print_str 
  //SEG599 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
  //SEG600 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG601 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG602 mulf_tables_cmp::@6
  //SEG603 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
  //SEG604 [286] call print_word 
  //SEG605 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word]
  //SEG606 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy 
  //SEG607 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy 
    jsr print_word
  //SEG608 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7]
  //SEG609 mulf_tables_cmp::@7
  //SEG610 [288] call print_str 
  //SEG611 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str]
  //SEG612 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy 
  //SEG613 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
  //SEG614 mulf_tables_cmp::@8
  //SEG615 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 
    lda kc_sqr
    sta print_word.w
    lda kc_sqr+1
    sta print_word.w+1
  //SEG616 [290] call print_word 
  //SEG617 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
  //SEG618 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
  //SEG619 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy 
    jsr print_word
  //SEG620 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return]
  //SEG621 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
  //SEG622 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy 
  //SEG623 mulf_tables_cmp::@return
  breturn:
  //SEG624 [292] return 
    rts
  //SEG625 mulf_tables_cmp::@2
  b2:
  //SEG626 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 
    inc asm_sqr
    bne !+
    inc asm_sqr+1
  !:
  //SEG627 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 
    inc kc_sqr
    bne !+
    inc kc_sqr+1
  !:
  //SEG628 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 
    lda kc_sqr+1
    cmp #>mulf_sqr1_lo+$200*4
    bcc b1
    bne !+
    lda kc_sqr
    cmp #<mulf_sqr1_lo+$200*4
    bcc b1
  !:
  //SEG629 [296] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5]
  //SEG630 mulf_tables_cmp::@5
  //SEG631 [297] call print_str 
  //SEG632 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
  //SEG633 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG634 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG635 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10]
  //SEG636 mulf_tables_cmp::@10
  //SEG637 [299] call print_ln 
  //SEG638 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln]
  //SEG639 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy 
  //SEG640 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
    jsr print_ln
  //SEG641 [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG642 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
  //SEG643 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy 
  //SEG644 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
    str: .text "multiply table mismatch at @"
    str1: .text " / @"
    str2: .text "multiply tables match!@"
}
//SEG645 mulf_init_asm
// Initialize the multiplication tables using ASM code from
// http://codebase64.org/doku.php?id=base:seriously_fast_multiplication
mulf_init_asm: {
    // Ensure the ASM tables are not detected as unused by the optimizer
    .label mem = $ff
  //SEG646 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!-  }
    ldx #0
    txa
    .byte $c9
  lb1:
    tya
    adc #0
  ml1:
    sta mula_sqr1_hi,x
    tay
    cmp #$40
    txa
    ror
  ml9:
    adc #0
    sta ml9+1
    inx
  ml0:
    sta mula_sqr1_lo,x
    bne lb1
    inc ml0+2
    inc ml1+2
    clc
    iny
    bne lb1
    ldx #0
    ldy #$ff
  !:
    lda mula_sqr1_hi+1,x
    sta mula_sqr2_hi+$100,x
    lda mula_sqr1_hi,x
    sta mula_sqr2_hi,y
    lda mula_sqr1_lo+1,x
    sta mula_sqr2_lo+$100,x
    lda mula_sqr1_lo,x
    sta mula_sqr2_lo,y
    dey
    inx
    bne !-
  //SEG647 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
  //SEG648 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
  //SEG649 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
  //SEG650 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
  //SEG651 mulf_init_asm::@return
  //SEG652 [306] return 
    rts
}
//SEG653 mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    .label sqr1_hi = 6
    .label sqr = 8
    .label sqr1_lo = 4
    .label x_2 = 2
    .label sqr2_hi = 6
    .label sqr2_lo = 4
    .label dir = 2
  //SEG654 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  //SEG655 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta x_2
  //SEG656 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_hi+1
    sta sqr1_hi
    lda #>mulf_sqr1_hi+1
    sta sqr1_hi+1
  //SEG657 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo+1
    sta sqr1_lo
    lda #>mulf_sqr1_lo+1
    sta sqr1_lo+1
  //SEG658 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 
    lda #<0
    sta sqr
    sta sqr+1
  //SEG659 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 
    tax
  //SEG660 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1]
  //SEG661 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy 
  //SEG662 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy 
  //SEG663 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy 
  //SEG664 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy 
  //SEG665 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy 
  //SEG666 mulf_init::@1
  b1:
  //SEG667 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG668 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #1
  //SEG669 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne b2
  //SEG670 mulf_init::@5
  //SEG671 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 
    inc x_2
  //SEG672 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc sqr
    bne !+
    inc sqr+1
  !:
  //SEG673 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2]
  //SEG674 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy 
  //SEG675 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy 
  //SEG676 mulf_init::@2
  b2:
  //SEG677 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 
    lda sqr
  //SEG678 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_lo),y
  //SEG679 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 
    lda sqr+1
  //SEG680 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa 
    sta (sqr1_hi),y
  //SEG681 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 
    inc sqr1_hi
    bne !+
    inc sqr1_hi+1
  !:
  //SEG682 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda x_2
    clc
    adc sqr
    sta sqr
    lda #0
    adc sqr+1
    sta sqr+1
  //SEG683 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 
    inc sqr1_lo
    bne !+
    inc sqr1_lo+1
  !:
  //SEG684 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sqr1_lo+1
    cmp #>mulf_sqr1_lo+$200
    bne b1
    lda sqr1_lo
    cmp #<mulf_sqr1_lo+$200
    bne b1
  //SEG685 [323] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3]
  //SEG686 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 
    lda #$ff
    sta dir
  //SEG687 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_hi
    sta sqr2_hi
    lda #>mulf_sqr2_hi
    sta sqr2_hi+1
  //SEG688 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_lo
    sta sqr2_lo
    lda #>mulf_sqr2_lo
    sta sqr2_lo+1
  //SEG689 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 
    ldx #-1
  //SEG690 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3]
  //SEG691 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy 
  //SEG692 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy 
  //SEG693 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy 
  //SEG694 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy 
  //SEG695 mulf_init::@3
  b3:
  //SEG696 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda mulf_sqr1_lo,x
    ldy #0
    sta (sqr2_lo),y
  //SEG697 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda mulf_sqr1_hi,x
    sta (sqr2_hi),y
  //SEG698 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 
    inc sqr2_hi
    bne !+
    inc sqr2_hi+1
  !:
  //SEG699 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 
    txa
    clc
    adc dir
    tax
  //SEG700 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b4
  //SEG701 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4]
  //SEG702 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 
    lda #1
    sta dir
  //SEG703 mulf_init::@4
  b4:
  //SEG704 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 
    inc sqr2_lo
    bne !+
    inc sqr2_lo+1
  !:
  //SEG705 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 
    lda sqr2_lo+1
    cmp #>mulf_sqr2_lo+$1ff
    bne b3
    lda sqr2_lo
    cmp #<mulf_sqr2_lo+$1ff
    bne b3
  //SEG706 mulf_init::@8
  //SEG707 [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) -- _deref_pbuc1=_deref_pbuc2 
    // Set the very last value g(511) = f(256)
    lda mulf_sqr1_lo+$100
    sta mulf_sqr2_lo+$1ff
  //SEG708 [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
  //SEG709 mulf_init::@return
  //SEG710 [334] return 
    rts
  //SEG711 [335] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12]
  //SEG712 mulf_init::@12
  //SEG713 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4]
  //SEG714 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy 
}
//SEG715 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = 4
  //SEG716 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  //SEG717 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
  //SEG718 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  //SEG719 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
  //SEG720 print_cls::@1
  b1:
  //SEG721 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG722 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG723 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1
    lda sc
    cmp #<$400+$3e8
    bne b1
  //SEG724 print_cls::@return
  //SEG725 [341] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255).
  // <f(x) = <(( x * x )/4)
  .align $100
  mulf_sqr1_lo: .fill $200, 0
  // >f(x) = >(( x * x )/4)
  .align $100
  mulf_sqr1_hi: .fill $200, 0
  // <g(x) =  <((( x - 255) * ( x - 255 ))/4)
  .align $100
  mulf_sqr2_lo: .fill $200, 0
  // >g(x) = >((( x - 255) * ( x - 255 ))/4)
  .align $100
  mulf_sqr2_hi: .fill $200, 0
  // ASM based multiplication tables
  // <(( x * x )/4)
  .align $100
  mula_sqr1_lo: .fill $200, 0
  // >(( x * x )/4)
  .align $100
  mula_sqr1_hi: .fill $200, 0
  // <((( x - 255) * ( x - 255 ))/4)
  .align $100
  mula_sqr2_lo: .fill $200, 0
  // >((( x - 255) * ( x - 255 ))/4)
  .align $100
  mula_sqr2_hi: .fill $200, 0
  str4: .text " / fast:@"
  str3: .text " / normal:@"
  str1: .text "*@"
  str2: .text " slow:@"

