Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + (number) 1
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
Identified constant variable (byte*) HEAP_TOP
Identified constant variable (byte*) BGCOL
Identified constant variable (byte*) mulf_init_asm::mem
Inlined call call mulf8s_prepare (signed byte) mulf8s::a 
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) memset::@7
Culled Empty Block (label) memset::@6
Culled Empty Block (label) memset::@8
Culled Empty Block (label) memset::@9
Culled Empty Block (label) memset::@3
Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) @5
Culled Empty Block (label) @6
Culled Empty Block (label) @7
Culled Empty Block (label) @8
Culled Empty Block (label) @9
Culled Empty Block (label) @10
Culled Empty Block (label) @11
Culled Empty Block (label) @13
Culled Empty Block (label) @14
Culled Empty Block (label) print_str::@4
Culled Empty Block (label) print_str::@3
Culled Empty Block (label) print_str::@5
Culled Empty Block (label) print_str::@6
Culled Empty Block (label) @15
Culled Empty Block (label) @16
Culled Empty Block (label) @17
Culled Empty Block (label) print_sword::@4
Culled Empty Block (label) @18
Culled Empty Block (label) print_sbyte::@4
Culled Empty Block (label) @19
Culled Empty Block (label) @20
Culled Empty Block (label) @21
Culled Empty Block (label) @22
Culled Empty Block (label) @23
Culled Empty Block (label) @24
Culled Empty Block (label) @25
Culled Empty Block (label) @26
Culled Empty Block (label) @27
Culled Empty Block (label) @28
Culled Empty Block (label) @30
Culled Empty Block (label) @31
Culled Empty Block (label) @32
Culled Empty Block (label) @33
Culled Empty Block (label) @34
Culled Empty Block (label) @35
Culled Empty Block (label) @36
Culled Empty Block (label) mul8u::@5
Culled Empty Block (label) mul8u::@6
Culled Empty Block (label) mul8u::@8
Culled Empty Block (label) mul8u::@9
Culled Empty Block (label) @37
Culled Empty Block (label) mul8s::@5
Culled Empty Block (label) @38
Culled Empty Block (label) @39
Culled Empty Block (label) @40
Culled Empty Block (label) mulf_init::@5
Culled Empty Block (label) mulf_init::@6
Culled Empty Block (label) mulf_init::@8
Culled Empty Block (label) mulf_init::@13
Culled Empty Block (label) mulf_init::@14
Culled Empty Block (label) mulf_init::@16
Culled Empty Block (label) @42
Culled Empty Block (label) @43
Culled Empty Block (label) mulf8u_prepared::@1
Culled Empty Block (label) @44
Culled Empty Block (label) mulf8u::@1
Culled Empty Block (label) @45
Culled Empty Block (label) @46
Culled Empty Block (label) mulf8s_prepared::@5
Culled Empty Block (label) @47
Culled Empty Block (label) mulf8s::mulf8s_prepare1_@return
Culled Empty Block (label) mulf8s::@1
Culled Empty Block (label) @48
Culled Empty Block (label) @49
Culled Empty Block (label) @51
Culled Empty Block (label) muls8u::@7
Culled Empty Block (label) muls8u::@6
Culled Empty Block (label) muls8u::@8
Culled Empty Block (label) muls8u::@9
Culled Empty Block (label) muls8u::@3
Culled Empty Block (label) @52
Culled Empty Block (label) muls8s::@2
Culled Empty Block (label) muls8s::@11
Culled Empty Block (label) muls8s::@10
Culled Empty Block (label) muls8s::@12
Culled Empty Block (label) muls8s::@13
Culled Empty Block (label) muls8s::@6
Culled Empty Block (label) muls8s::@17
Culled Empty Block (label) muls8s::@16
Culled Empty Block (label) muls8s::@18
Culled Empty Block (label) muls8s::@19
Culled Empty Block (label) muls8s::@7
Culled Empty Block (label) @54
Culled Empty Block (label) mulf_tables_cmp::@5
Culled Empty Block (label) mulf_tables_cmp::@6
Culled Empty Block (label) mulf_tables_cmp::@8
Culled Empty Block (label) mulf_tables_cmp::@9
Culled Empty Block (label) @55
Culled Empty Block (label) mul8u_compare::@9
Culled Empty Block (label) @56
Culled Empty Block (label) @57
Culled Empty Block (label) mul8s_compare::@18
Culled Empty Block (label) mul8s_compare::@19
Culled Empty Block (label) mul8s_compare::@10
Culled Empty Block (label) mul8s_compare::@11
Culled Empty Block (label) mul8s_compare::@15
Culled Empty Block (label) mul8s_compare::@16
Culled Empty Block (label) mul8s_compare::@17
Culled Empty Block (label) @58

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  to:@12
memset: scope:[memset]  from print_cls
  (byte) memset::c#4 ← phi( print_cls/(byte) memset::c#0 )
  (void*) memset::str#3 ← phi( print_cls/(void*) memset::str#0 )
  (word) memset::num#1 ← phi( print_cls/(word) memset::num#0 )
  (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
  (bool~) memset::$1 ← ! (bool~) memset::$0
  if((bool~) memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@4
  (void*) memset::str#1 ← phi( memset/(void*) memset::str#3 memset::@4/(void*) memset::str#4 )
  (void*) memset::return#0 ← (void*) memset::str#1
  to:memset::@return
memset::@2: scope:[memset]  from memset
  (byte) memset::c#3 ← phi( memset/(byte) memset::c#4 )
  (word) memset::num#2 ← phi( memset/(word) memset::num#1 )
  (void*) memset::str#2 ← phi( memset/(void*) memset::str#3 )
  (byte*~) memset::$2 ← ((byte*)) (void*) memset::str#2
  (byte*~) memset::$3 ← (byte*~) memset::$2 + (word) memset::num#2
  (byte*) memset::end#0 ← (byte*~) memset::$3
  (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#2
  to:memset::@4
memset::@4: scope:[memset]  from memset::@2 memset::@5
  (byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@5/(byte) memset::c#1 )
  (void*) memset::str#4 ← phi( memset::@2/(void*) memset::str#2 memset::@5/(void*) memset::str#5 )
  (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@5/(byte*) memset::end#2 )
  (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@5/(byte*) memset::dst#1 )
  (bool~) memset::$4 ← (byte*) memset::dst#2 != (byte*) memset::end#1
  if((bool~) memset::$4) goto memset::@5
  to:memset::@1
memset::@5: scope:[memset]  from memset::@4
  (void*) memset::str#5 ← phi( memset::@4/(void*) memset::str#4 )
  (byte*) memset::end#2 ← phi( memset::@4/(byte*) memset::end#1 )
  (byte*) memset::dst#3 ← phi( memset::@4/(byte*) memset::dst#2 )
  (byte) memset::c#1 ← phi( memset::@4/(byte) memset::c#2 )
  *((byte*) memset::dst#3) ← (byte) memset::c#1
  (byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
  to:memset::@4
memset::@return: scope:[memset]  from memset::@1
  (void*) memset::return#3 ← phi( memset::@1/(void*) memset::return#0 )
  (void*) memset::return#1 ← (void*) memset::return#3
  return 
  to:@return
@12: scope:[]  from @begin
  (byte*) print_screen#0 ← ((byte*)) (number) $400
  (byte*) print_line_cursor#0 ← (byte*) print_screen#0
  (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
  to:@29
print_str: scope:[print_str]  from mul8s_compare::@3 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::@13 mulf_tables_cmp::@3 mulf_tables_cmp::@7
  (byte*) print_char_cursor#155 ← phi( mul8s_compare::@3/(byte*) print_char_cursor#151 mul8s_error/(byte*) print_char_cursor#153 mul8s_error::@2/(byte*) print_char_cursor#56 mul8s_error::@4/(byte*) print_char_cursor#58 mul8s_error::@6/(byte*) print_char_cursor#60 mul8s_error::@8/(byte*) print_char_cursor#62 mul8u_compare::@11/(byte*) print_char_cursor#149 mul8u_error/(byte*) print_char_cursor#150 mul8u_error::@2/(byte*) print_char_cursor#40 mul8u_error::@4/(byte*) print_char_cursor#42 mul8u_error::@6/(byte*) print_char_cursor#44 mul8u_error::@8/(byte*) print_char_cursor#46 mulf_tables_cmp::@13/(byte*) print_char_cursor#31 mulf_tables_cmp::@3/(byte*) print_char_cursor#146 mulf_tables_cmp::@7/(byte*) print_char_cursor#147 )
  (byte*) print_str::str#18 ← phi( mul8s_compare::@3/(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::@13/(byte*) print_str::str#3 mulf_tables_cmp::@3/(byte*) print_str::str#1 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#134 ← phi( print_str/(byte*) print_char_cursor#155 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 ← (number) 0 != *((byte*) print_str::str#16)
  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#68 ← phi( print_str::@1/(byte*) print_char_cursor#134 )
  (byte*) print_str::str#17 ← phi( print_str::@1/(byte*) print_str::str#16 )
  *((byte*) print_char_cursor#68) ← *((byte*) print_str::str#17)
  (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#68
  (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#69 ← phi( print_str::@1/(byte*) print_char_cursor#134 )
  (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#69
  return 
  to:@return
print_ln: scope:[print_ln]  from mul8s_compare::@20 mul8s_error::@10 mul8u_compare::@16 mul8u_error::@10 mulf_tables_cmp::@10
  (byte*) print_char_cursor#135 ← phi( mul8s_compare::@20/(byte*) print_char_cursor#51 mul8s_error::@10/(byte*) print_char_cursor#64 mul8u_compare::@16/(byte*) print_char_cursor#37 mul8u_error::@10/(byte*) print_char_cursor#48 mulf_tables_cmp::@10/(byte*) print_char_cursor#28 )
  (byte*) print_line_cursor#45 ← phi( mul8s_compare::@20/(byte*) print_line_cursor#53 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#48 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  (byte*) print_char_cursor#70 ← phi( print_ln/(byte*) print_char_cursor#135 print_ln::@1/(byte*) print_char_cursor#70 )
  (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 + (number) $28
  (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0
  (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#70
  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#71 ← 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#71
  return 
  to:@return
print_sword: scope:[print_sword]  from mul8s_error::@5 mul8s_error::@7 mul8s_error::@9
  (byte*) print_char_cursor#156 ← phi( mul8s_error::@5/(byte*) print_char_cursor#59 mul8s_error::@7/(byte*) print_char_cursor#61 mul8s_error::@9/(byte*) print_char_cursor#63 )
  (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 < (number) 0
  if((bool~) print_sword::$0) goto print_sword::@1
  to:print_sword::@3
print_sword::@1: 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#136 ← phi( print_sword/(byte*) print_char_cursor#156 )
  (byte) print_char::ch#0 ← (byte) '-'
  call print_char 
  to:print_sword::@5
print_sword::@5: scope:[print_sword]  from print_sword::@1
  (signed word) print_sword::w#5 ← phi( print_sword::@1/(signed word) print_sword::w#7 )
  (byte*) print_char_cursor#72 ← phi( print_sword::@1/(byte*) print_char_cursor#20 )
  (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#72
  (signed word~) print_sword::$5 ← - (signed word) print_sword::w#5
  (signed word) print_sword::w#0 ← (signed word~) print_sword::$5
  to:print_sword::@2
print_sword::@3: scope:[print_sword]  from print_sword
  (signed word) print_sword::w#9 ← phi( print_sword/(signed word) print_sword::w#4 )
  (byte*) print_char_cursor#137 ← phi( print_sword/(byte*) print_char_cursor#156 )
  (byte) print_char::ch#1 ← (byte) ' '
  call print_char 
  to:print_sword::@6
print_sword::@6: scope:[print_sword]  from print_sword::@3
  (signed word) print_sword::w#8 ← phi( print_sword::@3/(signed word) print_sword::w#9 )
  (byte*) print_char_cursor#73 ← phi( print_sword::@3/(byte*) print_char_cursor#20 )
  (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#73
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword::@5 print_sword::@6
  (byte*) print_char_cursor#138 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 )
  (signed word) print_sword::w#6 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#8 )
  (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#6
  (word) print_word::w#0 ← (word~) print_sword::$1
  call print_word 
  to:print_sword::@7
print_sword::@7: scope:[print_sword]  from print_sword::@2
  (byte*) print_char_cursor#74 ← phi( print_sword::@2/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#74
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@7
  (byte*) print_char_cursor#75 ← phi( print_sword::@7/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#75
  return 
  to:@return
print_sbyte: scope:[print_sbyte]  from mul8s_error::@1 mul8s_error::@3
  (byte*) print_char_cursor#157 ← phi( mul8s_error::@1/(byte*) print_char_cursor#55 mul8s_error::@3/(byte*) print_char_cursor#57 )
  (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 < (number) 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#139 ← phi( print_sbyte/(byte*) print_char_cursor#157 )
  (byte) print_char::ch#2 ← (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#76 ← phi( print_sbyte::@1/(byte*) print_char_cursor#20 )
  (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#76
  (signed byte~) print_sbyte::$5 ← - (signed byte) print_sbyte::b#4
  (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$5
  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#140 ← phi( print_sbyte/(byte*) print_char_cursor#157 )
  (byte) print_char::ch#3 ← (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#77 ← phi( print_sbyte::@3/(byte*) print_char_cursor#20 )
  (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#77
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@5 print_sbyte::@6
  (byte*) print_char_cursor#141 ← phi( print_sbyte::@5/(byte*) print_char_cursor#9 print_sbyte::@6/(byte*) print_char_cursor#10 )
  (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::$1 ← ((byte)) (signed byte) print_sbyte::b#5
  (byte) print_byte::b#0 ← (byte~) print_sbyte::$1
  call print_byte 
  to:print_sbyte::@7
print_sbyte::@7: scope:[print_sbyte]  from print_sbyte::@2
  (byte*) print_char_cursor#78 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#78
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@7
  (byte*) print_char_cursor#79 ← phi( print_sbyte::@7/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#79
  return 
  to:@return
print_word: scope:[print_word]  from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@12 mulf_tables_cmp::@14 print_sword::@2
  (byte*) print_char_cursor#142 ← phi( mul8u_error::@5/(byte*) print_char_cursor#43 mul8u_error::@7/(byte*) print_char_cursor#45 mul8u_error::@9/(byte*) print_char_cursor#47 mulf_tables_cmp::@12/(byte*) print_char_cursor#30 mulf_tables_cmp::@14/(byte*) print_char_cursor#32 print_sword::@2/(byte*) print_char_cursor#138 )
  (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::@12/(word) print_word::w#1 mulf_tables_cmp::@14/(word) print_word::w#2 print_sword::@2/(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#80 ← phi( print_word/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#80
  (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#81 ← phi( print_word::@1/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#81
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@2
  (byte*) print_char_cursor#82 ← phi( print_word::@2/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#82
  return 
  to:@return
@29: scope:[]  from @12
  (byte*) print_screen#8 ← phi( @12/(byte*) print_screen#0 )
  (byte*) print_char_cursor#182 ← phi( @12/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#91 ← phi( @12/(byte*) print_line_cursor#0 )
  (byte[]) print_hextab#0 ← (const string) $0
  to:@41
print_byte: scope:[print_byte]  from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1
  (byte*) print_char_cursor#143 ← phi( mul8u_error::@1/(byte*) print_char_cursor#39 mul8u_error::@3/(byte*) print_char_cursor#41 print_sbyte::@2/(byte*) print_char_cursor#141 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#13 )
  (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 >> (number) 4
  (byte) print_char::ch#4 ← *((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#83 ← phi( print_byte/(byte*) print_char_cursor#20 )
  (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#83
  (number~) print_byte::$2 ← (byte) print_byte::b#6 & (number) $f
  (byte) print_char::ch#5 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2)
  call print_char 
  to:print_byte::@2
print_byte::@2: scope:[print_byte]  from print_byte::@1
  (byte*) print_char_cursor#84 ← phi( print_byte::@1/(byte*) print_char_cursor#20 )
  (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#84
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@2
  (byte*) print_char_cursor#85 ← phi( print_byte::@2/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#85
  return 
  to:@return
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3
  (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#16 print_sbyte::@1/(byte*) print_char_cursor#139 print_sbyte::@3/(byte*) print_char_cursor#140 print_sword::@1/(byte*) print_char_cursor#136 print_sword::@3/(byte*) print_char_cursor#137 )
  (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) print_char::ch#2 print_sbyte::@3/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 )
  *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6
  (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  (byte*) print_char_cursor#87 ← phi( print_char/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#87
  return 
  to:@return
print_cls: scope:[print_cls]  from main
  (byte*) print_screen#1 ← phi( main/(byte*) print_screen#3 )
  (void*) memset::str#0 ← (void*)(byte*) print_screen#1
  (byte) memset::c#0 ← (byte) ' '
  (word) memset::num#0 ← (number) $3e8
  call memset 
  (void*) memset::return#2 ← (void*) memset::return#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls
  (byte*) print_screen#2 ← phi( print_cls/(byte*) print_screen#1 )
  (byte*) print_line_cursor#3 ← (byte*) print_screen#2
  (byte*) print_char_cursor#21 ← (byte*) print_line_cursor#3
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  (byte*) print_char_cursor#88 ← phi( print_cls::@1/(byte*) print_char_cursor#21 )
  (byte*) print_line_cursor#26 ← phi( print_cls::@1/(byte*) print_line_cursor#3 )
  (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#26
  (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#88
  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 ← (number) 0
  (word) mul8u::mb#0 ← (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 != (number) 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 )
  (number~) mul8u::$1 ← (byte) mul8u::a#4 & (number) 1
  (bool~) mul8u::$2 ← (number~) mul8u::$1 != (number) 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 >> (number) 1
  (byte) mul8u::a#0 ← (byte~) mul8u::$5
  (word~) mul8u::$6 ← (word) mul8u::mb#2 << (number) 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::@23
  (signed byte) mul8s::b#1 ← phi( mul8s_compare::@23/(signed byte) mul8s::b#0 )
  (signed byte) mul8s::a#1 ← phi( mul8s_compare::@23/(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 < (number) 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::$5 ← (signed byte) mul8s::b#2 < (number) 0
  (bool~) mul8s::$6 ← ! (bool~) mul8s::$5
  if((bool~) mul8s::$6) 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::$9 ← > (word) mul8s::m#3
  (byte~) mul8s::$10 ← ((byte)) (signed byte) mul8s::b#3
  (byte~) mul8s::$11 ← (byte~) mul8s::$9 - (byte~) mul8s::$10
  (byte~) mul8s::$16 ← (byte~) mul8s::$11
  (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::$7 ← ((signed word)) (word) mul8s::m#4
  (signed word) mul8s::return#0 ← (signed word~) mul8s::$7
  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::$13 ← > (word) mul8s::m#5
  (byte~) mul8s::$14 ← ((byte)) (signed byte) mul8s::a#3
  (byte~) mul8s::$15 ← (byte~) mul8s::$13 - (byte~) mul8s::$14
  (byte~) mul8s::$17 ← (byte~) mul8s::$15
  (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
@41: scope:[]  from @29
  (byte*) print_screen#7 ← phi( @29/(byte*) print_screen#8 )
  (byte*) print_char_cursor#176 ← phi( @29/(byte*) print_char_cursor#182 )
  (byte*) print_line_cursor#78 ← phi( @29/(byte*) print_line_cursor#91 )
  (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) }
  (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) }
  (byte[$200]) mulf_sqr2_lo#0 ← { fill( $200, 0) }
  (byte[$200]) mulf_sqr2_hi#0 ← { fill( $200, 0) }
  to:@50
mulf_init: scope:[mulf_init]  from main::@1
  (word) mulf_init::sqr#0 ← (number) 0
  (byte) mulf_init::x_2#0 ← (number) 0
  (byte) mulf_init::c#0 ← (number) 0
  (byte*~) mulf_init::$0 ← (byte[$200]) mulf_sqr1_hi#0 + (number) 1
  (byte*) mulf_init::sqr1_hi#0 ← (byte*~) mulf_init::$0
  (byte*~) mulf_init::$6 ← (byte[$200]) mulf_sqr1_lo#0 + (number) 1
  (byte*) mulf_init::sqr1_lo#0 ← (byte*~) mulf_init::$6
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@4
  (byte) mulf_init::x_2#5 ← phi( mulf_init/(byte) mulf_init::x_2#0 mulf_init::@4/(byte) mulf_init::x_2#2 )
  (byte*) mulf_init::sqr1_hi#5 ← phi( mulf_init/(byte*) mulf_init::sqr1_hi#0 mulf_init::@4/(byte*) mulf_init::sqr1_hi#1 )
  (word) mulf_init::sqr#6 ← phi( mulf_init/(word) mulf_init::sqr#0 mulf_init::@4/(word) mulf_init::sqr#1 )
  (byte) mulf_init::c#3 ← phi( mulf_init/(byte) mulf_init::c#0 mulf_init::@4/(byte) mulf_init::c#4 )
  (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(byte*) mulf_init::sqr1_lo#0 mulf_init::@4/(byte*) mulf_init::sqr1_lo#1 )
  (byte*~) mulf_init::$7 ← (byte[$200]) mulf_sqr1_lo#0 + (number) $200
  (bool~) mulf_init::$8 ← (byte*) mulf_init::sqr1_lo#2 != (byte*~) mulf_init::$7
  if((bool~) mulf_init::$8) goto mulf_init::@2
  to:mulf_init::@3
mulf_init::@2: scope:[mulf_init]  from mulf_init::@1
  (byte) mulf_init::x_2#4 ← phi( mulf_init::@1/(byte) mulf_init::x_2#5 )
  (byte*) mulf_init::sqr1_hi#3 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_hi#5 )
  (byte*) mulf_init::sqr1_lo#4 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_lo#2 )
  (word) mulf_init::sqr#5 ← phi( mulf_init::@1/(word) mulf_init::sqr#6 )
  (byte) mulf_init::c#2 ← phi( mulf_init::@1/(byte) mulf_init::c#3 )
  (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  (number~) mulf_init::$9 ← (byte) mulf_init::c#1 & (number) 1
  (bool~) mulf_init::$10 ← (number~) mulf_init::$9 == (number) 0
  (bool~) mulf_init::$11 ← ! (bool~) mulf_init::$10
  if((bool~) mulf_init::$11) goto mulf_init::@4
  to:mulf_init::@7
mulf_init::@3: scope:[mulf_init]  from mulf_init::@1
  (byte~) mulf_init::$1 ← ((byte)) (number) -1
  (byte) mulf_init::x_255#0 ← (byte~) mulf_init::$1
  (byte) mulf_init::dir#0 ← (number) $ff
  (byte*) mulf_init::sqr2_hi#0 ← (byte[$200]) mulf_sqr2_hi#0
  (byte*) mulf_init::sqr2_lo#0 ← (byte[$200]) mulf_sqr2_lo#0
  to:mulf_init::@9
mulf_init::@4: scope:[mulf_init]  from mulf_init::@2 mulf_init::@7
  (byte) mulf_init::c#4 ← phi( mulf_init::@2/(byte) mulf_init::c#1 mulf_init::@7/(byte) mulf_init::c#5 )
  (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#4 mulf_init::@7/(byte) mulf_init::x_2#1 )
  (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init::@2/(byte*) mulf_init::sqr1_hi#3 mulf_init::@7/(byte*) mulf_init::sqr1_hi#4 )
  (byte*) mulf_init::sqr1_lo#3 ← phi( mulf_init::@2/(byte*) mulf_init::sqr1_lo#4 mulf_init::@7/(byte*) mulf_init::sqr1_lo#5 )
  (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#5 mulf_init::@7/(word) mulf_init::sqr#2 )
  (byte~) mulf_init::$12 ← < (word) mulf_init::sqr#3
  *((byte*) mulf_init::sqr1_lo#3) ← (byte~) mulf_init::$12
  (byte~) mulf_init::$13 ← > (word) mulf_init::sqr#3
  *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$13
  (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  (word~) mulf_init::$14 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  (word) mulf_init::sqr#1 ← (word~) mulf_init::$14
  (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#3
  to:mulf_init::@1
mulf_init::@7: scope:[mulf_init]  from mulf_init::@2
  (byte) mulf_init::c#5 ← phi( mulf_init::@2/(byte) mulf_init::c#1 )
  (byte*) mulf_init::sqr1_hi#4 ← phi( mulf_init::@2/(byte*) mulf_init::sqr1_hi#3 )
  (byte*) mulf_init::sqr1_lo#5 ← phi( mulf_init::@2/(byte*) mulf_init::sqr1_lo#4 )
  (word) mulf_init::sqr#4 ← phi( mulf_init::@2/(word) mulf_init::sqr#5 )
  (byte) mulf_init::x_2#3 ← phi( mulf_init::@2/(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::@4
mulf_init::@9: scope:[mulf_init]  from mulf_init::@12 mulf_init::@3
  (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#4 mulf_init::@3/(byte) mulf_init::dir#0 )
  (byte*) mulf_init::sqr2_hi#3 ← phi( mulf_init::@12/(byte*) mulf_init::sqr2_hi#4 mulf_init::@3/(byte*) mulf_init::sqr2_hi#0 )
  (byte) mulf_init::x_255#3 ← phi( mulf_init::@12/(byte) mulf_init::x_255#4 mulf_init::@3/(byte) mulf_init::x_255#0 )
  (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@12/(byte*) mulf_init::sqr2_lo#1 mulf_init::@3/(byte*) mulf_init::sqr2_lo#0 )
  (byte*~) mulf_init::$15 ← (byte[$200]) mulf_sqr2_lo#0 + (number) $1ff
  (bool~) mulf_init::$16 ← (byte*) mulf_init::sqr2_lo#2 != (byte*~) mulf_init::$15
  if((bool~) mulf_init::$16) goto mulf_init::@10
  to:mulf_init::@11
mulf_init::@10: scope:[mulf_init]  from mulf_init::@9
  (byte) mulf_init::dir#2 ← phi( mulf_init::@9/(byte) mulf_init::dir#3 )
  (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@9/(byte*) mulf_init::sqr2_hi#3 )
  (byte*) mulf_init::sqr2_lo#3 ← phi( mulf_init::@9/(byte*) mulf_init::sqr2_lo#2 )
  (byte) mulf_init::x_255#2 ← phi( mulf_init::@9/(byte) mulf_init::x_255#3 )
  *((byte*) mulf_init::sqr2_lo#3) ← *((byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
  *((byte*) mulf_init::sqr2_hi#2) ← *((byte[$200]) 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::$17 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  (byte) mulf_init::x_255#1 ← (byte~) mulf_init::$17
  (bool~) mulf_init::$18 ← (byte) mulf_init::x_255#1 == (number) 0
  (bool~) mulf_init::$19 ← ! (bool~) mulf_init::$18
  if((bool~) mulf_init::$19) goto mulf_init::@12
  to:mulf_init::@15
mulf_init::@11: scope:[mulf_init]  from mulf_init::@9
  (byte*~) mulf_init::$2 ← (byte[$200]) mulf_sqr2_lo#0 + (number) $1ff
  (byte*~) mulf_init::$3 ← (byte[$200]) mulf_sqr1_lo#0 + (number) $100
  *((byte*~) mulf_init::$2) ← *((byte*~) mulf_init::$3)
  (byte*~) mulf_init::$4 ← (byte[$200]) mulf_sqr2_hi#0 + (number) $1ff
  (byte*~) mulf_init::$5 ← (byte[$200]) mulf_sqr1_hi#0 + (number) $100
  *((byte*~) mulf_init::$4) ← *((byte*~) mulf_init::$5)
  to:mulf_init::@return
mulf_init::@12: scope:[mulf_init]  from mulf_init::@10 mulf_init::@15
  (byte) mulf_init::dir#4 ← phi( mulf_init::@10/(byte) mulf_init::dir#2 mulf_init::@15/(byte) mulf_init::dir#1 )
  (byte*) mulf_init::sqr2_hi#4 ← phi( mulf_init::@10/(byte*) mulf_init::sqr2_hi#1 mulf_init::@15/(byte*) mulf_init::sqr2_hi#5 )
  (byte) mulf_init::x_255#4 ← phi( mulf_init::@10/(byte) mulf_init::x_255#1 mulf_init::@15/(byte) mulf_init::x_255#5 )
  (byte*) mulf_init::sqr2_lo#4 ← phi( mulf_init::@10/(byte*) mulf_init::sqr2_lo#3 mulf_init::@15/(byte*) mulf_init::sqr2_lo#5 )
  (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#4
  to:mulf_init::@9
mulf_init::@15: scope:[mulf_init]  from mulf_init::@10
  (byte*) mulf_init::sqr2_hi#5 ← phi( mulf_init::@10/(byte*) mulf_init::sqr2_hi#1 )
  (byte) mulf_init::x_255#5 ← phi( mulf_init::@10/(byte) mulf_init::x_255#1 )
  (byte*) mulf_init::sqr2_lo#5 ← phi( mulf_init::@10/(byte*) mulf_init::sqr2_lo#3 )
  (byte) mulf_init::dir#1 ← (number) 1
  to:mulf_init::@12
mulf_init::@return: scope:[mulf_init]  from mulf_init::@11
  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*)) (number) $fd
  *((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*)) (number) $fe
  (byte*) mulf8u_prepared::memB#0 ← ((byte*)) (number) $ff
  *((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 ← ((word)) { *((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*)) (number) $fd
  (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) < (number) 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::$4 ← (signed byte) mulf8s_prepared::b#2 < (number) 0
  (bool~) mulf8s_prepared::$5 ← ! (bool~) mulf8s_prepared::$4
  if((bool~) mulf8s_prepared::$5) 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::$8 ← > (word) mulf8s_prepared::m#3
  (byte~) mulf8s_prepared::$9 ← ((byte)) (signed byte) mulf8s_prepared::b#3
  (byte~) mulf8s_prepared::$10 ← (byte~) mulf8s_prepared::$8 - (byte~) mulf8s_prepared::$9
  (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$10
  (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::$6 ← ((signed word)) (word) mulf8s_prepared::m#4
  (signed word) mulf8s_prepared::return#0 ← (signed word~) mulf8s_prepared::$6
  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::$12 ← > (word) mulf8s_prepared::m#5
  (byte~) mulf8s_prepared::$13 ← ((byte)) *((signed byte*) mulf8s_prepared::memA#0)
  (byte~) mulf8s_prepared::$14 ← (byte~) mulf8s_prepared::$12 - (byte~) mulf8s_prepared::$13
  (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$14
  (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::@22
  (signed byte) mulf8s::b#4 ← phi( mul8s_compare::@22/(signed byte) mulf8s::b#0 )
  (signed byte) mulf8s::a#1 ← phi( mul8s_compare::@22/(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
@50: scope:[]  from @41
  (byte*) print_screen#6 ← phi( @41/(byte*) print_screen#7 )
  (byte*) print_char_cursor#166 ← phi( @41/(byte*) print_char_cursor#176 )
  (byte*) print_line_cursor#67 ← phi( @41/(byte*) print_line_cursor#78 )
  (byte*) BGCOL#0 ← ((byte*)) (number) $d021
  to:@53
main: scope:[main]  from @59
  (byte*) print_char_cursor#144 ← phi( @59/(byte*) print_char_cursor#154 )
  (byte*) print_line_cursor#46 ← phi( @59/(byte*) print_line_cursor#56 )
  (byte*) print_screen#3 ← phi( @59/(byte*) print_screen#4 )
  *((byte*) BGCOL#0) ← (number) 5
  call print_cls 
  to:main::@1
main::@1: scope:[main]  from main
  (byte*) print_char_cursor#89 ← phi( main/(byte*) print_char_cursor#22 )
  (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#23 ← (byte*) print_char_cursor#89
  call mulf_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte*) print_line_cursor#57 ← phi( main::@1/(byte*) print_line_cursor#5 )
  (byte*) print_char_cursor#158 ← phi( main::@1/(byte*) print_char_cursor#23 )
  call mulf_init_asm 
  to:main::@3
main::@3: scope:[main]  from main::@2
  (byte*) print_line_cursor#47 ← phi( main::@2/(byte*) print_line_cursor#57 )
  (byte*) print_char_cursor#145 ← phi( main::@2/(byte*) print_char_cursor#158 )
  call mulf_tables_cmp 
  to:main::@4
main::@4: scope:[main]  from main::@3
  (byte*) print_line_cursor#28 ← phi( main::@3/(byte*) print_line_cursor#11 )
  (byte*) print_char_cursor#90 ← phi( main::@3/(byte*) print_char_cursor#34 )
  (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#90
  (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#28
  call mul8u_compare 
  to:main::@5
main::@5: scope:[main]  from main::@4
  (byte*) print_line_cursor#29 ← phi( main::@4/(byte*) print_line_cursor#13 )
  (byte*) print_char_cursor#91 ← phi( main::@4/(byte*) print_char_cursor#36 )
  (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#91
  (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#19 )
  (byte*) print_char_cursor#92 ← phi( main::@5/(byte*) print_char_cursor#54 )
  (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#92
  (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#30
  to:main::@return
main::@return: scope:[main]  from main::@6
  (byte*) print_char_cursor#93 ← phi( main::@6/(byte*) print_char_cursor#26 )
  (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#27 ← (byte*) print_char_cursor#93
  return 
  to:@return
muls8u: scope:[muls8u]  from mul8u_compare::@2
  (byte) muls8u::b#4 ← phi( mul8u_compare::@2/(byte) muls8u::b#0 )
  (byte) muls8u::a#1 ← phi( mul8u_compare::@2/(byte) muls8u::a#0 )
  (word) muls8u::m#0 ← (number) 0
  (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (number) 0
  (bool~) muls8u::$1 ← ! (bool~) muls8u::$0
  if((bool~) muls8u::$1) goto muls8u::@1
  to:muls8u::@2
muls8u::@1: scope:[muls8u]  from muls8u muls8u::@4
  (word) muls8u::m#2 ← phi( muls8u/(word) muls8u::m#0 muls8u::@4/(word) muls8u::m#4 )
  (word) muls8u::return#0 ← (word) muls8u::m#2
  to:muls8u::@return
muls8u::@2: scope:[muls8u]  from muls8u
  (byte) muls8u::b#3 ← phi( muls8u/(byte) muls8u::b#4 )
  (word) muls8u::m#5 ← phi( muls8u/(word) muls8u::m#0 )
  (byte) muls8u::a#3 ← phi( muls8u/(byte) muls8u::a#1 )
  (byte) muls8u::i#0 ← (number) 0
  to:muls8u::@4
muls8u::@4: scope:[muls8u]  from muls8u::@2 muls8u::@5
  (byte) muls8u::b#2 ← phi( muls8u::@2/(byte) muls8u::b#3 muls8u::@5/(byte) muls8u::b#1 )
  (word) muls8u::m#4 ← phi( muls8u::@2/(word) muls8u::m#5 muls8u::@5/(word) muls8u::m#1 )
  (byte) muls8u::a#2 ← phi( muls8u::@2/(byte) muls8u::a#3 muls8u::@5/(byte) muls8u::a#4 )
  (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#0 muls8u::@5/(byte) muls8u::i#1 )
  (bool~) muls8u::$2 ← (byte) muls8u::i#2 != (byte) muls8u::a#2
  if((bool~) muls8u::$2) goto muls8u::@5
  to:muls8u::@1
muls8u::@5: scope:[muls8u]  from muls8u::@4
  (byte) muls8u::a#4 ← phi( muls8u::@4/(byte) muls8u::a#2 )
  (byte) muls8u::i#3 ← phi( muls8u::@4/(byte) muls8u::i#2 )
  (byte) muls8u::b#1 ← phi( muls8u::@4/(byte) muls8u::b#2 )
  (word) muls8u::m#3 ← phi( muls8u::@4/(word) muls8u::m#4 )
  (word~) muls8u::$3 ← (word) muls8u::m#3 + (byte) muls8u::b#1
  (word) muls8u::m#1 ← (word~) muls8u::$3
  (byte) muls8u::i#1 ← ++ (byte) muls8u::i#3
  to:muls8u::@4
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::@5
  (signed byte) muls8s::b#7 ← phi( mul8s_compare::@5/(signed byte) muls8s::b#0 )
  (signed byte) muls8s::a#1 ← phi( mul8s_compare::@5/(signed byte) muls8s::a#0 )
  (signed word) muls8s::m#0 ← (number) 0
  (bool~) muls8s::$0 ← (signed byte) muls8s::a#1 < (number) 0
  if((bool~) muls8s::$0) goto muls8s::@1
  to:muls8s::@4
muls8s::@1: scope:[muls8s]  from muls8s
  (signed byte) muls8s::b#6 ← phi( muls8s/(signed byte) muls8s::b#7 )
  (signed word) muls8s::m#10 ← phi( muls8s/(signed word) muls8s::m#0 )
  (signed byte) muls8s::a#7 ← phi( muls8s/(signed byte) muls8s::a#1 )
  (signed byte) muls8s::i#0 ← (number) 0
  to:muls8s::@14
muls8s::@4: scope:[muls8s]  from muls8s
  (signed byte) muls8s::b#8 ← phi( muls8s/(signed byte) muls8s::b#7 )
  (signed word) muls8s::m#8 ← 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 > (number) 0
  (bool~) muls8s::$2 ← ! (bool~) muls8s::$1
  if((bool~) muls8s::$2) goto muls8s::@3
  to:muls8s::@5
muls8s::@5: scope:[muls8s]  from muls8s::@4
  (signed byte) muls8s::b#5 ← phi( muls8s::@4/(signed byte) muls8s::b#8 )
  (signed word) muls8s::m#9 ← phi( muls8s::@4/(signed word) muls8s::m#8 )
  (signed byte) muls8s::a#5 ← phi( muls8s::@4/(signed byte) muls8s::a#2 )
  (signed byte) muls8s::j#0 ← (number) 0
  to:muls8s::@8
muls8s::@8: scope:[muls8s]  from muls8s::@5 muls8s::@9
  (signed byte) muls8s::b#3 ← phi( muls8s::@5/(signed byte) muls8s::b#5 muls8s::@9/(signed byte) muls8s::b#1 )
  (signed word) muls8s::m#6 ← phi( muls8s::@5/(signed word) muls8s::m#9 muls8s::@9/(signed word) muls8s::m#1 )
  (signed byte) muls8s::a#3 ← phi( muls8s::@5/(signed byte) muls8s::a#5 muls8s::@9/(signed byte) muls8s::a#6 )
  (signed byte) muls8s::j#2 ← phi( muls8s::@5/(signed byte) muls8s::j#0 muls8s::@9/(signed byte) muls8s::j#1 )
  (bool~) muls8s::$3 ← (signed byte) muls8s::j#2 != (signed byte) muls8s::a#3
  if((bool~) muls8s::$3) goto muls8s::@9
  to:muls8s::@3
muls8s::@9: scope:[muls8s]  from muls8s::@8
  (signed byte) muls8s::a#6 ← phi( muls8s::@8/(signed byte) muls8s::a#3 )
  (signed byte) muls8s::j#3 ← phi( muls8s::@8/(signed byte) muls8s::j#2 )
  (signed byte) muls8s::b#1 ← phi( muls8s::@8/(signed byte) muls8s::b#3 )
  (signed word) muls8s::m#3 ← phi( muls8s::@8/(signed word) muls8s::m#6 )
  (signed word~) muls8s::$4 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#1
  (signed word) muls8s::m#1 ← (signed word~) muls8s::$4
  (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#3
  to:muls8s::@8
muls8s::@3: scope:[muls8s]  from muls8s::@14 muls8s::@4 muls8s::@8
  (signed word) muls8s::m#4 ← phi( muls8s::@14/(signed word) muls8s::m#7 muls8s::@4/(signed word) muls8s::m#8 muls8s::@8/(signed word) muls8s::m#6 )
  (signed word) muls8s::return#0 ← (signed word) muls8s::m#4
  to:muls8s::@return
muls8s::@14: scope:[muls8s]  from muls8s::@1 muls8s::@15
  (signed byte) muls8s::b#4 ← phi( muls8s::@1/(signed byte) muls8s::b#6 muls8s::@15/(signed byte) muls8s::b#2 )
  (signed word) muls8s::m#7 ← phi( muls8s::@1/(signed word) muls8s::m#10 muls8s::@15/(signed word) muls8s::m#2 )
  (signed byte) muls8s::a#4 ← phi( muls8s::@1/(signed byte) muls8s::a#7 muls8s::@15/(signed byte) muls8s::a#8 )
  (signed byte) muls8s::i#2 ← phi( muls8s::@1/(signed byte) muls8s::i#0 muls8s::@15/(signed byte) muls8s::i#1 )
  (bool~) muls8s::$5 ← (signed byte) muls8s::i#2 != (signed byte) muls8s::a#4
  if((bool~) muls8s::$5) goto muls8s::@15
  to:muls8s::@3
muls8s::@15: scope:[muls8s]  from muls8s::@14
  (signed byte) muls8s::a#8 ← phi( muls8s::@14/(signed byte) muls8s::a#4 )
  (signed byte) muls8s::i#3 ← phi( muls8s::@14/(signed byte) muls8s::i#2 )
  (signed byte) muls8s::b#2 ← phi( muls8s::@14/(signed byte) muls8s::b#4 )
  (signed word) muls8s::m#5 ← phi( muls8s::@14/(signed word) muls8s::m#7 )
  (signed word~) muls8s::$6 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#2
  (signed word) muls8s::m#2 ← (signed word~) muls8s::$6
  (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#3
  to:muls8s::@14
muls8s::@return: scope:[muls8s]  from muls8s::@3
  (signed word) muls8s::return#3 ← phi( muls8s::@3/(signed word) muls8s::return#0 )
  (signed word) muls8s::return#1 ← (signed word) muls8s::return#3
  return 
  to:@return
@53: scope:[]  from @50
  (byte*) print_screen#5 ← phi( @50/(byte*) print_screen#6 )
  (byte*) print_char_cursor#165 ← phi( @50/(byte*) print_char_cursor#166 )
  (byte*) print_line_cursor#66 ← phi( @50/(byte*) print_line_cursor#67 )
  (byte[$200]) mula_sqr1_lo#0 ← { fill( $200, 0) }
  (byte[$200]) mula_sqr1_hi#0 ← { fill( $200, 0) }
  (byte[$200]) mula_sqr2_lo#0 ← { fill( $200, 0) }
  (byte[$200]) mula_sqr2_hi#0 ← { fill( $200, 0) }
  to:@59
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*)) (number) $ff
  *((byte*) mulf_init_asm::mem#0) ← *((byte[$200]) mula_sqr1_lo#0)
  *((byte*) mulf_init_asm::mem#0) ← *((byte[$200]) mula_sqr1_hi#0)
  *((byte*) mulf_init_asm::mem#0) ← *((byte[$200]) mula_sqr2_lo#0)
  *((byte*) mulf_init_asm::mem#0) ← *((byte[$200]) 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#79 ← phi( main::@3/(byte*) print_line_cursor#47 )
  (byte*) print_char_cursor#167 ← phi( main::@3/(byte*) print_char_cursor#145 )
  (byte*) mulf_tables_cmp::asm_sqr#0 ← (byte[$200]) mula_sqr1_lo#0
  (byte*) mulf_tables_cmp::kc_sqr#0 ← (byte[$200]) mulf_sqr1_lo#0
  to:mulf_tables_cmp::@1
mulf_tables_cmp::@1: scope:[mulf_tables_cmp]  from mulf_tables_cmp mulf_tables_cmp::@4
  (byte*) print_line_cursor#68 ← phi( mulf_tables_cmp/(byte*) print_line_cursor#79 mulf_tables_cmp::@4/(byte*) print_line_cursor#80 )
  (byte*) print_char_cursor#159 ← phi( mulf_tables_cmp/(byte*) print_char_cursor#167 mulf_tables_cmp::@4/(byte*) print_char_cursor#168 )
  (byte*) mulf_tables_cmp::asm_sqr#5 ← phi( mulf_tables_cmp/(byte*) mulf_tables_cmp::asm_sqr#0 mulf_tables_cmp::@4/(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::@4/(byte*) mulf_tables_cmp::kc_sqr#1 )
  (byte*~) mulf_tables_cmp::$2 ← (byte[$200]) mulf_sqr1_lo#0 + (number) $200*(number) 4
  (bool~) mulf_tables_cmp::$3 ← (byte*) mulf_tables_cmp::kc_sqr#2 < (byte*~) mulf_tables_cmp::$2
  if((bool~) mulf_tables_cmp::$3) 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#92 ← phi( mulf_tables_cmp::@1/(byte*) print_line_cursor#68 )
  (byte*) print_char_cursor#160 ← phi( mulf_tables_cmp::@1/(byte*) print_char_cursor#159 )
  (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::asm_sqr#5 )
  (byte*) mulf_tables_cmp::kc_sqr#3 ← phi( mulf_tables_cmp::@1/(byte*) mulf_tables_cmp::kc_sqr#2 )
  (bool~) mulf_tables_cmp::$4 ← *((byte*) mulf_tables_cmp::kc_sqr#3) != *((byte*) mulf_tables_cmp::asm_sqr#2)
  (bool~) mulf_tables_cmp::$5 ← ! (bool~) mulf_tables_cmp::$4
  if((bool~) mulf_tables_cmp::$5) goto mulf_tables_cmp::@4
  to:mulf_tables_cmp::@7
mulf_tables_cmp::@3: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@1
  (byte*) print_line_cursor#58 ← phi( mulf_tables_cmp::@1/(byte*) print_line_cursor#68 )
  (byte*) print_char_cursor#146 ← phi( mulf_tables_cmp::@1/(byte*) print_char_cursor#159 )
  (byte*) print_str::str#1 ← (const string) mulf_tables_cmp::str
  call print_str 
  to:mulf_tables_cmp::@10
mulf_tables_cmp::@10: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@3
  (byte*) print_line_cursor#48 ← phi( mulf_tables_cmp::@3/(byte*) print_line_cursor#58 )
  (byte*) print_char_cursor#94 ← phi( mulf_tables_cmp::@3/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#94
  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#95 ← phi( mulf_tables_cmp::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#32 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#32
  (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#95
  to:mulf_tables_cmp::@return
mulf_tables_cmp::@4: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@2
  (byte*) print_line_cursor#80 ← phi( mulf_tables_cmp::@2/(byte*) print_line_cursor#92 )
  (byte*) print_char_cursor#168 ← phi( mulf_tables_cmp::@2/(byte*) print_char_cursor#160 )
  (byte*) mulf_tables_cmp::kc_sqr#4 ← phi( mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#3 )
  (byte*) mulf_tables_cmp::asm_sqr#3 ← phi( mulf_tables_cmp::@2/(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#4
  to:mulf_tables_cmp::@1
mulf_tables_cmp::@7: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@2
  (byte*) print_line_cursor#93 ← phi( mulf_tables_cmp::@2/(byte*) print_line_cursor#92 )
  (byte*) mulf_tables_cmp::kc_sqr#8 ← phi( mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#3 )
  (byte*) mulf_tables_cmp::asm_sqr#6 ← phi( mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#2 )
  (byte*) print_char_cursor#147 ← phi( mulf_tables_cmp::@2/(byte*) print_char_cursor#160 )
  *((byte*) BGCOL#0) ← (number) 2
  (byte*) print_str::str#2 ← (const string) mulf_tables_cmp::str1
  call print_str 
  to:mulf_tables_cmp::@12
mulf_tables_cmp::@12: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@7
  (byte*) print_line_cursor#81 ← phi( mulf_tables_cmp::@7/(byte*) print_line_cursor#93 )
  (byte*) mulf_tables_cmp::kc_sqr#7 ← phi( mulf_tables_cmp::@7/(byte*) mulf_tables_cmp::kc_sqr#8 )
  (byte*) mulf_tables_cmp::asm_sqr#4 ← phi( mulf_tables_cmp::@7/(byte*) mulf_tables_cmp::asm_sqr#6 )
  (byte*) print_char_cursor#96 ← phi( mulf_tables_cmp::@7/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#96
  (word~) mulf_tables_cmp::$7 ← ((word)) (byte*) mulf_tables_cmp::asm_sqr#4
  (word) print_word::w#1 ← (word~) mulf_tables_cmp::$7
  call print_word 
  to:mulf_tables_cmp::@13
mulf_tables_cmp::@13: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@12
  (byte*) print_line_cursor#69 ← phi( mulf_tables_cmp::@12/(byte*) print_line_cursor#81 )
  (byte*) mulf_tables_cmp::kc_sqr#6 ← phi( mulf_tables_cmp::@12/(byte*) mulf_tables_cmp::kc_sqr#7 )
  (byte*) print_char_cursor#97 ← phi( mulf_tables_cmp::@12/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#97
  (byte*) print_str::str#3 ← (const string) mulf_tables_cmp::str2
  call print_str 
  to:mulf_tables_cmp::@14
mulf_tables_cmp::@14: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@13
  (byte*) print_line_cursor#59 ← phi( mulf_tables_cmp::@13/(byte*) print_line_cursor#69 )
  (byte*) mulf_tables_cmp::kc_sqr#5 ← phi( mulf_tables_cmp::@13/(byte*) mulf_tables_cmp::kc_sqr#6 )
  (byte*) print_char_cursor#98 ← phi( mulf_tables_cmp::@13/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#98
  (word~) mulf_tables_cmp::$10 ← ((word)) (byte*) mulf_tables_cmp::kc_sqr#5
  (word) print_word::w#2 ← (word~) mulf_tables_cmp::$10
  call print_word 
  to:mulf_tables_cmp::@15
mulf_tables_cmp::@15: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@14
  (byte*) print_line_cursor#49 ← phi( mulf_tables_cmp::@14/(byte*) print_line_cursor#59 )
  (byte*) print_char_cursor#99 ← phi( mulf_tables_cmp::@14/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#99
  to:mulf_tables_cmp::@return
mulf_tables_cmp::@return: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@11 mulf_tables_cmp::@15
  (byte*) print_line_cursor#33 ← phi( mulf_tables_cmp::@11/(byte*) print_line_cursor#10 mulf_tables_cmp::@15/(byte*) print_line_cursor#49 )
  (byte*) print_char_cursor#100 ← phi( mulf_tables_cmp::@11/(byte*) print_char_cursor#29 mulf_tables_cmp::@15/(byte*) print_char_cursor#33 )
  (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#100
  (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#33
  return 
  to:@return
mul8u_compare: scope:[mul8u_compare]  from main::@4
  (byte*) print_line_cursor#112 ← phi( main::@4/(byte*) print_line_cursor#6 )
  (byte*) print_char_cursor#192 ← phi( main::@4/(byte*) print_char_cursor#24 )
  (byte) mul8u_compare::a#0 ← (byte) 0
  to:mul8u_compare::@1
mul8u_compare::@1: scope:[mul8u_compare]  from mul8u_compare mul8u_compare::@10
  (byte*) print_line_cursor#109 ← phi( mul8u_compare/(byte*) print_line_cursor#112 mul8u_compare::@10/(byte*) print_line_cursor#72 )
  (byte*) print_char_cursor#191 ← phi( mul8u_compare/(byte*) print_char_cursor#192 mul8u_compare::@10/(byte*) print_char_cursor#162 )
  (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) 0
  to:mul8u_compare::@2
mul8u_compare::@2: scope:[mul8u_compare]  from mul8u_compare::@1 mul8u_compare::@5
  (byte*) print_line_cursor#105 ← phi( mul8u_compare::@1/(byte*) print_line_cursor#109 mul8u_compare::@5/(byte*) print_line_cursor#84 )
  (byte*) print_char_cursor#189 ← phi( mul8u_compare::@1/(byte*) print_char_cursor#191 mul8u_compare::@5/(byte*) print_char_cursor#171 )
  (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#99 ← phi( mul8u_compare::@2/(byte*) print_line_cursor#105 )
  (byte*) print_char_cursor#187 ← phi( mul8u_compare::@2/(byte*) print_char_cursor#189 )
  (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::$2 ← (word) muls8u::return#4
  (word) mul8u_compare::ms#0 ← (word~) mul8u_compare::$2
  (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#94 ← phi( mul8u_compare::@12/(byte*) print_line_cursor#99 )
  (byte*) print_char_cursor#183 ← phi( mul8u_compare::@12/(byte*) print_char_cursor#187 )
  (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::$3 ← (word) mulf8u::return#4
  (word) mul8u_compare::mf#0 ← (word~) mul8u_compare::$3
  (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#82 ← phi( mul8u_compare::@13/(byte*) print_line_cursor#94 )
  (byte*) print_char_cursor#177 ← phi( mul8u_compare::@13/(byte*) print_char_cursor#183 )
  (byte) mul8u_compare::a#12 ← phi( mul8u_compare::@13/(byte) mul8u_compare::a#4 )
  (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::$4 ← (word) mul8u::return#6
  (word) mul8u_compare::mn#0 ← (word~) mul8u_compare::$4
  (byte) mul8u_compare::ok#0 ← (number) 1
  (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1
  (bool~) mul8u_compare::$6 ← ! (bool~) mul8u_compare::$5
  if((bool~) mul8u_compare::$6) 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#82 mul8u_compare::@6/(byte*) print_line_cursor#83 )
  (byte*) print_char_cursor#169 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#177 mul8u_compare::@6/(byte*) print_char_cursor#178 )
  (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) 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::$7 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1
  (bool~) mul8u_compare::$8 ← ! (bool~) mul8u_compare::$7
  if((bool~) mul8u_compare::$8) goto mul8u_compare::@4
  to:mul8u_compare::@7
mul8u_compare::@6: scope:[mul8u_compare]  from mul8u_compare::@14
  (byte*) print_line_cursor#83 ← phi( mul8u_compare::@14/(byte*) print_line_cursor#82 )
  (byte*) print_char_cursor#178 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#177 )
  (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) 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 ← (number) 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#161 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#169 mul8u_compare::@7/(byte*) print_char_cursor#170 )
  (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) 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::$9 ← (byte) mul8u_compare::ok#3 == (number) 0
  (bool~) mul8u_compare::$10 ← ! (bool~) mul8u_compare::$9
  if((bool~) mul8u_compare::$10) 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#170 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#169 )
  (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) mul8u_compare::b#9 ← phi( mul8u_compare::@3/(byte) mul8u_compare::b#8 )
  (byte) mul8u_compare::ok#2 ← (number) 0
  to:mul8u_compare::@4
mul8u_compare::@5: scope:[mul8u_compare]  from mul8u_compare::@4
  (byte*) print_line_cursor#84 ← phi( mul8u_compare::@4/(byte*) print_line_cursor#60 )
  (byte*) print_char_cursor#171 ← phi( mul8u_compare::@4/(byte*) print_char_cursor#161 )
  (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,$ff)
  (bool~) mul8u_compare::$12 ← (byte) mul8u_compare::b#1 != rangelast(0,$ff)
  if((bool~) mul8u_compare::$12) 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#148 ← phi( mul8u_compare::@4/(byte*) print_char_cursor#161 )
  (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#0) ← (number) 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#101 ← phi( mul8u_compare::@8/(byte*) print_char_cursor#50 )
  (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#101
  (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#102 ← phi( mul8u_compare::@15/(byte*) print_char_cursor#35 mul8u_compare::@17/(byte*) print_char_cursor#38 )
  (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#102
  (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#35
  return 
  to:@return
mul8u_compare::@10: scope:[mul8u_compare]  from mul8u_compare::@5
  (byte*) print_line_cursor#72 ← phi( mul8u_compare::@5/(byte*) print_line_cursor#84 )
  (byte*) print_char_cursor#162 ← phi( mul8u_compare::@5/(byte*) print_char_cursor#171 )
  (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,$ff)
  (bool~) mul8u_compare::$13 ← (byte) mul8u_compare::a#1 != rangelast(0,$ff)
  if((bool~) mul8u_compare::$13) 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#149 ← phi( mul8u_compare::@10/(byte*) print_char_cursor#162 )
  (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#103 ← phi( mul8u_compare::@11/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#103
  call print_ln 
  to:mul8u_compare::@17
mul8u_compare::@17: scope:[mul8u_compare]  from mul8u_compare::@16
  (byte*) print_char_cursor#104 ← 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#38 ← (byte*) print_char_cursor#104
  to:mul8u_compare::@return
mul8u_error: scope:[mul8u_error]  from mul8u_compare::@8
  (byte*) print_line_cursor#117 ← 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#150 ← phi( mul8u_compare::@8/(byte*) print_char_cursor#148 )
  (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#115 ← phi( mul8u_error/(byte*) print_line_cursor#117 )
  (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#105 ← phi( mul8u_error/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#105
  (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#113 ← phi( mul8u_error::@1/(byte*) print_line_cursor#115 )
  (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#106 ← phi( mul8u_error::@1/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#106
  (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#110 ← phi( mul8u_error::@2/(byte*) print_line_cursor#113 )
  (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#107 ← phi( mul8u_error::@2/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#107
  (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#106 ← phi( mul8u_error::@3/(byte*) print_line_cursor#110 )
  (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#108 ← phi( mul8u_error::@3/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#108
  (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#100 ← phi( mul8u_error::@4/(byte*) print_line_cursor#106 )
  (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#109 ← phi( mul8u_error::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#109
  (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#95 ← phi( mul8u_error::@5/(byte*) print_line_cursor#100 )
  (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#110 ← phi( mul8u_error::@5/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#110
  (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#85 ← phi( mul8u_error::@6/(byte*) print_line_cursor#95 )
  (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#111 ← phi( mul8u_error::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#111
  (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#85 )
  (word) mul8u_error::mf#2 ← phi( mul8u_error::@7/(word) mul8u_error::mf#3 )
  (byte*) print_char_cursor#112 ← phi( mul8u_error::@7/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#112
  (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#113 ← phi( mul8u_error::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#113
  (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#114 ← phi( mul8u_error::@9/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#114
  call print_ln 
  to:mul8u_error::@11
mul8u_error::@11: scope:[mul8u_error]  from mul8u_error::@10
  (byte*) print_char_cursor#115 ← 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#49 ← (byte*) print_char_cursor#115
  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#116 ← phi( mul8u_error::@11/(byte*) print_char_cursor#49 )
  (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#116
  (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#86 ← phi( main::@5/(byte*) print_line_cursor#7 )
  (byte*) print_char_cursor#172 ← phi( main::@5/(byte*) print_char_cursor#25 )
  (signed byte) mul8s_compare::a#0 ← (number) -$80
  to:mul8s_compare::@1
mul8s_compare::@1: scope:[mul8s_compare]  from mul8s_compare mul8s_compare::@6
  (byte*) print_line_cursor#74 ← phi( mul8s_compare/(byte*) print_line_cursor#86 mul8s_compare::@6/(byte*) print_line_cursor#87 )
  (byte*) print_char_cursor#163 ← phi( mul8s_compare/(byte*) print_char_cursor#172 mul8s_compare::@6/(byte*) print_char_cursor#173 )
  (signed byte) mul8s_compare::a#2 ← phi( mul8s_compare/(signed byte) mul8s_compare::a#0 mul8s_compare::@6/(signed byte) mul8s_compare::a#1 )
  (bool~) mul8s_compare::$2 ← (signed byte) mul8s_compare::a#2 != (number) -$80
  if((bool~) mul8s_compare::$2) goto mul8s_compare::@2
  to:mul8s_compare::@3
mul8s_compare::@2: scope:[mul8s_compare]  from mul8s_compare::@1
  (byte*) print_line_cursor#101 ← phi( mul8s_compare::@1/(byte*) print_line_cursor#74 )
  (byte*) print_char_cursor#184 ← phi( mul8s_compare::@1/(byte*) print_char_cursor#163 )
  (signed byte) mul8s_compare::a#10 ← phi( mul8s_compare::@1/(signed byte) mul8s_compare::a#2 )
  (signed byte) mul8s_compare::b#0 ← (number) -$80
  to:mul8s_compare::@4
mul8s_compare::@3: scope:[mul8s_compare]  from mul8s_compare::@1
  (byte*) print_line_cursor#63 ← phi( mul8s_compare::@1/(byte*) print_line_cursor#74 )
  (byte*) print_char_cursor#151 ← phi( mul8s_compare::@1/(byte*) print_char_cursor#163 )
  (byte*) print_str::str#10 ← (const string) mul8s_compare::str
  call print_str 
  to:mul8s_compare::@20
mul8s_compare::@20: scope:[mul8s_compare]  from mul8s_compare::@3
  (byte*) print_line_cursor#53 ← phi( mul8s_compare::@3/(byte*) print_line_cursor#63 )
  (byte*) print_char_cursor#117 ← phi( mul8s_compare::@3/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#117
  call print_ln 
  to:mul8s_compare::@21
mul8s_compare::@21: scope:[mul8s_compare]  from mul8s_compare::@20
  (byte*) print_char_cursor#118 ← phi( mul8s_compare::@20/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#39 ← phi( mul8s_compare::@20/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#39
  (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#118
  to:mul8s_compare::@return
mul8s_compare::@4: scope:[mul8s_compare]  from mul8s_compare::@2 mul8s_compare::@9
  (byte*) print_line_cursor#97 ← phi( mul8s_compare::@2/(byte*) print_line_cursor#101 mul8s_compare::@9/(byte*) print_line_cursor#102 )
  (byte*) print_char_cursor#179 ← phi( mul8s_compare::@2/(byte*) print_char_cursor#184 mul8s_compare::@9/(byte*) print_char_cursor#185 )
  (signed byte) mul8s_compare::a#8 ← phi( mul8s_compare::@2/(signed byte) mul8s_compare::a#10 mul8s_compare::@9/(signed byte) mul8s_compare::a#11 )
  (signed byte) mul8s_compare::b#2 ← phi( mul8s_compare::@2/(signed byte) mul8s_compare::b#0 mul8s_compare::@9/(signed byte) mul8s_compare::b#1 )
  (bool~) mul8s_compare::$3 ← (signed byte) mul8s_compare::b#2 != (number) -$80
  if((bool~) mul8s_compare::$3) goto mul8s_compare::@5
  to:mul8s_compare::@6
mul8s_compare::@5: scope:[mul8s_compare]  from mul8s_compare::@4
  (byte*) print_line_cursor#107 ← phi( mul8s_compare::@4/(byte*) print_line_cursor#97 )
  (byte*) print_char_cursor#190 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#179 )
  (signed byte) mul8s_compare::b#3 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::b#2 )
  (signed byte) mul8s_compare::a#3 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::a#8 )
  (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#3
  (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#3
  call muls8s 
  (signed word) muls8s::return#2 ← (signed word) muls8s::return#1
  to:mul8s_compare::@22
mul8s_compare::@22: scope:[mul8s_compare]  from mul8s_compare::@5
  (byte*) print_line_cursor#103 ← phi( mul8s_compare::@5/(byte*) print_line_cursor#107 )
  (byte*) print_char_cursor#188 ← phi( mul8s_compare::@5/(byte*) print_char_cursor#190 )
  (signed byte) mul8s_compare::b#4 ← phi( mul8s_compare::@5/(signed byte) mul8s_compare::b#3 )
  (signed byte) mul8s_compare::a#4 ← phi( mul8s_compare::@5/(signed byte) mul8s_compare::a#3 )
  (signed word) muls8s::return#4 ← phi( mul8s_compare::@5/(signed word) muls8s::return#2 )
  (signed word~) mul8s_compare::$4 ← (signed word) muls8s::return#4
  (signed word) mul8s_compare::ms#0 ← (signed word~) mul8s_compare::$4
  (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#4
  (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#4
  call mulf8s 
  (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#1
  to:mul8s_compare::@23
mul8s_compare::@23: scope:[mul8s_compare]  from mul8s_compare::@22
  (byte*) print_line_cursor#96 ← phi( mul8s_compare::@22/(byte*) print_line_cursor#103 )
  (byte*) print_char_cursor#186 ← phi( mul8s_compare::@22/(byte*) print_char_cursor#188 )
  (signed word) mul8s_compare::ms#4 ← phi( mul8s_compare::@22/(signed word) mul8s_compare::ms#0 )
  (signed byte) mul8s_compare::b#5 ← phi( mul8s_compare::@22/(signed byte) mul8s_compare::b#4 )
  (signed byte) mul8s_compare::a#5 ← phi( mul8s_compare::@22/(signed byte) mul8s_compare::a#4 )
  (signed word) mulf8s::return#4 ← phi( mul8s_compare::@22/(signed word) mulf8s::return#2 )
  (signed word~) mul8s_compare::$5 ← (signed word) mulf8s::return#4
  (signed word) mul8s_compare::mf#0 ← (signed word~) mul8s_compare::$5
  (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#5
  (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#5
  call mul8s 
  (signed word) mul8s::return#2 ← (signed word) mul8s::return#1
  to:mul8s_compare::@24
mul8s_compare::@24: scope:[mul8s_compare]  from mul8s_compare::@23
  (byte*) print_line_cursor#89 ← phi( mul8s_compare::@23/(byte*) print_line_cursor#96 )
  (byte*) print_char_cursor#181 ← phi( mul8s_compare::@23/(byte*) print_char_cursor#186 )
  (signed byte) mul8s_compare::a#15 ← phi( mul8s_compare::@23/(signed byte) mul8s_compare::a#5 )
  (signed byte) mul8s_compare::b#12 ← phi( mul8s_compare::@23/(signed byte) mul8s_compare::b#5 )
  (signed word) mul8s_compare::mf#1 ← phi( mul8s_compare::@23/(signed word) mul8s_compare::mf#0 )
  (signed word) mul8s_compare::ms#1 ← phi( mul8s_compare::@23/(signed word) mul8s_compare::ms#4 )
  (signed word) mul8s::return#4 ← phi( mul8s_compare::@23/(signed word) mul8s::return#2 )
  (signed word~) mul8s_compare::$6 ← (signed word) mul8s::return#4
  (signed word) mul8s_compare::mn#0 ← (signed word~) mul8s_compare::$6
  (byte) mul8s_compare::ok#0 ← (number) 1
  (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1
  (bool~) mul8s_compare::$8 ← ! (bool~) mul8s_compare::$7
  if((bool~) mul8s_compare::$8) goto mul8s_compare::@7
  to:mul8s_compare::@12
mul8s_compare::@6: scope:[mul8s_compare]  from mul8s_compare::@4
  (byte*) print_line_cursor#87 ← phi( mul8s_compare::@4/(byte*) print_line_cursor#97 )
  (byte*) print_char_cursor#173 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#179 )
  (signed byte) mul8s_compare::a#6 ← phi( mul8s_compare::@4/(signed byte) mul8s_compare::a#8 )
  (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#6
  to:mul8s_compare::@1
mul8s_compare::@7: scope:[mul8s_compare]  from mul8s_compare::@12 mul8s_compare::@24
  (byte*) print_line_cursor#76 ← phi( mul8s_compare::@12/(byte*) print_line_cursor#88 mul8s_compare::@24/(byte*) print_line_cursor#89 )
  (byte*) print_char_cursor#175 ← phi( mul8s_compare::@12/(byte*) print_char_cursor#180 mul8s_compare::@24/(byte*) print_char_cursor#181 )
  (signed word) mul8s_compare::mf#5 ← phi( mul8s_compare::@12/(signed word) mul8s_compare::mf#6 mul8s_compare::@24/(signed word) mul8s_compare::mf#1 )
  (signed byte) mul8s_compare::a#13 ← phi( mul8s_compare::@12/(signed byte) mul8s_compare::a#14 mul8s_compare::@24/(signed byte) mul8s_compare::a#15 )
  (signed byte) mul8s_compare::b#10 ← phi( mul8s_compare::@12/(signed byte) mul8s_compare::b#11 mul8s_compare::@24/(signed byte) mul8s_compare::b#12 )
  (byte) mul8s_compare::ok#4 ← phi( mul8s_compare::@12/(byte) mul8s_compare::ok#1 mul8s_compare::@24/(byte) mul8s_compare::ok#0 )
  (signed word) mul8s_compare::mn#1 ← phi( mul8s_compare::@12/(signed word) mul8s_compare::mn#3 mul8s_compare::@24/(signed word) mul8s_compare::mn#0 )
  (signed word) mul8s_compare::ms#2 ← phi( mul8s_compare::@12/(signed word) mul8s_compare::ms#5 mul8s_compare::@24/(signed word) mul8s_compare::ms#1 )
  (bool~) mul8s_compare::$9 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1
  (bool~) mul8s_compare::$10 ← ! (bool~) mul8s_compare::$9
  if((bool~) mul8s_compare::$10) goto mul8s_compare::@8
  to:mul8s_compare::@13
mul8s_compare::@12: scope:[mul8s_compare]  from mul8s_compare::@24
  (byte*) print_line_cursor#88 ← phi( mul8s_compare::@24/(byte*) print_line_cursor#89 )
  (byte*) print_char_cursor#180 ← phi( mul8s_compare::@24/(byte*) print_char_cursor#181 )
  (signed word) mul8s_compare::mf#6 ← phi( mul8s_compare::@24/(signed word) mul8s_compare::mf#1 )
  (signed byte) mul8s_compare::a#14 ← phi( mul8s_compare::@24/(signed byte) mul8s_compare::a#15 )
  (signed byte) mul8s_compare::b#11 ← phi( mul8s_compare::@24/(signed byte) mul8s_compare::b#12 )
  (signed word) mul8s_compare::mn#3 ← phi( mul8s_compare::@24/(signed word) mul8s_compare::mn#0 )
  (signed word) mul8s_compare::ms#5 ← phi( mul8s_compare::@24/(signed word) mul8s_compare::ms#1 )
  (byte) mul8s_compare::ok#1 ← (number) 0
  to:mul8s_compare::@7
mul8s_compare::@8: scope:[mul8s_compare]  from mul8s_compare::@13 mul8s_compare::@7
  (byte*) print_line_cursor#64 ← phi( mul8s_compare::@13/(byte*) print_line_cursor#75 mul8s_compare::@7/(byte*) print_line_cursor#76 )
  (byte*) print_char_cursor#164 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#174 mul8s_compare::@7/(byte*) print_char_cursor#175 )
  (signed word) mul8s_compare::mf#3 ← phi( mul8s_compare::@13/(signed word) mul8s_compare::mf#4 mul8s_compare::@7/(signed word) mul8s_compare::mf#5 )
  (signed word) mul8s_compare::mn#4 ← phi( mul8s_compare::@13/(signed word) mul8s_compare::mn#5 mul8s_compare::@7/(signed word) mul8s_compare::mn#1 )
  (signed word) mul8s_compare::ms#6 ← phi( mul8s_compare::@13/(signed word) mul8s_compare::ms#7 mul8s_compare::@7/(signed word) mul8s_compare::ms#2 )
  (signed byte) mul8s_compare::a#9 ← phi( mul8s_compare::@13/(signed byte) mul8s_compare::a#12 mul8s_compare::@7/(signed byte) mul8s_compare::a#13 )
  (signed byte) mul8s_compare::b#8 ← phi( mul8s_compare::@13/(signed byte) mul8s_compare::b#9 mul8s_compare::@7/(signed byte) mul8s_compare::b#10 )
  (byte) mul8s_compare::ok#3 ← phi( mul8s_compare::@13/(byte) mul8s_compare::ok#2 mul8s_compare::@7/(byte) mul8s_compare::ok#4 )
  (bool~) mul8s_compare::$11 ← (byte) mul8s_compare::ok#3 == (number) 0
  (bool~) mul8s_compare::$12 ← ! (bool~) mul8s_compare::$11
  if((bool~) mul8s_compare::$12) goto mul8s_compare::@9
  to:mul8s_compare::@14
mul8s_compare::@13: scope:[mul8s_compare]  from mul8s_compare::@7
  (byte*) print_line_cursor#75 ← phi( mul8s_compare::@7/(byte*) print_line_cursor#76 )
  (byte*) print_char_cursor#174 ← phi( mul8s_compare::@7/(byte*) print_char_cursor#175 )
  (signed word) mul8s_compare::mf#4 ← phi( mul8s_compare::@7/(signed word) mul8s_compare::mf#5 )
  (signed word) mul8s_compare::mn#5 ← phi( mul8s_compare::@7/(signed word) mul8s_compare::mn#1 )
  (signed word) mul8s_compare::ms#7 ← phi( mul8s_compare::@7/(signed word) mul8s_compare::ms#2 )
  (signed byte) mul8s_compare::a#12 ← phi( mul8s_compare::@7/(signed byte) mul8s_compare::a#13 )
  (signed byte) mul8s_compare::b#9 ← phi( mul8s_compare::@7/(signed byte) mul8s_compare::b#10 )
  (byte) mul8s_compare::ok#2 ← (number) 0
  to:mul8s_compare::@8
mul8s_compare::@9: scope:[mul8s_compare]  from mul8s_compare::@8
  (byte*) print_line_cursor#102 ← phi( mul8s_compare::@8/(byte*) print_line_cursor#64 )
  (byte*) print_char_cursor#185 ← phi( mul8s_compare::@8/(byte*) print_char_cursor#164 )
  (signed byte) mul8s_compare::a#11 ← phi( mul8s_compare::@8/(signed byte) mul8s_compare::a#9 )
  (signed byte) mul8s_compare::b#6 ← phi( mul8s_compare::@8/(signed byte) mul8s_compare::b#8 )
  (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#6
  to:mul8s_compare::@4
mul8s_compare::@14: scope:[mul8s_compare]  from mul8s_compare::@8
  (byte*) print_line_cursor#54 ← phi( mul8s_compare::@8/(byte*) print_line_cursor#64 )
  (byte*) print_char_cursor#152 ← phi( mul8s_compare::@8/(byte*) print_char_cursor#164 )
  (signed word) mul8s_compare::mf#2 ← phi( mul8s_compare::@8/(signed word) mul8s_compare::mf#3 )
  (signed word) mul8s_compare::mn#2 ← phi( mul8s_compare::@8/(signed word) mul8s_compare::mn#4 )
  (signed word) mul8s_compare::ms#3 ← phi( mul8s_compare::@8/(signed word) mul8s_compare::ms#6 )
  (signed byte) mul8s_compare::b#7 ← phi( mul8s_compare::@8/(signed byte) mul8s_compare::b#8 )
  (signed byte) mul8s_compare::a#7 ← phi( mul8s_compare::@8/(signed byte) mul8s_compare::a#9 )
  *((byte*) BGCOL#0) ← (number) 2
  (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#7
  (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#7
  (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::@25
mul8s_compare::@25: scope:[mul8s_compare]  from mul8s_compare::@14
  (byte*) print_line_cursor#40 ← phi( mul8s_compare::@14/(byte*) print_line_cursor#21 )
  (byte*) print_char_cursor#119 ← phi( mul8s_compare::@14/(byte*) print_char_cursor#66 )
  (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#119
  (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#40
  to:mul8s_compare::@return
mul8s_compare::@return: scope:[mul8s_compare]  from mul8s_compare::@21 mul8s_compare::@25
  (byte*) print_line_cursor#41 ← phi( mul8s_compare::@21/(byte*) print_line_cursor#17 mul8s_compare::@25/(byte*) print_line_cursor#18 )
  (byte*) print_char_cursor#120 ← phi( mul8s_compare::@21/(byte*) print_char_cursor#52 mul8s_compare::@25/(byte*) print_char_cursor#53 )
  (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#120
  (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#41
  return 
  to:@return
mul8s_error: scope:[mul8s_error]  from mul8s_compare::@14
  (byte*) print_line_cursor#118 ← phi( mul8s_compare::@14/(byte*) print_line_cursor#54 )
  (signed word) mul8s_error::mf#10 ← phi( mul8s_compare::@14/(signed word) mul8s_error::mf#0 )
  (signed word) mul8s_error::mn#8 ← phi( mul8s_compare::@14/(signed word) mul8s_error::mn#0 )
  (signed word) mul8s_error::ms#6 ← phi( mul8s_compare::@14/(signed word) mul8s_error::ms#0 )
  (signed byte) mul8s_error::b#4 ← phi( mul8s_compare::@14/(signed byte) mul8s_error::b#0 )
  (signed byte) mul8s_error::a#2 ← phi( mul8s_compare::@14/(signed byte) mul8s_error::a#0 )
  (byte*) print_char_cursor#153 ← phi( mul8s_compare::@14/(byte*) print_char_cursor#152 )
  (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#116 ← phi( mul8s_error/(byte*) print_line_cursor#118 )
  (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#121 ← phi( mul8s_error/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#121
  (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#114 ← phi( mul8s_error::@1/(byte*) print_line_cursor#116 )
  (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#122 ← phi( mul8s_error::@1/(byte*) print_char_cursor#12 )
  (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#122
  (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#111 ← phi( mul8s_error::@2/(byte*) print_line_cursor#114 )
  (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#123 ← phi( mul8s_error::@2/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#123
  (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#108 ← phi( mul8s_error::@3/(byte*) print_line_cursor#111 )
  (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#124 ← phi( mul8s_error::@3/(byte*) print_char_cursor#12 )
  (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#124
  (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#104 ← phi( mul8s_error::@4/(byte*) print_line_cursor#108 )
  (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#125 ← phi( mul8s_error::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#125
  (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#98 ← phi( mul8s_error::@5/(byte*) print_line_cursor#104 )
  (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#126 ← phi( mul8s_error::@5/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#126
  (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#90 ← phi( mul8s_error::@6/(byte*) print_line_cursor#98 )
  (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#127 ← phi( mul8s_error::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#127
  (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#90 )
  (signed word) mul8s_error::mf#2 ← phi( mul8s_error::@7/(signed word) mul8s_error::mf#3 )
  (byte*) print_char_cursor#128 ← phi( mul8s_error::@7/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#128
  (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#129 ← phi( mul8s_error::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#129
  (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#130 ← phi( mul8s_error::@9/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#130
  call print_ln 
  to:mul8s_error::@11
mul8s_error::@11: scope:[mul8s_error]  from mul8s_error::@10
  (byte*) print_char_cursor#131 ← 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#65 ← (byte*) print_char_cursor#131
  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#132 ← phi( mul8s_error::@11/(byte*) print_char_cursor#65 )
  (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#132
  (byte*) print_line_cursor#21 ← (byte*) print_line_cursor#43
  return 
  to:@return
@59: scope:[]  from @53
  (byte*) print_screen#4 ← phi( @53/(byte*) print_screen#5 )
  (byte*) print_char_cursor#154 ← phi( @53/(byte*) print_char_cursor#165 )
  (byte*) print_line_cursor#56 ← phi( @53/(byte*) print_line_cursor#66 )
  call main 
  to:@60
@60: scope:[]  from @59
  (byte*) print_char_cursor#133 ← phi( @59/(byte*) print_char_cursor#27 )
  (byte*) print_line_cursor#44 ← phi( @59/(byte*) print_line_cursor#9 )
  (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#44
  (byte*) print_char_cursor#67 ← (byte*) print_char_cursor#133
  to:@end
@end: scope:[]  from @60

SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"z
(label) @12
(label) @29
(label) @41
(label) @50
(label) @53
(label) @59
(label) @60
(label) @begin
(label) @end
(byte*) BGCOL
(byte*) BGCOL#0
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
(byte*~) memset::$2
(byte*~) memset::$3
(bool~) memset::$4
(label) memset::@1
(label) memset::@2
(label) memset::@4
(label) memset::@5
(label) memset::@return
(byte) memset::c
(byte) memset::c#0
(byte) memset::c#1
(byte) memset::c#2
(byte) memset::c#3
(byte) memset::c#4
(byte*) memset::dst
(byte*) memset::dst#0
(byte*) memset::dst#1
(byte*) memset::dst#2
(byte*) memset::dst#3
(byte*) memset::end
(byte*) memset::end#0
(byte*) memset::end#1
(byte*) memset::end#2
(word) memset::num
(word) memset::num#0
(word) memset::num#1
(word) memset::num#2
(void*) memset::return
(void*) memset::return#0
(void*) memset::return#1
(void*) memset::return#2
(void*) memset::return#3
(void*) memset::str
(void*) memset::str#0
(void*) memset::str#1
(void*) memset::str#2
(void*) memset::str#3
(void*) memset::str#4
(void*) memset::str#5
(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
(byte~) mul8s::$0
(byte~) mul8s::$1
(byte~) mul8s::$10
(byte~) mul8s::$11
(byte~) mul8s::$13
(byte~) mul8s::$14
(byte~) mul8s::$15
(byte~) mul8s::$16
(byte~) mul8s::$17
(word~) mul8s::$2
(bool~) mul8s::$3
(bool~) mul8s::$4
(bool~) mul8s::$5
(bool~) mul8s::$6
(signed word~) mul8s::$7
(byte~) 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()
(bool~) mul8s_compare::$10
(bool~) mul8s_compare::$11
(bool~) mul8s_compare::$12
(bool~) mul8s_compare::$2
(bool~) mul8s_compare::$3
(signed word~) mul8s_compare::$4
(signed word~) mul8s_compare::$5
(signed word~) mul8s_compare::$6
(bool~) mul8s_compare::$7
(bool~) mul8s_compare::$8
(bool~) mul8s_compare::$9
(label) mul8s_compare::@1
(label) mul8s_compare::@12
(label) mul8s_compare::@13
(label) mul8s_compare::@14
(label) mul8s_compare::@2
(label) mul8s_compare::@20
(label) mul8s_compare::@21
(label) mul8s_compare::@22
(label) mul8s_compare::@23
(label) mul8s_compare::@24
(label) mul8s_compare::@25
(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::@9
(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#14
(signed byte) mul8s_compare::a#15
(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#12
(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
(number~) 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()
(bool~) mul8u_compare::$10
(bool~) mul8u_compare::$12
(bool~) mul8u_compare::$13
(word~) mul8u_compare::$2
(word~) mul8u_compare::$3
(word~) mul8u_compare::$4
(bool~) mul8u_compare::$5
(bool~) mul8u_compare::$6
(bool~) mul8u_compare::$7
(bool~) mul8u_compare::$8
(bool~) mul8u_compare::$9
(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[$200]) mula_sqr1_hi
(byte[$200]) mula_sqr1_hi#0
(byte[$200]) mula_sqr1_lo
(byte[$200]) mula_sqr1_lo#0
(byte[$200]) mula_sqr2_hi
(byte[$200]) mula_sqr2_hi#0
(byte[$200]) mula_sqr2_lo
(byte[$200]) 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::$10
(byte~) mulf8s_prepared::$12
(byte~) mulf8s_prepared::$13
(byte~) mulf8s_prepared::$14
(byte~) mulf8s_prepared::$15
(byte~) mulf8s_prepared::$16
(bool~) mulf8s_prepared::$2
(bool~) mulf8s_prepared::$3
(bool~) mulf8s_prepared::$4
(bool~) mulf8s_prepared::$5
(signed word~) mulf8s_prepared::$6
(byte~) mulf8s_prepared::$8
(byte~) 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
(bool~) mulf_init::$10
(bool~) mulf_init::$11
(byte~) mulf_init::$12
(byte~) mulf_init::$13
(word~) mulf_init::$14
(byte*~) mulf_init::$15
(bool~) mulf_init::$16
(byte~) mulf_init::$17
(bool~) mulf_init::$18
(bool~) mulf_init::$19
(byte*~) mulf_init::$2
(byte*~) mulf_init::$3
(byte*~) mulf_init::$4
(byte*~) mulf_init::$5
(byte*~) mulf_init::$6
(byte*~) mulf_init::$7
(bool~) mulf_init::$8
(number~) mulf_init::$9
(label) mulf_init::@1
(label) mulf_init::@10
(label) mulf_init::@11
(label) mulf_init::@12
(label) mulf_init::@15
(label) mulf_init::@2
(label) mulf_init::@3
(label) mulf_init::@4
(label) mulf_init::@7
(label) mulf_init::@9
(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::c#5
(byte) mulf_init::dir
(byte) mulf_init::dir#0
(byte) mulf_init::dir#1
(byte) mulf_init::dir#2
(byte) mulf_init::dir#3
(byte) mulf_init::dir#4
(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
(word) mulf_init::sqr#6
(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_hi#5
(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::sqr1_lo#5
(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_hi#5
(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::sqr2_lo#5
(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_2#5
(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
(byte) mulf_init::x_255#5
(void()) mulf_init_asm()
(label) mulf_init_asm::@return
(byte*) mulf_init_asm::mem
(byte*) mulf_init_asm::mem#0
(byte[$200]) mulf_sqr1_hi
(byte[$200]) mulf_sqr1_hi#0
(byte[$200]) mulf_sqr1_lo
(byte[$200]) mulf_sqr1_lo#0
(byte[$200]) mulf_sqr2_hi
(byte[$200]) mulf_sqr2_hi#0
(byte[$200]) mulf_sqr2_lo
(byte[$200]) mulf_sqr2_lo#0
(void()) mulf_tables_cmp()
(word~) mulf_tables_cmp::$10
(byte*~) mulf_tables_cmp::$2
(bool~) mulf_tables_cmp::$3
(bool~) mulf_tables_cmp::$4
(bool~) mulf_tables_cmp::$5
(word~) mulf_tables_cmp::$7
(label) mulf_tables_cmp::@1
(label) mulf_tables_cmp::@10
(label) mulf_tables_cmp::@11
(label) mulf_tables_cmp::@12
(label) mulf_tables_cmp::@13
(label) mulf_tables_cmp::@14
(label) mulf_tables_cmp::@15
(label) mulf_tables_cmp::@2
(label) mulf_tables_cmp::@3
(label) mulf_tables_cmp::@4
(label) mulf_tables_cmp::@7
(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::asm_sqr#6
(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
(byte*) mulf_tables_cmp::kc_sqr#8
(const string) mulf_tables_cmp::str = (string) "multiply tables match!"
(const string) mulf_tables_cmp::str1 = (string) "multiply table mismatch at "
(const string) mulf_tables_cmp::str2 = (string) " / "
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(bool~) muls8s::$0
(bool~) muls8s::$1
(bool~) muls8s::$2
(bool~) muls8s::$3
(signed word~) muls8s::$4
(bool~) muls8s::$5
(signed word~) muls8s::$6
(label) muls8s::@1
(label) muls8s::@14
(label) muls8s::@15
(label) muls8s::@3
(label) muls8s::@4
(label) muls8s::@5
(label) muls8s::@8
(label) muls8s::@9
(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::a#7
(signed byte) muls8s::a#8
(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::b#7
(signed byte) muls8s::b#8
(signed byte) muls8s::i
(signed byte) muls8s::i#0
(signed byte) muls8s::i#1
(signed byte) muls8s::i#2
(signed byte) muls8s::i#3
(signed byte) muls8s::j
(signed byte) muls8s::j#0
(signed byte) muls8s::j#1
(signed byte) muls8s::j#2
(signed byte) muls8s::j#3
(signed word) muls8s::m
(signed word) muls8s::m#0
(signed word) muls8s::m#1
(signed word) muls8s::m#10
(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
(bool~) muls8u::$2
(word~) muls8u::$3
(label) muls8u::@1
(label) muls8u::@2
(label) muls8u::@4
(label) muls8u::@5
(label) muls8u::@return
(byte) muls8u::a
(byte) muls8u::a#0
(byte) muls8u::a#1
(byte) muls8u::a#2
(byte) muls8u::a#3
(byte) muls8u::a#4
(byte) muls8u::b
(byte) muls8u::b#0
(byte) muls8u::b#1
(byte) muls8u::b#2
(byte) muls8u::b#3
(byte) muls8u::b#4
(byte) muls8u::i
(byte) muls8u::i#0
(byte) muls8u::i#1
(byte) muls8u::i#2
(byte) muls8u::i#3
(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::m#5
(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
(number~) 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::ch#6
(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#187
(byte*) print_char_cursor#188
(byte*) print_char_cursor#189
(byte*) print_char_cursor#19
(byte*) print_char_cursor#190
(byte*) print_char_cursor#191
(byte*) print_char_cursor#192
(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()
(label) print_cls::@1
(label) print_cls::@return
(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#116
(byte*) print_line_cursor#117
(byte*) print_line_cursor#118
(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
(byte~) print_sbyte::$1
(signed byte~) print_sbyte::$5
(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
(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
(word~) print_sword::$1
(signed word~) print_sword::$5
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@5
(label) print_sword::@6
(label) print_sword::@7
(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
(signed word) print_sword::w#8
(signed word) print_sword::w#9
(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

Fixing inline constructor with mulf8u_prepared::$0 ← (byte)*(mulf8u_prepared::memB#0) w= (byte)*(mulf8u_prepared::resL#0)
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#16)
Adding number conversion cast (unumber) $28 in (byte*~) print_ln::$0 ← (byte*) print_line_cursor#23 + (number) $28
Adding number conversion cast (snumber) 0 in (bool~) print_sword::$0 ← (signed word) print_sword::w#4 < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#3 < (number) 0
Adding number conversion cast (unumber) 4 in (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (number) 4
Adding number conversion cast (unumber) $f in (number~) print_byte::$2 ← (byte) print_byte::b#6 & (number) $f
Adding number conversion cast (unumber) print_byte::$2 in (number~) print_byte::$2 ← (byte) print_byte::b#6 & (unumber)(number) $f
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Adding number conversion cast (unumber) 0 in (word) mul8u::res#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) mul8u::$0 ← (byte) mul8u::a#3 != (number) 0
Adding number conversion cast (unumber) 1 in (number~) mul8u::$1 ← (byte) mul8u::a#4 & (number) 1
Adding number conversion cast (unumber) mul8u::$1 in (number~) mul8u::$1 ← (byte) mul8u::a#4 & (unumber)(number) 1
Adding number conversion cast (unumber) 0 in (bool~) mul8u::$2 ← (unumber~) mul8u::$1 != (number) 0
Adding number conversion cast (unumber) 1 in (byte~) mul8u::$5 ← (byte) mul8u::a#5 >> (number) 1
Adding number conversion cast (unumber) 1 in (word~) mul8u::$6 ← (word) mul8u::mb#2 << (number) 1
Adding number conversion cast (snumber) 0 in (bool~) mul8s::$3 ← (signed byte) mul8s::a#2 < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) mul8s::$5 ← (signed byte) mul8s::b#2 < (number) 0
Adding number conversion cast (unumber) 0 in (word) mulf_init::sqr#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mulf_init::x_2#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) mulf_init::c#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte*~) mulf_init::$0 ← (byte[$200]) mulf_sqr1_hi#0 + (number) 1
Adding number conversion cast (unumber) 1 in (byte*~) mulf_init::$6 ← (byte[$200]) mulf_sqr1_lo#0 + (number) 1
Adding number conversion cast (unumber) $200 in (byte*~) mulf_init::$7 ← (byte[$200]) mulf_sqr1_lo#0 + (number) $200
Adding number conversion cast (unumber) 1 in (number~) mulf_init::$9 ← (byte) mulf_init::c#1 & (number) 1
Adding number conversion cast (unumber) mulf_init::$9 in (number~) mulf_init::$9 ← (byte) mulf_init::c#1 & (unumber)(number) 1
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$10 ← (unumber~) mulf_init::$9 == (number) 0
Adding number conversion cast (unumber) $ff in (byte) mulf_init::dir#0 ← (number) $ff
Adding number conversion cast (unumber) $1ff in (byte*~) mulf_init::$15 ← (byte[$200]) mulf_sqr2_lo#0 + (number) $1ff
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$18 ← (byte) mulf_init::x_255#1 == (number) 0
Adding number conversion cast (unumber) $1ff in (byte*~) mulf_init::$2 ← (byte[$200]) mulf_sqr2_lo#0 + (number) $1ff
Adding number conversion cast (unumber) $100 in (byte*~) mulf_init::$3 ← (byte[$200]) mulf_sqr1_lo#0 + (number) $100
Adding number conversion cast (unumber) $1ff in (byte*~) mulf_init::$4 ← (byte[$200]) mulf_sqr2_hi#0 + (number) $1ff
Adding number conversion cast (unumber) $100 in (byte*~) mulf_init::$5 ← (byte[$200]) mulf_sqr1_hi#0 + (number) $100
Adding number conversion cast (unumber) 1 in (byte) mulf_init::dir#1 ← (number) 1
Adding number conversion cast (snumber) 0 in (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#2 < (number) 0
Adding number conversion cast (unumber) 5 in *((byte*) BGCOL#0) ← (number) 5
Adding number conversion cast (unumber) 0 in (word) muls8u::m#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (number) 0
Adding number conversion cast (unumber) 0 in (byte) muls8u::i#0 ← (number) 0
Adding number conversion cast (snumber) 0 in (signed word) muls8s::m#0 ← (number) 0
Adding number conversion cast (snumber) 0 in (bool~) muls8s::$0 ← (signed byte) muls8s::a#1 < (number) 0
Adding number conversion cast (snumber) 0 in (signed byte) muls8s::i#0 ← (number) 0
Adding number conversion cast (snumber) 0 in (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (number) 0
Adding number conversion cast (snumber) 0 in (signed byte) muls8s::j#0 ← (number) 0
Adding number conversion cast (unumber) $200*4 in (byte*~) mulf_tables_cmp::$2 ← (byte[$200]) mulf_sqr1_lo#0 + (number) $200*(number) 4
Adding number conversion cast (unumber) 2 in *((byte*) BGCOL#0) ← (number) 2
Adding number conversion cast (unumber) 1 in (byte) mul8u_compare::ok#0 ← (number) 1
Adding number conversion cast (unumber) 0 in (byte) mul8u_compare::ok#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) mul8u_compare::$9 ← (byte) mul8u_compare::ok#3 == (number) 0
Adding number conversion cast (unumber) 0 in (byte) mul8u_compare::ok#2 ← (number) 0
Adding number conversion cast (unumber) 2 in *((byte*) BGCOL#0) ← (number) 2
Adding number conversion cast (snumber) -$80 in (signed byte) mul8s_compare::a#0 ← (number) -$80
Adding number conversion cast (snumber) -$80 in (bool~) mul8s_compare::$2 ← (signed byte) mul8s_compare::a#2 != (number) -$80
Adding number conversion cast (snumber) -$80 in (signed byte) mul8s_compare::b#0 ← (number) -$80
Adding number conversion cast (snumber) -$80 in (bool~) mul8s_compare::$3 ← (signed byte) mul8s_compare::b#2 != (number) -$80
Adding number conversion cast (unumber) 1 in (byte) mul8s_compare::ok#0 ← (number) 1
Adding number conversion cast (unumber) 0 in (byte) mul8s_compare::ok#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) mul8s_compare::$11 ← (byte) mul8s_compare::ok#3 == (number) 0
Adding number conversion cast (unumber) 0 in (byte) mul8s_compare::ok#2 ← (number) 0
Adding number conversion cast (unumber) 2 in *((byte*) BGCOL#0) ← (number) 2
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400
Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#6
Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#5
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0
Inlining cast (byte~) mul8s::$0 ← (byte)(signed byte) mul8s::a#1
Inlining cast (byte~) mul8s::$1 ← (byte)(signed byte) mul8s::b#1
Inlining cast (byte~) mul8s::$10 ← (byte)(signed byte) mul8s::b#3
Inlining cast (signed word~) mul8s::$7 ← (signed word)(word) mul8s::m#4
Inlining cast (byte~) mul8s::$14 ← (byte)(signed byte) mul8s::a#3
Inlining cast (word) mulf_init::sqr#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::x_2#0 ← (unumber)(number) 0
Inlining cast (byte) mulf_init::c#0 ← (unumber)(number) 0
Inlining cast (byte~) mulf_init::$1 ← (byte)(number) -1
Inlining cast (byte) mulf_init::dir#0 ← (unumber)(number) $ff
Inlining cast (byte) mulf_init::dir#1 ← (unumber)(number) 1
Inlining cast (byte*) mulf8u_prepare::memA#0 ← (byte*)(number) $fd
Inlining cast (byte*) mulf8u_prepared::resL#0 ← (byte*)(number) $fe
Inlining cast (byte*) mulf8u_prepared::memB#0 ← (byte*)(number) $ff
Inlining cast (signed byte*) mulf8s_prepared::memA#0 ← (signed byte*)(number) $fd
Inlining cast (byte~) mulf8s_prepared::$0 ← (byte)(signed byte) mulf8s_prepared::b#1
Inlining cast (byte~) mulf8s_prepared::$9 ← (byte)(signed byte) mulf8s_prepared::b#3
Inlining cast (signed word~) mulf8s_prepared::$6 ← (signed word)(word) mulf8s_prepared::m#4
Inlining cast (byte~) mulf8s_prepared::$13 ← (byte)*((signed byte*) mulf8s_prepared::memA#0)
Inlining cast (byte~) mulf8s::mulf8s_prepare1_$0#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#1
Inlining cast (byte*) BGCOL#0 ← (byte*)(number) $d021
Inlining cast *((byte*) BGCOL#0) ← (unumber)(number) 5
Inlining cast (word) muls8u::m#0 ← (unumber)(number) 0
Inlining cast (byte) muls8u::i#0 ← (unumber)(number) 0
Inlining cast (signed word) muls8s::m#0 ← (snumber)(number) 0
Inlining cast (signed byte) muls8s::i#0 ← (snumber)(number) 0
Inlining cast (signed byte) muls8s::j#0 ← (snumber)(number) 0
Inlining cast (byte*) mulf_init_asm::mem#0 ← (byte*)(number) $ff
Inlining cast *((byte*) BGCOL#0) ← (unumber)(number) 2
Inlining cast (word~) mulf_tables_cmp::$7 ← (word)(byte*) mulf_tables_cmp::asm_sqr#4
Inlining cast (word~) mulf_tables_cmp::$10 ← (word)(byte*) mulf_tables_cmp::kc_sqr#5
Inlining cast (byte) mul8u_compare::ok#0 ← (unumber)(number) 1
Inlining cast (byte) mul8u_compare::ok#1 ← (unumber)(number) 0
Inlining cast (byte) mul8u_compare::ok#2 ← (unumber)(number) 0
Inlining cast *((byte*) BGCOL#0) ← (unumber)(number) 2
Inlining cast (signed byte) mul8s_compare::a#0 ← (snumber)(number) -$80
Inlining cast (signed byte) mul8s_compare::b#0 ← (snumber)(number) -$80
Inlining cast (byte) mul8s_compare::ok#0 ← (unumber)(number) 1
Inlining cast (byte) mul8s_compare::ok#1 ← (unumber)(number) 0
Inlining cast (byte) mul8s_compare::ok#2 ← (unumber)(number) 0
Inlining cast *((byte*) BGCOL#0) ← (unumber)(number) 2
Successful SSA optimization Pass2InlineCast
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $3e8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $200
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast -1
Simplifying constant integer cast $ff
Simplifying constant integer cast $1ff
Simplifying constant integer cast 0
Simplifying constant integer cast $1ff
Simplifying constant integer cast $100
Simplifying constant integer cast $1ff
Simplifying constant integer cast $100
Simplifying constant integer cast 1
Simplifying constant pointer cast (byte*) 253
Simplifying constant pointer cast (byte*) 254
Simplifying constant pointer cast (byte*) 255
Simplifying constant integer cast *((byte*) mulf8u_prepared::memB#0)
Simplifying constant integer cast *((byte*) mulf8u_prepared::resL#0)
Simplifying constant pointer cast (signed byte*) 253
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 53281
Simplifying constant integer cast 5
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 255
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast -$80
Simplifying constant integer cast -$80
Simplifying constant integer cast -$80
Simplifying constant integer cast -$80
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $28
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (word) $200
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (word) $1ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $1ff
Finalized unsigned number type (word) $100
Finalized unsigned number type (word) $1ff
Finalized unsigned number type (word) $100
Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) -$80
Finalized signed number type (signed byte) -$80
Finalized signed number type (signed byte) -$80
Finalized signed number type (signed byte) -$80
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#6 & (byte) $f
Inferred type updated to byte in (unumber~) mul8u::$1 ← (byte) mul8u::a#4 & (byte) 1
Inferred type updated to byte in (unumber~) mulf_init::$9 ← (byte) mulf_init::c#1 & (byte) 1
Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0
Inversing boolean not [152] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [151] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0
Inversing boolean not [178] (bool~) mul8s::$4 ← (signed byte) mul8s::a#2 >= (signed byte) 0 from [177] (bool~) mul8s::$3 ← (signed byte) mul8s::a#2 < (signed byte) 0
Inversing boolean not [182] (bool~) mul8s::$6 ← (signed byte) mul8s::b#2 >= (signed byte) 0 from [181] (bool~) mul8s::$5 ← (signed byte) mul8s::b#2 < (signed byte) 0
Inversing boolean not [222] (bool~) mulf_init::$11 ← (byte~) mulf_init::$9 != (byte) 0 from [221] (bool~) mulf_init::$10 ← (byte~) mulf_init::$9 == (byte) 0
Inversing boolean not [252] (bool~) mulf_init::$19 ← (byte) mulf_init::x_255#1 != (byte) 0 from [251] (bool~) mulf_init::$18 ← (byte) mulf_init::x_255#1 == (byte) 0
Inversing boolean not [303] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (signed byte) 0 from [302] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (signed byte) 0
Inversing boolean not [307] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#2 >= (signed byte) 0 from [306] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#2 < (signed byte) 0
Inversing boolean not [375] (bool~) muls8u::$1 ← (byte) muls8u::a#1 == (byte) 0 from [374] (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (byte) 0
Inversing boolean not [399] (bool~) muls8s::$2 ← (signed byte) muls8s::a#2 <= (signed byte) 0 from [398] (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (signed byte) 0
Inversing boolean not [443] (bool~) mulf_tables_cmp::$5 ← *((byte*) mulf_tables_cmp::kc_sqr#3) == *((byte*) mulf_tables_cmp::asm_sqr#2) from [442] (bool~) mulf_tables_cmp::$4 ← *((byte*) mulf_tables_cmp::kc_sqr#3) != *((byte*) mulf_tables_cmp::asm_sqr#2)
Inversing boolean not [509] (bool~) mul8u_compare::$6 ← (word) mul8u_compare::ms#1 == (word) mul8u_compare::mf#1 from [508] (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1
Inversing boolean not [513] (bool~) mul8u_compare::$8 ← (word) mul8u_compare::ms#2 == (word) mul8u_compare::mn#1 from [512] (bool~) mul8u_compare::$7 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1
Inversing boolean not [519] (bool~) mul8u_compare::$10 ← (byte) mul8u_compare::ok#3 != (byte) 0 from [518] (bool~) mul8u_compare::$9 ← (byte) mul8u_compare::ok#3 == (byte) 0
Inversing boolean not [647] (bool~) mul8s_compare::$8 ← (signed word) mul8s_compare::ms#1 == (signed word) mul8s_compare::mf#1 from [646] (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1
Inversing boolean not [653] (bool~) mul8s_compare::$10 ← (signed word) mul8s_compare::ms#2 == (signed word) mul8s_compare::mn#1 from [652] (bool~) mul8s_compare::$9 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1
Inversing boolean not [659] (bool~) mul8s_compare::$12 ← (byte) mul8s_compare::ok#3 != (byte) 0 from [658] (bool~) mul8s_compare::$11 ← (byte) mul8s_compare::ok#3 == (byte) 0
Successful SSA optimization Pass2UnaryNotSimplification
Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 
Alias (void*) memset::str#2 = (void*) memset::str#3 
Alias (word) memset::num#1 = (word) memset::num#2 
Alias (byte) memset::c#3 = (byte) memset::c#4 
Alias (byte*) memset::end#0 = (byte*~) memset::$3 
Alias (byte) memset::c#1 = (byte) memset::c#2 
Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 
Alias (byte*) memset::end#1 = (byte*) memset::end#2 
Alias (void*) memset::str#4 = (void*) memset::str#5 
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#91 (byte*) print_char_cursor#182 (byte*) print_screen#8 (byte*) print_line_cursor#78 (byte*) print_char_cursor#176 (byte*) print_screen#7 (byte*) print_line_cursor#67 (byte*) print_char_cursor#166 (byte*) print_screen#6 (byte*) print_line_cursor#66 (byte*) print_char_cursor#165 (byte*) print_screen#5 (byte*) print_line_cursor#56 (byte*) print_char_cursor#154 (byte*) print_screen#4 
Alias (byte*) print_str::str#16 = (byte*) print_str::str#17 
Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#68 (byte*) print_char_cursor#69 (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#71 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 
Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#156 (byte*) print_char_cursor#137 
Alias (signed word) print_sword::w#4 = (signed word) print_sword::w#7 (signed word) print_sword::w#5 (signed word) print_sword::w#9 (signed word) print_sword::w#8 
Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#72 
Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 
Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#73 
Alias (word) print_word::w#0 = (word~) print_sword::$1 
Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#74 (byte*) print_char_cursor#75 (byte*) print_char_cursor#8 
Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#157 (byte*) print_char_cursor#140 
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#76 = (byte*) print_char_cursor#9 
Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#77 
Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#12 
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#13 = (byte*) print_char_cursor#80 
Alias (byte) print_byte::b#2 = (byte~) print_word::$2 
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#81 (byte*) print_char_cursor#82 (byte*) print_char_cursor#15 
Alias (byte) print_byte::b#5 = (byte) print_byte::b#6 
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#83 
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#18 
Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#87 (byte*) print_char_cursor#20 
Alias (byte*) print_line_cursor#26 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#21 (byte*) print_char_cursor#88 (byte*) print_line_cursor#4 (byte*) print_char_cursor#22 
Alias (word) mul8u::mb#0 = (byte) mul8u::b#2 
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::$11 
Alias (signed word) mul8s::return#0 = (signed word~) mul8s::$7 (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::$15 
Alias (byte*) mulf_init::sqr1_hi#0 = (byte*~) mulf_init::$0 
Alias (byte*) mulf_init::sqr1_lo#0 = (byte*~) mulf_init::$6 
Alias (byte) mulf_init::c#2 = (byte) mulf_init::c#3 
Alias (word) mulf_init::sqr#4 = (word) mulf_init::sqr#5 (word) mulf_init::sqr#6 
Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#4 (byte*) mulf_init::sqr1_lo#5 
Alias (byte*) mulf_init::sqr1_hi#3 = (byte*) mulf_init::sqr1_hi#5 (byte*) mulf_init::sqr1_hi#4 
Alias (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#4 (byte) mulf_init::x_2#5 
Alias (byte) mulf_init::x_255#0 = (byte~) mulf_init::$1 
Alias (word) mulf_init::sqr#1 = (word~) mulf_init::$14 
Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#5 
Alias (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#3 
Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#3 (byte*) mulf_init::sqr2_lo#5 
Alias (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#3 
Alias (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 
Alias (byte) mulf_init::x_255#1 = (byte~) mulf_init::$17 (byte) mulf_init::x_255#5 
Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#5 
Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$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::$10 
Alias (signed word) mulf8s_prepared::return#0 = (signed word~) mulf8s_prepared::$6 (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::$14 
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*) print_line_cursor#27 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#57 (byte*) print_line_cursor#47 
Alias (byte*) print_char_cursor#145 = (byte*) print_char_cursor#23 (byte*) print_char_cursor#89 (byte*) print_char_cursor#158 
Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#90 
Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#6 
Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#91 
Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#7 
Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#92 (byte*) print_char_cursor#93 (byte*) print_char_cursor#27 
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 (byte) muls8u::a#1 = (byte) muls8u::a#3 
Alias (word) muls8u::m#0 = (word) muls8u::m#5 
Alias (byte) muls8u::b#3 = (byte) muls8u::b#4 
Alias (word) muls8u::m#3 = (word) muls8u::m#4 
Alias (byte) muls8u::b#1 = (byte) muls8u::b#2 
Alias (byte) muls8u::i#2 = (byte) muls8u::i#3 
Alias (byte) muls8u::a#2 = (byte) muls8u::a#4 
Alias (word) muls8u::m#1 = (word~) muls8u::$3 
Alias (signed byte) muls8s::a#1 = (signed byte) muls8s::a#7 (signed byte) muls8s::a#2 (signed byte) muls8s::a#5 
Alias (signed word) muls8s::m#0 = (signed word) muls8s::m#10 (signed word) muls8s::m#8 (signed word) muls8s::m#9 
Alias (signed byte) muls8s::b#5 = (signed byte) muls8s::b#6 (signed byte) muls8s::b#7 (signed byte) muls8s::b#8 
Alias (signed word) muls8s::m#3 = (signed word) muls8s::m#6 
Alias (signed byte) muls8s::b#1 = (signed byte) muls8s::b#3 
Alias (signed byte) muls8s::j#2 = (signed byte) muls8s::j#3 
Alias (signed byte) muls8s::a#3 = (signed byte) muls8s::a#6 
Alias (signed word) muls8s::m#1 = (signed word~) muls8s::$4 
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#5 = (signed word) muls8s::m#7 
Alias (signed byte) muls8s::b#2 = (signed byte) muls8s::b#4 
Alias (signed byte) muls8s::i#2 = (signed byte) muls8s::i#3 
Alias (signed byte) muls8s::a#4 = (signed byte) muls8s::a#8 
Alias (signed word) muls8s::m#2 = (signed word~) muls8s::$6 
Alias (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#8 (byte*) mulf_tables_cmp::kc_sqr#7 (byte*) mulf_tables_cmp::kc_sqr#6 (byte*) mulf_tables_cmp::kc_sqr#5 
Alias (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#5 (byte*) mulf_tables_cmp::asm_sqr#3 (byte*) mulf_tables_cmp::asm_sqr#6 (byte*) mulf_tables_cmp::asm_sqr#4 
Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#160 (byte*) print_char_cursor#159 (byte*) print_char_cursor#168 (byte*) print_char_cursor#147 
Alias (byte*) print_line_cursor#48 = (byte*) print_line_cursor#92 (byte*) print_line_cursor#68 (byte*) print_line_cursor#58 (byte*) print_line_cursor#80 (byte*) print_line_cursor#93 (byte*) print_line_cursor#81 (byte*) print_line_cursor#69 (byte*) print_line_cursor#59 (byte*) print_line_cursor#49 
Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#94 
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#32 
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#95 
Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#96 
Alias (word) print_word::w#1 = (word~) mulf_tables_cmp::$7 
Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#97 
Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#98 
Alias (word) print_word::w#2 = (word~) mulf_tables_cmp::$10 
Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#99 
Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#34 
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#33 
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*) print_char_cursor#177 = (byte*) print_char_cursor#187 (byte*) print_char_cursor#189 (byte*) print_char_cursor#183 (byte*) print_char_cursor#178 
Alias (byte*) print_line_cursor#105 = (byte*) print_line_cursor#99 (byte*) print_line_cursor#94 (byte*) print_line_cursor#82 (byte*) print_line_cursor#83 
Alias (word) mul8u_compare::ms#0 = (word~) mul8u_compare::$2 (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::$3 (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::$4 (word) mul8u_compare::mn#3 
Alias (byte) mul8u_compare::b#8 = (byte) mul8u_compare::b#9 
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#169 = (byte*) print_char_cursor#170 
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#148 = (byte*) print_char_cursor#171 (byte*) print_char_cursor#161 (byte*) print_char_cursor#162 (byte*) print_char_cursor#149 
Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#84 (byte*) print_line_cursor#60 (byte*) print_line_cursor#72 (byte*) print_line_cursor#61 (byte*) print_line_cursor#51 
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#101 = (byte*) print_char_cursor#35 
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#34 
Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#36 
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#35 
Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#37 
Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#36 
Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#38 
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#100 = (byte*) print_line_cursor#115 (byte*) print_line_cursor#117 (byte*) print_line_cursor#113 (byte*) print_line_cursor#110 (byte*) print_line_cursor#106 (byte*) print_line_cursor#95 (byte*) print_line_cursor#85 (byte*) print_line_cursor#73 (byte*) print_line_cursor#62 (byte*) print_line_cursor#52 
Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#39 
Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#40 
Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#41 
Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#42 
Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#43 
Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#44 
Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#45 
Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#46 
Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#47 
Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#48 
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#115 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#116 (byte*) print_char_cursor#50 
Alias (signed byte) mul8s_compare::a#10 = (signed byte) mul8s_compare::a#2 
Alias (byte*) print_char_cursor#151 = (byte*) print_char_cursor#184 (byte*) print_char_cursor#163 
Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#74 (byte*) print_line_cursor#63 (byte*) print_line_cursor#53 
Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#51 
Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#39 
Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#52 
Alias (signed byte) mul8s_compare::a#14 = (signed byte) mul8s_compare::a#3 (signed byte) mul8s_compare::a#8 (signed byte) mul8s_compare::a#4 (signed byte) mul8s_compare::a#5 (signed byte) mul8s_compare::a#15 (signed byte) mul8s_compare::a#6 
Alias (signed byte) mul8s_compare::b#11 = (signed byte) mul8s_compare::b#3 (signed byte) mul8s_compare::b#2 (signed byte) mul8s_compare::b#4 (signed byte) mul8s_compare::b#5 (signed byte) mul8s_compare::b#12 
Alias (byte*) print_char_cursor#173 = (byte*) print_char_cursor#190 (byte*) print_char_cursor#179 (byte*) print_char_cursor#188 (byte*) print_char_cursor#186 (byte*) print_char_cursor#181 (byte*) print_char_cursor#180 
Alias (byte*) print_line_cursor#103 = (byte*) print_line_cursor#107 (byte*) print_line_cursor#97 (byte*) print_line_cursor#96 (byte*) print_line_cursor#89 (byte*) print_line_cursor#87 (byte*) print_line_cursor#88 
Alias (signed word) muls8s::return#2 = (signed word) muls8s::return#4 
Alias (signed word) mul8s_compare::ms#0 = (signed word~) mul8s_compare::$4 (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::$5 (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::$6 (signed word) mul8s_compare::mn#3 
Alias (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#9 
Alias (signed byte) mul8s_compare::a#12 = (signed byte) mul8s_compare::a#13 
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#174 = (byte*) print_char_cursor#175 
Alias (byte*) print_line_cursor#75 = (byte*) print_line_cursor#76 
Alias (signed byte) mul8s_compare::b#6 = (signed byte) mul8s_compare::b#8 (signed byte) mul8s_compare::b#7 
Alias (signed byte) mul8s_compare::a#11 = (signed byte) mul8s_compare::a#9 (signed byte) mul8s_compare::a#7 
Alias (byte*) print_char_cursor#152 = (byte*) print_char_cursor#185 (byte*) print_char_cursor#164 
Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#64 (byte*) print_line_cursor#54 
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#119 = (byte*) print_char_cursor#53 
Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#40 
Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#54 
Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#41 
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#104 = (byte*) print_line_cursor#116 (byte*) print_line_cursor#118 (byte*) print_line_cursor#114 (byte*) print_line_cursor#111 (byte*) print_line_cursor#108 (byte*) print_line_cursor#98 (byte*) print_line_cursor#90 (byte*) print_line_cursor#77 (byte*) print_line_cursor#65 (byte*) print_line_cursor#55 
Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#55 
Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#56 
Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#57 
Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#58 
Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#59 
Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#60 
Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#61 
Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#62 
Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#63 
Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#64 
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#131 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#132 (byte*) print_char_cursor#66 
Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#44 
Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#67 
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#4 
Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 
Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#4 
Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 
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) 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#148 = (byte*) print_char_cursor#169 (byte*) print_char_cursor#177 
Alias (byte*) print_line_cursor#105 = (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#11 (signed byte) mul8s_compare::b#6 
Alias (signed byte) mul8s_compare::a#11 = (signed byte) mul8s_compare::a#12 (signed byte) mul8s_compare::a#14 
Alias (signed word) mul8s_compare::mf#0 = (signed word) mul8s_compare::mf#4 (signed word) mul8s_compare::mf#2 
Alias (byte*) print_char_cursor#152 = (byte*) print_char_cursor#174 (byte*) print_char_cursor#173 
Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#75 (byte*) print_line_cursor#103 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (word) memset::num#1 (word) memset::num#0
Identical Phi Values (void*) memset::str#2 (void*) memset::str#0
Identical Phi Values (byte) memset::c#3 (byte) memset::c#0
Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0
Identical Phi Values (void*) memset::str#4 (void*) memset::str#2
Identical Phi Values (byte) memset::c#1 (byte) memset::c#3
Identical Phi Values (byte*) print_char_cursor#70 (byte*) print_char_cursor#135
Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#19
Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#19
Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#76 (byte*) print_char_cursor#19
Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#19
Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#19
Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#19
Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_screen#3
Identical Phi Values (signed byte) mul8s::a#1 (signed byte) mul8s::a#0
Identical Phi Values (signed byte) mul8s::b#1 (signed byte) mul8s::b#0
Identical Phi Values (byte) mulf8u::a#1 (byte) mulf8u::a#0
Identical Phi Values (byte) mulf8u::b#1 (byte) mulf8u::b#0
Identical Phi Values (signed byte) mulf8s_prepared::b#1 (signed byte) mulf8s_prepared::b#0
Identical Phi Values (signed byte) mulf8s::mulf8s_prepare1_a#0 (signed byte) mulf8s::a#0
Identical Phi Values (signed byte) mulf8s::b#1 (signed byte) mulf8s::b#0
Identical Phi Values (byte*) print_screen#3 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_line_cursor#46 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#26
Identical Phi Values (byte*) print_char_cursor#145 (byte*) print_line_cursor#26
Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#100
Identical Phi Values (byte*) print_line_cursor#28 (byte*) print_line_cursor#11
Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#102
Identical Phi Values (byte*) print_line_cursor#29 (byte*) print_line_cursor#13
Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#120
Identical Phi Values (byte*) print_line_cursor#30 (byte*) print_line_cursor#19
Identical Phi Values (byte) muls8u::a#1 (byte) muls8u::a#0
Identical Phi Values (byte) muls8u::b#3 (byte) muls8u::b#0
Identical Phi Values (byte) muls8u::a#2 (byte) muls8u::a#1
Identical Phi Values (byte) muls8u::b#1 (byte) muls8u::b#3
Identical Phi Values (signed byte) muls8s::a#1 (signed byte) muls8s::a#0
Identical Phi Values (signed byte) muls8s::b#5 (signed byte) muls8s::b#0
Identical Phi Values (signed byte) muls8s::a#3 (signed byte) muls8s::a#1
Identical Phi Values (signed byte) muls8s::b#1 (signed byte) muls8s::b#5
Identical Phi Values (signed byte) muls8s::a#4 (signed byte) muls8s::a#1
Identical Phi Values (signed byte) muls8s::b#2 (signed byte) muls8s::b#5
Identical Phi Values (byte*) print_char_cursor#167 (byte*) print_char_cursor#145
Identical Phi Values (byte*) print_line_cursor#79 (byte*) print_line_cursor#27
Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#167
Identical Phi Values (byte*) print_line_cursor#48 (byte*) print_line_cursor#79
Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#192 (byte*) print_char_cursor#24
Identical Phi Values (byte*) print_line_cursor#112 (byte*) print_line_cursor#28
Identical Phi Values (byte) mul8u_compare::a#10 (byte) mul8u_compare::a#7
Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#191
Identical Phi Values (byte*) print_line_cursor#105 (byte*) print_line_cursor#109
Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#115
Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#15
Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_line_cursor#14 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_char_cursor#148
Identical Phi Values (byte) mul8u_error::a#1 (byte) mul8u_error::a#0
Identical Phi Values (byte) mul8u_error::b#1 (byte) mul8u_error::b#0
Identical Phi Values (word) mul8u_error::ms#1 (word) mul8u_error::ms#0
Identical Phi Values (word) mul8u_error::mn#1 (word) mul8u_error::mn#0
Identical Phi Values (word) mul8u_error::mf#1 (word) mul8u_error::mf#0
Identical Phi Values (byte*) print_line_cursor#100 (byte*) print_line_cursor#105
Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#172 (byte*) print_char_cursor#25
Identical Phi Values (byte*) print_line_cursor#86 (byte*) print_line_cursor#29
Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_line_cursor#1
Identical Phi Values (signed byte) mul8s_compare::a#11 (signed byte) mul8s_compare::a#10
Identical Phi Values (byte*) print_char_cursor#152 (byte*) print_char_cursor#151
Identical Phi Values (byte*) print_line_cursor#102 (byte*) print_line_cursor#101
Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#131
Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#20
Identical Phi Values (byte*) print_char_cursor#153 (byte*) print_char_cursor#152
Identical Phi Values (signed byte) mul8s_error::a#1 (signed byte) mul8s_error::a#0
Identical Phi Values (signed byte) mul8s_error::b#1 (signed byte) mul8s_error::b#0
Identical Phi Values (signed word) mul8s_error::ms#1 (signed word) mul8s_error::ms#0
Identical Phi Values (signed word) mul8s_error::mn#1 (signed word) mul8s_error::mn#0
Identical Phi Values (signed word) mul8s_error::mf#1 (signed word) mul8s_error::mf#0
Identical Phi Values (byte*) print_line_cursor#104 (byte*) print_line_cursor#102
Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#11
Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#11
Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#130 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_line_cursor#20 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_line_cursor#22 (byte*) print_line_cursor#30
Identical Phi Values (byte*) print_char_cursor#133 (byte*) print_char_cursor#26
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (void*) memset::return#0 (void*) memset::str#0
Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#19
Identical Phi Values (byte*) print_char_cursor#139 (byte*) print_char_cursor#134
Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#19
Identical Phi Values (byte*) print_char_cursor#191 (byte*) print_char_cursor#100
Identical Phi Values (byte*) print_line_cursor#109 (byte*) print_line_cursor#11
Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#151 (byte*) print_char_cursor#102
Identical Phi Values (byte*) print_line_cursor#101 (byte*) print_line_cursor#13
Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#1
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) print_str::$0 [26] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2
Simple Condition (bool~) print_ln::$1 [39] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1
Simple Condition (bool~) print_sword::$0 [48] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1
Simple Condition (bool~) print_sbyte::$0 [72] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1
Simple Condition (bool~) mul8u::$0 [148] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
Simple Condition (bool~) mul8u::$3 [153] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4
Simple Condition (bool~) mul8s::$4 [179] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1
Simple Condition (bool~) mul8s::$6 [183] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2
Simple Condition (bool~) mulf_init::$8 [217] if((byte*) mulf_init::sqr1_lo#2!=(byte*~) mulf_init::$7) goto mulf_init::@2
Simple Condition (bool~) mulf_init::$11 [223] if((byte~) mulf_init::$9!=(byte) 0) goto mulf_init::@4
Simple Condition (bool~) mulf_init::$16 [244] if((byte*) mulf_init::sqr2_lo#2!=(byte*~) mulf_init::$15) goto mulf_init::@10
Simple Condition (bool~) mulf_init::$19 [253] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@12
Simple Condition (bool~) mulf8s_prepared::$3 [304] if(*((signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1
Simple Condition (bool~) mulf8s_prepared::$5 [308] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2
Simple Condition (bool~) muls8u::$1 [376] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1
Simple Condition (bool~) muls8u::$2 [383] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@5
Simple Condition (bool~) muls8s::$0 [394] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@1
Simple Condition (bool~) muls8s::$2 [400] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@3
Simple Condition (bool~) muls8s::$3 [405] if((signed byte) muls8s::j#2!=(signed byte) muls8s::a#0) goto muls8s::@9
Simple Condition (bool~) muls8s::$5 [414] if((signed byte) muls8s::i#2!=(signed byte) muls8s::a#0) goto muls8s::@15
Simple Condition (bool~) mulf_tables_cmp::$3 [440] if((byte*) mulf_tables_cmp::kc_sqr#2<(byte*~) mulf_tables_cmp::$2) goto mulf_tables_cmp::@2
Simple Condition (bool~) mulf_tables_cmp::$5 [444] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4
Simple Condition (bool~) mul8u_compare::$6 [510] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
Simple Condition (bool~) mul8u_compare::$8 [514] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@4
Simple Condition (bool~) mul8u_compare::$10 [520] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5
Simple Condition (bool~) mul8u_compare::$12 [526] if((byte) mul8u_compare::b#1!=rangelast(0,$ff)) goto mul8u_compare::@2
Simple Condition (bool~) mul8u_compare::$13 [545] if((byte) mul8u_compare::a#1!=rangelast(0,$ff)) goto mul8u_compare::@1
Simple Condition (bool~) mul8s_compare::$2 [608] if((signed byte) mul8s_compare::a#10!=(signed byte) -$80) goto mul8s_compare::@2
Simple Condition (bool~) mul8s_compare::$3 [622] if((signed byte) mul8s_compare::b#10!=(signed byte) -$80) goto mul8s_compare::@5
Simple Condition (bool~) mul8s_compare::$8 [648] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@7
Simple Condition (bool~) mul8s_compare::$10 [654] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@8
Simple Condition (bool~) mul8s_compare::$12 [660] if((byte) mul8s_compare::ok#3!=(byte) 0) goto mul8s_compare::@9
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant right-side identified [203] (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) }
Constant right-side identified [204] (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) }
Constant right-side identified [205] (byte[$200]) mulf_sqr2_lo#0 ← { fill( $200, 0) }
Constant right-side identified [206] (byte[$200]) mulf_sqr2_hi#0 ← { fill( $200, 0) }
Constant right-side identified [423] (byte[$200]) mula_sqr1_lo#0 ← { fill( $200, 0) }
Constant right-side identified [424] (byte[$200]) mula_sqr1_hi#0 ← { fill( $200, 0) }
Constant right-side identified [425] (byte[$200]) mula_sqr2_lo#0 ← { fill( $200, 0) }
Constant right-side identified [426] (byte[$200]) mula_sqr2_hi#0 ← { fill( $200, 0) }
Successful SSA optimization Pass2ConstantRValueConsolidation
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_char::ch#3 = ' '
Constant (const byte[]) print_hextab#0 = $0
Constant (const byte) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const word) mul8u::res#0 = 0
Constant (const byte[$200]) mulf_sqr1_lo#0 = { fill( $200, 0) }
Constant (const byte[$200]) mulf_sqr1_hi#0 = { fill( $200, 0) }
Constant (const byte[$200]) mulf_sqr2_lo#0 = { fill( $200, 0) }
Constant (const byte[$200]) mulf_sqr2_hi#0 = { fill( $200, 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 byte) mulf_init::x_255#0 = -1
Constant (const byte) mulf_init::dir#0 = $ff
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[$200]) mula_sqr1_lo#0 = { fill( $200, 0) }
Constant (const byte[$200]) mula_sqr1_hi#0 = { fill( $200, 0) }
Constant (const byte[$200]) mula_sqr2_lo#0 = { fill( $200, 0) }
Constant (const byte[$200]) mula_sqr2_hi#0 = { fill( $200, 0) }
Constant (const byte*) mulf_init_asm::mem#0 = (byte*) 255
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 = -$80
Constant (const signed byte) mul8s_compare::b#0 = -$80
Constant (const byte*) print_str::str#10 = mul8s_compare::str
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 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*) 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_tables_cmp::asm_sqr#0 = mula_sqr1_lo#0
Constant (const byte*) mulf_tables_cmp::kc_sqr#0 = mulf_sqr1_lo#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (void*)print_line_cursor#0 in [131] (void*) memset::str#0 ← (void*)(const byte*) print_line_cursor#0
Successful SSA optimization Pass2ConstantValues
if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1
Successful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantStringConsolidation
Resolved ranged next value [524] mul8u_compare::b#1 ← ++ mul8u_compare::b#10 to ++
Resolved ranged comparison value [526] if(mul8u_compare::b#1!=rangelast(0,$ff)) goto mul8u_compare::@2 to (number) 0
Resolved ranged next value [543] mul8u_compare::a#1 ← ++ mul8u_compare::a#7 to ++
Resolved ranged comparison value [545] if(mul8u_compare::a#1!=rangelast(0,$ff)) goto mul8u_compare::@1 to (number) 0
Eliminating unused variable (void*) memset::return#2 and assignment [58] (void*) memset::return#2 ← (void*) memset::str#0
Successful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization Pass2LoopHeadConstantIdentification
Successful SSA optimization Pass2LoopHeadConstantIdentification
Adding number conversion cast (unumber) 0 in if((byte) mul8u_compare::b#1!=(number) 0) goto mul8u_compare::@2
Adding number conversion cast (unumber) 0 in if((byte) mul8u_compare::a#1!=(number) 0) goto mul8u_compare::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (signed byte) mul8s_compare::a#1 = (signed byte) mul8s_compare::a#10 
Alias (signed byte) mul8s_compare::b#1 = (signed byte) mul8s_compare::b#10 
Alias (signed byte) mul8s_compare::a#20 = (signed byte) mul8s_compare::a#21 (signed byte) mul8s_compare::a#24 (signed byte) mul8s_compare::a#22 
Alias (signed byte) mul8s_compare::a#16 = (signed byte) mul8s_compare::a#17 (signed byte) mul8s_compare::a#18 (signed byte) mul8s_compare::a#28 (signed byte) mul8s_compare::a#27 
Alias (signed byte) mul8s_compare::b#13 = (signed byte) mul8s_compare::b#14 (signed byte) mul8s_compare::b#15 (signed byte) mul8s_compare::b#22 (signed byte) mul8s_compare::b#21 
Alias (signed byte) mul8s_compare::a#25 = (signed byte) mul8s_compare::a#26 
Alias (signed byte) mul8s_compare::b#19 = (signed byte) mul8s_compare::b#20 
Alias (signed byte) mul8s_compare::b#16 = (signed byte) mul8s_compare::b#18 (signed byte) mul8s_compare::b#17 
Alias (signed byte) mul8s_compare::a#23 = (signed byte) mul8s_compare::a#30 
Successful SSA optimization Pass2AliasElimination
Alias (signed byte) mul8s_compare::a#16 = (signed byte) mul8s_compare::a#25 (signed byte) mul8s_compare::a#20 
Alias (signed byte) mul8s_compare::b#13 = (signed byte) mul8s_compare::b#19 (signed byte) mul8s_compare::b#16 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (signed byte) mul8s_compare::a#16 (signed byte) mul8s_compare::a#23
Identical Phi Values (signed byte) mul8s_compare::a#29 (const signed byte) mul8s_compare::a#0
Identical Phi Values (signed byte) mul8s_compare::b#23 (const signed byte) mul8s_compare::b#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (signed byte) mul8s_compare::a#19 (signed byte) mul8s_compare::a#23
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [88] (byte*) mulf_init::sqr1_hi#0 ← (const byte[$200]) mulf_sqr1_hi#0 + (byte) 1
Constant right-side identified [89] (byte*) mulf_init::sqr1_lo#0 ← (const byte[$200]) mulf_sqr1_lo#0 + (byte) 1
Constant right-side identified [91] (byte*~) mulf_init::$7 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $200
Constant right-side identified [107] (byte*~) mulf_init::$15 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff
Constant right-side identified [114] (byte*~) mulf_init::$2 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff
Constant right-side identified [115] (byte*~) mulf_init::$3 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $100
Constant right-side identified [117] (byte*~) mulf_init::$4 ← (const byte[$200]) mulf_sqr2_hi#0 + (word) $1ff
Constant right-side identified [118] (byte*~) mulf_init::$5 ← (const byte[$200]) mulf_sqr1_hi#0 + (word) $100
Constant right-side identified [198] (byte*~) mulf_tables_cmp::$2 ← (const byte[$200]) mulf_sqr1_lo#0 + (word)(number) $200*(number) 4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const void*) memset::str#0 = (void*)print_line_cursor#0
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::$7 = mulf_sqr1_lo#0+$200
Constant (const byte*) mulf_init::$15 = mulf_sqr2_lo#0+$1ff
Constant (const byte*) mulf_init::$2 = mulf_sqr2_lo#0+$1ff
Constant (const byte*) mulf_init::$3 = mulf_sqr1_lo#0+$100
Constant (const byte*) mulf_init::$4 = mulf_sqr2_hi#0+$1ff
Constant (const byte*) mulf_init::$5 = mulf_sqr1_hi#0+$100
Constant (const byte*) mulf_tables_cmp::$2 = mulf_sqr1_lo#0+(word)$200*4
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (byte*)memset::str#0 in [0] (byte*~) memset::$2 ← (byte*)(const void*) memset::str#0
Constant value identified (byte*)memset::str#0 in [2] (byte*) memset::dst#0 ← (byte*)(const void*) memset::str#0
Successful SSA optimization Pass2ConstantValues
Removing PHI-reference to removed block (mul8s_compare::@1_1) in block mul8s_compare::@2
if() condition always false - eliminating [333] if((const signed byte) mul8s_compare::a#0!=(signed byte) -$80) goto mul8s_compare::@2
Removing PHI-reference to removed block (mul8s_compare::@4_1) in block mul8s_compare::@5
if() condition always false - eliminating [335] if((const signed byte) mul8s_compare::b#0!=(signed byte) -$80) goto mul8s_compare::@5
Successful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const signed byte) mul8s_compare::a#0
Eliminating unused constant (const signed byte) mul8s_compare::b#0
Successful SSA optimization PassNEliminateUnusedVars
Eliminating variable (signed word) print_sword::w#4 from unused block print_sword
Eliminating variable (signed word) print_sword::w#0 from unused block print_sword::@5
Eliminating variable (signed word) print_sword::w#6 from unused block print_sword::@2
Eliminating variable (word) print_word::w#0 from unused block print_sword::@2
Eliminating variable (signed byte) print_sbyte::b#3 from unused block print_sbyte
Eliminating variable (signed byte) print_sbyte::b#0 from unused block print_sbyte::@5
Eliminating variable (signed byte) print_sbyte::b#5 from unused block print_sbyte::@2
Eliminating variable (byte) print_byte::b#0 from unused block print_sbyte::@2
Eliminating variable (byte) mul8u::a#1 from unused block mul8s
Eliminating variable (byte) mul8u::b#0 from unused block mul8s
Eliminating variable (word) mul8u::return#2 from unused block mul8s
Eliminating variable (word) mul8s::m#0 from unused block mul8s::@6
Eliminating variable (word) mul8s::m#5 from unused block mul8s::@1
Eliminating variable (byte~) mul8s::$9 from unused block mul8s::@3
Eliminating variable (byte~) mul8s::$10 from unused block mul8s::@3
Eliminating variable (byte~) mul8s::$16 from unused block mul8s::@3
Eliminating variable (word) mul8s::m#1 from unused block mul8s::@3
Eliminating variable (word) mul8s::m#4 from unused block mul8s::@2
Eliminating variable (signed word) mul8s::return#0 from unused block mul8s::@2
Eliminating variable (byte~) mul8s::$13 from unused block mul8s::@4
Eliminating variable (byte~) mul8s::$14 from unused block mul8s::@4
Eliminating variable (byte~) mul8s::$17 from unused block mul8s::@4
Eliminating variable (word) mul8s::m#2 from unused block mul8s::@4
Eliminating variable (byte) mulf8u_prepared::b#1 from unused block mulf8s_prepared
Eliminating variable (word) mulf8u_prepared::return#3 from unused block mulf8s_prepared
Eliminating variable (word) mulf8s_prepared::m#0 from unused block mulf8s_prepared::@6
Eliminating variable (word) mulf8s_prepared::m#5 from unused block mulf8s_prepared::@1
Eliminating variable (byte~) mulf8s_prepared::$8 from unused block mulf8s_prepared::@3
Eliminating variable (byte~) mulf8s_prepared::$9 from unused block mulf8s_prepared::@3
Eliminating variable (byte~) mulf8s_prepared::$15 from unused block mulf8s_prepared::@3
Eliminating variable (word) mulf8s_prepared::m#1 from unused block mulf8s_prepared::@3
Eliminating variable (word) mulf8s_prepared::m#4 from unused block mulf8s_prepared::@2
Eliminating variable (signed word) mulf8s_prepared::return#0 from unused block mulf8s_prepared::@2
Eliminating variable (byte~) mulf8s_prepared::$12 from unused block mulf8s_prepared::@4
Eliminating variable (byte~) mulf8s_prepared::$13 from unused block mulf8s_prepared::@4
Eliminating variable (byte~) mulf8s_prepared::$16 from unused block mulf8s_prepared::@4
Eliminating variable (word) mulf8s_prepared::m#2 from unused block mulf8s_prepared::@4
Eliminating variable (byte) mulf8u_prepare::a#1 from unused block mulf8s::mulf8s_prepare1
Eliminating variable (signed byte) mulf8s_prepared::b#0 from unused block mulf8s::@2
Eliminating variable (signed word) mulf8s_prepared::return#2 from unused block mulf8s::@2
Eliminating variable (signed word) mulf8s::return#0 from unused block mulf8s::@4
Eliminating variable (signed byte) muls8s::j#2 from unused block muls8s::@8
Eliminating variable (signed word) muls8s::m#3 from unused block muls8s::@8
Eliminating variable (signed word) muls8s::m#1 from unused block muls8s::@9
Eliminating variable (signed byte) muls8s::j#1 from unused block muls8s::@9
Eliminating variable (signed word) muls8s::return#0 from unused block muls8s::@3
Eliminating variable (signed byte) muls8s::i#2 from unused block muls8s::@14
Eliminating variable (signed word) muls8s::m#5 from unused block muls8s::@14
Eliminating variable (signed word) muls8s::m#2 from unused block muls8s::@15
Eliminating variable (signed byte) muls8s::i#1 from unused block muls8s::@15
Eliminating variable (signed byte) mul8s_compare::a#23 from unused block mul8s_compare::@2
Eliminating variable (signed byte) mul8s_compare::b#13 from unused block mul8s_compare::@5
Eliminating variable (signed byte) muls8s::a#0 from unused block mul8s_compare::@5
Eliminating variable (signed byte) muls8s::b#0 from unused block mul8s_compare::@5
Eliminating variable (signed word) muls8s::return#2 from unused block mul8s_compare::@5
Eliminating variable (signed word) mul8s_compare::ms#0 from unused block mul8s_compare::@22
Eliminating variable (signed byte) mulf8s::a#0 from unused block mul8s_compare::@22
Eliminating variable (signed byte) mulf8s::b#0 from unused block mul8s_compare::@22
Eliminating variable (signed word) mulf8s::return#2 from unused block mul8s_compare::@22
Eliminating variable (signed word) mul8s_compare::mf#0 from unused block mul8s_compare::@23
Eliminating variable (signed byte) mul8s::a#0 from unused block mul8s_compare::@23
Eliminating variable (signed byte) mul8s::b#0 from unused block mul8s_compare::@23
Eliminating variable (signed word) mul8s::return#2 from unused block mul8s_compare::@23
Eliminating variable (signed word) mul8s_compare::mn#0 from unused block mul8s_compare::@24
Eliminating variable (signed byte) mul8s_compare::a#1 from unused block mul8s_compare::@6
Eliminating variable (byte) mul8s_compare::ok#4 from unused block mul8s_compare::@7
Eliminating variable (byte) mul8s_compare::ok#3 from unused block mul8s_compare::@8
Eliminating variable (signed byte) mul8s_compare::b#1 from unused block mul8s_compare::@9
Eliminating variable (signed byte) mul8s_error::a#0 from unused block mul8s_compare::@14
Eliminating variable (signed byte) mul8s_error::b#0 from unused block mul8s_compare::@14
Eliminating variable (signed word) mul8s_error::ms#0 from unused block mul8s_compare::@14
Eliminating variable (signed word) mul8s_error::mn#0 from unused block mul8s_compare::@14
Eliminating variable (signed word) mul8s_error::mf#0 from unused block mul8s_compare::@14
Eliminating variable (signed byte) print_sbyte::b#1 from unused block mul8s_error::@1
Eliminating variable (signed byte) print_sbyte::b#2 from unused block mul8s_error::@3
Eliminating variable (signed word) print_sword::w#1 from unused block mul8s_error::@5
Eliminating variable (signed word) print_sword::w#2 from unused block mul8s_error::@7
Eliminating variable (signed word) print_sword::w#3 from unused block mul8s_error::@9
Removing unused procedure print_sword
Removing unused procedure block print_sword
Removing unused procedure block print_sword::@1
Removing PHI-reference to removed block (print_sword::@1) in block print_char
Removing PHI-reference to removed block (print_sword::@1) in block print_char
Removing unused procedure block print_sword::@5
Removing PHI-reference to removed block (print_sword::@5) in block print_sword::@2
Removing unused procedure block print_sword::@3
Removing PHI-reference to removed block (print_sword::@3) in block print_char
Removing PHI-reference to removed block (print_sword::@3) in block print_char
Removing unused procedure block print_sword::@6
Removing PHI-reference to removed block (print_sword::@6) in block print_sword::@2
Removing unused procedure block print_sword::@2
Removing PHI-reference to removed block (print_sword::@2) in block print_word
Removing PHI-reference to removed block (print_sword::@2) in block print_word
Removing unused procedure block print_sword::@7
Removing unused procedure block print_sword::@return
Removing unused procedure print_sbyte
Removing unused procedure block print_sbyte
Removing unused procedure block print_sbyte::@1
Removing PHI-reference to removed block (print_sbyte::@1) in block print_char
Removing PHI-reference to removed block (print_sbyte::@1) in block print_char
Removing unused procedure block print_sbyte::@5
Removing PHI-reference to removed block (print_sbyte::@5) in block print_sbyte::@2
Removing unused procedure block print_sbyte::@3
Removing PHI-reference to removed block (print_sbyte::@3) in block print_char
Removing PHI-reference to removed block (print_sbyte::@3) in block print_char
Removing unused procedure block print_sbyte::@6
Removing PHI-reference to removed block (print_sbyte::@6) in block print_sbyte::@2
Removing unused procedure block print_sbyte::@2
Removing PHI-reference to removed block (print_sbyte::@2) in block print_byte
Removing PHI-reference to removed block (print_sbyte::@2) in block print_byte
Removing unused procedure block print_sbyte::@7
Removing unused procedure block print_sbyte::@return
Removing unused procedure mul8s
Removing unused procedure block mul8s
Removing PHI-reference to removed block (mul8s) in block mul8u
Removing PHI-reference to removed block (mul8s) in block mul8u
Removing unused procedure block mul8s::@6
Removing PHI-reference to removed block (mul8s::@6) in block mul8s::@1
Removing unused procedure block mul8s::@1
Removing PHI-reference to removed block (mul8s::@1) in block mul8s::@2
Removing unused procedure block mul8s::@3
Removing unused procedure block mul8s::@2
Removing unused procedure block mul8s::@4
Removing unused procedure block mul8s::@return
Removing unused procedure mulf8s_prepared
Removing unused procedure block mulf8s_prepared
Removing PHI-reference to removed block (mulf8s_prepared) in block mulf8u_prepared
Removing unused procedure block mulf8s_prepared::@6
Removing PHI-reference to removed block (mulf8s_prepared::@6) in block mulf8s_prepared::@1
Removing unused procedure block mulf8s_prepared::@1
Removing PHI-reference to removed block (mulf8s_prepared::@1) in block mulf8s_prepared::@2
Removing unused procedure block mulf8s_prepared::@3
Removing unused procedure block mulf8s_prepared::@2
Removing unused procedure block mulf8s_prepared::@4
Removing unused procedure block mulf8s_prepared::@return
Removing unused procedure mulf8s
Removing unused procedure block mulf8s
Removing unused procedure block mulf8s::mulf8s_prepare1
Removing PHI-reference to removed block (mulf8s::mulf8s_prepare1) in block mulf8u_prepare
Removing unused procedure block mulf8s::@3
Removing unused procedure block mulf8s::@2
Removing unused procedure block mulf8s::@4
Removing unused procedure block mulf8s::@return
Removing unused procedure muls8s
Removing unused procedure block muls8s
Removing unused procedure block muls8s::@1
Removing PHI-reference to removed block (muls8s::@1) in block muls8s::@14
Removing PHI-reference to removed block (muls8s::@1) in block muls8s::@14
Removing unused procedure block muls8s::@4
Removing PHI-reference to removed block (muls8s::@4) in block muls8s::@3
Removing unused procedure block muls8s::@5
Removing PHI-reference to removed block (muls8s::@5) in block muls8s::@8
Removing PHI-reference to removed block (muls8s::@5) in block muls8s::@8
Removing unused procedure block muls8s::@8
Removing PHI-reference to removed block (muls8s::@8) in block muls8s::@3
Removing unused procedure block muls8s::@9
Removing unused procedure block muls8s::@3
Removing unused procedure block muls8s::@14
Removing unused procedure block muls8s::@15
Removing unused procedure block muls8s::@return
Removing PHI-reference to removed block (mul8s_compare::@1) in block mul8s_compare::@2
Removing unused block mul8s_compare::@1
Removing unused block mul8s_compare::@2
Removing PHI-reference to removed block (mul8s_compare::@4) in block mul8s_compare::@5
Removing unused block mul8s_compare::@4
Removing unused block mul8s_compare::@5
Removing unused block mul8s_compare::@22
Removing unused block mul8s_compare::@23
Removing PHI-reference to removed block (mul8s_compare::@24) in block mul8s_compare::@7
Removing unused block mul8s_compare::@24
Removing unused block mul8s_compare::@6
Removing PHI-reference to removed block (mul8s_compare::@7) in block mul8s_compare::@8
Removing unused block mul8s_compare::@7
Removing unused block mul8s_compare::@12
Removing unused block mul8s_compare::@8
Removing unused block mul8s_compare::@13
Removing unused block mul8s_compare::@9
Removing unused block mul8s_compare::@14
Removing unused block mul8s_compare::@25
Removing unused procedure mul8s_error
Removing unused procedure block mul8s_error
Removing PHI-reference to removed block (mul8s_error) in block print_str
Removing PHI-reference to removed block (mul8s_error) in block print_str
Removing unused procedure block mul8s_error::@1
Removing unused procedure block mul8s_error::@2
Removing PHI-reference to removed block (mul8s_error::@2) in block print_str
Removing PHI-reference to removed block (mul8s_error::@2) in block print_str
Removing unused procedure block mul8s_error::@3
Removing unused procedure block mul8s_error::@4
Removing PHI-reference to removed block (mul8s_error::@4) in block print_str
Removing PHI-reference to removed block (mul8s_error::@4) in block print_str
Removing unused procedure block mul8s_error::@5
Removing unused procedure block mul8s_error::@6
Removing PHI-reference to removed block (mul8s_error::@6) in block print_str
Removing PHI-reference to removed block (mul8s_error::@6) in block print_str
Removing unused procedure block mul8s_error::@7
Removing unused procedure block mul8s_error::@8
Removing PHI-reference to removed block (mul8s_error::@8) in block print_str
Removing PHI-reference to removed block (mul8s_error::@8) in block print_str
Removing unused procedure block mul8s_error::@9
Removing unused procedure block mul8s_error::@10
Removing PHI-reference to removed block (mul8s_error::@10) in block print_ln
Removing PHI-reference to removed block (mul8s_error::@10) in block print_ln
Removing unused procedure block mul8s_error::@11
Removing unused procedure block mul8s_error::@return
Removing unused block mul8s_compare::@4_1
Successful SSA optimization Pass2EliminateUnusedBlocks
Identical Phi Values (byte*) print_char_cursor#142 (byte*) print_char_cursor#134
Identical Phi Values (word) mul8u::mb#0 (byte) mul8u::b#1
Identical Phi Values (byte) mul8u::a#6 (byte) mul8u::a#2
Identical Phi Values (byte) mulf8u_prepare::a#2 (byte) mulf8u_prepare::a#0
Identical Phi Values (byte) mulf8u_prepared::b#2 (byte) mulf8u_prepared::b#0
Successful SSA optimization Pass2IdenticalPhiElimination
Constant (const byte*) memset::$2 = (byte*)memset::str#0
Constant (const byte*) memset::dst#0 = (byte*)memset::str#0
Successful SSA optimization Pass2ConstantIdentification
Eliminating unused constant (const byte*) print_str::str#11
Eliminating unused constant (const byte*) print_str::str#12
Eliminating unused constant (const byte*) print_str::str#13
Eliminating unused constant (const byte*) print_str::str#14
Eliminating unused constant (const byte*) print_str::str#15
Eliminating unused constant (const byte) print_char::ch#0
Eliminating unused constant (const byte) print_char::ch#1
Eliminating unused constant (const byte) print_char::ch#2
Eliminating unused constant (const byte) print_char::ch#3
Eliminating unused constant (const byte) mul8s_compare::ok#0
Eliminating unused constant (const byte) mul8s_compare::ok#1
Eliminating unused constant (const byte) mul8s_compare::ok#2
Successful SSA optimization PassNEliminateUnusedVars
Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) memset::end#0 = memset::$2+memset::num#0
Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2LoopHeadConstantIdentification
Alias (byte*) memset::dst#1 = (byte*) memset::dst#2 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte*) memset::dst#5 (const byte*) memset::dst#0
Successful SSA optimization Pass2IdenticalPhiElimination
if() condition always true - replacing block destination [184] if((const byte*) memset::dst#0!=(const byte*) memset::end#0) goto memset::@5
Successful SSA optimization Pass2ConstantIfs
Inlining constant with var siblings (const byte*) memset::dst#0
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 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::x_255#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::sqr2_hi#0
Inlining constant with var siblings (const byte*) mulf_init::sqr2_lo#0
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 word) muls8u::m#0
Inlining constant with var siblings (const byte) muls8u::i#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 byte*) print_line_cursor#0
Constant inlined mulf_init::c#0 = (byte) 0
Constant inlined mulf_init::sqr2_lo#0 = (const byte[$200]) mulf_sqr2_lo#0
Constant inlined mulf_init::sqr2_hi#0 = (const byte[$200]) mulf_sqr2_hi#0
Constant inlined mul8u_compare::ok#2 = (byte) 0
Constant inlined mulf_init::$2 = (const byte[$200]) mulf_sqr2_lo#0+(word) $1ff
Constant inlined mul8u_compare::ok#1 = (byte) 0
Constant inlined print_str::str#10 = (const string) mul8s_compare::str
Constant inlined mul8u_compare::ok#0 = (byte) 1
Constant inlined $0 = (const byte[]) print_hextab#0
Constant inlined mulf_init::$4 = (const byte[$200]) mulf_sqr2_hi#0+(word) $1ff
Constant inlined mulf_init::$3 = (const byte[$200]) mulf_sqr1_lo#0+(word) $100
Constant inlined mulf_init::$5 = (const byte[$200]) mulf_sqr1_hi#0+(word) $100
Constant inlined mulf_init::dir#1 = (byte) 1
Constant inlined mul8u_compare::a#0 = (byte) 0
Constant inlined memset::$2 = (byte*)(const void*) memset::str#0
Constant inlined mulf_init::dir#0 = (byte) $ff
Constant inlined mulf_tables_cmp::$2 = (const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4
Constant inlined mulf_init::x_255#0 = (byte) -1
Constant inlined mulf_tables_cmp::kc_sqr#0 = (const byte[$200]) mulf_sqr1_lo#0
Constant inlined mul8u_compare::b#0 = (byte) 0
Constant inlined mulf_init::x_2#0 = (byte) 0
Constant inlined mulf_init::sqr#0 = (byte) 0
Constant inlined muls8u::i#0 = (byte) 0
Constant inlined muls8u::m#0 = (byte) 0
Constant inlined print_line_cursor#0 = (byte*) 1024
Constant inlined mulf_init::$7 = (const byte[$200]) mulf_sqr1_lo#0+(word) $200
Constant inlined print_str::str#9 = (const string) str4
Constant inlined mul8u::res#0 = (byte) 0
Constant inlined mulf_init::sqr1_hi#0 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1
Constant inlined mulf_tables_cmp::asm_sqr#0 = (const byte[$200]) mula_sqr1_lo#0
Constant inlined mulf_init::sqr1_lo#0 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1
Constant inlined print_str::str#4 = (const string) mul8u_compare::str
Constant inlined mul8u_error::str1 = (const string) str1
Constant inlined print_str::str#3 = (const string) mulf_tables_cmp::str2
Constant inlined mul8u_error::str2 = (const string) str2
Constant inlined mulf_init::$15 = (const byte[$200]) mulf_sqr2_lo#0+(word) $1ff
Constant inlined print_str::str#2 = (const string) mulf_tables_cmp::str1
Constant inlined memset::dst#0 = (byte*)(const void*) memset::str#0
Constant inlined print_str::str#1 = (const string) mulf_tables_cmp::str
Constant inlined print_str::str#8 = (const string) str3
Constant inlined print_str::str#7 = (const string) str2
Constant inlined print_str::str#6 = (const string) str1
Constant inlined mul8u_error::str3 = (const string) str3
Constant inlined print_str::str#5 = (const string) mul8u_error::str
Constant inlined mul8u_error::str4 = (const string) str4
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting memset::@10(between memset::@4 and memset::@5)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4)
Added new block during phi lifting mulf_init::@17(between mulf_init::@2 and mulf_init::@4)
Added new block during phi lifting mulf_init::@18(between mulf_init::@10 and mulf_init::@12)
Added new block during phi lifting muls8u::@10(between muls8u::@4 and muls8u::@1)
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)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @12
Adding NOP phi() at start of @29
Adding NOP phi() at start of @41
Adding NOP phi() at start of @50
Adding NOP phi() at start of @53
Adding NOP phi() at start of @59
Adding NOP phi() at start of @60
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 main::@6
Adding NOP phi() at start of mul8s_compare
Adding NOP phi() at start of mul8s_compare::@1_1
Adding NOP phi() at start of mul8s_compare::@21
Adding NOP phi() at start of print_ln::@2
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 mul8u_compare::@15
Adding NOP phi() at start of mul8u_compare::@17
Adding NOP phi() at start of mul8u_error::@11
Adding NOP phi() at start of print_word::@2
Adding NOP phi() at start of print_byte::@2
Adding NOP phi() at start of mul8u::@3
Adding NOP phi() at start of muls8u::@2
Adding NOP phi() at start of mulf_tables_cmp
Adding NOP phi() at start of mulf_tables_cmp::@3
Adding NOP phi() at start of mulf_init
Adding NOP phi() at start of mulf_init::@3
Adding NOP phi() at start of mulf_init::@15
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of print_cls::@1
Adding NOP phi() at start of memset
Adding NOP phi() at start of memset::@2
Adding NOP phi() at start of memset::@4_1
Adding NOP phi() at start of memset::@1
CALL GRAPH
Calls in [] to main:7 
Calls in [main] to print_cls:11 mulf_init:13 mulf_init_asm:15 mulf_tables_cmp:17 mul8u_compare:19 mul8s_compare:21 
Calls in [mul8s_compare] to print_str:27 print_ln:30 
Calls in [mul8u_compare] to muls8u:57 mulf8u:62 mul8u:67 mul8u_error:83 print_str:91 print_ln:94 
Calls in [mul8u_error] to print_str:100 print_byte:104 print_str:106 print_byte:110 print_str:112 print_word:115 print_str:117 print_word:120 print_str:122 print_word:125 print_ln:128 
Calls in [print_word] to print_byte:135 print_byte:139 
Calls in [print_byte] to print_char:147 print_char:152 
Calls in [mulf8u] to mulf8u_prepare:177 mulf8u_prepared:179 
Calls in [mulf_tables_cmp] to print_str:205 print_ln:207 print_str:214 print_word:217 print_str:219 print_word:222 
Calls in [print_cls] to memset:279 

Created 40 initial phi equivalence classes
Not coalescing [26] print_char_cursor#193 ← print_line_cursor#1
Coalesced [28] print_line_cursor#119 ← print_line_cursor#1
Coalesced [29] print_char_cursor#203 ← print_char_cursor#134
Coalesced [34] print_line_cursor#122 ← print_line_cursor#45
Coalesced (already) [40] print_line_cursor#123 ← print_line_cursor#1
Coalesced [42] print_str::str#19 ← print_str::str#18
Coalesced [43] print_char_cursor#201 ← print_char_cursor#155
Coalesced [50] print_str::str#20 ← print_str::str#0
Coalesced [51] print_char_cursor#202 ← print_char_cursor#1
Coalesced [90] print_char_cursor#194 ← print_char_cursor#100
Coalesced [92] print_line_cursor#120 ← print_line_cursor#11
Coalesced (already) [93] print_char_cursor#204 ← print_char_cursor#134
Coalesced [96] mul8u_compare::a#14 ← mul8u_compare::a#1
Coalesced [97] mul8u_compare::b#12 ← mul8u_compare::b#1
Coalesced [98] mul8u_compare::ok#5 ← mul8u_compare::ok#4
Coalesced (already) [99] print_char_cursor#195 ← print_char_cursor#100
Coalesced [102] print_byte::b#7 ← print_byte::b#3
Coalesced [103] print_char_cursor#207 ← print_char_cursor#134
Coalesced [105] print_char_cursor#196 ← print_char_cursor#19
Coalesced [108] print_byte::b#8 ← print_byte::b#4
Coalesced (already) [109] print_char_cursor#208 ← print_char_cursor#134
Coalesced (already) [111] print_char_cursor#197 ← print_char_cursor#19
Coalesced [114] print_word::w#8 ← print_word::w#3
Coalesced (already) [116] print_char_cursor#198 ← print_char_cursor#19
Coalesced [119] print_word::w#9 ← print_word::w#4
Coalesced (already) [121] print_char_cursor#199 ← print_char_cursor#19
Coalesced [124] print_word::w#10 ← print_word::w#5
Coalesced (already) [126] print_line_cursor#121 ← print_line_cursor#11
Coalesced (already) [127] print_char_cursor#205 ← print_char_cursor#19
Coalesced [133] print_byte::b#9 ← print_byte::b#1
Coalesced (already) [134] print_char_cursor#209 ← print_char_cursor#134
Coalesced [137] print_byte::b#10 ← print_byte::b#2
Coalesced (already) [138] print_char_cursor#210 ← print_char_cursor#19
Coalesced [145] print_char::ch#7 ← print_char::ch#4
Coalesced [146] print_char_cursor#211 ← print_char_cursor#143
Coalesced [150] print_char::ch#8 ← print_char::ch#5
Coalesced (already) [151] print_char_cursor#212 ← print_char_cursor#19
Coalesced [159] mul8u::a#8 ← mul8u::a#2
Coalesced [160] mul8u::mb#6 ← mul8u::b#1
Coalesced [168] mul8u::res#9 ← mul8u::res#1
Coalesced [172] mul8u::a#9 ← mul8u::a#0
Coalesced [173] mul8u::res#7 ← mul8u::res#6
Coalesced [174] mul8u::mb#7 ← mul8u::mb#1
Coalesced (already) [175] mul8u::res#8 ← mul8u::res#2
Coalesced [194] muls8u::return#5 ← muls8u::m#3
Coalesced [199] muls8u::i#4 ← muls8u::i#1
Coalesced [200] muls8u::m#6 ← muls8u::m#1
Coalesced (already) [206] print_char_cursor#206 ← print_char_cursor#134
Not coalescing [208] print_char_cursor#213 ← print_line_cursor#1
Coalesced (already) [209] print_line_cursor#124 ← print_line_cursor#1
Coalesced [216] print_word::w#11 ← print_word::w#1
Coalesced (already) [218] print_char_cursor#200 ← print_char_cursor#19
Coalesced [221] print_word::w#12 ← print_word::w#2
Coalesced (already) [223] print_char_cursor#214 ← print_char_cursor#19
Coalesced [226] mulf_tables_cmp::kc_sqr#9 ← mulf_tables_cmp::kc_sqr#1
Coalesced [227] mulf_tables_cmp::asm_sqr#7 ← mulf_tables_cmp::asm_sqr#1
Coalesced [251] mulf_init::sqr2_lo#6 ← mulf_init::sqr2_lo#1
Coalesced [252] mulf_init::x_255#6 ← mulf_init::x_255#1
Coalesced [253] mulf_init::sqr2_hi#6 ← mulf_init::sqr2_hi#1
Coalesced [254] mulf_init::dir#5 ← mulf_init::dir#4
Coalesced (already) [255] mulf_init::dir#6 ← mulf_init::dir#2
Coalesced [261] mulf_init::sqr#9 ← mulf_init::sqr#2
Coalesced [262] mulf_init::x_2#8 ← mulf_init::x_2#1
Coalesced [271] mulf_init::sqr1_lo#6 ← mulf_init::sqr1_lo#1
Coalesced [272] mulf_init::c#6 ← mulf_init::c#1
Coalesced [273] mulf_init::sqr#7 ← mulf_init::sqr#1
Coalesced [274] mulf_init::sqr1_hi#6 ← mulf_init::sqr1_hi#1
Coalesced [275] mulf_init::x_2#6 ← mulf_init::x_2#2
Coalesced [276] mulf_init::sqr#8 ← mulf_init::sqr#4
Coalesced (already) [277] mulf_init::x_2#7 ← mulf_init::x_2#3
Coalesced [291] memset::dst#6 ← memset::dst#1
Coalesced down to 26 phi equivalence classes
Culled Empty Block (label) @12
Culled Empty Block (label) @29
Culled Empty Block (label) @41
Culled Empty Block (label) @50
Culled Empty Block (label) @53
Culled Empty Block (label) @60
Culled Empty Block (label) main::@6
Culled Empty Block (label) mul8s_compare::@1_1
Culled Empty Block (label) mul8s_compare::@21
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) mul8u_compare::@7
Culled Empty Block (label) mul8u_compare::@15
Culled Empty Block (label) mul8u_compare::@17
Culled Empty Block (label) mul8u_compare::@18
Culled Empty Block (label) mul8u_compare::@19
Culled Empty Block (label) mul8u_error::@11
Culled Empty Block (label) print_word::@2
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) mul8u::@3
Culled Empty Block (label) mul8u::@10
Culled Empty Block (label) muls8u::@2
Culled Empty Block (label) muls8u::@10
Culled Empty Block (label) mulf_tables_cmp::@15
Culled Empty Block (label) mulf_init::@3
Culled Empty Block (label) mulf_init::@15
Culled Empty Block (label) mulf_init::@17
Culled Empty Block (label) print_cls::@1
Culled Empty Block (label) memset::@2
Culled Empty Block (label) memset::@4_1
Culled Empty Block (label) memset::@1
Culled Empty Block (label) memset::@10
Renumbering block @59 to @1
Renumbering block memset::@4 to memset::@1
Renumbering block memset::@5 to memset::@2
Renumbering block mul8u::@4 to mul8u::@3
Renumbering block mul8u::@7 to mul8u::@4
Renumbering block mulf_init::@4 to mulf_init::@3
Renumbering block mulf_init::@7 to mulf_init::@4
Renumbering block mulf_init::@9 to mulf_init::@5
Renumbering block mulf_init::@10 to mulf_init::@6
Renumbering block mulf_init::@11 to mulf_init::@7
Renumbering block mulf_init::@12 to mulf_init::@8
Renumbering block mulf_init::@18 to mulf_init::@9
Renumbering block mulf8u::@2 to mulf8u::@1
Renumbering block mulf8u::@3 to mulf8u::@2
Renumbering block muls8u::@4 to muls8u::@2
Renumbering block muls8u::@5 to muls8u::@3
Renumbering block mulf_tables_cmp::@7 to mulf_tables_cmp::@5
Renumbering block mulf_tables_cmp::@10 to mulf_tables_cmp::@6
Renumbering block mulf_tables_cmp::@11 to mulf_tables_cmp::@7
Renumbering block mulf_tables_cmp::@12 to mulf_tables_cmp::@8
Renumbering block mulf_tables_cmp::@13 to mulf_tables_cmp::@9
Renumbering block mulf_tables_cmp::@14 to mulf_tables_cmp::@10
Renumbering block mul8u_compare::@8 to mul8u_compare::@7
Renumbering block mul8u_compare::@10 to mul8u_compare::@8
Renumbering block mul8u_compare::@11 to mul8u_compare::@9
Renumbering block mul8u_compare::@12 to mul8u_compare::@10
Renumbering block mul8u_compare::@13 to mul8u_compare::@11
Renumbering block mul8u_compare::@14 to mul8u_compare::@12
Renumbering block mul8u_compare::@16 to mul8u_compare::@13
Renumbering block mul8u_compare::@20 to mul8u_compare::@14
Renumbering block mul8s_compare::@3 to mul8s_compare::@1
Renumbering block mul8s_compare::@20 to mul8s_compare::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
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::@2
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::@14
Adding NOP phi() at start of mul8u_compare::@9
Adding NOP phi() at start of mul8u_compare::@13
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 mul8u
Adding NOP phi() at start of mulf_tables_cmp
Adding NOP phi() at start of mulf_tables_cmp::@3
Adding NOP phi() at start of mulf_tables_cmp::@6
Adding NOP phi() at start of mulf_tables_cmp::@9
Adding NOP phi() at start of mulf_init
Adding NOP phi() at start of mulf_init::@9
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of memset

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
main: scope:[main]  from @1
  [4] *((const byte*) BGCOL#0) ← (byte) 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
  [18] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1
  [19] call print_str 
  to:mul8s_compare::@2
mul8s_compare::@2: scope:[mul8s_compare]  from mul8s_compare::@1
  [20] phi()
  [21] call print_ln 
  to:mul8s_compare::@return
mul8s_compare::@return: scope:[mul8s_compare]  from mul8s_compare::@2
  [22] return 
  to:@return
print_ln: scope:[print_ln]  from mul8s_compare::@2 mul8u_compare::@13 mul8u_error::@10 mulf_tables_cmp::@6
  [23] (byte*) print_char_cursor#135 ← phi( mul8s_compare::@2/(byte*) print_char_cursor#134 mul8u_compare::@13/(byte*) print_char_cursor#134 mul8u_error::@10/(byte*) print_char_cursor#19 mulf_tables_cmp::@6/(byte*) print_char_cursor#134 )
  [23] (byte*) print_line_cursor#45 ← phi( mul8s_compare::@2/(byte*) print_line_cursor#1 mul8u_compare::@13/(byte*) print_line_cursor#11 mul8u_error::@10/(byte*) print_line_cursor#11 mulf_tables_cmp::@6/(byte*) 1024 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [24] (byte*) print_line_cursor#23 ← phi( print_ln/(byte*) print_line_cursor#45 print_ln::@1/(byte*) print_line_cursor#1 )
  [25] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28
  [26] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [27] return 
  to:@return
print_str: scope:[print_str]  from mul8s_compare::@1 mul8u_compare::@9 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::@9
  [28] (byte*) print_char_cursor#155 ← phi( mul8s_compare::@1/(byte*~) print_char_cursor#193 mul8u_compare::@9/(byte*) print_char_cursor#100 mul8u_error/(byte*) print_char_cursor#100 mul8u_error::@2/(byte*) print_char_cursor#19 mul8u_error::@4/(byte*) print_char_cursor#19 mul8u_error::@6/(byte*) print_char_cursor#19 mul8u_error::@8/(byte*) print_char_cursor#19 mulf_tables_cmp::@9/(byte*) print_char_cursor#19 mulf_tables_cmp::@3/(byte*) 1024 mulf_tables_cmp::@5/(byte*) 1024 )
  [28] (byte*) print_str::str#18 ← phi( mul8s_compare::@1/(const string) mul8s_compare::str mul8u_compare::@9/(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::@9/(const string) mulf_tables_cmp::str2 mulf_tables_cmp::@3/(const string) mulf_tables_cmp::str mulf_tables_cmp::@5/(const string) mulf_tables_cmp::str1 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [29] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#155 print_str::@2/(byte*) print_char_cursor#1 )
  [29] (byte*) print_str::str#16 ← phi( print_str/(byte*) print_str::str#18 print_str::@2/(byte*) print_str::str#0 )
  [30] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [31] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [32] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16)
  [33] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134
  [34] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16
  to:print_str::@1
mul8u_compare: scope:[mul8u_compare]  from main::@4
  [35] phi()
  to:mul8u_compare::@1
mul8u_compare::@1: scope:[mul8u_compare]  from mul8u_compare mul8u_compare::@8
  [36] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) 0 mul8u_compare::@8/(byte) mul8u_compare::a#1 )
  to:mul8u_compare::@2
mul8u_compare::@2: scope:[mul8u_compare]  from mul8u_compare::@1 mul8u_compare::@5
  [37] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 )
  [38] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
  [39] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10
  [40] call muls8u 
  [41] (word) muls8u::return#2 ← (word) muls8u::return#0
  to:mul8u_compare::@10
mul8u_compare::@10: scope:[mul8u_compare]  from mul8u_compare::@2
  [42] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
  [43] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7
  [44] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10
  [45] call mulf8u 
  [46] (word) mulf8u::return#2 ← (word) mulf8u::return#0
  to:mul8u_compare::@11
mul8u_compare::@11: scope:[mul8u_compare]  from mul8u_compare::@10
  [47] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
  [48] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7
  [49] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10
  [50] call mul8u 
  [51] (word) mul8u::return#3 ← (word) mul8u::res#2
  to:mul8u_compare::@12
mul8u_compare::@12: scope:[mul8u_compare]  from mul8u_compare::@11
  [52] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
  [53] 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::@12
  [54] phi()
  to:mul8u_compare::@3
mul8u_compare::@3: scope:[mul8u_compare]  from mul8u_compare::@12 mul8u_compare::@6
  [55] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@12/(byte) 1 mul8u_compare::@6/(byte) 0 )
  [56] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14
  to:mul8u_compare::@4
mul8u_compare::@14: scope:[mul8u_compare]  from mul8u_compare::@3
  [57] phi()
  to:mul8u_compare::@4
mul8u_compare::@4: scope:[mul8u_compare]  from mul8u_compare::@14 mul8u_compare::@3
  [58] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte) 0 )
  [59] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5
  to:mul8u_compare::@7
mul8u_compare::@7: scope:[mul8u_compare]  from mul8u_compare::@4
  [60] *((const byte*) BGCOL#0) ← (byte) 2
  [61] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7
  [62] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
  [63] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
  [64] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
  [65] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
  [66] call mul8u_error 
  to:mul8u_compare::@return
mul8u_compare::@return: scope:[mul8u_compare]  from mul8u_compare::@13 mul8u_compare::@7
  [67] return 
  to:@return
mul8u_compare::@5: scope:[mul8u_compare]  from mul8u_compare::@4
  [68] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10
  [69] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2
  to:mul8u_compare::@8
mul8u_compare::@8: scope:[mul8u_compare]  from mul8u_compare::@5
  [70] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7
  [71] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1
  to:mul8u_compare::@9
mul8u_compare::@9: scope:[mul8u_compare]  from mul8u_compare::@8
  [72] phi()
  [73] call print_str 
  to:mul8u_compare::@13
mul8u_compare::@13: scope:[mul8u_compare]  from mul8u_compare::@9
  [74] phi()
  [75] call print_ln 
  to:mul8u_compare::@return
mul8u_error: scope:[mul8u_error]  from mul8u_compare::@7
  [76] phi()
  [77] call print_str 
  to:mul8u_error::@1
mul8u_error::@1: scope:[mul8u_error]  from mul8u_error
  [78] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
  [79] call print_byte 
  to:mul8u_error::@2
mul8u_error::@2: scope:[mul8u_error]  from mul8u_error::@1
  [80] phi()
  [81] call print_str 
  to:mul8u_error::@3
mul8u_error::@3: scope:[mul8u_error]  from mul8u_error::@2
  [82] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0
  [83] call print_byte 
  to:mul8u_error::@4
mul8u_error::@4: scope:[mul8u_error]  from mul8u_error::@3
  [84] phi()
  [85] call print_str 
  to:mul8u_error::@5
mul8u_error::@5: scope:[mul8u_error]  from mul8u_error::@4
  [86] (word) print_word::w#3 ← (word) mul8u_error::ms#0
  [87] call print_word 
  to:mul8u_error::@6
mul8u_error::@6: scope:[mul8u_error]  from mul8u_error::@5
  [88] phi()
  [89] call print_str 
  to:mul8u_error::@7
mul8u_error::@7: scope:[mul8u_error]  from mul8u_error::@6
  [90] (word) print_word::w#4 ← (word) mul8u_error::mn#0
  [91] call print_word 
  to:mul8u_error::@8
mul8u_error::@8: scope:[mul8u_error]  from mul8u_error::@7
  [92] phi()
  [93] call print_str 
  to:mul8u_error::@9
mul8u_error::@9: scope:[mul8u_error]  from mul8u_error::@8
  [94] (word) print_word::w#5 ← (word) mul8u_error::mf#0
  [95] call print_word 
  to:mul8u_error::@10
mul8u_error::@10: scope:[mul8u_error]  from mul8u_error::@9
  [96] phi()
  [97] call print_ln 
  to:mul8u_error::@return
mul8u_error::@return: scope:[mul8u_error]  from mul8u_error::@10
  [98] return 
  to:@return
print_word: scope:[print_word]  from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@10 mulf_tables_cmp::@8
  [99] (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::@8/(word) print_word::w#1 mulf_tables_cmp::@10/(word) print_word::w#2 )
  [100] (byte) print_byte::b#1 ← > (word) print_word::w#6
  [101] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [102] (byte) print_byte::b#2 ← < (word) print_word::w#6
  [103] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [104] return 
  to:@return
print_byte: scope:[print_byte]  from mul8u_error::@1 mul8u_error::@3 print_word print_word::@1
  [105] (byte*) print_char_cursor#143 ← phi( mul8u_error::@1/(byte*) print_char_cursor#134 mul8u_error::@3/(byte*) print_char_cursor#134 print_word/(byte*) print_char_cursor#134 print_word::@1/(byte*) print_char_cursor#19 )
  [105] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 )
  [106] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4
  [107] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
  [108] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [109] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f
  [110] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
  [111] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [112] return 
  to:@return
print_char: scope:[print_char]  from print_byte print_byte::@1
  [113] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#19 )
  [113] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 )
  [114] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6
  [115] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [116] return 
  to:@return
mul8u: scope:[mul8u]  from mul8u_compare::@11
  [117] phi()
  to:mul8u::@1
mul8u::@1: scope:[mul8u]  from mul8u mul8u::@3
  [118] (word) mul8u::mb#2 ← phi( mul8u/(byte) mul8u::b#1 mul8u::@3/(word) mul8u::mb#1 )
  [118] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
  [118] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#2 mul8u::@3/(byte) mul8u::a#0 )
  [119] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
  to:mul8u::@return
mul8u::@return: scope:[mul8u]  from mul8u::@1
  [120] return 
  to:@return
mul8u::@2: scope:[mul8u]  from mul8u::@1
  [121] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
  [122] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
  to:mul8u::@4
mul8u::@4: scope:[mul8u]  from mul8u::@2
  [123] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
  to:mul8u::@3
mul8u::@3: scope:[mul8u]  from mul8u::@2 mul8u::@4
  [124] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
  [125] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
  [126] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
  to:mul8u::@1
mulf8u: scope:[mulf8u]  from mul8u_compare::@10
  [127] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
  [128] call mulf8u_prepare 
  to:mulf8u::@1
mulf8u::@1: scope:[mulf8u]  from mulf8u
  [129] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
  [130] call mulf8u_prepared 
  [131] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
  to:mulf8u::@2
mulf8u::@2: scope:[mulf8u]  from mulf8u::@1
  [132] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
  to:mulf8u::@return
mulf8u::@return: scope:[mulf8u]  from mulf8u::@2
  [133] return 
  to:@return
mulf8u_prepared: scope:[mulf8u_prepared]  from mulf8u::@1
  [134] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#0
  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  }
  [136] (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
  [137] return 
  to:@return
mulf8u_prepare: scope:[mulf8u_prepare]  from mulf8u
  [138] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#0
  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
  [140] return 
  to:@return
muls8u: scope:[muls8u]  from mul8u_compare::@2
  [141] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1
  to:muls8u::@2
muls8u::@2: scope:[muls8u]  from muls8u muls8u::@3
  [142] (word) muls8u::m#3 ← phi( muls8u/(byte) 0 muls8u::@3/(word) muls8u::m#1 )
  [142] (byte) muls8u::i#2 ← phi( muls8u/(byte) 0 muls8u::@3/(byte) muls8u::i#1 )
  [143] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@3
  to:muls8u::@1
muls8u::@1: scope:[muls8u]  from muls8u muls8u::@2
  [144] (word) muls8u::return#0 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#3 )
  to:muls8u::@return
muls8u::@return: scope:[muls8u]  from muls8u::@1
  [145] return 
  to:@return
muls8u::@3: scope:[muls8u]  from muls8u::@2
  [146] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0
  [147] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2
  to:muls8u::@2
mulf_tables_cmp: scope:[mulf_tables_cmp]  from main::@3
  [148] phi()
  to:mulf_tables_cmp::@1
mulf_tables_cmp::@1: scope:[mulf_tables_cmp]  from mulf_tables_cmp mulf_tables_cmp::@4
  [149] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mula_sqr1_lo#0 mulf_tables_cmp::@4/(byte*) mulf_tables_cmp::asm_sqr#1 )
  [149] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mulf_sqr1_lo#0 mulf_tables_cmp::@4/(byte*) mulf_tables_cmp::kc_sqr#1 )
  [150] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@2
  to:mulf_tables_cmp::@3
mulf_tables_cmp::@3: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@1
  [151] phi()
  [152] call print_str 
  to:mulf_tables_cmp::@6
mulf_tables_cmp::@6: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@3
  [153] phi()
  [154] call print_ln 
  to:mulf_tables_cmp::@7
mulf_tables_cmp::@7: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@6
  [155] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1
  to:mulf_tables_cmp::@return
mulf_tables_cmp::@return: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@10 mulf_tables_cmp::@7
  [156] (byte*) print_line_cursor#11 ← phi( mulf_tables_cmp::@7/(byte*) print_line_cursor#1 mulf_tables_cmp::@10/(byte*) 1024 )
  [156] (byte*) print_char_cursor#100 ← phi( mulf_tables_cmp::@7/(byte*~) print_char_cursor#213 mulf_tables_cmp::@10/(byte*) print_char_cursor#19 )
  [157] return 
  to:@return
mulf_tables_cmp::@2: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@1
  [158] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4
  to:mulf_tables_cmp::@5
mulf_tables_cmp::@5: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@2
  [159] *((const byte*) BGCOL#0) ← (byte) 2
  [160] call print_str 
  to:mulf_tables_cmp::@8
mulf_tables_cmp::@8: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@5
  [161] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
  [162] call print_word 
  to:mulf_tables_cmp::@9
mulf_tables_cmp::@9: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@8
  [163] phi()
  [164] call print_str 
  to:mulf_tables_cmp::@10
mulf_tables_cmp::@10: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@9
  [165] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2
  [166] call print_word 
  to:mulf_tables_cmp::@return
mulf_tables_cmp::@4: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@2
  [167] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2
  [168] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2
  to:mulf_tables_cmp::@1
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!-  }
  [170] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0)
  [171] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0)
  [172] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0)
  [173] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0)
  to:mulf_init_asm::@return
mulf_init_asm::@return: scope:[mulf_init_asm]  from mulf_init_asm
  [174] return 
  to:@return
mulf_init: scope:[mulf_init]  from main::@1
  [175] phi()
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@3
  [176] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
  [176] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
  [176] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
  [176] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
  [176] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
  [177] if((byte*) mulf_init::sqr1_lo#2!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@2
  to:mulf_init::@5
mulf_init::@5: scope:[mulf_init]  from mulf_init::@1 mulf_init::@8
  [178] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff )
  [178] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte[$200]) mulf_sqr2_hi#0 )
  [178] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 )
  [178] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte[$200]) mulf_sqr2_lo#0 )
  [179] if((byte*) mulf_init::sqr2_lo#2!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@6
  to:mulf_init::@7
mulf_init::@7: scope:[mulf_init]  from mulf_init::@5
  [180] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100)
  [181] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100)
  to:mulf_init::@return
mulf_init::@return: scope:[mulf_init]  from mulf_init::@7
  [182] return 
  to:@return
mulf_init::@6: scope:[mulf_init]  from mulf_init::@5
  [183] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
  [184] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
  [185] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  [186] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  [187] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9
  to:mulf_init::@8
mulf_init::@9: scope:[mulf_init]  from mulf_init::@6
  [188] phi()
  to:mulf_init::@8
mulf_init::@8: scope:[mulf_init]  from mulf_init::@6 mulf_init::@9
  [189] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 )
  [190] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
  to:mulf_init::@5
mulf_init::@2: scope:[mulf_init]  from mulf_init::@1
  [191] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  [192] (byte~) mulf_init::$9 ← (byte) mulf_init::c#1 & (byte) 1
  [193] if((byte~) mulf_init::$9!=(byte) 0) goto mulf_init::@3
  to:mulf_init::@4
mulf_init::@4: scope:[mulf_init]  from mulf_init::@2
  [194] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
  [195] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
  to:mulf_init::@3
mulf_init::@3: scope:[mulf_init]  from mulf_init::@2 mulf_init::@4
  [196] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 )
  [196] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 )
  [197] (byte~) mulf_init::$12 ← < (word) mulf_init::sqr#3
  [198] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$12
  [199] (byte~) mulf_init::$13 ← > (word) mulf_init::sqr#3
  [200] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$13
  [201] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  [202] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  [203] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
  to:mulf_init::@1
print_cls: scope:[print_cls]  from main
  [204] phi()
  [205] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [206] return 
  to:@return
memset: scope:[memset]  from print_cls
  [207] phi()
  to:memset::@2
memset::@2: scope:[memset]  from memset memset::@1
  [208] (byte*) memset::dst#4 ← phi( memset::@1/(byte*) memset::dst#1 memset/(byte*)(const void*) memset::str#0 )
  [209] *((byte*) memset::dst#4) ← (const byte) memset::c#0
  [210] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4
  to:memset::@1
memset::@1: scope:[memset]  from memset::@2
  [211] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [212] return 
  to:@return


VARIABLE REGISTER WEIGHTS
(byte*) BGCOL
(void()) main()
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(byte) memset::c
(byte*) memset::dst
(byte*) memset::dst#1 16.5
(byte*) memset::dst#4 16.5
(byte*) memset::end
(word) memset::num
(void*) memset::return
(void*) memset::str
(void()) mul8s_compare()
(signed byte) mul8s_compare::a
(signed byte) mul8s_compare::b
(signed word) mul8s_compare::mf
(signed word) mul8s_compare::mn
(signed word) mul8s_compare::ms
(byte) mul8s_compare::ok
(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 34.33333333333333
(byte) mul8u::a#3 667.6666666666667
(byte) mul8u::b
(byte) mul8u::b#1 51.5
(word) mul8u::mb
(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 517.3333333333334
(word) mul8u::res#6 1001.0
(word) mul8u::return
(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[$200]) mula_sqr1_hi
(byte[$200]) mula_sqr1_lo
(byte[$200]) mula_sqr2_hi
(byte[$200]) mula_sqr2_lo
(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::memA
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
(byte) mulf8u_prepared::b
(byte) mulf8u_prepared::b#0 4.0
(byte*) mulf8u_prepared::memB
(byte*) mulf8u_prepared::resL
(word) mulf8u_prepared::return
(word) mulf8u_prepared::return#0 1.3333333333333333
(word) mulf8u_prepared::return#2 4.0
(void()) mulf_init()
(byte~) mulf_init::$12 22.0
(byte~) mulf_init::$13 22.0
(byte~) mulf_init::$9 22.0
(byte) mulf_init::c
(byte) mulf_init::c#1 2.5384615384615383
(byte) mulf_init::c#2 11.0
(byte) mulf_init::dir
(byte) mulf_init::dir#2 4.125
(byte) mulf_init::dir#4 11.0
(word) mulf_init::sqr
(word) mulf_init::sqr#1 11.0
(word) mulf_init::sqr#2 22.0
(word) mulf_init::sqr#3 9.166666666666666
(word) mulf_init::sqr#4 5.5
(byte*) mulf_init::sqr1_hi
(byte*) mulf_init::sqr1_hi#1 7.333333333333333
(byte*) mulf_init::sqr1_hi#2 2.75
(byte*) mulf_init::sqr1_lo
(byte*) mulf_init::sqr1_lo#1 22.0
(byte*) mulf_init::sqr1_lo#2 3.142857142857143
(byte*) mulf_init::sqr2_hi
(byte*) mulf_init::sqr2_hi#1 3.6666666666666665
(byte*) mulf_init::sqr2_hi#2 8.25
(byte*) mulf_init::sqr2_lo
(byte*) mulf_init::sqr2_lo#1 22.0
(byte*) mulf_init::sqr2_lo#2 4.888888888888889
(byte) mulf_init::x_2
(byte) mulf_init::x_2#1 11.0
(byte) mulf_init::x_2#2 5.5
(byte) mulf_init::x_2#3 6.6000000000000005
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 6.6000000000000005
(byte) mulf_init::x_255#2 8.8
(void()) mulf_init_asm()
(byte*) mulf_init_asm::mem
(byte[$200]) mulf_sqr1_hi
(byte[$200]) mulf_sqr1_lo
(byte[$200]) mulf_sqr2_hi
(byte[$200]) mulf_sqr2_lo
(void()) mulf_tables_cmp()
(byte*) mulf_tables_cmp::asm_sqr
(byte*) mulf_tables_cmp::asm_sqr#1 11.0
(byte*) mulf_tables_cmp::asm_sqr#2 6.6000000000000005
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#1 22.0
(byte*) mulf_tables_cmp::kc_sqr#2 4.4
(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 2002.0
(byte) muls8u::i#2 1001.0
(word) muls8u::m
(word) muls8u::m#1 1001.0
(word) muls8u::m#3 1501.5
(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.0
(void()) print_char((byte) print_char::ch)
(byte) print_char::ch
(byte) print_char::ch#4 4.0
(byte) print_char::ch#5 4.0
(byte) print_char::ch#6 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 11.0
(byte*) print_char_cursor#100 0.1951219512195122
(byte*) print_char_cursor#134 1.8076923076923077
(byte*) print_char_cursor#135 4.75
(byte*) print_char_cursor#143 3.333333333333333
(byte*) print_char_cursor#155 18.0
(byte*) print_char_cursor#19 0.8333333333333334
(byte*~) print_char_cursor#193 4.0
(byte*~) print_char_cursor#213 4.0
(byte*) print_char_cursor#86 4.0
(void()) print_cls()
(byte[]) print_hextab
(byte*) print_line_cursor
(byte*) print_line_cursor#1 2.5625
(byte*) print_line_cursor#11 0.09523809523809523
(byte*) print_line_cursor#23 24.0
(byte*) print_line_cursor#45 8.0
(void()) print_ln()
(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_word((word) print_word::w)
(word) print_word::w
(word) print_word::w#1 4.0
(word) print_word::w#2 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 4.666666666666666

Not consolidating phi with different size mul8u::mb#2 mul8u::b#1
Initial phi equivalence classes
[ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ]
[ print_str::str#16 print_str::str#18 print_str::str#0 ]
[ mul8u_compare::a#7 mul8u_compare::a#1 ]
[ mul8u_compare::b#10 mul8u_compare::b#1 ]
[ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
[ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 ]
[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ]
[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
[ print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ]
[ mul8u::a#3 mul8u::a#2 mul8u::a#0 ]
[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
[ mul8u::mb#2 mul8u::mb#1 ]
[ mul8u::b#1 ]
[ 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::sqr1_lo#2 mulf_init::sqr1_lo#1 ]
[ mulf_init::c#2 mulf_init::c#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::sqr2_lo#2 mulf_init::sqr2_lo#1 ]
[ mulf_init::x_255#2 mulf_init::x_255#1 ]
[ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
[ mulf_init::dir#2 mulf_init::dir#4 ]
[ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
[ memset::dst#4 memset::dst#1 ]
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 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::$1 to zero page equivalence class [ mul8u::$1 ]
Added variable mulf8u_prepare::a#0 to zero page equivalence class [ mulf8u_prepare::a#0 ]
Added variable mulf8u_prepared::b#0 to zero page equivalence class [ mulf8u_prepared::b#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 mulf8u_prepared::return#0 to zero page equivalence class [ mulf8u_prepared::return#0 ]
Added variable mulf_init::$9 to zero page equivalence class [ mulf_init::$9 ]
Added variable mulf_init::$12 to zero page equivalence class [ mulf_init::$12 ]
Added variable mulf_init::$13 to zero page equivalence class [ mulf_init::$13 ]
Complete equivalence classes
[ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ]
[ print_str::str#16 print_str::str#18 print_str::str#0 ]
[ mul8u_compare::a#7 mul8u_compare::a#1 ]
[ mul8u_compare::b#10 mul8u_compare::b#1 ]
[ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
[ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 ]
[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ]
[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
[ print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ]
[ mul8u::a#3 mul8u::a#2 mul8u::a#0 ]
[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
[ mul8u::mb#2 mul8u::mb#1 ]
[ mul8u::b#1 ]
[ 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::sqr1_lo#2 mulf_init::sqr1_lo#1 ]
[ mulf_init::c#2 mulf_init::c#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::sqr2_lo#2 mulf_init::sqr2_lo#1 ]
[ mulf_init::x_255#2 mulf_init::x_255#1 ]
[ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
[ mulf_init::dir#2 mulf_init::dir#4 ]
[ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
[ memset::dst#4 memset::dst#1 ]
[ 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 ]
[ print_byte::$0 ]
[ print_byte::$2 ]
[ mul8u::$1 ]
[ mulf8u_prepare::a#0 ]
[ mulf8u_prepared::b#0 ]
[ mulf8u_prepared::return#2 ]
[ mulf8u::return#0 ]
[ mulf8u_prepared::return#0 ]
[ mulf_init::$9 ]
[ mulf_init::$12 ]
[ mulf_init::$13 ]
Allocated zp ZP_WORD:2 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ]
Allocated zp ZP_WORD:4 [ print_str::str#16 print_str::str#18 print_str::str#0 ]
Allocated zp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Allocated zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Allocated zp ZP_BYTE:8 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
Allocated zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 ]
Allocated zp ZP_BYTE:11 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ]
Allocated zp ZP_BYTE:12 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
Allocated zp ZP_WORD:13 [ print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ]
Allocated zp ZP_BYTE:15 [ mul8u::a#3 mul8u::a#2 mul8u::a#0 ]
Allocated zp ZP_WORD:16 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
Allocated zp ZP_WORD:18 [ mul8u::mb#2 mul8u::mb#1 ]
Allocated zp ZP_BYTE:20 [ mul8u::b#1 ]
Allocated zp ZP_BYTE:21 [ muls8u::i#2 muls8u::i#1 ]
Allocated zp ZP_WORD:22 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ]
Allocated zp ZP_WORD:24 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ]
Allocated zp ZP_WORD:26 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ]
Allocated zp ZP_WORD:28 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ]
Allocated zp ZP_BYTE:30 [ mulf_init::c#2 mulf_init::c#1 ]
Allocated zp ZP_WORD:31 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ]
Allocated zp ZP_BYTE:33 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Allocated zp ZP_WORD:34 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ]
Allocated zp ZP_BYTE:36 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Allocated zp ZP_WORD:37 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
Allocated zp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ]
Allocated zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
Allocated zp ZP_WORD:42 [ memset::dst#4 memset::dst#1 ]
Allocated zp ZP_BYTE:44 [ muls8u::a#0 ]
Allocated zp ZP_BYTE:45 [ muls8u::b#0 ]
Allocated zp ZP_WORD:46 [ muls8u::return#2 ]
Allocated zp ZP_WORD:48 [ mul8u_compare::ms#0 ]
Allocated zp ZP_BYTE:50 [ mulf8u::a#0 ]
Allocated zp ZP_BYTE:51 [ mulf8u::b#0 ]
Allocated zp ZP_WORD:52 [ mulf8u::return#2 ]
Allocated zp ZP_WORD:54 [ mul8u_compare::mf#0 ]
Allocated zp ZP_WORD:56 [ mul8u::return#3 ]
Allocated zp ZP_WORD:58 [ mul8u_compare::mn#0 ]
Allocated zp ZP_BYTE:60 [ mul8u_error::a#0 ]
Allocated zp ZP_BYTE:61 [ mul8u_error::b#0 ]
Allocated zp ZP_WORD:62 [ mul8u_error::ms#0 ]
Allocated zp ZP_WORD:64 [ mul8u_error::mn#0 ]
Allocated zp ZP_WORD:66 [ mul8u_error::mf#0 ]
Allocated zp ZP_BYTE:68 [ print_byte::$0 ]
Allocated zp ZP_BYTE:69 [ print_byte::$2 ]
Allocated zp ZP_BYTE:70 [ mul8u::$1 ]
Allocated zp ZP_BYTE:71 [ mulf8u_prepare::a#0 ]
Allocated zp ZP_BYTE:72 [ mulf8u_prepared::b#0 ]
Allocated zp ZP_WORD:73 [ mulf8u_prepared::return#2 ]
Allocated zp ZP_WORD:75 [ mulf8u::return#0 ]
Allocated zp ZP_WORD:77 [ mulf8u_prepared::return#0 ]
Allocated zp ZP_BYTE:79 [ mulf_init::$9 ]
Allocated zp ZP_BYTE:80 [ mulf_init::$12 ]
Allocated zp ZP_BYTE:81 [ mulf_init::$13 ]

INITIAL ASM
Target platform is c64basic
  // File Comments
// Test the fast multiplication library
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label BGCOL = $d021
  .label print_char_cursor = $d
  .label print_line_cursor = 2
  // @begin
bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
b1_from_bbegin:
  jmp b1
  // @1
b1:
  // [2] call main 
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
bend_from_b1:
  jmp bend
  // @end
bend:
  // main
main: {
    // [4] *((const byte*) BGCOL#0) ← (byte) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
    // [5] call print_cls 
    // [204] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
    // [6] phi from main to main::@1 [phi:main->main::@1]
  b1_from_main:
    jmp b1
    // main::@1
  b1:
    // [7] call mulf_init 
    // [175] phi from main::@1 to mulf_init [phi:main::@1->mulf_init]
  mulf_init_from_b1:
    jsr mulf_init
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
    // main::@2
  b2:
    // [9] call mulf_init_asm 
    jsr mulf_init_asm
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  b3_from_b2:
    jmp b3
    // main::@3
  b3:
    // [11] call mulf_tables_cmp 
    // [148] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp]
  mulf_tables_cmp_from_b3:
    jsr mulf_tables_cmp
    // [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  b4_from_b3:
    jmp b4
    // main::@4
  b4:
    // [13] call mul8u_compare 
    // [35] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare]
  mul8u_compare_from_b4:
    jsr mul8u_compare
    // [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
  b5_from_b4:
    jmp b5
    // main::@5
  b5:
    // [15] call mul8s_compare 
    // [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare]
  mul8s_compare_from_b5:
    jsr mul8s_compare
    jmp breturn
    // main::@return
  breturn:
    // [16] return 
    rts
}
  // mul8s_compare
// Perform all possible signed byte multiplications (slow and fast) and compare the results
mul8s_compare: {
    jmp b1
    // mul8s_compare::@1
  b1:
    // [18] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [19] call print_str 
    // [28] phi from mul8s_compare::@1 to print_str [phi:mul8s_compare::@1->print_str]
  print_str_from_b1:
    // [28] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#193 [phi:mul8s_compare::@1->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [20] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2]
  b2_from_b1:
    jmp b2
    // mul8s_compare::@2
  b2:
    // [21] call print_ln 
    // [23] phi from mul8s_compare::@2 to print_ln [phi:mul8s_compare::@2->print_ln]
  print_ln_from_b2:
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@2->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@2->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
    // mul8s_compare::@return
  breturn:
    // [22] return 
    rts
    str: .text "signed multiply results match!"
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [24] 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:
    // [24] 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
    // print_ln::@1
  b1:
    // [25] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z print_line_cursor
    sta.z print_line_cursor
    bcc !+
    inc.z print_line_cursor+1
  !:
    // [26] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda.z print_line_cursor+1
    cmp.z print_char_cursor+1
    bcc b1_from_b1
    bne !+
    lda.z print_line_cursor
    cmp.z print_char_cursor
    bcc b1_from_b1
  !:
    jmp breturn
    // print_ln::@return
  breturn:
    // [27] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zeropage(4) str)
print_str: {
    .label str = 4
    // [29] 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:
    // [29] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [29] 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
    // print_str::@1
  b1:
    // [30] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne b2
    jmp breturn
    // print_str::@return
  breturn:
    // [31] return 
    rts
    // print_str::@2
  b2:
    // [32] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
    // [33] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [34] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp b1_from_b2
}
  // mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = $30
    .label mf = $36
    .label mn = $3a
    .label b = 7
    .label a = 6
    .label ok = 8
    // [36] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
  b1_from_mul8u_compare:
    // [36] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    jmp b1
    // [36] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1]
  b1_from_b8:
    // [36] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy 
    jmp b1
    // mul8u_compare::@1
  b1:
    // [37] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
  b2_from_b1:
    // [37] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z b
    jmp b2
    // [37] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
  b2_from_b5:
    // [37] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy 
    jmp b2
    // mul8u_compare::@2
  b2:
    // [38] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda.z a
    sta.z muls8u.a
    // [39] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda.z b
    sta.z muls8u.b
    // [40] call muls8u 
    jsr muls8u
    // [41] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 
    lda.z muls8u.return
    sta.z muls8u.return_2
    lda.z muls8u.return+1
    sta.z muls8u.return_2+1
    jmp b10
    // mul8u_compare::@10
  b10:
    // [42] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 
    lda.z muls8u.return_2
    sta.z ms
    lda.z muls8u.return_2+1
    sta.z ms+1
    // [43] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda.z a
    sta.z mulf8u.a
    // [44] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda.z b
    sta.z mulf8u.b
    // [45] call mulf8u 
    jsr mulf8u
    // [46] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 
    lda.z mulf8u.return
    sta.z mulf8u.return_2
    lda.z mulf8u.return+1
    sta.z mulf8u.return_2+1
    jmp b11
    // mul8u_compare::@11
  b11:
    // [47] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 
    lda.z mulf8u.return_2
    sta.z mf
    lda.z mulf8u.return_2+1
    sta.z mf+1
    // [48] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda.z a
    sta.z mul8u.a
    // [49] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda.z b
    sta.z mul8u.b
    // [50] call mul8u 
    // [117] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u]
  mul8u_from_b11:
    jsr mul8u
    // [51] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 
    lda.z mul8u.res
    sta.z mul8u.return
    lda.z mul8u.res+1
    sta.z mul8u.return+1
    jmp b12
    // mul8u_compare::@12
  b12:
    // [52] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 
    lda.z mul8u.return
    sta.z mn
    lda.z mul8u.return+1
    sta.z mn+1
    // [53] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    beq b3_from_b12
  !:
    // [54] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6]
  b6_from_b12:
    jmp b6
    // mul8u_compare::@6
  b6:
    // [55] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
  b3_from_b6:
    // [55] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z ok
    jmp b3
    // [55] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3]
  b3_from_b12:
    // [55] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z ok
    jmp b3
    // mul8u_compare::@3
  b3:
    // [56] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    beq b14_from_b3
  !:
    // [58] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
  b4_from_b3:
    // [58] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuz1=vbuc1 
    lda #0
    sta.z ok
    jmp b4
    // [57] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14]
  b14_from_b3:
    jmp b14
    // mul8u_compare::@14
  b14:
    // [58] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4]
  b4_from_b14:
    // [58] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy 
    jmp b4
    // mul8u_compare::@4
  b4:
    // [59] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuz1_neq_0_then_la1 
    lda.z ok
    cmp #0
    bne b5
    jmp b7
    // mul8u_compare::@7
  b7:
    // [60] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [61] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda.z a
    sta.z mul8u_error.a
    // [62] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda.z b
    sta.z mul8u_error.b
    // [63] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 
    lda.z ms
    sta.z mul8u_error.ms
    lda.z ms+1
    sta.z mul8u_error.ms+1
    // [64] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 
    lda.z mn
    sta.z mul8u_error.mn
    lda.z mn+1
    sta.z mul8u_error.mn+1
    // [65] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 
    lda.z mf
    sta.z mul8u_error.mf
    lda.z mf+1
    sta.z mul8u_error.mf+1
    // [66] call mul8u_error 
    // [76] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error]
  mul8u_error_from_b7:
    jsr mul8u_error
    jmp breturn
    // mul8u_compare::@return
  breturn:
    // [67] return 
    rts
    // mul8u_compare::@5
  b5:
    // [68] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc.z b
    // [69] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 
    lda.z b
    cmp #0
    bne b2_from_b5
    jmp b8
    // mul8u_compare::@8
  b8:
    // [70] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc.z a
    // [71] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 
    lda.z a
    cmp #0
    bne b1_from_b8
    // [72] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9]
  b9_from_b8:
    jmp b9
    // mul8u_compare::@9
  b9:
    // [73] call print_str 
    // [28] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str]
  print_str_from_b9:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_compare::@9->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [74] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13]
  b13_from_b9:
    jmp b13
    // mul8u_compare::@13
  b13:
    // [75] call print_ln 
    // [23] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln]
  print_ln_from_b13:
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#11 [phi:mul8u_compare::@13->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
    str: .text "multiply results match!"
    .byte 0
}
  // mul8u_error
// mul8u_error(byte zeropage($3c) a, byte zeropage($3d) b, word zeropage($3e) ms, word zeropage($40) mn, word zeropage($42) mf)
mul8u_error: {
    .label a = $3c
    .label b = $3d
    .label ms = $3e
    .label mn = $40
    .label mf = $42
    // [77] call print_str 
    // [28] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
  print_str_from_mul8u_error:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_error->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    jmp b1
    // mul8u_error::@1
  b1:
    // [78] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 
    lda.z a
    sta.z print_byte.b
    // [79] call print_byte 
    // [105] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
  print_byte_from_b1:
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // [80] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2]
  b2_from_b1:
    jmp b2
    // mul8u_error::@2
  b2:
    // [81] call print_str 
    // [28] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
  print_str_from_b2:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    jmp b3
    // mul8u_error::@3
  b3:
    // [82] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 
    lda.z b
    sta.z print_byte.b
    // [83] call print_byte 
    // [105] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
  print_byte_from_b3:
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
    // [84] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4]
  b4_from_b3:
    jmp b4
    // mul8u_error::@4
  b4:
    // [85] call print_str 
    // [28] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
  print_str_from_b4:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str.str
    lda #>str2
    sta.z print_str.str+1
    jsr print_str
    jmp b5
    // mul8u_error::@5
  b5:
    // [86] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 
    lda.z ms
    sta.z print_word.w
    lda.z ms+1
    sta.z print_word.w+1
    // [87] call print_word 
    // [99] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
  print_word_from_b5:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#0] -- register_copy 
    jsr print_word
    // [88] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6]
  b6_from_b5:
    jmp b6
    // mul8u_error::@6
  b6:
    // [89] call print_str 
    // [28] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
  print_str_from_b6:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta.z print_str.str
    lda #>str3
    sta.z print_str.str+1
    jsr print_str
    jmp b7
    // mul8u_error::@7
  b7:
    // [90] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 
    lda.z mn
    sta.z print_word.w
    lda.z mn+1
    sta.z print_word.w+1
    // [91] call print_word 
    // [99] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
  print_word_from_b7:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#0] -- register_copy 
    jsr print_word
    // [92] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8]
  b8_from_b7:
    jmp b8
    // mul8u_error::@8
  b8:
    // [93] call print_str 
    // [28] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
  print_str_from_b8:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta.z print_str.str
    lda #>str4
    sta.z print_str.str+1
    jsr print_str
    jmp b9
    // mul8u_error::@9
  b9:
    // [94] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 
    lda.z mf
    sta.z print_word.w
    lda.z mf+1
    sta.z print_word.w+1
    // [95] call print_word 
    // [99] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
  print_word_from_b9:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#0] -- register_copy 
    jsr print_word
    // [96] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10]
  b10_from_b9:
    jmp b10
    // mul8u_error::@10
  b10:
    // [97] call print_ln 
    // [23] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
  print_ln_from_b10:
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#11 [phi:mul8u_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
    // mul8u_error::@return
  breturn:
    // [98] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // print_word
// Print a word as HEX
// print_word(word zeropage(9) w)
print_word: {
    .label w = 9
    // [100] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuz1=_hi_vwuz2 
    lda.z w+1
    sta.z print_byte.b
    // [101] call print_byte 
    // [105] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:print_word->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp b1
    // print_word::@1
  b1:
    // [102] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuz1=_lo_vwuz2 
    lda.z w
    sta.z print_byte.b
    // [103] call print_byte 
    // [105] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from_b1:
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [105] 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
    // print_word::@return
  breturn:
    // [104] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte zeropage($b) b)
print_byte: {
    .label _0 = $44
    .label _2 = $45
    .label b = $b
    // [106] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuz1=vbuz2_ror_4 
    lda.z b
    lsr
    lsr
    lsr
    lsr
    sta.z _0
    // [107] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z _0
    lda print_hextab,y
    sta.z print_char.ch
    // [108] call print_char 
    // [113] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
    // [113] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy 
    // [113] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    jmp b1
    // print_byte::@1
  b1:
    // [109] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 
    lda #$f
    and.z b
    sta.z _2
    // [110] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z _2
    lda print_hextab,y
    sta.z print_char.ch
    // [111] call print_char 
    // [113] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from_b1:
    // [113] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [113] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    jmp breturn
    // print_byte::@return
  breturn:
    // [112] return 
    rts
}
  // print_char
// Print a single char
// print_char(byte zeropage($c) ch)
print_char: {
    .label ch = $c
    // [114] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuz2 
    lda.z ch
    ldy #0
    sta (print_char_cursor),y
    // [115] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp breturn
    // print_char::@return
  breturn:
    // [116] return 
    rts
}
  // mul8u
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte zeropage($f) a, byte zeropage($14) b)
mul8u: {
    .label _1 = $46
    .label a = $f
    .label mb = $12
    .label res = $10
    .label b = $14
    .label return = $38
    // [118] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
  b1_from_mul8u:
    // [118] phi (word) mul8u::mb#2 = (byte) mul8u::b#1 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuz2 
    lda.z b
    sta.z mb
    lda #0
    sta.z mb+1
    // [118] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta.z res
    lda #>0
    sta.z res+1
    // [118] phi (byte) mul8u::a#3 = (byte) mul8u::a#2 [phi:mul8u->mul8u::@1#2] -- register_copy 
    jmp b1
    // mul8u::@1
  b1:
    // [119] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 
    lda.z a
    cmp #0
    bne b2
    jmp breturn
    // mul8u::@return
  breturn:
    // [120] return 
    rts
    // mul8u::@2
  b2:
    // [121] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 
    lda #1
    and.z a
    sta.z _1
    // [122] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1 
    lda.z _1
    cmp #0
    beq b3_from_b2
    jmp b4
    // mul8u::@4
  b4:
    // [123] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z res
    clc
    adc.z mb
    sta.z res
    lda.z res+1
    adc.z mb+1
    sta.z res+1
    // [124] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
  b3_from_b2:
  b3_from_b4:
    // [124] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy 
    jmp b3
    // mul8u::@3
  b3:
    // [125] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 
    lsr.z a
    // [126] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 
    asl.z mb
    rol.z mb+1
    // [118] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
  b1_from_b3:
    // [118] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy 
    // [118] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy 
    // [118] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy 
    jmp b1
}
  // mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte zeropage($32) a, byte zeropage($33) b)
mulf8u: {
    .label return = $4b
    .label a = $32
    .label b = $33
    .label return_2 = $34
    // [127] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 
    lda.z a
    sta.z mulf8u_prepare.a
    // [128] call mulf8u_prepare 
    jsr mulf8u_prepare
    jmp b1
    // mulf8u::@1
  b1:
    // [129] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 
    lda.z b
    sta.z mulf8u_prepared.b
    // [130] call mulf8u_prepared 
    jsr mulf8u_prepared
    // [131] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 
    lda.z mulf8u_prepared.return
    sta.z mulf8u_prepared.return_2
    lda.z mulf8u_prepared.return+1
    sta.z mulf8u_prepared.return_2+1
    jmp b2
    // mulf8u::@2
  b2:
    // [132] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 
    lda.z mulf8u_prepared.return_2
    sta.z return
    lda.z mulf8u_prepared.return_2+1
    sta.z return+1
    jmp breturn
    // mulf8u::@return
  breturn:
    // [133] return 
    rts
}
  // 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($48) b)
mulf8u_prepared: {
    .label resL = $fe
    .label memB = $ff
    .label return = $4d
    .label b = $48
    .label return_2 = $49
    // [134] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#0 -- _deref_pbuc1=vbuz1 
    lda.z b
    sta memB
    // 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
    // [136] (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.z return
    lda memB
    sta.z return+1
    jmp breturn
    // mulf8u_prepared::@return
  breturn:
    // [137] return 
    rts
}
  // mulf8u_prepare
// Prepare for fast multiply with an unsigned byte to a word result
// mulf8u_prepare(byte zeropage($47) a)
mulf8u_prepare: {
    .label memA = $fd
    .label a = $47
    // [138] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#0 -- _deref_pbuc1=vbuz1 
    lda.z a
    sta memA
    // 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
    // mulf8u_prepare::@return
  breturn:
    // [140] return 
    rts
}
  // muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zeropage($2c) a, byte zeropage($2d) b)
muls8u: {
    .label return = $16
    .label m = $16
    .label i = $15
    .label a = $2c
    .label b = $2d
    .label return_2 = $2e
    // [141] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda.z a
    cmp #0
    beq b1_from_muls8u
    // [142] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
  b2_from_muls8u:
    // [142] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vwuz1=vbuc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    // [142] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp b2
    // muls8u::@2
  b2:
    // [143] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@3 -- vbuz1_neq_vbuz2_then_la1 
    lda.z i
    cmp.z a
    bne b3
    // [144] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
  b1_from_b2:
    // [144] phi (word) muls8u::return#0 = (word) muls8u::m#3 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    jmp b1
    // [144] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  b1_from_muls8u:
    // [144] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    jmp b1
    // muls8u::@1
  b1:
    jmp breturn
    // muls8u::@return
  breturn:
    // [145] return 
    rts
    // muls8u::@3
  b3:
    // [146] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 
    lda.z b
    clc
    adc.z m
    sta.z m
    bcc !+
    inc.z m+1
  !:
    // [147] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [142] phi from muls8u::@3 to muls8u::@2 [phi:muls8u::@3->muls8u::@2]
  b2_from_b3:
    // [142] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@3->muls8u::@2#0] -- register_copy 
    // [142] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@3->muls8u::@2#1] -- register_copy 
    jmp b2
}
  // 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 = $1a
    .label kc_sqr = $18
    // [149] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
  b1_from_mulf_tables_cmp:
    // [149] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 
    lda #<mula_sqr1_lo
    sta.z asm_sqr
    lda #>mula_sqr1_lo
    sta.z asm_sqr+1
    // [149] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo
    sta.z kc_sqr
    lda #>mulf_sqr1_lo
    sta.z kc_sqr+1
    jmp b1
    // mulf_tables_cmp::@1
  b1:
    // [150] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z kc_sqr+1
    cmp #>mulf_sqr1_lo+$200*4
    bcc b2
    bne !+
    lda.z kc_sqr
    cmp #<mulf_sqr1_lo+$200*4
    bcc b2
  !:
    // [151] phi from mulf_tables_cmp::@1 to mulf_tables_cmp::@3 [phi:mulf_tables_cmp::@1->mulf_tables_cmp::@3]
  b3_from_b1:
    jmp b3
    // mulf_tables_cmp::@3
  b3:
    // [152] call print_str 
    // [28] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
  print_str_from_b3:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [28] 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.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [153] phi from mulf_tables_cmp::@3 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@3->mulf_tables_cmp::@6]
  b6_from_b3:
    jmp b6
    // mulf_tables_cmp::@6
  b6:
    // [154] call print_ln 
    // [23] phi from mulf_tables_cmp::@6 to print_ln [phi:mulf_tables_cmp::@6->print_ln]
  print_ln_from_b6:
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@6->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@6->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    jmp b7
    // mulf_tables_cmp::@7
  b7:
    // [155] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [156] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return]
  breturn_from_b7:
    // [156] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- register_copy 
    // [156] phi (byte*) print_char_cursor#100 = (byte*~) print_char_cursor#213 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
    // mulf_tables_cmp::@return
  breturn:
    // [157] return 
    rts
    // mulf_tables_cmp::@2
  b2:
    // [158] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 
    ldy #0
    lda (kc_sqr),y
    ldy #0
    cmp (asm_sqr),y
    beq b4
    jmp b5
    // mulf_tables_cmp::@5
  b5:
    // [159] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [160] call print_str 
    // [28] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
  print_str_from_b5:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [28] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    jmp b8
    // mulf_tables_cmp::@8
  b8:
    // [161] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 
    lda.z asm_sqr
    sta.z print_word.w
    lda.z asm_sqr+1
    sta.z print_word.w+1
    // [162] call print_word 
    // [99] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
  print_word_from_b8:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
    jsr print_word
    // [163] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@9 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@9]
  b9_from_b8:
    jmp b9
    // mulf_tables_cmp::@9
  b9:
    // [164] call print_str 
    // [28] phi from mulf_tables_cmp::@9 to print_str [phi:mulf_tables_cmp::@9->print_str]
  print_str_from_b9:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@9->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@9->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str.str
    lda #>str2
    sta.z print_str.str+1
    jsr print_str
    jmp b10
    // mulf_tables_cmp::@10
  b10:
    // [165] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 
    lda.z kc_sqr
    sta.z print_word.w
    lda.z kc_sqr+1
    sta.z print_word.w+1
    // [166] call print_word 
    // [99] phi from mulf_tables_cmp::@10 to print_word [phi:mulf_tables_cmp::@10->print_word]
  print_word_from_b10:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@10->print_word#0] -- register_copy 
    jsr print_word
    // [156] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
  breturn_from_b10:
    // [156] phi (byte*) print_line_cursor#11 = (byte*) 1024 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    // [156] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
    // mulf_tables_cmp::@4
  b4:
    // [167] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 
    inc.z asm_sqr
    bne !+
    inc.z asm_sqr+1
  !:
    // [168] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 
    inc.z kc_sqr
    bne !+
    inc.z kc_sqr+1
  !:
    // [149] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1]
  b1_from_b4:
    // [149] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1#0] -- register_copy 
    // [149] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1#1] -- register_copy 
    jmp b1
    str: .text "multiply tables match!"
    .byte 0
    str1: .text "multiply table mismatch at "
    .byte 0
    str2: .text " / "
    .byte 0
}
  // 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
    // 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 !-
    // [170] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
    // [171] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
    // [172] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
    // [173] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
    jmp breturn
    // mulf_init_asm::@return
  breturn:
    // [174] return 
    rts
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    .label _9 = $4f
    .label _12 = $50
    .label _13 = $51
    .label c = $1e
    .label sqr1_hi = $1f
    .label sqr = $28
    .label sqr1_lo = $1c
    .label x_2 = $21
    .label sqr2_hi = $25
    .label x_255 = $24
    .label sqr2_lo = $22
    .label dir = $27
    // [176] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  b1_from_mulf_init:
    // [176] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x_2
    // [176] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_hi+1
    sta.z sqr1_hi
    lda #>mulf_sqr1_hi+1
    sta.z sqr1_hi+1
    // [176] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 
    lda #<0
    sta.z sqr
    lda #>0
    sta.z sqr+1
    // [176] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // [176] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo+1
    sta.z sqr1_lo
    lda #>mulf_sqr1_lo+1
    sta.z sqr1_lo+1
    jmp b1
    // mulf_init::@1
  b1:
    // [177] if((byte*) mulf_init::sqr1_lo#2!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z sqr1_lo+1
    cmp #>mulf_sqr1_lo+$200
    bne b2
    lda.z sqr1_lo
    cmp #<mulf_sqr1_lo+$200
    bne b2
    // [178] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
  b5_from_b1:
    // [178] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [178] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_hi
    sta.z sqr2_hi
    lda #>mulf_sqr2_hi
    sta.z sqr2_hi+1
    // [178] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuz1=vbuc1 
    lda #-1
    sta.z x_255
    // [178] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_lo
    sta.z sqr2_lo
    lda #>mulf_sqr2_lo
    sta.z sqr2_lo+1
    jmp b5
    // mulf_init::@5
  b5:
    // [179] if((byte*) mulf_init::sqr2_lo#2!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 
    lda.z sqr2_lo+1
    cmp #>mulf_sqr2_lo+$1ff
    bne b6
    lda.z sqr2_lo
    cmp #<mulf_sqr2_lo+$1ff
    bne b6
    jmp b7
    // mulf_init::@7
  b7:
    // [180] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    // Set the very last value g(511) = f(256)
    lda mulf_sqr1_lo+$100
    sta mulf_sqr2_lo+$1ff
    // [181] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
    jmp breturn
    // mulf_init::@return
  breturn:
    // [182] return 
    rts
    // mulf_init::@6
  b6:
    // [183] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 
    ldy.z x_255
    lda mulf_sqr1_lo,y
    ldy #0
    sta (sqr2_lo),y
    // [184] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 
    ldy.z x_255
    lda mulf_sqr1_hi,y
    ldy #0
    sta (sqr2_hi),y
    // [185] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr2_hi
    bne !+
    inc.z sqr2_hi+1
  !:
    // [186] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 
    lda.z x_255
    clc
    adc.z dir
    sta.z x_255
    // [187] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuz1_neq_0_then_la1 
    lda.z x_255
    cmp #0
    bne b9_from_b6
    // [189] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
  b8_from_b6:
    // [189] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 
    lda #1
    sta.z dir
    jmp b8
    // [188] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9]
  b9_from_b6:
    jmp b9
    // mulf_init::@9
  b9:
    // [189] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
  b8_from_b9:
    // [189] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy 
    jmp b8
    // mulf_init::@8
  b8:
    // [190] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr2_lo
    bne !+
    inc.z sqr2_lo+1
  !:
    // [178] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
  b5_from_b8:
    // [178] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [178] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [178] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [178] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy 
    jmp b5
    // mulf_init::@2
  b2:
    // [191] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // [192] (byte~) mulf_init::$9 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 
    lda #1
    and.z c
    sta.z _9
    // [193] if((byte~) mulf_init::$9!=(byte) 0) goto mulf_init::@3 -- vbuz1_neq_0_then_la1 
    lda.z _9
    cmp #0
    bne b3_from_b2
    jmp b4
    // mulf_init::@4
  b4:
    // [194] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 
    inc.z x_2
    // [195] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [196] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3]
  b3_from_b2:
  b3_from_b4:
    // [196] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy 
    // [196] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy 
    jmp b3
    // mulf_init::@3
  b3:
    // [197] (byte~) mulf_init::$12 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 
    lda.z sqr
    sta.z _12
    // [198] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$12 -- _deref_pbuz1=vbuz2 
    lda.z _12
    ldy #0
    sta (sqr1_lo),y
    // [199] (byte~) mulf_init::$13 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 
    lda.z sqr+1
    sta.z _13
    // [200] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$13 -- _deref_pbuz1=vbuz2 
    lda.z _13
    ldy #0
    sta (sqr1_hi),y
    // [201] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr1_hi
    bne !+
    inc.z sqr1_hi+1
  !:
    // [202] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda.z x_2
    clc
    adc.z sqr
    sta.z sqr
    bcc !+
    inc.z sqr+1
  !:
    // [203] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr1_lo
    bne !+
    inc.z sqr1_lo+1
  !:
    // [176] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
  b1_from_b3:
    // [176] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [176] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [176] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [176] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [176] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy 
    jmp b1
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [205] call memset 
    // [207] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp breturn
    // print_cls::@return
  breturn:
    // [206] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = $400
    .label end = str+num
    .label dst = $2a
    // [208] phi from memset to memset::@2 [phi:memset->memset::@2]
  b2_from_memset:
    // [208] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp b2
    // [208] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
  b2_from_b1:
    // [208] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    jmp b2
    // memset::@2
  b2:
    // [209] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [210] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp b1
    // memset::@1
  b1:
    // [211] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2_from_b1
    lda.z dst
    cmp #<end
    bne b2_from_b1
    jmp breturn
    // memset::@return
  breturn:
    // [212] return 
    rts
}
  // File Data
  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
  str1: .text "*"
  .byte 0
  str2: .text " slow:"
  .byte 0
  str3: .text " / normal:"
  .byte 0
  str4: .text " / fast:"
  .byte 0

REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) BGCOL#0) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [18] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 [ print_char_cursor#193 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#193 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [25] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:21 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:75 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:66::print_ln:97 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:154 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a 
Statement [26] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:21 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:75 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:66::print_ln:97 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:154 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a 
Statement [30] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:19 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:73 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:77 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:81 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:85 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:89 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:93 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:152 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:160 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:164 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ mul8u_error::a#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:60 [ mul8u_error::a#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ mul8u_error::b#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:61 [ mul8u_error::b#0 ]
Statement [32] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:19 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:73 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:77 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:81 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:85 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:89 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:93 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:152 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:160 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:164 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [41] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Statement [42] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [46] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a 
Statement [47] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [51] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [52] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [53] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [56] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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:8 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
Statement [60] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [63] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [64] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [65] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [86] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#134 print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#3 ] ( main:2::mul8u_compare:13::mul8u_error:66 [ print_char_cursor#134 print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#3 ] ) always clobbers reg byte a 
Statement [90] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#134 print_line_cursor#11 mul8u_error::mf#0 print_word::w#4 ] ( main:2::mul8u_compare:13::mul8u_error:66 [ print_char_cursor#134 print_line_cursor#11 mul8u_error::mf#0 print_word::w#4 ] ) always clobbers reg byte a 
Statement [94] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:66 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ) always clobbers reg byte a 
Statement [100] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_char_cursor#134 print_word::w#6 print_byte::b#1 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_word:87 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_word::w#6 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_word::w#6 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95 [ print_line_cursor#11 print_char_cursor#134 print_word::w#6 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:162 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_word::w#6 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:166 [ print_char_cursor#134 print_word::w#6 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [102] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_word:87 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95 [ print_line_cursor#11 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:162 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:166 [ print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [106] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_byte::b#5 print_char_cursor#143 print_byte::$0 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_byte:79 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:83 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:101 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:101 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:101 [ print_line_cursor#11 print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:101 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:101 [ print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:103 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:103 [ print_line_cursor#11 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:103 [ print_line_cursor#11 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:103 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:103 [ print_byte::b#5 print_char_cursor#143 print_byte::$0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ]
Statement [109] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_byte:79 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:83 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:101 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:101 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:101 [ print_line_cursor#11 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:101 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:101 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:103 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:103 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:103 [ print_line_cursor#11 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:103 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:103 [ print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a 
Statement [114] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 [ print_char_cursor#86 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_byte:79::print_char:108 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:83::print_char:108 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:101::print_char:108 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:101::print_char:108 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:101::print_char:108 [ print_line_cursor#11 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:101::print_char:108 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:101::print_char:108 [ print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:103::print_char:108 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:103::print_char:108 [ print_line_cursor#11 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:103::print_char:108 [ print_line_cursor#11 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:103::print_char:108 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:103::print_char:108 [ print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:79::print_char:111 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:83::print_char:111 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:101::print_char:111 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:101::print_char:111 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:101::print_char:111 [ print_line_cursor#11 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:101::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:101::print_char:111 [ print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:103::print_char:111 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:103::print_char:111 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:103::print_char:111 [ print_line_cursor#11 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:103::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:103::print_char:111 [ print_char_cursor#86 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:11 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ]
Statement [123] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u_compare:13::mul8u:50 [ print_line_cursor#11 print_char_cursor#100 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 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ mul8u::a#3 mul8u::a#2 mul8u::a#0 ]
Statement [131] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:45 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a 
Statement [132] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:45 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) 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:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Statement [136] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8u_compare:13::mulf8u:45::mulf8u_prepared:130 [ print_line_cursor#11 print_char_cursor#100 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:51 [ mulf8u::b#0 ]
Statement [146] (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:40 [ print_line_cursor#11 print_char_cursor#100 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:44 [ muls8u::a#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ muls8u::b#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ muls8u::i#2 muls8u::i#1 ]
Statement [150] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) 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 
Statement [155] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#213 ] ) always clobbers reg byte a 
Statement [158] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 [ 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 [159] *((const byte*) BGCOL#0) ← (byte) 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 [161] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a 
Statement [165] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#134 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#2 ] ) 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 [170] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [171] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [172] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [173] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [177] if((byte*) mulf_init::sqr1_lo#2!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ mulf_init::c#2 mulf_init::c#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Statement [179] if((byte*) mulf_init::sqr2_lo#2!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ]
Statement [180] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [181] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [183] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ]
Statement [184] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y 
Statement [186] (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 [192] (byte~) mulf_init::$9 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$9 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$9 ] ) always clobbers reg byte a 
Statement [197] (byte~) mulf_init::$12 ← < (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::$12 ] ( 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::$12 ] ) always clobbers reg byte a 
Statement [198] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$12 [ 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:30 [ mulf_init::c#2 mulf_init::c#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Statement [199] (byte~) mulf_init::$13 ← > (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::$13 ] ( 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::$13 ] ) always clobbers reg byte a 
Statement [200] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$13 [ 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 [202] (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 [209] *((byte*) memset::dst#4) ← (const byte) memset::c#0 [ memset::dst#4 ] ( main:2::print_cls:5::memset:205 [ memset::dst#4 ] ) always clobbers reg byte a reg byte y 
Statement [211] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#1 ] ( main:2::print_cls:5::memset:205 [ memset::dst#1 ] ) always clobbers reg byte a 
Statement [4] *((const byte*) BGCOL#0) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [18] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 [ print_char_cursor#193 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#193 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [25] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:21 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:75 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:66::print_ln:97 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:154 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a 
Statement [26] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#135 ] ( main:2::mul8s_compare:15::print_ln:21 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:75 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:66::print_ln:97 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:154 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a 
Statement [30] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:19 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:73 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:77 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:81 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:85 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:89 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:93 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:152 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:160 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:164 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [32] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) [ print_char_cursor#134 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:19 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:73 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:77 [ print_line_cursor#11 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:81 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:85 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:89 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:66::print_str:93 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:152 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:160 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:164 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [41] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a 
Statement [42] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [46] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a 
Statement [47] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [51] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [52] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [53] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [56] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [60] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [63] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [64] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [65] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#11 print_char_cursor#100 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#11 print_char_cursor#100 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 [86] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#134 print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#3 ] ( main:2::mul8u_compare:13::mul8u_error:66 [ print_char_cursor#134 print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#3 ] ) always clobbers reg byte a 
Statement [90] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#134 print_line_cursor#11 mul8u_error::mf#0 print_word::w#4 ] ( main:2::mul8u_compare:13::mul8u_error:66 [ print_char_cursor#134 print_line_cursor#11 mul8u_error::mf#0 print_word::w#4 ] ) always clobbers reg byte a 
Statement [94] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:66 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ) always clobbers reg byte a 
Statement [100] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_char_cursor#134 print_word::w#6 print_byte::b#1 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_word:87 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#134 print_word::w#6 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_word::w#6 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95 [ print_line_cursor#11 print_char_cursor#134 print_word::w#6 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:162 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_word::w#6 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:166 [ print_char_cursor#134 print_word::w#6 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [102] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_word:87 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95 [ print_line_cursor#11 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:162 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:166 [ print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [106] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_byte::b#5 print_char_cursor#143 print_byte::$0 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_byte:79 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:83 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:101 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:101 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:101 [ print_line_cursor#11 print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:101 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:101 [ print_word::w#6 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:103 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:103 [ print_line_cursor#11 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:103 [ print_line_cursor#11 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:103 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#143 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:103 [ print_byte::b#5 print_char_cursor#143 print_byte::$0 ] ) always clobbers reg byte a 
Statement [109] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_byte:79 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:83 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:101 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:101 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:101 [ print_line_cursor#11 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:101 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:101 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:103 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:103 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:103 [ print_line_cursor#11 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:103 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:103 [ print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a 
Statement [114] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 [ print_char_cursor#86 ] ( main:2::mul8u_compare:13::mul8u_error:66::print_byte:79::print_char:108 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:83::print_char:108 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:101::print_char:108 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:101::print_char:108 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:101::print_char:108 [ print_line_cursor#11 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:101::print_char:108 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:101::print_char:108 [ print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:103::print_char:108 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:103::print_char:108 [ print_line_cursor#11 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:103::print_char:108 [ print_line_cursor#11 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:103::print_char:108 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:103::print_char:108 [ print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:79::print_char:111 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_byte:83::print_char:111 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:101::print_char:111 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:101::print_char:111 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:101::print_char:111 [ print_line_cursor#11 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:101::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:101::print_char:111 [ print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:87::print_byte:103::print_char:111 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:91::print_byte:103::print_char:111 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:66::print_word:95::print_byte:103::print_char:111 [ print_line_cursor#11 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:162::print_byte:103::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:166::print_byte:103::print_char:111 [ print_char_cursor#86 ] ) always clobbers reg byte y 
Statement [121] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8u_compare:13::mul8u:50 [ print_line_cursor#11 print_char_cursor#100 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 [123] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8u_compare:13::mul8u:50 [ print_line_cursor#11 print_char_cursor#100 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 [131] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:45 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a 
Statement [132] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:45 [ print_line_cursor#11 print_char_cursor#100 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) 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 [136] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8u_compare:13::mulf8u:45::mulf8u_prepared:130 [ print_line_cursor#11 print_char_cursor#100 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 [146] (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:40 [ print_line_cursor#11 print_char_cursor#100 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 [150] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) 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 
Statement [155] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#213 ] ) always clobbers reg byte a 
Statement [158] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 [ 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 [159] *((const byte*) BGCOL#0) ← (byte) 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 [161] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#1 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a 
Statement [165] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#134 print_word::w#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#134 print_word::w#2 ] ) 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 [170] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [171] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [172] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [173] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [177] if((byte*) mulf_init::sqr1_lo#2!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@2 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) always clobbers reg byte a 
Statement [179] if((byte*) mulf_init::sqr2_lo#2!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@6 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a 
Statement [180] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [181] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [183] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y 
Statement [184] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y 
Statement [186] (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 [192] (byte~) mulf_init::$9 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$9 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr#4 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$9 ] ) always clobbers reg byte a 
Statement [197] (byte~) mulf_init::$12 ← < (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::$12 ] ( 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::$12 ] ) always clobbers reg byte a 
Statement [198] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$12 [ 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 [199] (byte~) mulf_init::$13 ← > (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::$13 ] ( 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::$13 ] ) always clobbers reg byte a 
Statement [200] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$13 [ 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 [202] (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 [209] *((byte*) memset::dst#4) ← (const byte) memset::c#0 [ memset::dst#4 ] ( main:2::print_cls:5::memset:205 [ memset::dst#4 ] ) always clobbers reg byte a reg byte y 
Statement [211] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#1 ] ( main:2::print_cls:5::memset:205 [ memset::dst#1 ] ) always clobbers reg byte a 
Potential registers zp ZP_WORD:2 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] : zp ZP_WORD:2 , 
Potential registers zp ZP_WORD:4 [ print_str::str#16 print_str::str#18 print_str::str#0 ] : zp ZP_WORD:4 , 
Potential registers zp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ] : zp ZP_BYTE:6 , reg byte y , 
Potential registers zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ] : zp ZP_BYTE:7 , reg byte y , 
Potential registers zp ZP_BYTE:8 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 ] : zp ZP_WORD:9 , 
Potential registers zp ZP_BYTE:11 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:11 , reg byte x , 
Potential registers zp ZP_BYTE:12 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:13 [ print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ] : zp ZP_WORD:13 , 
Potential registers zp ZP_BYTE:15 [ mul8u::a#3 mul8u::a#2 mul8u::a#0 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:16 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:16 , 
Potential registers zp ZP_WORD:18 [ mul8u::mb#2 mul8u::mb#1 ] : zp ZP_WORD:18 , 
Potential registers zp ZP_BYTE:20 [ mul8u::b#1 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:21 [ muls8u::i#2 muls8u::i#1 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:22 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] : zp ZP_WORD:22 , 
Potential registers zp ZP_WORD:24 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] : zp ZP_WORD:24 , 
Potential registers zp ZP_WORD:26 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] : zp ZP_WORD:26 , 
Potential registers zp ZP_WORD:28 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] : zp ZP_WORD:28 , 
Potential registers zp ZP_BYTE:30 [ mulf_init::c#2 mulf_init::c#1 ] : zp ZP_BYTE:30 , reg byte x , 
Potential registers zp ZP_WORD:31 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] : zp ZP_WORD:31 , 
Potential registers zp ZP_BYTE:33 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] : zp ZP_BYTE:33 , reg byte x , 
Potential registers zp ZP_WORD:34 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] : zp ZP_WORD:34 , 
Potential registers zp ZP_BYTE:36 [ mulf_init::x_255#2 mulf_init::x_255#1 ] : zp ZP_BYTE:36 , reg byte x , 
Potential registers zp ZP_WORD:37 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] : zp ZP_WORD:37 , 
Potential registers zp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ] : zp ZP_BYTE:39 , reg byte x , 
Potential registers zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] : zp ZP_WORD:40 , 
Potential registers zp ZP_WORD:42 [ memset::dst#4 memset::dst#1 ] : zp ZP_WORD:42 , 
Potential registers zp ZP_BYTE:44 [ muls8u::a#0 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:45 [ muls8u::b#0 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:46 [ muls8u::return#2 ] : zp ZP_WORD:46 , 
Potential registers zp ZP_WORD:48 [ mul8u_compare::ms#0 ] : zp ZP_WORD:48 , 
Potential registers zp ZP_BYTE:50 [ mulf8u::a#0 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:51 [ mulf8u::b#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:52 [ mulf8u::return#2 ] : zp ZP_WORD:52 , 
Potential registers zp ZP_WORD:54 [ mul8u_compare::mf#0 ] : zp ZP_WORD:54 , 
Potential registers zp ZP_WORD:56 [ mul8u::return#3 ] : zp ZP_WORD:56 , 
Potential registers zp ZP_WORD:58 [ mul8u_compare::mn#0 ] : zp ZP_WORD:58 , 
Potential registers zp ZP_BYTE:60 [ mul8u_error::a#0 ] : zp ZP_BYTE:60 , reg byte x , 
Potential registers zp ZP_BYTE:61 [ mul8u_error::b#0 ] : zp ZP_BYTE:61 , reg byte x , 
Potential registers zp ZP_WORD:62 [ mul8u_error::ms#0 ] : zp ZP_WORD:62 , 
Potential registers zp ZP_WORD:64 [ mul8u_error::mn#0 ] : zp ZP_WORD:64 , 
Potential registers zp ZP_WORD:66 [ mul8u_error::mf#0 ] : zp ZP_WORD:66 , 
Potential registers zp ZP_BYTE:68 [ print_byte::$0 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:69 [ print_byte::$2 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:70 [ mul8u::$1 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:71 [ mulf8u_prepare::a#0 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:72 [ mulf8u_prepared::b#0 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:73 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:73 , 
Potential registers zp ZP_WORD:75 [ mulf8u::return#0 ] : zp ZP_WORD:75 , 
Potential registers zp ZP_WORD:77 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:77 , 
Potential registers zp ZP_BYTE:79 [ mulf_init::$9 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:80 [ mulf_init::$12 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:81 [ mulf_init::$13 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [mul8u] 3,520.33: zp ZP_WORD:16 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,431.29: zp ZP_WORD:18 [ mul8u::mb#2 mul8u::mb#1 ] 2,002: zp ZP_BYTE:70 [ mul8u::$1 ] 1,703: zp ZP_BYTE:15 [ mul8u::a#3 mul8u::a#2 mul8u::a#0 ] 202: zp ZP_WORD:56 [ mul8u::return#3 ] 51.5: zp ZP_BYTE:20 [ mul8u::b#1 ] 
Uplift Scope [muls8u] 3,003: zp ZP_BYTE:21 [ muls8u::i#2 muls8u::i#1 ] 2,869.83: zp ZP_WORD:22 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 202: zp ZP_WORD:46 [ muls8u::return#2 ] 183.67: zp ZP_BYTE:45 [ muls8u::b#0 ] 157.71: zp ZP_BYTE:44 [ muls8u::a#0 ] 
Uplift Scope [mul8u_compare] 235.67: zp ZP_BYTE:8 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 171.78: zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 28.61: zp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 17: zp ZP_WORD:58 [ mul8u_compare::mn#0 ] 14.52: zp ZP_WORD:48 [ mul8u_compare::ms#0 ] 11.33: zp ZP_WORD:54 [ mul8u_compare::mf#0 ] 
Uplift Scope [mulf8u] 202: zp ZP_WORD:52 [ mulf8u::return#2 ] 51.5: zp ZP_BYTE:50 [ mulf8u::a#0 ] 34.33: zp ZP_BYTE:51 [ mulf8u::b#0 ] 34.33: zp ZP_WORD:75 [ mulf8u::return#0 ] 
Uplift Scope [mulf_init] 47.67: zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp ZP_WORD:34 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp ZP_WORD:28 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp ZP_BYTE:33 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:79 [ mulf_init::$9 ] 22: zp ZP_BYTE:80 [ mulf_init::$12 ] 22: zp ZP_BYTE:81 [ mulf_init::$13 ] 15.4: zp ZP_BYTE:36 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp ZP_BYTE:30 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp ZP_WORD:37 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp ZP_WORD:31 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] 
Uplift Scope [] 51.92: zp ZP_WORD:13 [ print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ] 34.66: zp ZP_WORD:2 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] 
Uplift Scope [mulf_tables_cmp] 26.4: zp ZP_WORD:24 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] 17.6: zp ZP_WORD:26 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] 
Uplift Scope [print_str] 35.5: zp ZP_WORD:4 [ print_str::str#16 print_str::str#18 print_str::str#0 ] 
Uplift Scope [memset] 33: zp ZP_WORD:42 [ memset::dst#4 memset::dst#1 ] 
Uplift Scope [print_byte] 19: zp ZP_BYTE:11 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:68 [ print_byte::$0 ] 4: zp ZP_BYTE:69 [ print_byte::$2 ] 
Uplift Scope [print_word] 24.67: zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 ] 
Uplift Scope [print_char] 14: zp ZP_BYTE:12 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] 
Uplift Scope [mulf8u_prepared] 4: zp ZP_BYTE:72 [ mulf8u_prepared::b#0 ] 4: zp ZP_WORD:73 [ mulf8u_prepared::return#2 ] 1.33: zp ZP_WORD:77 [ mulf8u_prepared::return#0 ] 
Uplift Scope [mulf8u_prepare] 4: zp ZP_BYTE:71 [ mulf8u_prepare::a#0 ] 
Uplift Scope [mul8u_error] 0.57: zp ZP_BYTE:60 [ mul8u_error::a#0 ] 0.4: zp ZP_BYTE:61 [ mul8u_error::b#0 ] 0.31: zp ZP_WORD:62 [ mul8u_error::ms#0 ] 0.25: zp ZP_WORD:64 [ mul8u_error::mn#0 ] 0.21: zp ZP_WORD:66 [ mul8u_error::mf#0 ] 
Uplift Scope [RADIX] 
Uplift Scope [print_ln] 
Uplift Scope [print_cls] 
Uplift Scope [main] 
Uplift Scope [mulf_init_asm] 
Uplift Scope [mul8s_compare] 

Uplifting [mul8u] best 164920 combination zp ZP_WORD:16 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:18 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#2 mul8u::a#0 ] zp ZP_WORD:56 [ mul8u::return#3 ] reg byte a [ mul8u::b#1 ] 
Uplifting [muls8u] best 154620 combination reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:22 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] zp ZP_WORD:46 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:44 [ muls8u::a#0 ] 
Uplifting [mul8u_compare] best 153420 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp ZP_WORD:58 [ mul8u_compare::mn#0 ] zp ZP_WORD:48 [ mul8u_compare::ms#0 ] zp ZP_WORD:54 [ mul8u_compare::mf#0 ] 
Uplifting [mulf8u] best 152814 combination zp ZP_WORD:52 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp ZP_WORD:75 [ mulf8u::return#0 ] 
Uplifting [mulf_init] best 152564 combination zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp ZP_WORD:34 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:28 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$9 ] reg byte a [ mulf_init::$12 ] reg byte a [ mulf_init::$13 ] zp ZP_BYTE:36 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ] zp ZP_BYTE:30 [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_WORD:37 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_WORD:31 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] 
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [] best 152564 combination zp ZP_WORD:13 [ print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ] zp ZP_WORD:2 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] 
Uplifting [mulf_tables_cmp] best 152564 combination zp ZP_WORD:24 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp ZP_WORD:26 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] 
Uplifting [print_str] best 152564 combination zp ZP_WORD:4 [ print_str::str#16 print_str::str#18 print_str::str#0 ] 
Uplifting [memset] best 152564 combination zp ZP_WORD:42 [ memset::dst#4 memset::dst#1 ] 
Uplifting [print_byte] best 152544 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] 
Uplifting [print_word] best 152544 combination zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 ] 
Uplifting [print_char] best 152535 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] 
Uplifting [mulf8u_prepared] best 152529 combination reg byte x [ mulf8u_prepared::b#0 ] zp ZP_WORD:73 [ mulf8u_prepared::return#2 ] zp ZP_WORD:77 [ mulf8u_prepared::return#0 ] 
Uplifting [mulf8u_prepare] best 152523 combination reg byte a [ mulf8u_prepare::a#0 ] 
Uplifting [mul8u_error] best 152517 combination reg byte x [ mul8u_error::a#0 ] zp ZP_BYTE:61 [ mul8u_error::b#0 ] zp ZP_WORD:62 [ mul8u_error::ms#0 ] zp ZP_WORD:64 [ mul8u_error::mn#0 ] zp ZP_WORD:66 [ mul8u_error::mf#0 ] 
Uplifting [RADIX] best 152517 combination 
Uplifting [print_ln] best 152517 combination 
Uplifting [print_cls] best 152517 combination 
Uplifting [main] best 152517 combination 
Uplifting [mulf_init_asm] best 152517 combination 
Uplifting [mul8s_compare] best 152517 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Uplifting [mul8u_compare] best 152517 combination zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:44 [ muls8u::a#0 ]
Uplifting [muls8u] best 152517 combination zp ZP_BYTE:44 [ muls8u::a#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Uplifting [mul8u_compare] best 152517 combination zp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Uplifting [mulf_init] best 152377 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ]
Uplifting [mulf_init] best 152377 combination zp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ mulf_init::c#2 mulf_init::c#1 ]
Uplifting [mulf_init] best 152377 combination zp ZP_BYTE:30 [ mulf_init::c#2 mulf_init::c#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:61 [ mul8u_error::b#0 ]
Uplifting [mul8u_error] best 152377 combination zp ZP_BYTE:61 [ mul8u_error::b#0 ] 
Coalescing zero page register [ zp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 ] ] with [ zp ZP_BYTE:44 [ muls8u::a#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 ] ] with [ zp ZP_BYTE:61 [ mul8u_error::b#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 ] ] with [ zp ZP_WORD:26 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] with [ zp ZP_WORD:62 [ mul8u_error::ms#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:16 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:56 [ mul8u::return#3 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:22 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] with [ zp ZP_WORD:46 [ muls8u::return#2 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:52 [ mulf8u::return#2 ] ] with [ zp ZP_WORD:54 [ mul8u_compare::mf#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:52 [ mulf8u::return#2 mul8u_compare::mf#0 ] ] with [ zp ZP_WORD:75 [ mulf8u::return#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:58 [ mul8u_compare::mn#0 ] ] with [ zp ZP_WORD:64 [ mul8u_error::mn#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:73 [ mulf8u_prepared::return#2 ] ] with [ zp ZP_WORD:77 [ mulf8u_prepared::return#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8u_error::ms#0 ] ] with [ zp ZP_WORD:48 [ mul8u_compare::ms#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:16 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp ZP_WORD:58 [ mul8u_compare::mn#0 mul8u_error::mn#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:52 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 ] ] with [ zp ZP_WORD:66 [ mul8u_error::mf#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:52 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ] with [ zp ZP_WORD:73 [ mulf8u_prepared::return#2 mulf8u_prepared::return#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8u_error::ms#0 mul8u_compare::ms#0 ] ] with [ zp ZP_WORD:22 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:18 [ mul8u::mb#2 mul8u::mb#1 ] ] with [ zp ZP_WORD:4 [ print_str::str#16 print_str::str#18 print_str::str#0 ] ]
Coalescing zero page register [ zp ZP_WORD:24 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] ] with [ zp ZP_WORD:2 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] ]
Coalescing zero page register [ zp ZP_WORD:28 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp ZP_WORD:9 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8u_error::ms#0 mul8u_compare::ms#0 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ]
Coalescing zero page register [ zp ZP_BYTE:30 [ mulf_init::c#2 mulf_init::c#1 ] ] with [ zp ZP_BYTE:6 [ mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ] ]
Coalescing zero page register [ zp ZP_WORD:31 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp ZP_WORD:13 [ print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ] ]
Coalescing zero page register [ zp ZP_WORD:34 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] with [ zp ZP_WORD:16 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8u_compare::mn#0 mul8u_error::mn#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:39 [ mulf_init::dir#2 mulf_init::dir#4 ] ] with [ zp ZP_BYTE:7 [ mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ]
Coalescing zero page register [ zp ZP_WORD:42 [ memset::dst#4 memset::dst#1 ] ] with [ zp ZP_WORD:37 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ]
Coalescing zero page register [ zp ZP_WORD:52 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 mulf8u_prepared::return#2 mulf8u_prepared::return#0 ] ] with [ zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ]
Coalescing zero page register [ zp ZP_WORD:42 [ memset::dst#4 memset::dst#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] with [ zp ZP_WORD:18 [ mul8u::mb#2 mul8u::mb#1 print_str::str#16 print_str::str#18 print_str::str#0 ] ]
Allocated (was zp ZP_WORD:24) zp ZP_WORD:2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ]
Allocated (was zp ZP_WORD:28) zp ZP_WORD:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8u_error::ms#0 mul8u_compare::ms#0 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ]
Allocated (was zp ZP_BYTE:30) zp ZP_BYTE:6 [ mulf_init::c#2 mulf_init::c#1 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ]
Allocated (was zp ZP_WORD:31) zp ZP_WORD:7 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ]
Allocated (was zp ZP_WORD:34) zp ZP_WORD:9 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8u_compare::mn#0 mul8u_error::mn#0 ]
Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:11 [ mulf_init::dir#2 mulf_init::dir#4 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ]
Allocated (was zp ZP_WORD:42) zp ZP_WORD:12 [ memset::dst#4 memset::dst#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 mul8u::mb#2 mul8u::mb#1 print_str::str#16 print_str::str#18 print_str::str#0 ]
Allocated (was zp ZP_WORD:52) zp ZP_WORD:14 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 mulf8u_prepared::return#2 mulf8u_prepared::return#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Test the fast multiplication library
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label BGCOL = $d021
  .label print_char_cursor = 7
  .label print_line_cursor = 2
  // @begin
bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
b1_from_bbegin:
  jmp b1
  // @1
b1:
  // [2] call main 
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
bend_from_b1:
  jmp bend
  // @end
bend:
  // main
main: {
    // [4] *((const byte*) BGCOL#0) ← (byte) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
    // [5] call print_cls 
    // [204] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
    // [6] phi from main to main::@1 [phi:main->main::@1]
  b1_from_main:
    jmp b1
    // main::@1
  b1:
    // [7] call mulf_init 
    // [175] phi from main::@1 to mulf_init [phi:main::@1->mulf_init]
  mulf_init_from_b1:
    jsr mulf_init
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
    // main::@2
  b2:
    // [9] call mulf_init_asm 
    jsr mulf_init_asm
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  b3_from_b2:
    jmp b3
    // main::@3
  b3:
    // [11] call mulf_tables_cmp 
    // [148] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp]
  mulf_tables_cmp_from_b3:
    jsr mulf_tables_cmp
    // [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  b4_from_b3:
    jmp b4
    // main::@4
  b4:
    // [13] call mul8u_compare 
    // [35] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare]
  mul8u_compare_from_b4:
    jsr mul8u_compare
    // [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
  b5_from_b4:
    jmp b5
    // main::@5
  b5:
    // [15] call mul8s_compare 
    // [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare]
  mul8s_compare_from_b5:
    jsr mul8s_compare
    jmp breturn
    // main::@return
  breturn:
    // [16] return 
    rts
}
  // mul8s_compare
// Perform all possible signed byte multiplications (slow and fast) and compare the results
mul8s_compare: {
    jmp b1
    // mul8s_compare::@1
  b1:
    // [18] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [19] call print_str 
    // [28] phi from mul8s_compare::@1 to print_str [phi:mul8s_compare::@1->print_str]
  print_str_from_b1:
    // [28] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#193 [phi:mul8s_compare::@1->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [20] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2]
  b2_from_b1:
    jmp b2
    // mul8s_compare::@2
  b2:
    // [21] call print_ln 
    // [23] phi from mul8s_compare::@2 to print_ln [phi:mul8s_compare::@2->print_ln]
  print_ln_from_b2:
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@2->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@2->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
    // mul8s_compare::@return
  breturn:
    // [22] return 
    rts
    str: .text "signed multiply results match!"
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [24] 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:
    // [24] 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
    // print_ln::@1
  b1:
    // [25] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z print_line_cursor
    sta.z print_line_cursor
    bcc !+
    inc.z print_line_cursor+1
  !:
    // [26] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda.z print_line_cursor+1
    cmp.z print_char_cursor+1
    bcc b1_from_b1
    bne !+
    lda.z print_line_cursor
    cmp.z print_char_cursor
    bcc b1_from_b1
  !:
    jmp breturn
    // print_ln::@return
  breturn:
    // [27] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zeropage($c) str)
print_str: {
    .label str = $c
    // [29] 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:
    // [29] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [29] 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
    // print_str::@1
  b1:
    // [30] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne b2
    jmp breturn
    // print_str::@return
  breturn:
    // [31] return 
    rts
    // print_str::@2
  b2:
    // [32] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
    // [33] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [34] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp b1_from_b2
}
  // mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = 4
    .label mf = $e
    .label mn = 9
    .label b = $b
    .label a = 6
    // [36] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
  b1_from_mul8u_compare:
    // [36] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    jmp b1
    // [36] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1]
  b1_from_b8:
    // [36] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy 
    jmp b1
    // mul8u_compare::@1
  b1:
    // [37] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
  b2_from_b1:
    // [37] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z b
    jmp b2
    // [37] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
  b2_from_b5:
    // [37] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy 
    jmp b2
    // mul8u_compare::@2
  b2:
    // [38] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
    // [39] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx.z b
    // [40] call muls8u 
    jsr muls8u
    // [41] (word) muls8u::return#2 ← (word) muls8u::return#0
    jmp b10
    // mul8u_compare::@10
  b10:
    // [42] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
    // [43] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 
    lda.z a
    // [44] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx.z b
    // [45] call mulf8u 
    jsr mulf8u
    // [46] (word) mulf8u::return#2 ← (word) mulf8u::return#0
    jmp b11
    // mul8u_compare::@11
  b11:
    // [47] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
    // [48] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx.z a
    // [49] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 
    lda.z b
    // [50] call mul8u 
    // [117] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u]
  mul8u_from_b11:
    jsr mul8u
    // [51] (word) mul8u::return#3 ← (word) mul8u::res#2
    jmp b12
    // mul8u_compare::@12
  b12:
    // [52] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
    // [53] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    beq b3_from_b12
  !:
    // [54] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6]
  b6_from_b12:
    jmp b6
    // mul8u_compare::@6
  b6:
    // [55] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
  b3_from_b6:
    // [55] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
    // [55] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3]
  b3_from_b12:
    // [55] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
    jmp b3
    // mul8u_compare::@3
  b3:
    // [56] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    beq b14_from_b3
  !:
    // [58] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
  b4_from_b3:
    // [58] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b4
    // [57] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14]
  b14_from_b3:
    jmp b14
    // mul8u_compare::@14
  b14:
    // [58] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4]
  b4_from_b14:
    // [58] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy 
    jmp b4
    // mul8u_compare::@4
  b4:
    // [59] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b5
    jmp b7
    // mul8u_compare::@7
  b7:
    // [60] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [61] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx.z a
    // [62] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
    // [63] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
    // [64] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
    // [65] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
    // [66] call mul8u_error 
    // [76] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error]
  mul8u_error_from_b7:
    jsr mul8u_error
    jmp breturn
    // mul8u_compare::@return
  breturn:
    // [67] return 
    rts
    // mul8u_compare::@5
  b5:
    // [68] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc.z b
    // [69] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 
    lda.z b
    cmp #0
    bne b2_from_b5
    jmp b8
    // mul8u_compare::@8
  b8:
    // [70] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc.z a
    // [71] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 
    lda.z a
    cmp #0
    bne b1_from_b8
    // [72] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9]
  b9_from_b8:
    jmp b9
    // mul8u_compare::@9
  b9:
    // [73] call print_str 
    // [28] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str]
  print_str_from_b9:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_compare::@9->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [74] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13]
  b13_from_b9:
    jmp b13
    // mul8u_compare::@13
  b13:
    // [75] call print_ln 
    // [23] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln]
  print_ln_from_b13:
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#11 [phi:mul8u_compare::@13->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
    str: .text "multiply results match!"
    .byte 0
}
  // mul8u_error
// mul8u_error(byte register(X) a, byte zeropage($b) b, word zeropage(4) ms, word zeropage(9) mn, word zeropage($e) mf)
mul8u_error: {
    .label b = $b
    .label ms = 4
    .label mn = 9
    .label mf = $e
    // [77] call print_str 
    // [28] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
  print_str_from_mul8u_error:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_error->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    jmp b1
    // mul8u_error::@1
  b1:
    // [78] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
    // [79] call print_byte 
    // [105] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
  print_byte_from_b1:
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // [80] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2]
  b2_from_b1:
    jmp b2
    // mul8u_error::@2
  b2:
    // [81] call print_str 
    // [28] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
  print_str_from_b2:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    jmp b3
    // mul8u_error::@3
  b3:
    // [82] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 
    ldx.z b
    // [83] call print_byte 
    // [105] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
  print_byte_from_b3:
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
    // [84] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4]
  b4_from_b3:
    jmp b4
    // mul8u_error::@4
  b4:
    // [85] call print_str 
    // [28] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
  print_str_from_b4:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str.str
    lda #>str2
    sta.z print_str.str+1
    jsr print_str
    jmp b5
    // mul8u_error::@5
  b5:
    // [86] (word) print_word::w#3 ← (word) mul8u_error::ms#0
    // [87] call print_word 
    // [99] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
  print_word_from_b5:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#0] -- register_copy 
    jsr print_word
    // [88] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6]
  b6_from_b5:
    jmp b6
    // mul8u_error::@6
  b6:
    // [89] call print_str 
    // [28] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
  print_str_from_b6:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta.z print_str.str
    lda #>str3
    sta.z print_str.str+1
    jsr print_str
    jmp b7
    // mul8u_error::@7
  b7:
    // [90] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 
    lda.z mn
    sta.z print_word.w
    lda.z mn+1
    sta.z print_word.w+1
    // [91] call print_word 
    // [99] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
  print_word_from_b7:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#0] -- register_copy 
    jsr print_word
    // [92] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8]
  b8_from_b7:
    jmp b8
    // mul8u_error::@8
  b8:
    // [93] call print_str 
    // [28] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
  print_str_from_b8:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta.z print_str.str
    lda #>str4
    sta.z print_str.str+1
    jsr print_str
    jmp b9
    // mul8u_error::@9
  b9:
    // [94] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 
    lda.z mf
    sta.z print_word.w
    lda.z mf+1
    sta.z print_word.w+1
    // [95] call print_word 
    // [99] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
  print_word_from_b9:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#0] -- register_copy 
    jsr print_word
    // [96] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10]
  b10_from_b9:
    jmp b10
    // mul8u_error::@10
  b10:
    // [97] call print_ln 
    // [23] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
  print_ln_from_b10:
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#11 [phi:mul8u_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp breturn
    // mul8u_error::@return
  breturn:
    // [98] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // print_word
// Print a word as HEX
// print_word(word zeropage(4) w)
print_word: {
    .label w = 4
    // [100] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 
    lda.z w+1
    tax
    // [101] call print_byte 
    // [105] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:print_word->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp b1
    // print_word::@1
  b1:
    // [102] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 
    lda.z w
    tax
    // [103] call print_byte 
    // [105] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from_b1:
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [105] 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
    // print_word::@return
  breturn:
    // [104] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
    // [106] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    // [107] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    // [108] call print_char 
    // [113] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
    // [113] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy 
    // [113] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    jmp b1
    // print_byte::@1
  b1:
    // [109] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // [110] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    // [111] call print_char 
    // [113] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from_b1:
    // [113] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [113] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    jmp breturn
    // print_byte::@return
  breturn:
    // [112] return 
    rts
}
  // print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
    // [114] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
    // [115] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp breturn
    // print_char::@return
  breturn:
    // [116] return 
    rts
}
  // 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 = $c
    .label res = 9
    .label return = 9
    // [118] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
  b1_from_mul8u:
    // [118] phi (word) mul8u::mb#2 = (byte) mul8u::b#1 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuaa 
    sta.z mb
    lda #0
    sta.z mb+1
    // [118] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta.z res
    lda #>0
    sta.z res+1
    // [118] phi (byte) mul8u::a#3 = (byte) mul8u::a#2 [phi:mul8u->mul8u::@1#2] -- register_copy 
    jmp b1
    // mul8u::@1
  b1:
    // [119] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b2
    jmp breturn
    // mul8u::@return
  breturn:
    // [120] return 
    rts
    // mul8u::@2
  b2:
    // [121] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #1
    // [122] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b3_from_b2
    jmp b4
    // mul8u::@4
  b4:
    // [123] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z res
    clc
    adc.z mb
    sta.z res
    lda.z res+1
    adc.z mb+1
    sta.z res+1
    // [124] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
  b3_from_b2:
  b3_from_b4:
    // [124] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy 
    jmp b3
    // mul8u::@3
  b3:
    // [125] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [126] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 
    asl.z mb
    rol.z mb+1
    // [118] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
  b1_from_b3:
    // [118] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy 
    // [118] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy 
    // [118] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy 
    jmp b1
}
  // mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte register(A) a, byte register(X) b)
mulf8u: {
    .label return = $e
    // [127] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
    // [128] call mulf8u_prepare 
    jsr mulf8u_prepare
    jmp b1
    // mulf8u::@1
  b1:
    // [129] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
    // [130] call mulf8u_prepared 
    jsr mulf8u_prepared
    // [131] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
    jmp b2
    // mulf8u::@2
  b2:
    // [132] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
    jmp breturn
    // mulf8u::@return
  breturn:
    // [133] return 
    rts
}
  // 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
    // [134] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#0 -- _deref_pbuc1=vbuxx 
    stx memB
    // 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
    // [136] (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.z return
    lda memB
    sta.z return+1
    jmp breturn
    // mulf8u_prepared::@return
  breturn:
    // [137] return 
    rts
}
  // 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
    // [138] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#0 -- _deref_pbuc1=vbuaa 
    sta memA
    // 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
    // mulf8u_prepare::@return
  breturn:
    // [140] return 
    rts
}
  // muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zeropage(6) a, byte register(X) b)
muls8u: {
    .label return = 4
    .label m = 4
    .label a = 6
    // [141] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda.z a
    cmp #0
    beq b1_from_muls8u
    // [142] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
  b2_from_muls8u:
    // [142] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vwuz1=vbuc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    // [142] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vbuyy=vbuc1 
    ldy #0
    jmp b2
    // muls8u::@2
  b2:
    // [143] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@3 -- vbuyy_neq_vbuz1_then_la1 
    cpy.z a
    bne b3
    // [144] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
  b1_from_b2:
    // [144] phi (word) muls8u::return#0 = (word) muls8u::m#3 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    jmp b1
    // [144] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  b1_from_muls8u:
    // [144] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    jmp b1
    // muls8u::@1
  b1:
    jmp breturn
    // muls8u::@return
  breturn:
    // [145] return 
    rts
    // muls8u::@3
  b3:
    // [146] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx 
    txa
    clc
    adc.z m
    sta.z m
    bcc !+
    inc.z m+1
  !:
    // [147] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [142] phi from muls8u::@3 to muls8u::@2 [phi:muls8u::@3->muls8u::@2]
  b2_from_b3:
    // [142] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@3->muls8u::@2#0] -- register_copy 
    // [142] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@3->muls8u::@2#1] -- register_copy 
    jmp b2
}
  // 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 = 4
    .label kc_sqr = 2
    // [149] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
  b1_from_mulf_tables_cmp:
    // [149] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 
    lda #<mula_sqr1_lo
    sta.z asm_sqr
    lda #>mula_sqr1_lo
    sta.z asm_sqr+1
    // [149] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo
    sta.z kc_sqr
    lda #>mulf_sqr1_lo
    sta.z kc_sqr+1
    jmp b1
    // mulf_tables_cmp::@1
  b1:
    // [150] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z kc_sqr+1
    cmp #>mulf_sqr1_lo+$200*4
    bcc b2
    bne !+
    lda.z kc_sqr
    cmp #<mulf_sqr1_lo+$200*4
    bcc b2
  !:
    // [151] phi from mulf_tables_cmp::@1 to mulf_tables_cmp::@3 [phi:mulf_tables_cmp::@1->mulf_tables_cmp::@3]
  b3_from_b1:
    jmp b3
    // mulf_tables_cmp::@3
  b3:
    // [152] call print_str 
    // [28] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
  print_str_from_b3:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [28] 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.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [153] phi from mulf_tables_cmp::@3 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@3->mulf_tables_cmp::@6]
  b6_from_b3:
    jmp b6
    // mulf_tables_cmp::@6
  b6:
    // [154] call print_ln 
    // [23] phi from mulf_tables_cmp::@6 to print_ln [phi:mulf_tables_cmp::@6->print_ln]
  print_ln_from_b6:
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@6->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@6->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    jmp b7
    // mulf_tables_cmp::@7
  b7:
    // [155] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [156] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return]
  breturn_from_b7:
    // [156] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- register_copy 
    // [156] phi (byte*) print_char_cursor#100 = (byte*~) print_char_cursor#213 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
    // mulf_tables_cmp::@return
  breturn:
    // [157] return 
    rts
    // mulf_tables_cmp::@2
  b2:
    // [158] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 
    ldy #0
    lda (kc_sqr),y
    ldy #0
    cmp (asm_sqr),y
    beq b4
    jmp b5
    // mulf_tables_cmp::@5
  b5:
    // [159] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [160] call print_str 
    // [28] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
  print_str_from_b5:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [28] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    jmp b8
    // mulf_tables_cmp::@8
  b8:
    // [161] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
    // [162] call print_word 
    // [99] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
  print_word_from_b8:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
    jsr print_word
    // [163] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@9 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@9]
  b9_from_b8:
    jmp b9
    // mulf_tables_cmp::@9
  b9:
    // [164] call print_str 
    // [28] phi from mulf_tables_cmp::@9 to print_str [phi:mulf_tables_cmp::@9->print_str]
  print_str_from_b9:
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@9->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@9->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str.str
    lda #>str2
    sta.z print_str.str+1
    jsr print_str
    jmp b10
    // mulf_tables_cmp::@10
  b10:
    // [165] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 
    lda.z kc_sqr
    sta.z print_word.w
    lda.z kc_sqr+1
    sta.z print_word.w+1
    // [166] call print_word 
    // [99] phi from mulf_tables_cmp::@10 to print_word [phi:mulf_tables_cmp::@10->print_word]
  print_word_from_b10:
    // [99] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@10->print_word#0] -- register_copy 
    jsr print_word
    // [156] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
  breturn_from_b10:
    // [156] phi (byte*) print_line_cursor#11 = (byte*) 1024 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    // [156] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy 
    jmp breturn
    // mulf_tables_cmp::@4
  b4:
    // [167] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 
    inc.z asm_sqr
    bne !+
    inc.z asm_sqr+1
  !:
    // [168] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 
    inc.z kc_sqr
    bne !+
    inc.z kc_sqr+1
  !:
    // [149] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1]
  b1_from_b4:
    // [149] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1#0] -- register_copy 
    // [149] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1#1] -- register_copy 
    jmp b1
    str: .text "multiply tables match!"
    .byte 0
    str1: .text "multiply table mismatch at "
    .byte 0
    str2: .text " / "
    .byte 0
}
  // 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
    // 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 !-
    // [170] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
    // [171] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
    // [172] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
    // [173] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
    jmp breturn
    // mulf_init_asm::@return
  breturn:
    // [174] return 
    rts
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    .label c = 6
    .label sqr1_hi = 7
    .label sqr = $e
    .label sqr1_lo = 4
    .label sqr2_hi = $c
    .label sqr2_lo = 9
    .label dir = $b
    // [176] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  b1_from_mulf_init:
    // [176] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [176] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_hi+1
    sta.z sqr1_hi
    lda #>mulf_sqr1_hi+1
    sta.z sqr1_hi+1
    // [176] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 
    lda #<0
    sta.z sqr
    lda #>0
    sta.z sqr+1
    // [176] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // [176] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo+1
    sta.z sqr1_lo
    lda #>mulf_sqr1_lo+1
    sta.z sqr1_lo+1
    jmp b1
    // mulf_init::@1
  b1:
    // [177] if((byte*) mulf_init::sqr1_lo#2!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z sqr1_lo+1
    cmp #>mulf_sqr1_lo+$200
    bne b2
    lda.z sqr1_lo
    cmp #<mulf_sqr1_lo+$200
    bne b2
    // [178] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
  b5_from_b1:
    // [178] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [178] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_hi
    sta.z sqr2_hi
    lda #>mulf_sqr2_hi
    sta.z sqr2_hi+1
    // [178] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 
    ldx #-1
    // [178] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_lo
    sta.z sqr2_lo
    lda #>mulf_sqr2_lo
    sta.z sqr2_lo+1
    jmp b5
    // mulf_init::@5
  b5:
    // [179] if((byte*) mulf_init::sqr2_lo#2!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 
    lda.z sqr2_lo+1
    cmp #>mulf_sqr2_lo+$1ff
    bne b6
    lda.z sqr2_lo
    cmp #<mulf_sqr2_lo+$1ff
    bne b6
    jmp b7
    // mulf_init::@7
  b7:
    // [180] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    // Set the very last value g(511) = f(256)
    lda mulf_sqr1_lo+$100
    sta mulf_sqr2_lo+$1ff
    // [181] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
    jmp breturn
    // mulf_init::@return
  breturn:
    // [182] return 
    rts
    // mulf_init::@6
  b6:
    // [183] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) 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
    // [184] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) 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
    // [185] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr2_hi
    bne !+
    inc.z sqr2_hi+1
  !:
    // [186] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 
    txa
    clc
    adc.z dir
    tax
    // [187] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b9_from_b6
    // [189] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
  b8_from_b6:
    // [189] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 
    lda #1
    sta.z dir
    jmp b8
    // [188] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9]
  b9_from_b6:
    jmp b9
    // mulf_init::@9
  b9:
    // [189] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
  b8_from_b9:
    // [189] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy 
    jmp b8
    // mulf_init::@8
  b8:
    // [190] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr2_lo
    bne !+
    inc.z sqr2_lo+1
  !:
    // [178] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
  b5_from_b8:
    // [178] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [178] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [178] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [178] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy 
    jmp b5
    // mulf_init::@2
  b2:
    // [191] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // [192] (byte~) mulf_init::$9 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 
    lda #1
    and.z c
    // [193] if((byte~) mulf_init::$9!=(byte) 0) goto mulf_init::@3 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne b3_from_b2
    jmp b4
    // mulf_init::@4
  b4:
    // [194] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx 
    inx
    // [195] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [196] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3]
  b3_from_b2:
  b3_from_b4:
    // [196] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy 
    // [196] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy 
    jmp b3
    // mulf_init::@3
  b3:
    // [197] (byte~) mulf_init::$12 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 
    lda.z sqr
    // [198] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$12 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_lo),y
    // [199] (byte~) mulf_init::$13 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 
    lda.z sqr+1
    // [200] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$13 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_hi),y
    // [201] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr1_hi
    bne !+
    inc.z sqr1_hi+1
  !:
    // [202] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuxx 
    txa
    clc
    adc.z sqr
    sta.z sqr
    bcc !+
    inc.z sqr+1
  !:
    // [203] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr1_lo
    bne !+
    inc.z sqr1_lo+1
  !:
    // [176] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
  b1_from_b3:
    // [176] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [176] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [176] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [176] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [176] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy 
    jmp b1
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [205] call memset 
    // [207] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp breturn
    // print_cls::@return
  breturn:
    // [206] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = $400
    .label end = str+num
    .label dst = $c
    // [208] phi from memset to memset::@2 [phi:memset->memset::@2]
  b2_from_memset:
    // [208] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp b2
    // [208] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
  b2_from_b1:
    // [208] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    jmp b2
    // memset::@2
  b2:
    // [209] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [210] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp b1
    // memset::@1
  b1:
    // [211] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2_from_b1
    lda.z dst
    cmp #<end
    bne b2_from_b1
    jmp breturn
    // memset::@return
  breturn:
    // [212] return 
    rts
}
  // File Data
  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
  str1: .text "*"
  .byte 0
  str2: .text " slow:"
  .byte 0
  str3: .text " / normal:"
  .byte 0
  str4: .text " / fast:"
  .byte 0

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
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 breturn
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 b10
Removing instruction jmp b11
Removing instruction jmp b12
Removing instruction jmp b6
Removing instruction jmp b3
Removing instruction jmp b14
Removing instruction jmp b4
Removing instruction jmp b7
Removing instruction jmp breturn
Removing instruction jmp b8
Removing instruction jmp b9
Removing instruction jmp b13
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 b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b4
Removing instruction jmp b3
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp breturn
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 breturn
Removing instruction jmp b5
Removing instruction jmp b8
Removing instruction jmp b9
Removing instruction jmp b10
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b5
Removing instruction jmp b7
Removing instruction jmp breturn
Removing instruction jmp b9
Removing instruction jmp b8
Removing instruction jmp b4
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy #0
Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction ldx memB
Removing instruction lda memA
Removing instruction lda #>0
Replacing instruction ldy #0 with TAY
Removing instruction lda #>0
Removing instruction ldy #0
Replacing instruction lda #<0 with TXA
Removing instruction lda #>0
Removing instruction lda #0
Removing instruction ldy #0
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b2 with b1
Replacing label b14_from_b3 with b4
Replacing label b2_from_b5 with b2
Replacing label b1_from_b8 with b1
Replacing label b3_from_b2 with b3
Replacing label b9_from_b6 with b8
Replacing label b3_from_b2 with b3
Replacing label b2_from_b1 with b2
Replacing label b2_from_b1 with b2
Removing instruction b1_from_bbegin:
Removing instruction b1:
Removing instruction bend_from_b1:
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 b2_from_b1:
Removing instruction print_ln_from_b2:
Removing instruction b1_from_print_ln:
Removing instruction b1_from_b1:
Removing instruction b1_from_print_str:
Removing instruction b1_from_b2:
Removing instruction b1_from_b8:
Removing instruction b2_from_b1:
Removing instruction b2_from_b5:
Removing instruction b6_from_b12:
Removing instruction b3_from_b6:
Removing instruction b14_from_b3:
Removing instruction b14:
Removing instruction b4_from_b14:
Removing instruction b9_from_b8:
Removing instruction print_str_from_b9:
Removing instruction b13_from_b9:
Removing instruction print_ln_from_b13:
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 b3_from_b2:
Removing instruction b3_from_b4:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b3_from_b1:
Removing instruction print_str_from_b3:
Removing instruction b6_from_b3:
Removing instruction print_ln_from_b6:
Removing instruction breturn_from_b7:
Removing instruction print_word_from_b8:
Removing instruction b9_from_b8:
Removing instruction print_str_from_b9:
Removing instruction b9_from_b6:
Removing instruction b9:
Removing instruction b8_from_b9:
Removing instruction b3_from_b2:
Removing instruction b3_from_b4:
Removing instruction b2_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:
Removing instruction print_str_from_b1:
Removing instruction b2:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b1_from_mul8u_compare:
Removing instruction b10:
Removing instruction b11:
Removing instruction mul8u_from_b11:
Removing instruction b12:
Removing instruction b6:
Removing instruction b4_from_b3:
Removing instruction b7:
Removing instruction mul8u_error_from_b7:
Removing instruction b8:
Removing instruction b9:
Removing instruction b13:
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 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 b1_from_mul8u:
Removing instruction breturn:
Removing instruction b4:
Removing instruction b1_from_b3:
Removing instruction b1:
Removing instruction b2:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b2_from_muls8u:
Removing instruction b1_from_b2:
Removing instruction b2_from_b3:
Removing instruction b1_from_mulf_tables_cmp:
Removing instruction b3:
Removing instruction b6:
Removing instruction b7:
Removing instruction b5:
Removing instruction print_str_from_b5:
Removing instruction b8:
Removing instruction b9:
Removing instruction b10:
Removing instruction print_word_from_b10:
Removing instruction breturn_from_b10:
Removing instruction b1_from_b4:
Removing instruction breturn:
Removing instruction b1_from_mulf_init:
Removing instruction b5_from_b1:
Removing instruction b7:
Removing instruction breturn:
Removing instruction b8_from_b6:
Removing instruction b5_from_b8:
Removing instruction b4:
Removing instruction b1_from_b3:
Removing instruction memset_from_print_cls:
Removing instruction breturn:
Removing instruction b2_from_memset:
Removing instruction b1:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Replacing jump to rts with rts in jmp breturn
Replacing jump to rts with rts in jmp b1
Replacing jump to rts with rts in jmp breturn
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label b3_from_b12 to b6
Relabelling long label b1_from_muls8u to b4
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b4
Removing instruction jmp b8
Removing instruction jmp b2
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Removing instruction breturn:
Removing instruction b1:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (byte*) 53281
(const byte) RADIX::BINARY BINARY = (number) 2
(const byte) RADIX::DECIMAL DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL OCTAL = (number) 8
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@return
(byte) memset::c
(const byte) memset::c#0 c = (byte) ' '
(byte*) memset::dst
(byte*) memset::dst#1 dst zp ZP_WORD:12 16.5
(byte*) memset::dst#4 dst zp ZP_WORD:12 16.5
(byte*) memset::end
(const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0
(word) memset::num
(const word) memset::num#0 num = (word) $3e8
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(byte*) 1024
(void()) mul8s_compare()
(label) mul8s_compare::@1
(label) mul8s_compare::@2
(label) mul8s_compare::@return
(signed byte) mul8s_compare::a
(signed byte) mul8s_compare::b
(signed word) mul8s_compare::mf
(signed word) mul8s_compare::mn
(signed word) mul8s_compare::ms
(byte) mul8s_compare::ok
(const string) mul8s_compare::str str = (string) "signed multiply results match!"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1
(label) mul8u::@2
(label) mul8u::@3
(label) mul8u::@4
(label) mul8u::@return
(byte) mul8u::a
(byte) mul8u::a#0 reg byte x 1001.0
(byte) mul8u::a#2 reg byte x 34.33333333333333
(byte) mul8u::a#3 reg byte x 667.6666666666667
(byte) mul8u::b
(byte) mul8u::b#1 reg byte a 51.5
(word) mul8u::mb
(word) mul8u::mb#1 mb zp ZP_WORD:12 2002.0
(word) mul8u::mb#2 mb zp ZP_WORD:12 429.2857142857143
(word) mul8u::res
(word) mul8u::res#1 res zp ZP_WORD:9 2002.0
(word) mul8u::res#2 res zp ZP_WORD:9 517.3333333333334
(word) mul8u::res#6 res zp ZP_WORD:9 1001.0
(word) mul8u::return
(word) mul8u::return#3 return zp ZP_WORD:9 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::@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::@9
(label) mul8u_compare::@return
(byte) mul8u_compare::a
(byte) mul8u_compare::a#1 a zp ZP_BYTE:6 16.5
(byte) mul8u_compare::a#7 a zp ZP_BYTE:6 12.11111111111111
(byte) mul8u_compare::b
(byte) mul8u_compare::b#1 b zp ZP_BYTE:11 151.5
(byte) mul8u_compare::b#10 b zp ZP_BYTE:11 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:9 17.0
(word) mul8u_compare::ms
(word) mul8u_compare::ms#0 ms zp ZP_WORD:4 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:11 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:9 0.25
(word) mul8u_error::ms
(word) mul8u_error::ms#0 ms zp ZP_WORD:4 0.3076923076923077
(const string) mul8u_error::str str = (string) "multiply mismatch "
(byte[$200]) mula_sqr1_hi
(const byte[$200]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( $200, 0) }
(byte[$200]) mula_sqr1_lo
(const byte[$200]) mula_sqr1_lo#0 mula_sqr1_lo = { fill( $200, 0) }
(byte[$200]) mula_sqr2_hi
(const byte[$200]) mula_sqr2_hi#0 mula_sqr2_hi = { fill( $200, 0) }
(byte[$200]) mula_sqr2_lo
(const byte[$200]) mula_sqr2_lo#0 mula_sqr2_lo = { fill( $200, 0) }
(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
(label) mulf8u::@1
(label) mulf8u::@2
(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::memA
(const byte*) mulf8u_prepare::memA#0 memA = (byte*) 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::memB
(const byte*) mulf8u_prepared::memB#0 memB = (byte*) 255
(byte*) mulf8u_prepared::resL
(const byte*) mulf8u_prepared::resL#0 resL = (byte*) 254
(word) mulf8u_prepared::return
(word) mulf8u_prepared::return#0 return zp ZP_WORD:14 1.3333333333333333
(word) mulf8u_prepared::return#2 return zp ZP_WORD:14 4.0
(void()) mulf_init()
(byte~) mulf_init::$12 reg byte a 22.0
(byte~) mulf_init::$13 reg byte a 22.0
(byte~) mulf_init::$9 reg byte a 22.0
(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::@9
(label) mulf_init::@return
(byte) mulf_init::c
(byte) mulf_init::c#1 c zp ZP_BYTE:6 2.5384615384615383
(byte) mulf_init::c#2 c zp ZP_BYTE:6 11.0
(byte) mulf_init::dir
(byte) mulf_init::dir#2 dir zp ZP_BYTE:11 4.125
(byte) mulf_init::dir#4 dir zp ZP_BYTE:11 11.0
(word) mulf_init::sqr
(word) mulf_init::sqr#1 sqr zp ZP_WORD:14 11.0
(word) mulf_init::sqr#2 sqr zp ZP_WORD:14 22.0
(word) mulf_init::sqr#3 sqr zp ZP_WORD:14 9.166666666666666
(word) mulf_init::sqr#4 sqr zp ZP_WORD:14 5.5
(byte*) mulf_init::sqr1_hi
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:7 7.333333333333333
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:7 2.75
(byte*) mulf_init::sqr1_lo
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 22.0
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 3.142857142857143
(byte*) mulf_init::sqr2_hi
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:12 3.6666666666666665
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:12 8.25
(byte*) mulf_init::sqr2_lo
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:9 22.0
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:9 4.888888888888889
(byte) mulf_init::x_2
(byte) mulf_init::x_2#1 reg byte x 11.0
(byte) mulf_init::x_2#2 reg byte x 5.5
(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
(void()) mulf_init_asm()
(label) mulf_init_asm::@return
(byte*) mulf_init_asm::mem
(const byte*) mulf_init_asm::mem#0 mem = (byte*) 255
(byte[$200]) mulf_sqr1_hi
(const byte[$200]) mulf_sqr1_hi#0 mulf_sqr1_hi = { fill( $200, 0) }
(byte[$200]) mulf_sqr1_lo
(const byte[$200]) mulf_sqr1_lo#0 mulf_sqr1_lo = { fill( $200, 0) }
(byte[$200]) mulf_sqr2_hi
(const byte[$200]) mulf_sqr2_hi#0 mulf_sqr2_hi = { fill( $200, 0) }
(byte[$200]) mulf_sqr2_lo
(const byte[$200]) mulf_sqr2_lo#0 mulf_sqr2_lo = { fill( $200, 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::@4
(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#1 asm_sqr zp ZP_WORD:4 11.0
(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp ZP_WORD:4 6.6000000000000005
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp ZP_WORD:2 22.0
(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp ZP_WORD:2 4.4
(const string) mulf_tables_cmp::str str = (string) "multiply tables match!"
(const string) mulf_tables_cmp::str1 str1 = (string) "multiply table mismatch at "
(const string) mulf_tables_cmp::str2 str2 = (string) " / "
(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
(label) muls8u::@1
(label) muls8u::@2
(label) muls8u::@3
(label) muls8u::@return
(byte) muls8u::a
(byte) muls8u::a#0 a zp ZP_BYTE:6 157.71428571428572
(byte) muls8u::b
(byte) muls8u::b#0 reg byte x 183.66666666666669
(byte) muls8u::i
(byte) muls8u::i#1 reg byte y 2002.0
(byte) muls8u::i#2 reg byte y 1001.0
(word) muls8u::m
(word) muls8u::m#1 m zp ZP_WORD:4 1001.0
(word) muls8u::m#3 m zp ZP_WORD:4 1501.5
(word) muls8u::return
(word) muls8u::return#0 return zp ZP_WORD:4 367.33333333333337
(word) muls8u::return#2 return zp ZP_WORD:4 202.0
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte x 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.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 4.0
(byte) print_char::ch#6 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:7 11.0
(byte*) print_char_cursor#100 print_char_cursor zp ZP_WORD:7 0.1951219512195122
(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:7 1.8076923076923077
(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:7 4.75
(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:7 3.333333333333333
(byte*) print_char_cursor#155 print_char_cursor zp ZP_WORD:7 18.0
(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:7 0.8333333333333334
(byte*~) print_char_cursor#193 print_char_cursor zp ZP_WORD:7 4.0
(byte*~) print_char_cursor#213 print_char_cursor zp ZP_WORD:7 4.0
(byte*) print_char_cursor#86 print_char_cursor zp ZP_WORD:7 4.0
(void()) print_cls()
(label) print_cls::@return
(byte[]) print_hextab
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:2 2.5625
(byte*) print_line_cursor#11 print_line_cursor zp ZP_WORD:2 0.09523809523809523
(byte*) print_line_cursor#23 print_line_cursor zp ZP_WORD:2 24.0
(byte*) print_line_cursor#45 print_line_cursor zp ZP_WORD:2 8.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(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:12 22.0
(byte*) print_str::str#16 str zp ZP_WORD:12 11.5
(byte*) print_str::str#18 str zp ZP_WORD:12 2.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word) print_word::w#1 w zp ZP_WORD:4 4.0
(word) print_word::w#2 w zp ZP_WORD:4 4.0
(word) print_word::w#3 w zp ZP_WORD:4 4.0
(word) print_word::w#4 w zp ZP_WORD:4 4.0
(word) print_word::w#5 w zp ZP_WORD:4 4.0
(word) print_word::w#6 w zp ZP_WORD:4 4.666666666666666
(const string) str1 str1 = (string) "*"
(const string) str2 str2 = (string) " slow:"
(const string) str3 str3 = (string) " / normal:"
(const string) str4 str4 = (string) " / fast:"

reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#1 print_byte::b#2 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
reg byte x [ mul8u::a#3 mul8u::a#2 mul8u::a#0 ]
reg byte a [ mul8u::b#1 ]
reg byte y [ muls8u::i#2 muls8u::i#1 ]
zp ZP_WORD:2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ]
zp ZP_WORD:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8u_error::ms#0 mul8u_compare::ms#0 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ]
zp ZP_BYTE:6 [ mulf_init::c#2 mulf_init::c#1 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ]
zp ZP_WORD:7 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#193 print_char_cursor#100 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#1 print_char_cursor#213 ]
reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
zp ZP_WORD:9 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8u_compare::mn#0 mul8u_error::mn#0 ]
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
zp ZP_BYTE:11 [ mulf_init::dir#2 mulf_init::dir#4 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ]
zp ZP_WORD:12 [ memset::dst#4 memset::dst#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 mul8u::mb#2 mul8u::mb#1 print_str::str#16 print_str::str#18 print_str::str#0 ]
reg byte x [ muls8u::b#0 ]
reg byte a [ mulf8u::a#0 ]
reg byte x [ mulf8u::b#0 ]
zp ZP_WORD:14 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 mulf8u_prepared::return#2 mulf8u_prepared::return#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
reg byte x [ mul8u_error::a#0 ]
reg byte a [ print_byte::$0 ]
reg byte x [ print_byte::$2 ]
reg byte a [ mul8u::$1 ]
reg byte a [ mulf8u_prepare::a#0 ]
reg byte x [ mulf8u_prepared::b#0 ]
reg byte a [ mulf_init::$9 ]
reg byte a [ mulf_init::$12 ]
reg byte a [ mulf_init::$13 ]


FINAL ASSEMBLER
Score: 118965

  // File Comments
// Test the fast multiplication library
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
  // Global Constants & labels
  .label BGCOL = $d021
  .label print_char_cursor = 7
  .label print_line_cursor = 2
  // @begin
  // [1] phi from @begin to @1 [phi:@begin->@1]
  // @1
  // [2] call main 
  // [3] phi from @1 to @end [phi:@1->@end]
  // @end
  // main
main: {
    // *BGCOL = 5
    // [4] *((const byte*) BGCOL#0) ← (byte) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
    // print_cls()
    // [5] call print_cls 
    // [204] phi from main to print_cls [phi:main->print_cls]
    jsr print_cls
    // [6] phi from main to main::@1 [phi:main->main::@1]
    // main::@1
    // mulf_init()
    // [7] call mulf_init 
    // [175] phi from main::@1 to mulf_init [phi:main::@1->mulf_init]
    jsr mulf_init
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
    // mulf_init_asm()
    // [9] call mulf_init_asm 
    jsr mulf_init_asm
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
    // main::@3
    // mulf_tables_cmp()
    // [11] call mulf_tables_cmp 
    // [148] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp]
    jsr mulf_tables_cmp
    // [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
    // main::@4
    // mul8u_compare()
    // [13] call mul8u_compare 
    // [35] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare]
    jsr mul8u_compare
    // [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
    // main::@5
    // mul8s_compare()
    // [15] call mul8s_compare 
    // [17] phi from main::@5 to mul8s_compare [phi:main::@5->mul8s_compare]
    jsr mul8s_compare
    // main::@return
    // }
    // [16] return 
    rts
}
  // mul8s_compare
// Perform all possible signed byte multiplications (slow and fast) and compare the results
mul8s_compare: {
    // mul8s_compare::@1
    // [18] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // print_str("signed multiply results match!")
    // [19] call print_str 
    // [28] phi from mul8s_compare::@1 to print_str [phi:mul8s_compare::@1->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*~) print_char_cursor#193 [phi:mul8s_compare::@1->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [20] phi from mul8s_compare::@1 to mul8s_compare::@2 [phi:mul8s_compare::@1->mul8s_compare::@2]
    // mul8s_compare::@2
    // print_ln()
    // [21] call print_ln 
    // [23] phi from mul8s_compare::@2 to print_ln [phi:mul8s_compare::@2->print_ln]
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@2->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@2->print_ln#1] -- register_copy 
    jsr print_ln
    // mul8s_compare::@return
    // }
    // [22] return 
    rts
    str: .text "signed multiply results match!"
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [24] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
    // [24] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#45 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    // print_ln::@1
  b1:
    // print_line_cursor + $28
    // [25] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z print_line_cursor
    sta.z print_line_cursor
    bcc !+
    inc.z print_line_cursor+1
  !:
    // while (print_line_cursor<print_char_cursor)
    // [26] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda.z print_line_cursor+1
    cmp.z print_char_cursor+1
    bcc b1
    bne !+
    lda.z print_line_cursor
    cmp.z print_char_cursor
    bcc b1
  !:
    // print_ln::@return
    // }
    // [27] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zeropage($c) str)
print_str: {
    .label str = $c
    // [29] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
    // [29] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [29] phi (byte*) print_str::str#16 = (byte*) print_str::str#18 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    // print_str::@1
  b1:
    // while(*str)
    // [30] if((byte) 0!=*((byte*) print_str::str#16)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne b2
    // print_str::@return
    // }
    // [31] return 
    rts
    // print_str::@2
  b2:
    // *(print_char_cursor++) = *(str++)
    // [32] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    sta (print_char_cursor),y
    // *(print_char_cursor++) = *(str++);
    // [33] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [34] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp b1
}
  // mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = 4
    .label mf = $e
    .label mn = 9
    .label b = $b
    .label a = 6
    // [36] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
    // [36] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    // [36] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1]
    // [36] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@8->mul8u_compare::@1#0] -- register_copy 
    // mul8u_compare::@1
  b1:
    // [37] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
    // [37] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z b
    // [37] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
    // [37] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy 
    // mul8u_compare::@2
  b2:
    // muls8u(a, b)
    // [38] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
    // [39] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx.z b
    // [40] call muls8u 
    jsr muls8u
    // [41] (word) muls8u::return#2 ← (word) muls8u::return#0
    // mul8u_compare::@10
    // ms = muls8u(a, b)
    // [42] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
    // mulf8u(a,b)
    // [43] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 
    lda.z a
    // [44] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx.z b
    // [45] call mulf8u 
    jsr mulf8u
    // [46] (word) mulf8u::return#2 ← (word) mulf8u::return#0
    // mul8u_compare::@11
    // mf = mulf8u(a,b)
    // [47] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
    // mul8u(a,b)
    // [48] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx.z a
    // [49] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 
    lda.z b
    // [50] call mul8u 
    // [117] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u]
    jsr mul8u
    // mul8u(a,b)
    // [51] (word) mul8u::return#3 ← (word) mul8u::res#2
    // mul8u_compare::@12
    // mn = mul8u(a,b)
    // [52] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
    // if(ms!=mf)
    // [53] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    beq b6
  !:
    // [54] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6]
    // mul8u_compare::@6
    // [55] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
    // [55] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
    // [55] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3]
  b6:
    // [55] phi (byte) mul8u_compare::ok#4 = (byte) 1 [phi:mul8u_compare::@12->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
    // mul8u_compare::@3
  b3:
    // if(ms!=mn)
    // [56] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14 -- vwuz1_eq_vwuz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    beq b4
  !:
    // [58] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
    // [58] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    // [57] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14]
    // mul8u_compare::@14
    // [58] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4]
    // [58] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@14->mul8u_compare::@4#0] -- register_copy 
    // mul8u_compare::@4
  b4:
    // if(ok==0)
    // [59] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b5
    // mul8u_compare::@7
    // *BGCOL = 2
    // [60] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // mul8u_error(a,b, ms, mn, mf)
    // [61] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx.z a
    // [62] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
    // [63] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
    // [64] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
    // [65] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
    // [66] call mul8u_error 
    // [76] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error]
    jsr mul8u_error
    // mul8u_compare::@return
    // }
    // [67] return 
    rts
    // mul8u_compare::@5
  b5:
    // for(byte b: 0..255)
    // [68] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc.z b
    // [69] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 
    lda.z b
    cmp #0
    bne b2
    // mul8u_compare::@8
    // for(byte a: 0..255)
    // [70] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc.z a
    // [71] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 
    lda.z a
    cmp #0
    bne b1
    // [72] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9]
    // mul8u_compare::@9
    // print_str("multiply results match!")
    // [73] call print_str 
    // [28] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_compare::@9->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@9->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [74] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13]
    // mul8u_compare::@13
    // print_ln()
    // [75] call print_ln 
    // [23] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln]
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#11 [phi:mul8u_compare::@13->print_ln#1] -- register_copy 
    jsr print_ln
    rts
    str: .text "multiply results match!"
    .byte 0
}
  // mul8u_error
// mul8u_error(byte register(X) a, byte zeropage($b) b, word zeropage(4) ms, word zeropage(9) mn, word zeropage($e) mf)
mul8u_error: {
    .label b = $b
    .label ms = 4
    .label mn = 9
    .label mf = $e
    // print_str("multiply mismatch ")
    // [77] call print_str 
    // [28] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_error->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // mul8u_error::@1
    // print_byte(a)
    // [78] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
    // [79] call print_byte 
    // [105] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // [80] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2]
    // mul8u_error::@2
    // print_str("*")
    // [81] call print_str 
    // [28] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    // mul8u_error::@3
    // print_byte(b)
    // [82] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 
    ldx.z b
    // [83] call print_byte 
    // [105] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
    // [84] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4]
    // mul8u_error::@4
    // print_str(" slow:")
    // [85] call print_str 
    // [28] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str.str
    lda #>str2
    sta.z print_str.str+1
    jsr print_str
    // mul8u_error::@5
    // print_word(ms)
    // [86] (word) print_word::w#3 ← (word) mul8u_error::ms#0
    // [87] call print_word 
    // [99] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
    // [99] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#0] -- register_copy 
    jsr print_word
    // [88] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6]
    // mul8u_error::@6
    // print_str(" / normal:")
    // [89] call print_str 
    // [28] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 
    lda #<str3
    sta.z print_str.str
    lda #>str3
    sta.z print_str.str+1
    jsr print_str
    // mul8u_error::@7
    // print_word(mn)
    // [90] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 
    lda.z mn
    sta.z print_word.w
    lda.z mn+1
    sta.z print_word.w+1
    // [91] call print_word 
    // [99] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
    // [99] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#0] -- register_copy 
    jsr print_word
    // [92] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8]
    // mul8u_error::@8
    // print_str(" / fast:")
    // [93] call print_str 
    // [28] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 
    lda #<str4
    sta.z print_str.str
    lda #>str4
    sta.z print_str.str+1
    jsr print_str
    // mul8u_error::@9
    // print_word(mf)
    // [94] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 
    lda.z mf
    sta.z print_word.w
    lda.z mf+1
    sta.z print_word.w+1
    // [95] call print_word 
    // [99] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
    // [99] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#0] -- register_copy 
    jsr print_word
    // [96] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10]
    // mul8u_error::@10
    // print_ln()
    // [97] call print_ln 
    // [23] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#11 [phi:mul8u_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    // mul8u_error::@return
    // }
    // [98] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // print_word
// Print a word as HEX
// print_word(word zeropage(4) w)
print_word: {
    .label w = 4
    // print_byte(>w)
    // [100] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 
    lda.z w+1
    tax
    // [101] call print_byte 
    // [105] phi from print_word to print_byte [phi:print_word->print_byte]
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:print_word->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    // print_word::@1
    // print_byte(<w)
    // [102] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 
    lda.z w
    tax
    // [103] call print_byte 
    // [105] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
    // [105] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [105] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // print_word::@return
    // }
    // [104] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
    // b>>4
    // [106] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    // print_char(print_hextab[b>>4])
    // [107] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    // [108] call print_char 
    // [113] phi from print_byte to print_char [phi:print_byte->print_char]
    // [113] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy 
    // [113] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    // print_byte::@1
    // b&$f
    // [109] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // print_char(print_hextab[b&$f])
    // [110] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    // [111] call print_char 
    // [113] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
    // [113] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [113] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    // print_byte::@return
    // }
    // [112] return 
    rts
}
  // print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
    // *(print_char_cursor++) = ch
    // [114] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
    // *(print_char_cursor++) = ch;
    // [115] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // print_char::@return
    // }
    // [116] return 
    rts
}
  // 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 = $c
    .label res = 9
    .label return = 9
    // [118] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
    // [118] phi (word) mul8u::mb#2 = (byte) mul8u::b#1 [phi:mul8u->mul8u::@1#0] -- vwuz1=vbuaa 
    sta.z mb
    lda #0
    sta.z mb+1
    // [118] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 
    sta.z res
    sta.z res+1
    // [118] phi (byte) mul8u::a#3 = (byte) mul8u::a#2 [phi:mul8u->mul8u::@1#2] -- register_copy 
    // mul8u::@1
  b1:
    // while(a!=0)
    // [119] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b2
    // mul8u::@return
    // }
    // [120] return 
    rts
    // mul8u::@2
  b2:
    // a&1
    // [121] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #1
    // if( (a&1) != 0)
    // [122] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b3
    // mul8u::@4
    // res = res + mb
    // [123] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z res
    clc
    adc.z mb
    sta.z res
    lda.z res+1
    adc.z mb+1
    sta.z res+1
    // [124] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
    // [124] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy 
    // mul8u::@3
  b3:
    // a = a>>1
    // [125] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // mb = mb<<1
    // [126] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 
    asl.z mb
    rol.z mb+1
    // [118] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
    // [118] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy 
    // [118] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy 
    // [118] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy 
    jmp b1
}
  // mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte register(A) a, byte register(X) b)
mulf8u: {
    .label return = $e
    // mulf8u_prepare(a)
    // [127] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
    // [128] call mulf8u_prepare 
    jsr mulf8u_prepare
    // mulf8u::@1
    // mulf8u_prepared(b)
    // [129] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
    // [130] call mulf8u_prepared 
    jsr mulf8u_prepared
    // [131] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
    // mulf8u::@2
    // [132] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
    // mulf8u::@return
    // }
    // [133] return 
    rts
}
  // 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
    // *memB = b
    // [134] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#0 -- _deref_pbuc1=vbuxx 
    stx memB
    // asm
    // 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
    // return { *memB, *resL };
    // [136] (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.z return
    lda memB
    sta.z return+1
    // mulf8u_prepared::@return
    // }
    // [137] return 
    rts
}
  // 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
    // *memA = a
    // [138] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#0 -- _deref_pbuc1=vbuaa 
    sta memA
    // asm
    // 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
    // mulf8u_prepare::@return
    // }
    // [140] return 
    rts
}
  // muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zeropage(6) a, byte register(X) b)
muls8u: {
    .label return = 4
    .label m = 4
    .label a = 6
    // if(a!=0)
    // [141] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda.z a
    cmp #0
    beq b4
    // [142] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
    // [142] phi (word) muls8u::m#3 = (byte) 0 [phi:muls8u->muls8u::@2#0] -- vwuz1=vbuc1 
    lda #<0
    sta.z m
    sta.z m+1
    // [142] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vbuyy=vbuc1 
    tay
    // muls8u::@2
  b2:
    // for(byte i = 0; i!=a; i++)
    // [143] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@3 -- vbuyy_neq_vbuz1_then_la1 
    cpy.z a
    bne b3
    // [144] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
    // [144] phi (word) muls8u::return#0 = (word) muls8u::m#3 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    rts
    // [144] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  b4:
    // [144] phi (word) muls8u::return#0 = (byte) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 
    lda #<0
    sta.z return
    sta.z return+1
    // muls8u::@1
    // muls8u::@return
    // }
    // [145] return 
    rts
    // muls8u::@3
  b3:
    // m = m + b
    // [146] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx 
    txa
    clc
    adc.z m
    sta.z m
    bcc !+
    inc.z m+1
  !:
    // for(byte i = 0; i!=a; i++)
    // [147] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [142] phi from muls8u::@3 to muls8u::@2 [phi:muls8u::@3->muls8u::@2]
    // [142] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@3->muls8u::@2#0] -- register_copy 
    // [142] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@3->muls8u::@2#1] -- register_copy 
    jmp b2
}
  // 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 = 4
    .label kc_sqr = 2
    // [149] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
    // [149] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[$200]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 
    lda #<mula_sqr1_lo
    sta.z asm_sqr
    lda #>mula_sqr1_lo
    sta.z asm_sqr+1
    // [149] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[$200]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo
    sta.z kc_sqr
    lda #>mulf_sqr1_lo
    sta.z kc_sqr+1
    // mulf_tables_cmp::@1
  b1:
    // for( byte* kc_sqr=mulf_sqr1_lo; kc_sqr<mulf_sqr1_lo+512*4; kc_sqr++)
    // [150] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z kc_sqr+1
    cmp #>mulf_sqr1_lo+$200*4
    bcc b2
    bne !+
    lda.z kc_sqr
    cmp #<mulf_sqr1_lo+$200*4
    bcc b2
  !:
    // [151] phi from mulf_tables_cmp::@1 to mulf_tables_cmp::@3 [phi:mulf_tables_cmp::@1->mulf_tables_cmp::@3]
    // mulf_tables_cmp::@3
    // print_str("multiply tables match!")
    // [152] call print_str 
    // [28] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [28] 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.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [153] phi from mulf_tables_cmp::@3 to mulf_tables_cmp::@6 [phi:mulf_tables_cmp::@3->mulf_tables_cmp::@6]
    // mulf_tables_cmp::@6
    // print_ln()
    // [154] call print_ln 
    // [23] phi from mulf_tables_cmp::@6 to print_ln [phi:mulf_tables_cmp::@6->print_ln]
    // [23] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@6->print_ln#0] -- register_copy 
    // [23] phi (byte*) print_line_cursor#45 = (byte*) 1024 [phi:mulf_tables_cmp::@6->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    // mulf_tables_cmp::@7
    // [155] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [156] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return]
    // [156] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- register_copy 
    // [156] phi (byte*) print_char_cursor#100 = (byte*~) print_char_cursor#213 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy 
    // mulf_tables_cmp::@return
    // }
    // [157] return 
    rts
    // mulf_tables_cmp::@2
  b2:
    // if(*kc_sqr != *asm_sqr)
    // [158] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@4 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 
    ldy #0
    lda (kc_sqr),y
    cmp (asm_sqr),y
    beq b4
    // mulf_tables_cmp::@5
    // *BGCOL = 2
    // [159] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // print_str("multiply table mismatch at ")
    // [160] call print_str 
    // [28] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [28] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    // mulf_tables_cmp::@8
    // print_word((word)asm_sqr)
    // [161] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
    // [162] call print_word 
    // [99] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
    // [99] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
    jsr print_word
    // [163] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@9 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@9]
    // mulf_tables_cmp::@9
    // print_str(" / ")
    // [164] call print_str 
    // [28] phi from mulf_tables_cmp::@9 to print_str [phi:mulf_tables_cmp::@9->print_str]
    // [28] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@9->print_str#0] -- register_copy 
    // [28] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@9->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str.str
    lda #>str2
    sta.z print_str.str+1
    jsr print_str
    // mulf_tables_cmp::@10
    // print_word((word)kc_sqr)
    // [165] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 
    lda.z kc_sqr
    sta.z print_word.w
    lda.z kc_sqr+1
    sta.z print_word.w+1
    // [166] call print_word 
    // [99] phi from mulf_tables_cmp::@10 to print_word [phi:mulf_tables_cmp::@10->print_word]
    // [99] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@10->print_word#0] -- register_copy 
    jsr print_word
    // [156] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
    // [156] phi (byte*) print_line_cursor#11 = (byte*) 1024 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    // [156] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy 
    rts
    // mulf_tables_cmp::@4
  b4:
    // asm_sqr++;
    // [167] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 
    inc.z asm_sqr
    bne !+
    inc.z asm_sqr+1
  !:
    // for( byte* kc_sqr=mulf_sqr1_lo; kc_sqr<mulf_sqr1_lo+512*4; kc_sqr++)
    // [168] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 
    inc.z kc_sqr
    bne !+
    inc.z kc_sqr+1
  !:
    // [149] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1]
    // [149] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1#0] -- register_copy 
    // [149] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1#1] -- register_copy 
    jmp b1
    str: .text "multiply tables match!"
    .byte 0
    str1: .text "multiply table mismatch at "
    .byte 0
    str2: .text " / "
    .byte 0
}
  // 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
    // asm
    // 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 !-
    // *mem = *mula_sqr1_lo
    // [170] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
    // *mem = *mula_sqr1_hi
    // [171] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
    // *mem = *mula_sqr2_lo
    // [172] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
    // *mem = *mula_sqr2_hi
    // [173] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
    // mulf_init_asm::@return
    // }
    // [174] return 
    rts
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    .label c = 6
    .label sqr1_hi = 7
    .label sqr = $e
    .label sqr1_lo = 4
    .label sqr2_hi = $c
    .label sqr2_lo = 9
    .label dir = $b
    // [176] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
    // [176] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [176] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_hi+1
    sta.z sqr1_hi
    lda #>mulf_sqr1_hi+1
    sta.z sqr1_hi+1
    // [176] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vbuc1 
    txa
    sta.z sqr
    sta.z sqr+1
    // [176] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    sta.z c
    // [176] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#4] -- pbuz1=pbuc1 
    lda #<mulf_sqr1_lo+1
    sta.z sqr1_lo
    lda #>mulf_sqr1_lo+1
    sta.z sqr1_lo+1
    // mulf_init::@1
  b1:
    // for(byte* sqr1_lo = mulf_sqr1_lo+1; sqr1_lo!=mulf_sqr1_lo+512; sqr1_lo++)
    // [177] if((byte*) mulf_init::sqr1_lo#2!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z sqr1_lo+1
    cmp #>mulf_sqr1_lo+$200
    bne b2
    lda.z sqr1_lo
    cmp #<mulf_sqr1_lo+$200
    bne b2
    // [178] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
    // [178] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [178] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@1->mulf_init::@5#1] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_hi
    sta.z sqr2_hi
    lda #>mulf_sqr2_hi
    sta.z sqr2_hi+1
    // [178] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 
    ldx #-1
    // [178] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@1->mulf_init::@5#3] -- pbuz1=pbuc1 
    lda #<mulf_sqr2_lo
    sta.z sqr2_lo
    lda #>mulf_sqr2_lo
    sta.z sqr2_lo+1
    // mulf_init::@5
  b5:
    // for(byte* sqr2_lo = mulf_sqr2_lo; sqr2_lo!=mulf_sqr2_lo+511; sqr2_lo++)
    // [179] if((byte*) mulf_init::sqr2_lo#2!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@6 -- pbuz1_neq_pbuc1_then_la1 
    lda.z sqr2_lo+1
    cmp #>mulf_sqr2_lo+$1ff
    bne b6
    lda.z sqr2_lo
    cmp #<mulf_sqr2_lo+$1ff
    bne b6
    // mulf_init::@7
    // *(mulf_sqr2_lo+511) = *(mulf_sqr1_lo+256)
    // [180] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    // Set the very last value g(511) = f(256)
    lda mulf_sqr1_lo+$100
    sta mulf_sqr2_lo+$1ff
    // *(mulf_sqr2_hi+511) = *(mulf_sqr1_hi+256)
    // [181] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
    // mulf_init::@return
    // }
    // [182] return 
    rts
    // mulf_init::@6
  b6:
    // *sqr2_lo = mulf_sqr1_lo[x_255]
    // [183] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) 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
    // *sqr2_hi++ = mulf_sqr1_hi[x_255]
    // [184] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda mulf_sqr1_hi,x
    sta (sqr2_hi),y
    // *sqr2_hi++ = mulf_sqr1_hi[x_255];
    // [185] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr2_hi
    bne !+
    inc.z sqr2_hi+1
  !:
    // x_255 = x_255 + dir
    // [186] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 
    txa
    clc
    adc.z dir
    tax
    // if(x_255==0)
    // [187] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b8
    // [189] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
    // [189] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 
    lda #1
    sta.z dir
    // [188] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9]
    // mulf_init::@9
    // [189] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
    // [189] phi (byte) mulf_init::dir#4 = (byte) mulf_init::dir#2 [phi:mulf_init::@9->mulf_init::@8#0] -- register_copy 
    // mulf_init::@8
  b8:
    // for(byte* sqr2_lo = mulf_sqr2_lo; sqr2_lo!=mulf_sqr2_lo+511; sqr2_lo++)
    // [190] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr2_lo
    bne !+
    inc.z sqr2_lo+1
  !:
    // [178] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
    // [178] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [178] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [178] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [178] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@8->mulf_init::@5#3] -- register_copy 
    jmp b5
    // mulf_init::@2
  b2:
    // if((++c&1)==0)
    // [191] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // ++c&1
    // [192] (byte~) mulf_init::$9 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 
    lda #1
    and.z c
    // if((++c&1)==0)
    // [193] if((byte~) mulf_init::$9!=(byte) 0) goto mulf_init::@3 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne b3
    // mulf_init::@4
    // x_2++;
    // [194] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx 
    inx
    // sqr++;
    // [195] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [196] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3]
    // [196] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#0] -- register_copy 
    // [196] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3#1] -- register_copy 
    // mulf_init::@3
  b3:
    // <sqr
    // [197] (byte~) mulf_init::$12 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 
    lda.z sqr
    // *sqr1_lo = <sqr
    // [198] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$12 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_lo),y
    // >sqr
    // [199] (byte~) mulf_init::$13 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 
    lda.z sqr+1
    // *sqr1_hi++ = >sqr
    // [200] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$13 -- _deref_pbuz1=vbuaa 
    sta (sqr1_hi),y
    // *sqr1_hi++ = >sqr;
    // [201] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr1_hi
    bne !+
    inc.z sqr1_hi+1
  !:
    // sqr = sqr + x_2
    // [202] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuxx 
    txa
    clc
    adc.z sqr
    sta.z sqr
    bcc !+
    inc.z sqr+1
  !:
    // for(byte* sqr1_lo = mulf_sqr1_lo+1; sqr1_lo!=mulf_sqr1_lo+512; sqr1_lo++)
    // [203] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 
    inc.z sqr1_lo
    bne !+
    inc.z sqr1_lo+1
  !:
    // [176] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
    // [176] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [176] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [176] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [176] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [176] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@3->mulf_init::@1#4] -- register_copy 
    jmp b1
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // memset(print_screen, ' ', 1000)
    // [205] call memset 
    // [207] phi from print_cls to memset [phi:print_cls->memset]
    jsr memset
    // print_cls::@return
    // }
    // [206] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = $400
    .label end = str+num
    .label dst = $c
    // [208] phi from memset to memset::@2 [phi:memset->memset::@2]
    // [208] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    // [208] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
    // [208] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    // memset::@2
  b2:
    // *dst = c
    // [209] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [210] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // memset::@1
    // [211] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2
    lda.z dst
    cmp #<end
    bne b2
    // memset::@return
    // }
    // [212] return 
    rts
}
  // File Data
  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
  str1: .text "*"
  .byte 0
  str2: .text " slow:"
  .byte 0
  str3: .text " / normal:"
  .byte 0
  str4: .text " / fast:"
  .byte 0

