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*) strlen::str)
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) @12
Culled Empty Block (label) @14
Culled Empty Block (label) @15
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) @16
Culled Empty Block (label) @17
Culled Empty Block (label) @18
Culled Empty Block (label) print_sword::@4
Culled Empty Block (label) @19
Culled Empty Block (label) print_sbyte::@4
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) @29
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) @37
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) @38
Culled Empty Block (label) mul8s::@5
Culled Empty Block (label) @39
Culled Empty Block (label) @40
Culled Empty Block (label) @41
Culled Empty Block (label) @42
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) @43
Culled Empty Block (label) @44
Culled Empty Block (label) mulf8u_prepared::@1
Culled Empty Block (label) @45
Culled Empty Block (label) mulf8u::@1
Culled Empty Block (label) @46
Culled Empty Block (label) @47
Culled Empty Block (label) mulf8s_prepared::@5
Culled Empty Block (label) @48
Culled Empty Block (label) mulf8s::mulf8s_prepare1_@return
Culled Empty Block (label) mulf8s::@1
Culled Empty Block (label) @49
Culled Empty Block (label) @50
Culled Empty Block (label) @51
Culled Empty Block (label) @52
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) @53
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) @55
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) @56
Culled Empty Block (label) mul8u_compare::@9
Culled Empty Block (label) @57
Culled Empty Block (label) @58
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) @59

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  to:@13

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
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
@13: 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:@60

(void()) print_str((byte*) print_str::str)
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

(void()) print_ln()
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

(void()) print_sword((signed word) print_sword::w)
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

(void()) print_sbyte((signed byte) print_sbyte::b)
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

(void()) print_word((word) print_word::w)
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

(void()) print_byte((byte) print_byte::b)
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 ← *((const byte*) print_hextab + (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 ← *((const byte*) print_hextab + (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

(void()) print_char((byte) print_char::ch)
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

(void()) print_cls()
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

(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
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 ← (word) 0
  (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2
  to:mul8u::@1
mul8u::@1: scope:[mul8u]  from mul8u mul8u::@4
  (word) mul8u::mb#5 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 )
  (word) mul8u::res#4 ← phi( mul8u/(word) mul8u::res#0 mul8u::@4/(word) mul8u::res#6 )
  (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 )
  (bool~) mul8u::$0 ← (byte) mul8u::a#3 != (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

(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
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

(void()) mulf_init()
mulf_init: scope:[mulf_init]  from main::@1
  (word) mulf_init::sqr#0 ← (word) 0
  (byte) mulf_init::x_2#0 ← (byte) 0
  (byte) mulf_init::c#0 ← (byte) 0
  (byte*) mulf_init::sqr1_hi#0 ← (const byte*) mulf_sqr1_hi+(number) 1
  (byte*) mulf_init::sqr1_lo#0 ← (const byte*) mulf_sqr1_lo+(number) 1
  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 )
  (bool~) mulf_init::$0 ← (byte*) mulf_init::sqr1_lo#2 != (const byte*) mulf_sqr1_lo+(number) $200
  if((bool~) mulf_init::$0) 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::$1 ← (byte) mulf_init::c#1 & (number) 1
  (bool~) mulf_init::$2 ← (number~) mulf_init::$1 == (number) 0
  (bool~) mulf_init::$3 ← ! (bool~) mulf_init::$2
  if((bool~) mulf_init::$3) goto mulf_init::@4
  to:mulf_init::@7
mulf_init::@3: scope:[mulf_init]  from mulf_init::@1
  (byte) mulf_init::x_255#0 ← (byte)(number) -1
  (byte) mulf_init::dir#0 ← (byte) $ff
  (byte*) mulf_init::sqr2_hi#0 ← (const byte*) mulf_sqr2_hi
  (byte*) mulf_init::sqr2_lo#0 ← (const byte*) mulf_sqr2_lo
  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::$4 ← < (word) mulf_init::sqr#3
  *((byte*) mulf_init::sqr1_lo#3) ← (byte~) mulf_init::$4
  (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3
  *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5
  (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  (word~) mulf_init::$6 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  (word) mulf_init::sqr#1 ← (word~) mulf_init::$6
  (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 )
  (bool~) mulf_init::$7 ← (byte*) mulf_init::sqr2_lo#2 != (const byte*) mulf_sqr2_lo+(number) $1ff
  if((bool~) mulf_init::$7) 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) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2)
  *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2)
  (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  (byte~) mulf_init::$8 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  (byte) mulf_init::x_255#1 ← (byte~) mulf_init::$8
  (bool~) mulf_init::$9 ← (byte) mulf_init::x_255#1 == (number) 0
  (bool~) mulf_init::$10 ← ! (bool~) mulf_init::$9
  if((bool~) mulf_init::$10) goto mulf_init::@12
  to:mulf_init::@15
mulf_init::@11: scope:[mulf_init]  from mulf_init::@9
  *((const byte*) mulf_sqr2_lo+(number) $1ff) ← *((const byte*) mulf_sqr1_lo+(number) $100)
  *((const byte*) mulf_sqr2_hi+(number) $1ff) ← *((const byte*) mulf_sqr1_hi+(number) $100)
  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

(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
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 )
  *((const byte*) mulf8u_prepare::memA) ← (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

(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
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 )
  *((const byte*) mulf8u_prepared::memB) ← (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)) { *((const byte*) mulf8u_prepared::memB), *((const byte*) mulf8u_prepared::resL) }
  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

(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
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

(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
mulf8s_prepared: scope:[mulf8s_prepared]  from mulf8s::@2
  (signed byte) mulf8s_prepared::b#1 ← phi( mulf8s::@2/(signed byte) mulf8s_prepared::b#0 )
  (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 ← *((const signed byte*) mulf8s_prepared::memA) < (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)) *((const signed byte*) mulf8s_prepared::memA)
  (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

(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
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 ← ((byte)) (signed byte) mulf8s::mulf8s_prepare1_a#1
  (byte) mulf8u_prepare::a#1 ← (byte~) mulf8s::mulf8s_prepare1_$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

(void()) main()
main: scope:[main]  from @60
  (byte*) print_char_cursor#144 ← phi( @60/(byte*) print_char_cursor#154 )
  (byte*) print_line_cursor#46 ← phi( @60/(byte*) print_line_cursor#56 )
  (byte*) print_screen#3 ← phi( @60/(byte*) print_screen#4 )
  *((const byte*) BGCOL) ← (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

(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
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 ← (word) 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 ← (byte) 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

(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
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 ← (signed word) 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 ← (signed byte) 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 ← (signed byte) 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

(void()) mulf_init_asm()
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!-  }
  *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo)
  *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi)
  *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo)
  *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi)
  to:mulf_init_asm::@return
mulf_init_asm::@return: scope:[mulf_init_asm]  from mulf_init_asm
  return 
  to:@return

(void()) mulf_tables_cmp()
mulf_tables_cmp: scope:[mulf_tables_cmp]  from main::@3
  (byte*) print_line_cursor#76 ← phi( main::@3/(byte*) print_line_cursor#47 )
  (byte*) print_char_cursor#165 ← phi( main::@3/(byte*) print_char_cursor#145 )
  (byte*) mulf_tables_cmp::asm_sqr#0 ← (const byte*) mula_sqr1_lo
  (byte*) mulf_tables_cmp::kc_sqr#0 ← (const byte*) mulf_sqr1_lo
  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#66 ← phi( mulf_tables_cmp/(byte*) print_line_cursor#76 mulf_tables_cmp::@4/(byte*) print_line_cursor#77 )
  (byte*) print_char_cursor#159 ← phi( mulf_tables_cmp/(byte*) print_char_cursor#165 mulf_tables_cmp::@4/(byte*) print_char_cursor#166 )
  (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 )
  (bool~) mulf_tables_cmp::$2 ← (byte*) mulf_tables_cmp::kc_sqr#2 < (const byte*) mulf_sqr1_lo+(number) $200*(number) 4
  if((bool~) mulf_tables_cmp::$2) 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#88 ← phi( mulf_tables_cmp::@1/(byte*) print_line_cursor#66 )
  (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::$3 ← *((byte*) mulf_tables_cmp::kc_sqr#3) != *((byte*) mulf_tables_cmp::asm_sqr#2)
  (bool~) mulf_tables_cmp::$4 ← ! (bool~) mulf_tables_cmp::$3
  if((bool~) mulf_tables_cmp::$4) 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#66 )
  (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#77 ← phi( mulf_tables_cmp::@2/(byte*) print_line_cursor#88 )
  (byte*) print_char_cursor#166 ← 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#89 ← phi( mulf_tables_cmp::@2/(byte*) print_line_cursor#88 )
  (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 )
  *((const byte*) BGCOL) ← (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#78 ← phi( mulf_tables_cmp::@7/(byte*) print_line_cursor#89 )
  (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::$6 ← ((word)) (byte*) mulf_tables_cmp::asm_sqr#4
  (word) print_word::w#1 ← (word~) mulf_tables_cmp::$6
  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#67 ← phi( mulf_tables_cmp::@12/(byte*) print_line_cursor#78 )
  (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#67 )
  (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::$9 ← ((word)) (byte*) mulf_tables_cmp::kc_sqr#5
  (word) print_word::w#2 ← (word~) mulf_tables_cmp::$9
  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

(void()) mul8u_compare()
mul8u_compare: scope:[mul8u_compare]  from main::@4
  (byte*) print_line_cursor#108 ← phi( main::@4/(byte*) print_line_cursor#6 )
  (byte*) print_char_cursor#188 ← 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#105 ← phi( mul8u_compare/(byte*) print_line_cursor#108 mul8u_compare::@10/(byte*) print_line_cursor#70 )
  (byte*) print_char_cursor#187 ← phi( mul8u_compare/(byte*) print_char_cursor#188 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#101 ← phi( mul8u_compare::@1/(byte*) print_line_cursor#105 mul8u_compare::@5/(byte*) print_line_cursor#81 )
  (byte*) print_char_cursor#185 ← phi( mul8u_compare::@1/(byte*) print_char_cursor#187 mul8u_compare::@5/(byte*) print_char_cursor#169 )
  (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#95 ← phi( mul8u_compare::@2/(byte*) print_line_cursor#101 )
  (byte*) print_char_cursor#183 ← phi( mul8u_compare::@2/(byte*) print_char_cursor#185 )
  (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#90 ← phi( mul8u_compare::@12/(byte*) print_line_cursor#95 )
  (byte*) print_char_cursor#179 ← phi( mul8u_compare::@12/(byte*) print_char_cursor#183 )
  (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#79 ← phi( mul8u_compare::@13/(byte*) print_line_cursor#90 )
  (byte*) print_char_cursor#174 ← phi( mul8u_compare::@13/(byte*) print_char_cursor#179 )
  (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 ← (byte) 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#68 ← phi( mul8u_compare::@14/(byte*) print_line_cursor#79 mul8u_compare::@6/(byte*) print_line_cursor#80 )
  (byte*) print_char_cursor#167 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#174 mul8u_compare::@6/(byte*) print_char_cursor#175 )
  (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#80 ← phi( mul8u_compare::@14/(byte*) print_line_cursor#79 )
  (byte*) print_char_cursor#175 ← phi( mul8u_compare::@14/(byte*) print_char_cursor#174 )
  (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#68 mul8u_compare::@7/(byte*) print_line_cursor#69 )
  (byte*) print_char_cursor#161 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#167 mul8u_compare::@7/(byte*) print_char_cursor#168 )
  (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#69 ← phi( mul8u_compare::@3/(byte*) print_line_cursor#68 )
  (byte*) print_char_cursor#168 ← phi( mul8u_compare::@3/(byte*) print_char_cursor#167 )
  (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#81 ← phi( mul8u_compare::@4/(byte*) print_line_cursor#60 )
  (byte*) print_char_cursor#169 ← 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 )
  *((const byte*) BGCOL) ← (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#70 ← phi( mul8u_compare::@5/(byte*) print_line_cursor#81 )
  (byte*) print_char_cursor#162 ← phi( mul8u_compare::@5/(byte*) print_char_cursor#169 )
  (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#70 )
  (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

(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
mul8u_error: scope:[mul8u_error]  from mul8u_compare::@8
  (byte*) print_line_cursor#113 ← 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#111 ← phi( mul8u_error/(byte*) print_line_cursor#113 )
  (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#109 ← phi( mul8u_error::@1/(byte*) print_line_cursor#111 )
  (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#106 ← phi( mul8u_error::@2/(byte*) print_line_cursor#109 )
  (word) mul8u_error::mf#7 ← phi( mul8u_error::@2/(word) mul8u_error::mf#8 )
  (word) mul8u_error::mn#5 ← phi( mul8u_error::@2/(word) mul8u_error::mn#6 )
  (word) mul8u_error::ms#3 ← phi( mul8u_error::@2/(word) mul8u_error::ms#4 )
  (byte) mul8u_error::b#1 ← phi( mul8u_error::@2/(byte) mul8u_error::b#2 )
  (byte*) print_char_cursor#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#102 ← phi( mul8u_error::@3/(byte*) print_line_cursor#106 )
  (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#96 ← phi( mul8u_error::@4/(byte*) print_line_cursor#102 )
  (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#91 ← phi( mul8u_error::@5/(byte*) print_line_cursor#96 )
  (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#82 ← phi( mul8u_error::@6/(byte*) print_line_cursor#91 )
  (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#71 ← phi( mul8u_error::@7/(byte*) print_line_cursor#82 )
  (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#71 )
  (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

(void()) mul8s_compare()
mul8s_compare: scope:[mul8s_compare]  from main::@5
  (byte*) print_line_cursor#83 ← phi( main::@5/(byte*) print_line_cursor#7 )
  (byte*) print_char_cursor#170 ← phi( main::@5/(byte*) print_char_cursor#25 )
  (signed byte) mul8s_compare::a#0 ← (signed byte) -$80
  to:mul8s_compare::@1
mul8s_compare::@1: scope:[mul8s_compare]  from mul8s_compare mul8s_compare::@6
  (byte*) print_line_cursor#72 ← phi( mul8s_compare/(byte*) print_line_cursor#83 mul8s_compare::@6/(byte*) print_line_cursor#84 )
  (byte*) print_char_cursor#163 ← phi( mul8s_compare/(byte*) print_char_cursor#170 mul8s_compare::@6/(byte*) print_char_cursor#171 )
  (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#97 ← phi( mul8s_compare::@1/(byte*) print_line_cursor#72 )
  (byte*) print_char_cursor#180 ← 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 ← (signed byte) -$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#72 )
  (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#93 ← phi( mul8s_compare::@2/(byte*) print_line_cursor#97 mul8s_compare::@9/(byte*) print_line_cursor#98 )
  (byte*) print_char_cursor#176 ← phi( mul8s_compare::@2/(byte*) print_char_cursor#180 mul8s_compare::@9/(byte*) print_char_cursor#181 )
  (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#103 ← phi( mul8s_compare::@4/(byte*) print_line_cursor#93 )
  (byte*) print_char_cursor#186 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#176 )
  (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#99 ← phi( mul8s_compare::@5/(byte*) print_line_cursor#103 )
  (byte*) print_char_cursor#184 ← phi( mul8s_compare::@5/(byte*) print_char_cursor#186 )
  (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#92 ← phi( mul8s_compare::@22/(byte*) print_line_cursor#99 )
  (byte*) print_char_cursor#182 ← phi( mul8s_compare::@22/(byte*) print_char_cursor#184 )
  (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#86 ← phi( mul8s_compare::@23/(byte*) print_line_cursor#92 )
  (byte*) print_char_cursor#178 ← phi( mul8s_compare::@23/(byte*) print_char_cursor#182 )
  (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 ← (byte) 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#84 ← phi( mul8s_compare::@4/(byte*) print_line_cursor#93 )
  (byte*) print_char_cursor#171 ← phi( mul8s_compare::@4/(byte*) print_char_cursor#176 )
  (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#74 ← phi( mul8s_compare::@12/(byte*) print_line_cursor#85 mul8s_compare::@24/(byte*) print_line_cursor#86 )
  (byte*) print_char_cursor#173 ← phi( mul8s_compare::@12/(byte*) print_char_cursor#177 mul8s_compare::@24/(byte*) print_char_cursor#178 )
  (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#85 ← phi( mul8s_compare::@24/(byte*) print_line_cursor#86 )
  (byte*) print_char_cursor#177 ← phi( mul8s_compare::@24/(byte*) print_char_cursor#178 )
  (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#73 mul8s_compare::@7/(byte*) print_line_cursor#74 )
  (byte*) print_char_cursor#164 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#172 mul8s_compare::@7/(byte*) print_char_cursor#173 )
  (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#73 ← phi( mul8s_compare::@7/(byte*) print_line_cursor#74 )
  (byte*) print_char_cursor#172 ← phi( mul8s_compare::@7/(byte*) print_char_cursor#173 )
  (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#98 ← phi( mul8s_compare::@8/(byte*) print_line_cursor#64 )
  (byte*) print_char_cursor#181 ← 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 )
  *((const byte*) BGCOL) ← (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

(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)
mul8s_error: scope:[mul8s_error]  from mul8s_compare::@14
  (byte*) print_line_cursor#114 ← 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#112 ← phi( mul8s_error/(byte*) print_line_cursor#114 )
  (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#110 ← phi( mul8s_error::@1/(byte*) print_line_cursor#112 )
  (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#107 ← phi( mul8s_error::@2/(byte*) print_line_cursor#110 )
  (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#104 ← phi( mul8s_error::@3/(byte*) print_line_cursor#107 )
  (signed word) mul8s_error::mf#6 ← phi( mul8s_error::@3/(signed word) mul8s_error::mf#7 )
  (signed word) mul8s_error::mn#4 ← phi( mul8s_error::@3/(signed word) mul8s_error::mn#5 )
  (signed word) mul8s_error::ms#2 ← phi( mul8s_error::@3/(signed word) mul8s_error::ms#3 )
  (byte*) print_char_cursor#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#100 ← phi( mul8s_error::@4/(byte*) print_line_cursor#104 )
  (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#94 ← phi( mul8s_error::@5/(byte*) print_line_cursor#100 )
  (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#87 ← phi( mul8s_error::@6/(byte*) print_line_cursor#94 )
  (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#75 ← phi( mul8s_error::@7/(byte*) print_line_cursor#87 )
  (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#75 )
  (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
@60: scope:[]  from @13
  (byte*) print_screen#4 ← phi( @13/(byte*) print_screen#0 )
  (byte*) print_char_cursor#154 ← phi( @13/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#56 ← phi( @13/(byte*) print_line_cursor#0 )
  call main 
  to:@61
@61: scope:[]  from @60
  (byte*) print_char_cursor#133 ← phi( @60/(byte*) print_char_cursor#27 )
  (byte*) print_line_cursor#44 ← phi( @60/(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 @61

SYMBOL TABLE SSA
(label) @13
(label) @60
(label) @61
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*)(number) $d021
(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:"
(const byte*) mula_sqr1_hi[(number) $200]  = { fill( $200, 0) }
(const byte*) mula_sqr1_lo[(number) $200]  = { fill( $200, 0) }
(const byte*) mula_sqr2_hi[(number) $200]  = { fill( $200, 0) }
(const byte*) mula_sqr2_lo[(number) $200]  = { fill( $200, 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
(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
(const signed byte*) mulf8s_prepared::memA = (signed byte*)(number) $fd
(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
(const byte*) mulf8u_prepare::memA = (byte*)(number) $fd
(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
(const byte*) mulf8u_prepared::memB = (byte*)(number) $ff
(const byte*) mulf8u_prepared::resL = (byte*)(number) $fe
(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()
(bool~) mulf_init::$0
(number~) mulf_init::$1
(bool~) mulf_init::$10
(bool~) mulf_init::$2
(bool~) mulf_init::$3
(byte~) mulf_init::$4
(byte~) mulf_init::$5
(word~) mulf_init::$6
(bool~) mulf_init::$7
(byte~) mulf_init::$8
(bool~) 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
(const byte*) mulf_init_asm::mem = (byte*)(number) $ff
(const byte*) mulf_sqr1_hi[(number) $200]  = { fill( $200, 0) }
(const byte*) mulf_sqr1_lo[(number) $200]  = { fill( $200, 0) }
(const byte*) mulf_sqr2_hi[(number) $200]  = { fill( $200, 0) }
(const byte*) mulf_sqr2_lo[(number) $200]  = { fill( $200, 0) }
(void()) mulf_tables_cmp()
(bool~) mulf_tables_cmp::$2
(bool~) mulf_tables_cmp::$3
(bool~) mulf_tables_cmp::$4
(word~) mulf_tables_cmp::$6
(word~) mulf_tables_cmp::$9
(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#19
(byte*) print_char_cursor#2
(byte*) print_char_cursor#20
(byte*) print_char_cursor#21
(byte*) print_char_cursor#22
(byte*) print_char_cursor#23
(byte*) print_char_cursor#24
(byte*) print_char_cursor#25
(byte*) print_char_cursor#26
(byte*) print_char_cursor#27
(byte*) print_char_cursor#28
(byte*) print_char_cursor#29
(byte*) print_char_cursor#3
(byte*) print_char_cursor#30
(byte*) print_char_cursor#31
(byte*) print_char_cursor#32
(byte*) print_char_cursor#33
(byte*) print_char_cursor#34
(byte*) print_char_cursor#35
(byte*) print_char_cursor#36
(byte*) print_char_cursor#37
(byte*) print_char_cursor#38
(byte*) print_char_cursor#39
(byte*) print_char_cursor#4
(byte*) print_char_cursor#40
(byte*) print_char_cursor#41
(byte*) print_char_cursor#42
(byte*) print_char_cursor#43
(byte*) print_char_cursor#44
(byte*) print_char_cursor#45
(byte*) print_char_cursor#46
(byte*) print_char_cursor#47
(byte*) print_char_cursor#48
(byte*) print_char_cursor#49
(byte*) print_char_cursor#5
(byte*) print_char_cursor#50
(byte*) print_char_cursor#51
(byte*) print_char_cursor#52
(byte*) print_char_cursor#53
(byte*) print_char_cursor#54
(byte*) print_char_cursor#55
(byte*) print_char_cursor#56
(byte*) print_char_cursor#57
(byte*) print_char_cursor#58
(byte*) print_char_cursor#59
(byte*) print_char_cursor#6
(byte*) print_char_cursor#60
(byte*) print_char_cursor#61
(byte*) print_char_cursor#62
(byte*) print_char_cursor#63
(byte*) print_char_cursor#64
(byte*) print_char_cursor#65
(byte*) print_char_cursor#66
(byte*) print_char_cursor#67
(byte*) print_char_cursor#68
(byte*) print_char_cursor#69
(byte*) print_char_cursor#7
(byte*) print_char_cursor#70
(byte*) print_char_cursor#71
(byte*) print_char_cursor#72
(byte*) print_char_cursor#73
(byte*) print_char_cursor#74
(byte*) print_char_cursor#75
(byte*) print_char_cursor#76
(byte*) print_char_cursor#77
(byte*) print_char_cursor#78
(byte*) print_char_cursor#79
(byte*) print_char_cursor#8
(byte*) print_char_cursor#80
(byte*) print_char_cursor#81
(byte*) print_char_cursor#82
(byte*) print_char_cursor#83
(byte*) print_char_cursor#84
(byte*) print_char_cursor#85
(byte*) print_char_cursor#86
(byte*) print_char_cursor#87
(byte*) print_char_cursor#88
(byte*) print_char_cursor#89
(byte*) print_char_cursor#9
(byte*) print_char_cursor#90
(byte*) print_char_cursor#91
(byte*) print_char_cursor#92
(byte*) print_char_cursor#93
(byte*) print_char_cursor#94
(byte*) print_char_cursor#95
(byte*) print_char_cursor#96
(byte*) print_char_cursor#97
(byte*) print_char_cursor#98
(byte*) print_char_cursor#99
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(const byte*) print_hextab[]  = (string) "0123456789abcdef"z
(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#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
(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) w= (byte)*(mulf8u_prepared::resL)
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 (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) 1 in (byte*) mulf_init::sqr1_hi#0 ← (const byte*) mulf_sqr1_hi+(number) 1
Adding number conversion cast (unumber) 1 in (byte*) mulf_init::sqr1_lo#0 ← (const byte*) mulf_sqr1_lo+(number) 1
Adding number conversion cast (unumber) $200 in (bool~) mulf_init::$0 ← (byte*) mulf_init::sqr1_lo#2 != (const byte*) mulf_sqr1_lo+(number) $200
Adding number conversion cast (unumber) 1 in (number~) mulf_init::$1 ← (byte) mulf_init::c#1 & (number) 1
Adding number conversion cast (unumber) mulf_init::$1 in (number~) mulf_init::$1 ← (byte) mulf_init::c#1 & (unumber)(number) 1
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$2 ← (unumber~) mulf_init::$1 == (number) 0
Adding number conversion cast (unumber) $1ff in (bool~) mulf_init::$7 ← (byte*) mulf_init::sqr2_lo#2 != (const byte*) mulf_sqr2_lo+(number) $1ff
Adding number conversion cast (unumber) 0 in (bool~) mulf_init::$9 ← (byte) mulf_init::x_255#1 == (number) 0
Adding number conversion cast (unumber) $100 in *((const byte*) mulf_sqr2_lo+(number) $1ff) ← *((const byte*) mulf_sqr1_lo+(number) $100)
Adding number conversion cast (unumber) $1ff in *((const byte*) mulf_sqr2_lo+(number) $1ff) ← *((const byte*) mulf_sqr1_lo+(unumber)(number) $100)
Adding number conversion cast (unumber) $100 in *((const byte*) mulf_sqr2_hi+(number) $1ff) ← *((const byte*) mulf_sqr1_hi+(number) $100)
Adding number conversion cast (unumber) $1ff in *((const byte*) mulf_sqr2_hi+(number) $1ff) ← *((const byte*) mulf_sqr1_hi+(unumber)(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 ← *((const signed byte*) mulf8s_prepared::memA) < (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 *((const byte*) BGCOL) ← (number) 5
Adding number conversion cast (unumber) 0 in (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (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 (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (number) 0
Adding number conversion cast (unumber) $200*4 in (bool~) mulf_tables_cmp::$2 ← (byte*) mulf_tables_cmp::kc_sqr#2 < (const byte*) mulf_sqr1_lo+(number) $200*(number) 4
Adding number conversion cast (unumber) 2 in *((const byte*) BGCOL) ← (number) 2
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 *((const byte*) BGCOL) ← (number) 2
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 (bool~) mul8s_compare::$3 ← (signed byte) mul8s_compare::b#2 != (number) -$80
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 *((const byte*) BGCOL) ← (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 (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 (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 (byte) mulf_init::dir#1 ← (unumber)(number) 1
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)*((const signed byte*) mulf8s_prepared::memA)
Inlining cast (byte~) mulf8s::mulf8s_prepare1_$0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#1
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 5
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 2
Inlining cast (word~) mulf_tables_cmp::$6 ← (word)(byte*) mulf_tables_cmp::asm_sqr#4
Inlining cast (word~) mulf_tables_cmp::$9 ← (word)(byte*) mulf_tables_cmp::kc_sqr#5
Inlining cast (byte) mul8u_compare::ok#1 ← (unumber)(number) 0
Inlining cast (byte) mul8u_compare::ok#2 ← (unumber)(number) 0
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 2
Inlining cast (byte) mul8s_compare::ok#1 ← (unumber)(number) 0
Inlining cast (byte) mul8s_compare::ok#2 ← (unumber)(number) 0
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 2
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 253
Simplifying constant pointer cast (byte*) 254
Simplifying constant pointer cast (byte*) 255
Simplifying constant pointer cast (signed byte*) 253
Simplifying constant pointer cast (byte*) 255
Simplifying constant pointer cast (byte*) 53281
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 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 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 $1ff
Simplifying constant integer cast 0
Simplifying constant integer cast $100
Simplifying constant integer cast $1ff
Simplifying constant integer cast $100
Simplifying constant integer cast $1ff
Simplifying constant integer cast 1
Simplifying constant integer cast *((const byte*) mulf8u_prepared::memB)
Simplifying constant integer cast *((const byte*) mulf8u_prepared::resL)
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 5
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
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 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) 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) 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 (word) $1ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $100
Finalized unsigned number type (word) $1ff
Finalized unsigned number type (word) $100
Finalized unsigned number type (word) $1ff
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 signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
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 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::$1 ← (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 [150] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [149] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0
Inversing boolean not [176] (bool~) mul8s::$4 ← (signed byte) mul8s::a#2 >= (signed byte) 0 from [175] (bool~) mul8s::$3 ← (signed byte) mul8s::a#2 < (signed byte) 0
Inversing boolean not [180] (bool~) mul8s::$6 ← (signed byte) mul8s::b#2 >= (signed byte) 0 from [179] (bool~) mul8s::$5 ← (signed byte) mul8s::b#2 < (signed byte) 0
Inversing boolean not [212] (bool~) mulf_init::$3 ← (byte~) mulf_init::$1 != (byte) 0 from [211] (bool~) mulf_init::$2 ← (byte~) mulf_init::$1 == (byte) 0
Inversing boolean not [240] (bool~) mulf_init::$10 ← (byte) mulf_init::x_255#1 != (byte) 0 from [239] (bool~) mulf_init::$9 ← (byte) mulf_init::x_255#1 == (byte) 0
Inversing boolean not [283] (bool~) mulf8s_prepared::$3 ← *((const signed byte*) mulf8s_prepared::memA) >= (signed byte) 0 from [282] (bool~) mulf8s_prepared::$2 ← *((const signed byte*) mulf8s_prepared::memA) < (signed byte) 0
Inversing boolean not [287] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#2 >= (signed byte) 0 from [286] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#2 < (signed byte) 0
Inversing boolean not [353] (bool~) muls8u::$1 ← (byte) muls8u::a#1 == (byte) 0 from [352] (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (byte) 0
Inversing boolean not [377] (bool~) muls8s::$2 ← (signed byte) muls8s::a#2 <= (signed byte) 0 from [376] (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (signed byte) 0
Inversing boolean not [414] (bool~) mulf_tables_cmp::$4 ← *((byte*) mulf_tables_cmp::kc_sqr#3) == *((byte*) mulf_tables_cmp::asm_sqr#2) from [413] (bool~) mulf_tables_cmp::$3 ← *((byte*) mulf_tables_cmp::kc_sqr#3) != *((byte*) mulf_tables_cmp::asm_sqr#2)
Inversing boolean not [480] (bool~) mul8u_compare::$6 ← (word) mul8u_compare::ms#1 == (word) mul8u_compare::mf#1 from [479] (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1
Inversing boolean not [484] (bool~) mul8u_compare::$8 ← (word) mul8u_compare::ms#2 == (word) mul8u_compare::mn#1 from [483] (bool~) mul8u_compare::$7 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1
Inversing boolean not [490] (bool~) mul8u_compare::$10 ← (byte) mul8u_compare::ok#3 != (byte) 0 from [489] (bool~) mul8u_compare::$9 ← (byte) mul8u_compare::ok#3 == (byte) 0
Inversing boolean not [618] (bool~) mul8s_compare::$8 ← (signed word) mul8s_compare::ms#1 == (signed word) mul8s_compare::mf#1 from [617] (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1
Inversing boolean not [624] (bool~) mul8s_compare::$10 ← (signed word) mul8s_compare::ms#2 == (signed word) mul8s_compare::mn#1 from [623] (bool~) mul8s_compare::$9 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1
Inversing boolean not [630] (bool~) mul8s_compare::$12 ← (byte) mul8s_compare::ok#3 != (byte) 0 from [629] (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#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 (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::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 (word) mulf_init::sqr#1 = (word~) mulf_init::$6 
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::$8 (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 
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#166 (byte*) print_char_cursor#147 
Alias (byte*) print_line_cursor#48 = (byte*) print_line_cursor#88 (byte*) print_line_cursor#66 (byte*) print_line_cursor#58 (byte*) print_line_cursor#77 (byte*) print_line_cursor#89 (byte*) print_line_cursor#78 (byte*) print_line_cursor#67 (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::$6 
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::$9 
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#174 = (byte*) print_char_cursor#183 (byte*) print_char_cursor#185 (byte*) print_char_cursor#179 (byte*) print_char_cursor#175 
Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#95 (byte*) print_line_cursor#90 (byte*) print_line_cursor#79 (byte*) print_line_cursor#80 
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#167 = (byte*) print_char_cursor#168 
Alias (byte*) print_line_cursor#68 = (byte*) print_line_cursor#69 
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#169 (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#81 (byte*) print_line_cursor#60 (byte*) print_line_cursor#70 (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#102 = (byte*) print_line_cursor#111 (byte*) print_line_cursor#113 (byte*) print_line_cursor#109 (byte*) print_line_cursor#106 (byte*) print_line_cursor#96 (byte*) print_line_cursor#91 (byte*) print_line_cursor#82 (byte*) print_line_cursor#71 (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#180 (byte*) print_char_cursor#163 
Alias (byte*) print_line_cursor#53 = (byte*) print_line_cursor#97 (byte*) print_line_cursor#72 (byte*) print_line_cursor#63 
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#171 = (byte*) print_char_cursor#186 (byte*) print_char_cursor#176 (byte*) print_char_cursor#184 (byte*) print_char_cursor#182 (byte*) print_char_cursor#178 (byte*) print_char_cursor#177 
Alias (byte*) print_line_cursor#103 = (byte*) print_line_cursor#93 (byte*) print_line_cursor#99 (byte*) print_line_cursor#92 (byte*) print_line_cursor#86 (byte*) print_line_cursor#84 (byte*) print_line_cursor#85 
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#172 = (byte*) print_char_cursor#173 
Alias (byte*) print_line_cursor#73 = (byte*) print_line_cursor#74 
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#181 (byte*) print_char_cursor#164 
Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#98 (byte*) print_line_cursor#64 
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#100 = (byte*) print_line_cursor#112 (byte*) print_line_cursor#114 (byte*) print_line_cursor#110 (byte*) print_line_cursor#107 (byte*) print_line_cursor#104 (byte*) print_line_cursor#94 (byte*) print_line_cursor#87 (byte*) print_line_cursor#75 (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#167 (byte*) print_char_cursor#174 
Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#68 (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#172 (byte*) print_char_cursor#171 
Alias (byte*) print_line_cursor#103 = (byte*) print_line_cursor#73 (byte*) print_line_cursor#54 
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#165 (byte*) print_char_cursor#145
Identical Phi Values (byte*) print_line_cursor#76 (byte*) print_line_cursor#27
Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#165
Identical Phi Values (byte*) print_line_cursor#48 (byte*) print_line_cursor#76
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#188 (byte*) print_char_cursor#24
Identical Phi Values (byte*) print_line_cursor#108 (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#187
Identical Phi Values (byte*) print_line_cursor#101 (byte*) print_line_cursor#105
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#102 (byte*) print_line_cursor#101
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#170 (byte*) print_char_cursor#25
Identical Phi Values (byte*) print_line_cursor#83 (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#103 (byte*) print_line_cursor#53
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#100 (byte*) print_line_cursor#103
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#187 (byte*) print_char_cursor#100
Identical Phi Values (byte*) print_line_cursor#105 (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#53 (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 [146] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
Simple Condition (bool~) mul8u::$3 [151] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4
Simple Condition (bool~) mul8s::$4 [177] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1
Simple Condition (bool~) mul8s::$6 [181] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2
Simple Condition (bool~) mulf_init::$0 [207] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
Simple Condition (bool~) mulf_init::$3 [213] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@4
Simple Condition (bool~) mulf_init::$7 [232] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@10
Simple Condition (bool~) mulf_init::$10 [241] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@12
Simple Condition (bool~) mulf8s_prepared::$3 [284] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1
Simple Condition (bool~) mulf8s_prepared::$5 [288] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2
Simple Condition (bool~) muls8u::$1 [354] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1
Simple Condition (bool~) muls8u::$2 [361] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@5
Simple Condition (bool~) muls8s::$0 [372] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@1
Simple Condition (bool~) muls8s::$2 [378] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@3
Simple Condition (bool~) muls8s::$3 [383] if((signed byte) muls8s::j#2!=(signed byte) muls8s::a#0) goto muls8s::@9
Simple Condition (bool~) muls8s::$5 [392] if((signed byte) muls8s::i#2!=(signed byte) muls8s::a#0) goto muls8s::@15
Simple Condition (bool~) mulf_tables_cmp::$2 [411] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@2
Simple Condition (bool~) mulf_tables_cmp::$4 [415] 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 [481] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
Simple Condition (bool~) mul8u_compare::$8 [485] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@4
Simple Condition (bool~) mul8u_compare::$10 [491] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5
Simple Condition (bool~) mul8u_compare::$12 [497] if((byte) mul8u_compare::b#1!=rangelast(0,$ff)) goto mul8u_compare::@2
Simple Condition (bool~) mul8u_compare::$13 [516] if((byte) mul8u_compare::a#1!=rangelast(0,$ff)) goto mul8u_compare::@1
Simple Condition (bool~) mul8s_compare::$2 [579] if((signed byte) mul8s_compare::a#10!=(signed byte) -$80) goto mul8s_compare::@2
Simple Condition (bool~) mul8s_compare::$3 [593] if((signed byte) mul8s_compare::b#10!=(signed byte) -$80) goto mul8s_compare::@5
Simple Condition (bool~) mul8s_compare::$8 [619] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@7
Simple Condition (bool~) mul8s_compare::$10 [625] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@8
Simple Condition (bool~) mul8s_compare::$12 [631] if((byte) mul8s_compare::ok#3!=(byte) 0) goto mul8s_compare::@9
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) print_line_cursor#0 = (byte*) 1024
Constant (const byte) print_char::ch#0 = '-'
Constant (const byte) print_char::ch#1 = ' '
Constant (const byte) print_char::ch#2 = '-'
Constant (const byte) print_char::ch#3 = ' '
Constant (const byte) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const word) mul8u::res#0 = 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::sqr1_hi#0 = mulf_sqr1_hi+1
Constant (const byte*) mulf_init::sqr1_lo#0 = mulf_sqr1_lo+1
Constant (const byte) mulf_init::x_255#0 = -1
Constant (const byte) mulf_init::dir#0 = $ff
Constant (const byte*) mulf_init::sqr2_hi#0 = mulf_sqr2_hi
Constant (const byte*) mulf_init::sqr2_lo#0 = mulf_sqr2_lo
Constant (const byte) mulf_init::dir#1 = 1
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*) mulf_tables_cmp::asm_sqr#0 = mula_sqr1_lo
Constant (const byte*) mulf_tables_cmp::kc_sqr#0 = mulf_sqr1_lo
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 void*) memset::str#0 = (void*)print_line_cursor#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) memset::$2 = (byte*)memset::str#0
Constant (const byte*) memset::dst#0 = (byte*)memset::str#0
Constant (const void*) memset::return#2 = memset::str#0
Successful SSA optimization Pass2ConstantIdentification
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 [495] mul8u_compare::b#1 ← ++ mul8u_compare::b#10 to ++
Resolved ranged comparison value [497] if(mul8u_compare::b#1!=rangelast(0,$ff)) goto mul8u_compare::@2 to (number) 0
Resolved ranged next value [514] mul8u_compare::a#1 ← ++ mul8u_compare::a#7 to ++
Resolved ranged comparison value [516] if(mul8u_compare::a#1!=rangelast(0,$ff)) goto mul8u_compare::@1 to (number) 0
Eliminating unused constant (const void*) memset::return#2
Successful SSA optimization PassNEliminateUnusedVars
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
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
Inlining Noop Cast [75] (byte~) mul8s::$10 ← (byte)(signed byte) mul8s::b#0 keeping mul8s::b#0
Inlining Noop Cast [79] (signed word) mul8s::return#0 ← (signed word)(word) mul8s::m#4 keeping mul8s::m#4
Inlining Noop Cast [81] (byte~) mul8s::$14 ← (byte)(signed byte) mul8s::a#0 keeping mul8s::a#0
Inlining Noop Cast [136] (byte~) mulf8s_prepared::$9 ← (byte)(signed byte) mulf8s_prepared::b#0 keeping mulf8s_prepared::b#0
Inlining Noop Cast [140] (signed word) mulf8s_prepared::return#0 ← (signed word)(word) mulf8s_prepared::m#4 keeping mulf8s_prepared::m#4
Inlining Noop Cast [142] (byte~) mulf8s_prepared::$13 ← (byte)*((const signed byte*) mulf8s_prepared::memA) keeping *(mulf8s_prepared::memA)
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [150] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 keeping mulf8s_prepared::m#4
Inlining Noop Cast [274] (signed word) mul8s::return#2 ← (signed word)(word) mul8s::m#4 keeping mul8s::m#4
Successful SSA optimization Pass2NopCastInlining
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 byte*) print_str::str#11
Inlining constant with var siblings (const byte*) print_str::str#12
Inlining constant with var siblings (const byte*) print_str::str#13
Inlining constant with var siblings (const byte*) print_str::str#14
Inlining constant with var siblings (const byte*) print_str::str#15
Inlining constant with var siblings (const byte) print_char::ch#0
Inlining constant with var siblings (const byte) print_char::ch#1
Inlining constant with var siblings (const byte) print_char::ch#2
Inlining constant with var siblings (const byte) print_char::ch#3
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::sqr1_hi#0
Inlining constant with var siblings (const byte*) mulf_init::sqr1_lo#0
Inlining constant with var siblings (const byte) mulf_init::x_255#0
Inlining constant with var siblings (const byte) mulf_init::dir#0
Inlining constant with var siblings (const byte*) mulf_init::sqr2_hi#0
Inlining constant with var siblings (const byte*) mulf_init::sqr2_lo#0
Inlining constant with var siblings (const byte) mulf_init::dir#1
Inlining constant with var siblings (const word) muls8u::m#0
Inlining constant with var siblings (const byte) muls8u::i#0
Inlining constant with var siblings (const signed word) muls8s::m#0
Inlining constant with var siblings (const signed byte) muls8s::i#0
Inlining constant with var siblings (const signed byte) muls8s::j#0
Inlining constant with var siblings (const byte*) mulf_tables_cmp::asm_sqr#0
Inlining constant with var siblings (const byte*) mulf_tables_cmp::kc_sqr#0
Inlining constant with var siblings (const byte) mul8u_compare::a#0
Inlining constant with var siblings (const byte) mul8u_compare::b#0
Inlining constant with var siblings (const byte) mul8u_compare::ok#0
Inlining constant with var siblings (const byte) mul8u_compare::ok#1
Inlining constant with var siblings (const byte) mul8u_compare::ok#2
Inlining constant with var siblings (const signed byte) mul8s_compare::a#0
Inlining constant with var siblings (const signed byte) mul8s_compare::b#0
Inlining constant with var siblings (const byte) mul8s_compare::ok#0
Inlining constant with var siblings (const byte) mul8s_compare::ok#1
Inlining constant with var siblings (const byte) mul8s_compare::ok#2
Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined mulf_init::sqr2_lo#0 = (const byte*) mulf_sqr2_lo
Constant inlined mulf_init::sqr2_hi#0 = (const byte*) mulf_sqr2_hi
Constant inlined mul8u_compare::ok#2 = (byte) 0
Constant inlined mul8u_compare::ok#1 = (byte) 0
Constant inlined mul8u_compare::ok#0 = (byte) 1
Constant inlined mul8s_compare::b#0 = (signed byte) -$80
Constant inlined mulf_init::dir#1 = (byte) 1
Constant inlined mulf_init::dir#0 = (byte) $ff
Constant inlined mulf_init::x_255#0 = (byte) -1
Constant inlined mulf_tables_cmp::kc_sqr#0 = (const byte*) mulf_sqr1_lo
Constant inlined mul8u_compare::b#0 = (byte) 0
Constant inlined mulf_init::x_2#0 = (byte) 0
Constant inlined print_line_cursor#0 = (byte*) 1024
Constant inlined mul8s_compare::ok#0 = (byte) 1
Constant inlined mul8s_compare::ok#1 = (byte) 0
Constant inlined muls8s::m#0 = (signed word) 0
Constant inlined muls8s::i#0 = (signed byte) 0
Constant inlined print_str::str#9 = (const string) str4
Constant inlined mul8u::res#0 = (word) 0
Constant inlined mulf_init::sqr1_hi#0 = (const byte*) mulf_sqr1_hi+(byte) 1
Constant inlined mul8s_compare::ok#2 = (byte) 0
Constant inlined mulf_init::sqr1_lo#0 = (const byte*) mulf_sqr1_lo+(byte) 1
Constant inlined print_str::str#4 = (const string) mul8u_compare::str
Constant inlined print_str::str#3 = (const string) mulf_tables_cmp::str2
Constant inlined print_str::str#2 = (const string) mulf_tables_cmp::str1
Constant inlined 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 print_str::str#5 = (const string) mul8u_error::str
Constant inlined mulf_init::c#0 = (byte) 0
Constant inlined print_str::str#13 = (const string) str2
Constant inlined print_str::str#12 = (const string) str1
Constant inlined print_str::str#11 = (const string) mul8s_error::str
Constant inlined print_str::str#10 = (const string) mul8s_compare::str
Constant inlined print_str::str#15 = (const string) str4
Constant inlined print_str::str#14 = (const string) str3
Constant inlined mul8u_compare::a#0 = (byte) 0
Constant inlined memset::$2 = (byte*)(const void*) memset::str#0
Constant inlined mul8s_compare::a#0 = (signed byte) -$80
Constant inlined mulf_init::sqr#0 = (word) 0
Constant inlined muls8u::i#0 = (byte) 0
Constant inlined mul8s_error::str1 = (const string) str1
Constant inlined mul8s_error::str2 = (const string) str2
Constant inlined mul8s_error::str3 = (const string) str3
Constant inlined muls8u::m#0 = (word) 0
Constant inlined mul8s_error::str4 = (const string) str4
Constant inlined print_char::ch#3 = (byte) ' '
Constant inlined print_char::ch#2 = (byte) '-'
Constant inlined muls8s::j#0 = (signed byte) 0
Constant inlined mulf_tables_cmp::asm_sqr#0 = (const byte*) mula_sqr1_lo
Constant inlined print_char::ch#1 = (byte) ' '
Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined mul8u_error::str1 = (const string) str1
Constant inlined mul8u_error::str2 = (const string) str2
Constant inlined mul8u_error::str3 = (const string) str3
Constant inlined mul8u_error::str4 = (const string) str4
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting 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 mul8s::@7(between mul8s::@6 and mul8s::@1)
Added new block during phi lifting mul8s::@8(between mul8s::@1 and mul8s::@2)
Added new block during phi lifting 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 mulf8s_prepared::@7(between mulf8s_prepared::@6 and mulf8s_prepared::@1)
Added new block during phi lifting mulf8s_prepared::@8(between mulf8s_prepared::@1 and mulf8s_prepared::@2)
Added new block during phi lifting muls8u::@10(between muls8u::@4 and muls8u::@1)
Added new block during phi lifting muls8s::@20(between muls8s::@14 and muls8s::@3)
Added new block during phi lifting muls8s::@21(between muls8s::@8 and muls8s::@3)
Added new block during phi lifting mul8u_compare::@18(between mul8u_compare::@10 and mul8u_compare::@1)
Added new block during phi lifting mul8u_compare::@19(between mul8u_compare::@5 and mul8u_compare::@2)
Added new block during phi lifting mul8u_compare::@20(between mul8u_compare::@3 and mul8u_compare::@4)
Added new block during phi lifting mul8s_compare::@26(between mul8s_compare::@7 and mul8s_compare::@8)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @13
Adding NOP phi() at start of @60
Adding NOP phi() at start of @61
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::@21
Adding NOP phi() at start of mul8s_compare::@2
Adding NOP phi() at start of mul8s_compare::@12
Adding NOP phi() at start of mul8s_compare::@13
Adding NOP phi() at start of mul8s_compare::@25
Adding NOP phi() at start of mul8s_error::@11
Adding NOP phi() at start of print_ln::@2
Adding NOP phi() at start of print_sword::@7
Adding NOP phi() at start of print_word::@2
Adding NOP phi() at start of print_byte::@2
Adding NOP phi() at start of print_sbyte::@7
Adding NOP phi() at start of mul8u::@3
Adding NOP phi() at start of mulf8s
Adding NOP phi() at start of mulf8s::@3
Adding NOP phi() at start of muls8s::@5
Adding NOP phi() at start of muls8s::@1
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 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::@1
CALL GRAPH
Calls in [] to main:3 
Calls in [main] to print_cls:7 mulf_init:9 mulf_init_asm:11 mulf_tables_cmp:13 mul8u_compare:15 mul8s_compare:17 
Calls in [mul8s_compare] to print_str:24 print_ln:27 muls8s:37 mulf8s:42 mul8s:47 mul8s_error:62 
Calls in [mul8s_error] to print_str:68 print_sbyte:71 print_str:73 print_sbyte:76 print_str:78 print_sword:81 print_str:83 print_sword:86 print_str:88 print_sword:91 print_ln:94 
Calls in [print_sword] to print_char:108 print_word:114 print_char:118 
Calls in [print_word] to print_byte:129 print_byte:133 
Calls in [print_byte] to print_char:141 print_char:146 
Calls in [print_sbyte] to print_char:163 print_byte:169 print_char:173 
Calls in [mul8s] to mul8u:180 
Calls in [mulf8s] to mulf8u_prepare:220 mulf8s_prepared:223 
Calls in [mulf8s_prepared] to mulf8u_prepared:228 
Calls in [mul8u_compare] to muls8u:280 mulf8u:285 mul8u:292 mul8u_error:308 print_str:316 print_ln:319 
Calls in [mul8u_error] to print_str:325 print_byte:329 print_str:331 print_byte:335 print_str:337 print_word:341 print_str:343 print_word:347 print_str:349 print_word:353 print_ln:356 
Calls in [mulf8u] to mulf8u_prepare:361 mulf8u_prepared:364 
Calls in [mulf_tables_cmp] to print_str:383 print_ln:385 print_str:392 print_word:396 print_str:398 print_word:402 
Calls in [print_cls] to memset:459 

Created 62 initial phi equivalence classes
Not coalescing [23] print_char_cursor#189 ← print_line_cursor#1
Coalesced [25] print_line_cursor#115 ← print_line_cursor#1
Coalesced [26] print_char_cursor#204 ← print_char_cursor#134
Coalesced [34] mul8s_compare::a#16 ← mul8s_compare::a#1
Coalesced [65] mul8s_compare::b#13 ← mul8s_compare::b#1
Coalesced [66] mul8s_compare::ok#5 ← mul8s_compare::ok#4
Not coalescing [67] print_char_cursor#190 ← print_line_cursor#1
Coalesced [70] print_sbyte::b#9 ← print_sbyte::b#1
Coalesced [72] print_char_cursor#191 ← print_char_cursor#19
Coalesced [75] print_sbyte::b#10 ← print_sbyte::b#2
Coalesced (already) [77] print_char_cursor#192 ← print_char_cursor#19
Coalesced [80] print_sword::w#10 ← print_sword::w#1
Coalesced (already) [82] print_char_cursor#193 ← print_char_cursor#19
Coalesced [85] print_sword::w#11 ← print_sword::w#2
Coalesced (already) [87] print_char_cursor#194 ← print_char_cursor#19
Coalesced [90] print_sword::w#12 ← print_sword::w#3
Coalesced (already) [92] print_line_cursor#116 ← print_line_cursor#1
Coalesced [93] print_char_cursor#205 ← print_char_cursor#19
Coalesced [98] print_line_cursor#119 ← print_line_cursor#45
Coalesced (already) [104] print_line_cursor#120 ← print_line_cursor#1
Coalesced [107] print_char_cursor#225 ← print_char_cursor#134
Coalesced [109] print_sword::w#14 ← print_sword::w#4
Coalesced [112] print_word::w#13 ← print_word::w#0
Coalesced [113] print_char_cursor#214 ← print_char_cursor#19
Coalesced (already) [117] print_char_cursor#224 ← print_char_cursor#134
Coalesced [120] print_sword::w#13 ← print_sword::w#0
Coalesced [127] print_byte::b#10 ← print_byte::b#1
Coalesced [128] print_char_cursor#218 ← print_char_cursor#142
Coalesced [131] print_byte::b#11 ← print_byte::b#2
Coalesced (already) [132] print_char_cursor#219 ← print_char_cursor#19
Coalesced [139] print_char::ch#7 ← print_char::ch#4
Coalesced (already) [140] print_char_cursor#220 ← print_char_cursor#143
Coalesced [144] print_char::ch#8 ← print_char::ch#5
Coalesced (already) [145] print_char_cursor#221 ← print_char_cursor#19
Coalesced [150] print_str::str#19 ← print_str::str#18
Coalesced (already) [151] print_char_cursor#202 ← print_char_cursor#155
Coalesced [158] print_str::str#20 ← print_str::str#0
Coalesced [159] print_char_cursor#203 ← print_char_cursor#1
Coalesced (already) [162] print_char_cursor#223 ← print_char_cursor#134
Coalesced [164] print_sbyte::b#12 ← print_sbyte::b#3
Coalesced [167] print_byte::b#9 ← print_byte::b#0
Coalesced (already) [168] print_char_cursor#217 ← print_char_cursor#19
Coalesced (already) [172] print_char_cursor#222 ← print_char_cursor#134
Coalesced [175] print_sbyte::b#11 ← print_sbyte::b#0
Coalesced [178] mul8u::b#3 ← mul8u::b#0
Coalesced [179] mul8u::a#8 ← mul8u::a#1
Coalesced [187] mul8s::m#7 ← mul8s::m#1
Coalesced [193] mul8s::m#10 ← mul8s::m#2
Coalesced [196] mul8s::m#9 ← mul8s::m#5
Coalesced [197] mul8s::m#8 ← mul8s::m#0
Coalesced [200] mul8u::a#10 ← mul8u::a#6
Coalesced [201] mul8u::mb#6 ← mul8u::mb#0
Coalesced [209] mul8u::res#9 ← mul8u::res#1
Coalesced [213] mul8u::a#11 ← mul8u::a#0
Coalesced [214] mul8u::res#7 ← mul8u::res#6
Coalesced [215] mul8u::mb#7 ← mul8u::mb#1
Coalesced (already) [216] mul8u::res#8 ← mul8u::res#2
Coalesced [219] mulf8u_prepare::a#3 ← mulf8u_prepare::a#1
Coalesced [227] mulf8u_prepared::b#3 ← mulf8u_prepared::b#1
Coalesced [235] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1
Coalesced [241] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2
Coalesced [244] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5
Coalesced [245] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0
Coalesced [260] muls8s::return#6 ← muls8s::m#3
Coalesced [265] muls8s::j#4 ← muls8s::j#1
Coalesced [266] muls8s::m#11 ← muls8s::m#1
Coalesced [270] muls8s::return#5 ← muls8s::m#5
Coalesced [273] muls8s::i#4 ← muls8s::i#1
Coalesced [274] muls8s::m#12 ← muls8s::m#2
Coalesced [290] mul8u::b#4 ← mul8u::b#1
Coalesced [291] mul8u::a#9 ← mul8u::a#2
Coalesced [315] print_char_cursor#195 ← print_char_cursor#100
Coalesced [317] print_line_cursor#117 ← print_line_cursor#11
Coalesced (already) [318] print_char_cursor#206 ← print_char_cursor#134
Coalesced [321] mul8u_compare::a#14 ← mul8u_compare::a#1
Coalesced [322] mul8u_compare::b#12 ← mul8u_compare::b#1
Coalesced [323] mul8u_compare::ok#5 ← mul8u_compare::ok#4
Coalesced (already) [324] print_char_cursor#196 ← print_char_cursor#100
Coalesced [327] print_byte::b#7 ← print_byte::b#3
Coalesced (already) [328] print_char_cursor#215 ← print_char_cursor#134
Coalesced (already) [330] print_char_cursor#197 ← print_char_cursor#19
Coalesced [333] print_byte::b#8 ← print_byte::b#4
Coalesced (already) [334] print_char_cursor#216 ← print_char_cursor#134
Coalesced (already) [336] print_char_cursor#198 ← print_char_cursor#19
Coalesced [339] print_word::w#8 ← print_word::w#3
Coalesced (already) [340] print_char_cursor#209 ← print_char_cursor#134
Coalesced (already) [342] print_char_cursor#199 ← print_char_cursor#19
Coalesced [345] print_word::w#9 ← print_word::w#4
Coalesced (already) [346] print_char_cursor#210 ← print_char_cursor#134
Coalesced (already) [348] print_char_cursor#200 ← print_char_cursor#19
Coalesced [351] print_word::w#10 ← print_word::w#5
Coalesced (already) [352] print_char_cursor#211 ← print_char_cursor#134
Coalesced (already) [354] print_line_cursor#118 ← print_line_cursor#11
Coalesced (already) [355] print_char_cursor#207 ← print_char_cursor#19
Coalesced [360] mulf8u_prepare::a#4 ← mulf8u_prepare::a#0
Coalesced [363] mulf8u_prepared::b#4 ← mulf8u_prepared::b#0
Coalesced [372] muls8u::return#5 ← muls8u::m#3
Coalesced [377] muls8u::i#4 ← muls8u::i#1
Coalesced [378] muls8u::m#6 ← muls8u::m#1
Coalesced (already) [384] print_char_cursor#208 ← print_char_cursor#134
Not coalescing [386] print_char_cursor#226 ← print_line_cursor#1
Coalesced (already) [387] print_line_cursor#121 ← print_line_cursor#1
Coalesced [394] print_word::w#11 ← print_word::w#1
Coalesced (already) [395] print_char_cursor#212 ← print_char_cursor#134
Coalesced (already) [397] print_char_cursor#201 ← print_char_cursor#19
Coalesced [400] print_word::w#12 ← print_word::w#2
Coalesced (already) [401] print_char_cursor#213 ← print_char_cursor#134
Coalesced (already) [403] print_char_cursor#227 ← print_char_cursor#19
Coalesced [406] mulf_tables_cmp::kc_sqr#9 ← mulf_tables_cmp::kc_sqr#1
Coalesced [407] mulf_tables_cmp::asm_sqr#7 ← mulf_tables_cmp::asm_sqr#1
Coalesced [431] mulf_init::sqr2_lo#6 ← mulf_init::sqr2_lo#1
Coalesced [432] mulf_init::x_255#6 ← mulf_init::x_255#1
Coalesced [433] mulf_init::sqr2_hi#6 ← mulf_init::sqr2_hi#1
Coalesced [434] mulf_init::dir#5 ← mulf_init::dir#4
Coalesced (already) [435] mulf_init::dir#6 ← mulf_init::dir#2
Coalesced [441] mulf_init::sqr#9 ← mulf_init::sqr#2
Coalesced [442] mulf_init::x_2#8 ← mulf_init::x_2#1
Coalesced [451] mulf_init::sqr1_lo#6 ← mulf_init::sqr1_lo#1
Coalesced [452] mulf_init::c#6 ← mulf_init::c#1
Coalesced [453] mulf_init::sqr#7 ← mulf_init::sqr#1
Coalesced [454] mulf_init::sqr1_hi#6 ← mulf_init::sqr1_hi#1
Coalesced [455] mulf_init::x_2#6 ← mulf_init::x_2#2
Coalesced [456] mulf_init::sqr#8 ← mulf_init::sqr#4
Coalesced (already) [457] mulf_init::x_2#7 ← mulf_init::x_2#3
Coalesced [470] memset::dst#4 ← memset::dst#1
Coalesced down to 39 phi equivalence classes
Culled Empty Block (label) @13
Culled Empty Block (label) @61
Culled Empty Block (label) main::@6
Culled Empty Block (label) mul8s_compare::@21
Culled Empty Block (label) mul8s_compare::@2
Culled Empty Block (label) mul8s_compare::@13
Culled Empty Block (label) mul8s_compare::@25
Culled Empty Block (label) mul8s_error::@11
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_sword::@6
Culled Empty Block (label) print_sword::@7
Culled Empty Block (label) print_word::@2
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_sbyte::@6
Culled Empty Block (label) print_sbyte::@7
Culled Empty Block (label) mul8s::@8
Culled Empty Block (label) mul8s::@7
Culled Empty Block (label) mul8u::@3
Culled Empty Block (label) mul8u::@10
Culled Empty Block (label) mulf8s::@3
Culled Empty Block (label) mulf8s_prepared::@8
Culled Empty Block (label) mulf8s_prepared::@7
Culled Empty Block (label) muls8s::@5
Culled Empty Block (label) muls8s::@21
Culled Empty Block (label) muls8s::@1
Culled Empty Block (label) muls8s::@20
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) 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::@1
Renumbering block @60 to @1
Renumbering block memset::@4 to memset::@1
Renumbering block memset::@5 to memset::@2
Renumbering block print_sword::@5 to print_sword::@4
Renumbering block print_sbyte::@5 to print_sbyte::@4
Renumbering block mul8u::@4 to mul8u::@3
Renumbering block mul8u::@7 to mul8u::@4
Renumbering block mul8s::@6 to mul8s::@5
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 mulf8s_prepared::@6 to mulf8s_prepared::@5
Renumbering block mulf8s::@2 to mulf8s::@1
Renumbering block mulf8s::@4 to mulf8s::@2
Renumbering block muls8u::@4 to muls8u::@2
Renumbering block muls8u::@5 to muls8u::@3
Renumbering block muls8s::@3 to muls8s::@1
Renumbering block muls8s::@4 to muls8s::@2
Renumbering block muls8s::@8 to muls8s::@3
Renumbering block muls8s::@9 to muls8s::@4
Renumbering block muls8s::@14 to muls8s::@5
Renumbering block muls8s::@15 to muls8s::@6
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::@2
Renumbering block mul8s_compare::@4 to mul8s_compare::@3
Renumbering block mul8s_compare::@5 to mul8s_compare::@4
Renumbering block mul8s_compare::@6 to mul8s_compare::@5
Renumbering block mul8s_compare::@7 to mul8s_compare::@6
Renumbering block mul8s_compare::@8 to mul8s_compare::@7
Renumbering block mul8s_compare::@9 to mul8s_compare::@8
Renumbering block mul8s_compare::@12 to mul8s_compare::@9
Renumbering block mul8s_compare::@14 to mul8s_compare::@10
Renumbering block mul8s_compare::@20 to mul8s_compare::@11
Renumbering block mul8s_compare::@22 to mul8s_compare::@12
Renumbering block mul8s_compare::@23 to mul8s_compare::@13
Renumbering block mul8s_compare::@24 to mul8s_compare::@14
Renumbering block mul8s_compare::@26 to mul8s_compare::@15
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::@11
Adding NOP phi() at start of mul8s_compare::@9
Adding NOP phi() at start of mul8s_compare::@15
Adding NOP phi() at start of mul8s_error::@2
Adding NOP phi() at start of mul8s_error::@4
Adding NOP phi() at start of mul8s_error::@6
Adding NOP phi() at start of mul8s_error::@8
Adding NOP phi() at start of mul8s_error::@10
Adding NOP phi() at start of print_sword::@3
Adding NOP phi() at start of print_sword::@1
Adding NOP phi() at start of print_sbyte::@3
Adding NOP phi() at start of print_sbyte::@1
Adding NOP phi() at start of mulf8s
Adding NOP phi() at start of mul8u_compare
Adding NOP phi() at start of mul8u_compare::@6
Adding NOP phi() at start of mul8u_compare::@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 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()

(void()) main()
main: scope:[main]  from @1
  [4] *((const byte*) BGCOL) ← (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

(void()) mul8s_compare()
mul8s_compare: scope:[mul8s_compare]  from main::@5
  [17] phi()
  to:mul8s_compare::@1
mul8s_compare::@1: scope:[mul8s_compare]  from mul8s_compare mul8s_compare::@5
  [18] (signed byte) mul8s_compare::a#10 ← phi( mul8s_compare/(signed byte) -$80 mul8s_compare::@5/(signed byte) mul8s_compare::a#1 )
  [19] if((signed byte) mul8s_compare::a#10!=(signed byte) -$80) goto mul8s_compare::@3
  to:mul8s_compare::@2
mul8s_compare::@2: scope:[mul8s_compare]  from mul8s_compare::@1
  [20] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1
  [21] call print_str 
  to:mul8s_compare::@11
mul8s_compare::@11: scope:[mul8s_compare]  from mul8s_compare::@2
  [22] phi()
  [23] call print_ln 
  to:mul8s_compare::@return
mul8s_compare::@return: scope:[mul8s_compare]  from mul8s_compare::@10 mul8s_compare::@11
  [24] return 
  to:@return
mul8s_compare::@3: scope:[mul8s_compare]  from mul8s_compare::@1 mul8s_compare::@8
  [25] (signed byte) mul8s_compare::b#10 ← phi( mul8s_compare::@1/(signed byte) -$80 mul8s_compare::@8/(signed byte) mul8s_compare::b#1 )
  [26] if((signed byte) mul8s_compare::b#10!=(signed byte) -$80) goto mul8s_compare::@4
  to:mul8s_compare::@5
mul8s_compare::@5: scope:[mul8s_compare]  from mul8s_compare::@3
  [27] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#10
  to:mul8s_compare::@1
mul8s_compare::@4: scope:[mul8s_compare]  from mul8s_compare::@3
  [28] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#10
  [29] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10
  [30] call muls8s 
  [31] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0
  to:mul8s_compare::@12
mul8s_compare::@12: scope:[mul8s_compare]  from mul8s_compare::@4
  [32] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2
  [33] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#10
  [34] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10
  [35] call mulf8s 
  [36] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
  to:mul8s_compare::@13
mul8s_compare::@13: scope:[mul8s_compare]  from mul8s_compare::@12
  [37] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2
  [38] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#10
  [39] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10
  [40] call mul8s 
  to:mul8s_compare::@14
mul8s_compare::@14: scope:[mul8s_compare]  from mul8s_compare::@13
  [41] (signed word) mul8s_compare::mn#0 ← (signed word)(word) mul8s::m#4
  [42] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@6
  to:mul8s_compare::@9
mul8s_compare::@9: scope:[mul8s_compare]  from mul8s_compare::@14
  [43] phi()
  to:mul8s_compare::@6
mul8s_compare::@6: scope:[mul8s_compare]  from mul8s_compare::@14 mul8s_compare::@9
  [44] (byte) mul8s_compare::ok#4 ← phi( mul8s_compare::@9/(byte) 0 mul8s_compare::@14/(byte) 1 )
  [45] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@15
  to:mul8s_compare::@7
mul8s_compare::@15: scope:[mul8s_compare]  from mul8s_compare::@6
  [46] phi()
  to:mul8s_compare::@7
mul8s_compare::@7: scope:[mul8s_compare]  from mul8s_compare::@15 mul8s_compare::@6
  [47] (byte) mul8s_compare::ok#3 ← phi( mul8s_compare::@6/(byte) 0 mul8s_compare::@15/(byte) mul8s_compare::ok#4 )
  [48] if((byte) mul8s_compare::ok#3!=(byte) 0) goto mul8s_compare::@8
  to:mul8s_compare::@10
mul8s_compare::@10: scope:[mul8s_compare]  from mul8s_compare::@7
  [49] *((const byte*) BGCOL) ← (byte) 2
  [50] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#10
  [51] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10
  [52] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0
  [53] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0
  [54] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0
  [55] call mul8s_error 
  to:mul8s_compare::@return
mul8s_compare::@8: scope:[mul8s_compare]  from mul8s_compare::@7
  [56] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10
  to:mul8s_compare::@3

(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)
mul8s_error: scope:[mul8s_error]  from mul8s_compare::@10
  [57] (byte*) print_char_cursor#190 ← (byte*) print_line_cursor#1
  [58] call print_str 
  to:mul8s_error::@1
mul8s_error::@1: scope:[mul8s_error]  from mul8s_error
  [59] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0
  [60] call print_sbyte 
  to:mul8s_error::@2
mul8s_error::@2: scope:[mul8s_error]  from mul8s_error::@1
  [61] phi()
  [62] call print_str 
  to:mul8s_error::@3
mul8s_error::@3: scope:[mul8s_error]  from mul8s_error::@2
  [63] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0
  [64] call print_sbyte 
  to:mul8s_error::@4
mul8s_error::@4: scope:[mul8s_error]  from mul8s_error::@3
  [65] phi()
  [66] call print_str 
  to:mul8s_error::@5
mul8s_error::@5: scope:[mul8s_error]  from mul8s_error::@4
  [67] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0
  [68] call print_sword 
  to:mul8s_error::@6
mul8s_error::@6: scope:[mul8s_error]  from mul8s_error::@5
  [69] phi()
  [70] call print_str 
  to:mul8s_error::@7
mul8s_error::@7: scope:[mul8s_error]  from mul8s_error::@6
  [71] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0
  [72] call print_sword 
  to:mul8s_error::@8
mul8s_error::@8: scope:[mul8s_error]  from mul8s_error::@7
  [73] phi()
  [74] call print_str 
  to:mul8s_error::@9
mul8s_error::@9: scope:[mul8s_error]  from mul8s_error::@8
  [75] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0
  [76] call print_sword 
  to:mul8s_error::@10
mul8s_error::@10: scope:[mul8s_error]  from mul8s_error::@9
  [77] phi()
  [78] call print_ln 
  to:mul8s_error::@return
mul8s_error::@return: scope:[mul8s_error]  from mul8s_error::@10
  [79] return 
  to:@return

(void()) print_ln()
print_ln: scope:[print_ln]  from mul8s_compare::@11 mul8s_error::@10 mul8u_compare::@13 mul8u_error::@10 mulf_tables_cmp::@6
  [80] (byte*) print_char_cursor#135 ← phi( mul8s_compare::@11/(byte*) print_char_cursor#134 mul8s_error::@10/(byte*) print_char_cursor#19 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 )
  [80] (byte*) print_line_cursor#45 ← phi( mul8s_compare::@11/(byte*) print_line_cursor#1 mul8s_error::@10/(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
  [81] (byte*) print_line_cursor#23 ← phi( print_ln/(byte*) print_line_cursor#45 print_ln::@1/(byte*) print_line_cursor#1 )
  [82] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28
  [83] 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
  [84] return 
  to:@return

(void()) print_sword((signed word) print_sword::w)
print_sword: scope:[print_sword]  from mul8s_error::@5 mul8s_error::@7 mul8s_error::@9
  [85] (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 )
  [86] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1
  to:print_sword::@3
print_sword::@3: scope:[print_sword]  from print_sword
  [87] phi()
  [88] call print_char 
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword::@3 print_sword::@4
  [89] (signed word) print_sword::w#6 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#4 )
  [90] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6
  [91] call print_word 
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@2
  [92] return 
  to:@return
print_sword::@1: scope:[print_sword]  from print_sword
  [93] phi()
  [94] call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@1
  [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4
  to:print_sword::@2

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3
  [96] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#134 print_sbyte::@3/(byte*) print_char_cursor#134 print_sword::@1/(byte*) print_char_cursor#134 print_sword::@3/(byte*) print_char_cursor#134 )
  [96] (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_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
  [97] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6
  [98] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [99] return 
  to:@return

(void()) print_word((word) print_word::w)
print_word: scope:[print_word]  from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@10 mulf_tables_cmp::@8 print_sword::@2
  [100] (byte*) print_char_cursor#142 ← phi( mul8u_error::@5/(byte*) print_char_cursor#134 mul8u_error::@7/(byte*) print_char_cursor#134 mul8u_error::@9/(byte*) print_char_cursor#134 mulf_tables_cmp::@8/(byte*) print_char_cursor#134 mulf_tables_cmp::@10/(byte*) print_char_cursor#134 print_sword::@2/(byte*) print_char_cursor#19 )
  [100] (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 print_sword::@2/(word) print_word::w#0 )
  [101] (byte) print_byte::b#1 ← > (word) print_word::w#6
  [102] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [103] (byte) print_byte::b#2 ← < (word) print_word::w#6
  [104] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [105] return 
  to:@return

(void()) print_byte((byte) print_byte::b)
print_byte: scope:[print_byte]  from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1
  [106] (byte*) print_char_cursor#143 ← phi( mul8u_error::@1/(byte*) print_char_cursor#134 mul8u_error::@3/(byte*) print_char_cursor#134 print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#19 )
  [106] (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 )
  [107] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4
  [108] (byte) print_char::ch#4 ← *((const byte*) print_hextab + (byte~) print_byte::$0)
  [109] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f
  [111] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2)
  [112] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [113] return 
  to:@return

(void()) print_str((byte*) print_str::str)
print_str: scope:[print_str]  from mul8s_compare::@2 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 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
  [114] (byte*) print_char_cursor#155 ← phi( mul8s_compare::@2/(byte*) print_char_cursor#189 mul8s_error/(byte*) print_char_cursor#190 mul8s_error::@2/(byte*) print_char_cursor#19 mul8s_error::@4/(byte*) print_char_cursor#19 mul8s_error::@6/(byte*) print_char_cursor#19 mul8s_error::@8/(byte*) print_char_cursor#19 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 )
  [114] (byte*) print_str::str#18 ← phi( mul8s_compare::@2/(const string) mul8s_compare::str mul8s_error/(const string) mul8s_error::str mul8s_error::@2/(const string) str1 mul8s_error::@4/(const string) str2 mul8s_error::@6/(const string) str3 mul8s_error::@8/(const string) str4 mul8u_compare::@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
  [115] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#155 print_str::@2/(byte*) print_char_cursor#1 )
  [115] (byte*) print_str::str#16 ← phi( print_str/(byte*) print_str::str#18 print_str::@2/(byte*) print_str::str#0 )
  [116] 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
  [117] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [118] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16)
  [119] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134
  [120] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16
  to:print_str::@1

(void()) print_sbyte((signed byte) print_sbyte::b)
print_sbyte: scope:[print_sbyte]  from mul8s_error::@1 mul8s_error::@3
  [121] (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 )
  [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1
  to:print_sbyte::@3
print_sbyte::@3: scope:[print_sbyte]  from print_sbyte
  [123] phi()
  [124] call print_char 
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@3 print_sbyte::@4
  [125] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 )
  [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5
  [127] call print_byte 
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@2
  [128] return 
  to:@return
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte
  [129] phi()
  [130] call print_char 
  to:print_sbyte::@4
print_sbyte::@4: scope:[print_sbyte]  from print_sbyte::@1
  [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3
  to:print_sbyte::@2

(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
mul8s: scope:[mul8s]  from mul8s_compare::@13
  [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0
  [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0
  [134] call mul8u 
  [135] (word) mul8u::return#2 ← (word) mul8u::res#2
  to:mul8s::@5
mul8s::@5: scope:[mul8s]  from mul8s
  [136] (word) mul8s::m#0 ← (word) mul8u::return#2
  [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1
  to:mul8s::@3
mul8s::@3: scope:[mul8s]  from mul8s::@5
  [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0
  [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0
  [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16
  to:mul8s::@1
mul8s::@1: scope:[mul8s]  from mul8s::@3 mul8s::@5
  [141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@5/(word) mul8s::m#0 )
  [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2
  to:mul8s::@4
mul8s::@4: scope:[mul8s]  from mul8s::@1
  [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5
  [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0
  [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17
  to:mul8s::@2
mul8s::@2: scope:[mul8s]  from mul8s::@1 mul8s::@4
  [146] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 )
  to:mul8s::@return
mul8s::@return: scope:[mul8s]  from mul8s::@2
  [147] return 
  to:@return

(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
mul8u: scope:[mul8u]  from mul8s mul8u_compare::@11
  [148] (byte) mul8u::a#6 ← phi( mul8s/(byte) mul8u::a#1 mul8u_compare::@11/(byte) mul8u::a#2 )
  [148] (byte) mul8u::b#2 ← phi( mul8s/(byte) mul8u::b#0 mul8u_compare::@11/(byte) mul8u::b#1 )
  [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2
  to:mul8u::@1
mul8u::@1: scope:[mul8u]  from mul8u mul8u::@3
  [150] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
  [150] (word) mul8u::res#2 ← phi( mul8u/(word) 0 mul8u::@3/(word) mul8u::res#6 )
  [150] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
  [151] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
  to:mul8u::@return
mul8u::@return: scope:[mul8u]  from mul8u::@1
  [152] return 
  to:@return
mul8u::@2: scope:[mul8u]  from mul8u::@1
  [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
  [154] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
  to:mul8u::@4
mul8u::@4: scope:[mul8u]  from mul8u::@2
  [155] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
  to:mul8u::@3
mul8u::@3: scope:[mul8u]  from mul8u::@2 mul8u::@4
  [156] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
  [157] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
  [158] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
  to:mul8u::@1

(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
mulf8s: scope:[mulf8s]  from mul8s_compare::@12
  [159] phi()
  to:mulf8s::mulf8s_prepare1
mulf8s::mulf8s_prepare1: scope:[mulf8s]  from mulf8s
  [160] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0
  [161] call mulf8u_prepare 
  to:mulf8s::@1
mulf8s::@1: scope:[mulf8s]  from mulf8s::mulf8s_prepare1
  [162] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0
  [163] call mulf8s_prepared 
  to:mulf8s::@2
mulf8s::@2: scope:[mulf8s]  from mulf8s::@1
  [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4
  to:mulf8s::@return
mulf8s::@return: scope:[mulf8s]  from mulf8s::@2
  [165] return 
  to:@return

(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
mulf8s_prepared: scope:[mulf8s_prepared]  from mulf8s::@1
  [166] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0
  [167] call mulf8u_prepared 
  [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
  to:mulf8s_prepared::@5
mulf8s_prepared::@5: scope:[mulf8s_prepared]  from mulf8s_prepared
  [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
  [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1
  to:mulf8s_prepared::@3
mulf8s_prepared::@3: scope:[mulf8s_prepared]  from mulf8s_prepared::@5
  [171] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0
  [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0
  [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
  to:mulf8s_prepared::@1
mulf8s_prepared::@1: scope:[mulf8s_prepared]  from mulf8s_prepared::@3 mulf8s_prepared::@5
  [174] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 )
  [175] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2
  to:mulf8s_prepared::@4
mulf8s_prepared::@4: scope:[mulf8s_prepared]  from mulf8s_prepared::@1
  [176] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5
  [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA)
  [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
  to:mulf8s_prepared::@2
mulf8s_prepared::@2: scope:[mulf8s_prepared]  from mulf8s_prepared::@1 mulf8s_prepared::@4
  [179] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
  to:mulf8s_prepared::@return
mulf8s_prepared::@return: scope:[mulf8s_prepared]  from mulf8s_prepared::@2
  [180] return 
  to:@return

(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
mulf8u_prepared: scope:[mulf8u_prepared]  from mulf8s_prepared mulf8u::@1
  [181] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#1 mulf8u::@1/(byte) mulf8u_prepared::b#0 )
  [182] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#2
  asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  }
  [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL)
  to:mulf8u_prepared::@return
mulf8u_prepared::@return: scope:[mulf8u_prepared]  from mulf8u_prepared
  [185] return 
  to:@return

(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
mulf8u_prepare: scope:[mulf8u_prepare]  from mulf8s::mulf8s_prepare1 mulf8u
  [186] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#1 mulf8u/(byte) mulf8u_prepare::a#0 )
  [187] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#2
  asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  }
  to:mulf8u_prepare::@return
mulf8u_prepare::@return: scope:[mulf8u_prepare]  from mulf8u_prepare
  [189] return 
  to:@return

(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
muls8s: scope:[muls8s]  from mul8s_compare::@4
  [190] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@5
  to:muls8s::@2
muls8s::@2: scope:[muls8s]  from muls8s
  [191] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1
  to:muls8s::@3
muls8s::@3: scope:[muls8s]  from muls8s::@2 muls8s::@4
  [192] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed word) 0 muls8s::@4/(signed word) muls8s::m#1 )
  [192] (signed byte) muls8s::j#2 ← phi( muls8s::@2/(signed byte) 0 muls8s::@4/(signed byte) muls8s::j#1 )
  [193] if((signed byte) muls8s::j#2!=(signed byte) muls8s::a#0) goto muls8s::@4
  to:muls8s::@1
muls8s::@1: scope:[muls8s]  from muls8s::@2 muls8s::@3 muls8s::@5
  [194] (signed word) muls8s::return#0 ← phi( muls8s::@5/(signed word) muls8s::m#5 muls8s::@2/(signed word) 0 muls8s::@3/(signed word) muls8s::m#3 )
  to:muls8s::@return
muls8s::@return: scope:[muls8s]  from muls8s::@1
  [195] return 
  to:@return
muls8s::@4: scope:[muls8s]  from muls8s::@3
  [196] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0
  [197] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2
  to:muls8s::@3
muls8s::@5: scope:[muls8s]  from muls8s muls8s::@6
  [198] (signed word) muls8s::m#5 ← phi( muls8s/(signed word) 0 muls8s::@6/(signed word) muls8s::m#2 )
  [198] (signed byte) muls8s::i#2 ← phi( muls8s/(signed byte) 0 muls8s::@6/(signed byte) muls8s::i#1 )
  [199] if((signed byte) muls8s::i#2!=(signed byte) muls8s::a#0) goto muls8s::@6
  to:muls8s::@1
muls8s::@6: scope:[muls8s]  from muls8s::@5
  [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0
  [201] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2
  to:muls8s::@5

(void()) mul8u_compare()
mul8u_compare: scope:[mul8u_compare]  from main::@4
  [202] phi()
  to:mul8u_compare::@1
mul8u_compare::@1: scope:[mul8u_compare]  from mul8u_compare mul8u_compare::@8
  [203] (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
  [204] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 )
  [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
  [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10
  [207] call muls8u 
  [208] (word) muls8u::return#2 ← (word) muls8u::return#0
  to:mul8u_compare::@10
mul8u_compare::@10: scope:[mul8u_compare]  from mul8u_compare::@2
  [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
  [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7
  [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10
  [212] call mulf8u 
  [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0
  to:mul8u_compare::@11
mul8u_compare::@11: scope:[mul8u_compare]  from mul8u_compare::@10
  [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
  [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7
  [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10
  [217] call mul8u 
  [218] (word) mul8u::return#3 ← (word) mul8u::res#2
  to:mul8u_compare::@12
mul8u_compare::@12: scope:[mul8u_compare]  from mul8u_compare::@11
  [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
  [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
  to:mul8u_compare::@6
mul8u_compare::@6: scope:[mul8u_compare]  from mul8u_compare::@12
  [221] phi()
  to:mul8u_compare::@3
mul8u_compare::@3: scope:[mul8u_compare]  from mul8u_compare::@12 mul8u_compare::@6
  [222] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@12/(byte) 1 mul8u_compare::@6/(byte) 0 )
  [223] 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
  [224] phi()
  to:mul8u_compare::@4
mul8u_compare::@4: scope:[mul8u_compare]  from mul8u_compare::@14 mul8u_compare::@3
  [225] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte) 0 )
  [226] 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
  [227] *((const byte*) BGCOL) ← (byte) 2
  [228] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7
  [229] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
  [230] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
  [231] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
  [232] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
  [233] call mul8u_error 
  to:mul8u_compare::@return
mul8u_compare::@return: scope:[mul8u_compare]  from mul8u_compare::@13 mul8u_compare::@7
  [234] return 
  to:@return
mul8u_compare::@5: scope:[mul8u_compare]  from mul8u_compare::@4
  [235] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10
  [236] 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
  [237] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7
  [238] 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
  [239] phi()
  [240] call print_str 
  to:mul8u_compare::@13
mul8u_compare::@13: scope:[mul8u_compare]  from mul8u_compare::@9
  [241] phi()
  [242] call print_ln 
  to:mul8u_compare::@return

(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
mul8u_error: scope:[mul8u_error]  from mul8u_compare::@7
  [243] phi()
  [244] call print_str 
  to:mul8u_error::@1
mul8u_error::@1: scope:[mul8u_error]  from mul8u_error
  [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
  [246] call print_byte 
  to:mul8u_error::@2
mul8u_error::@2: scope:[mul8u_error]  from mul8u_error::@1
  [247] phi()
  [248] call print_str 
  to:mul8u_error::@3
mul8u_error::@3: scope:[mul8u_error]  from mul8u_error::@2
  [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0
  [250] call print_byte 
  to:mul8u_error::@4
mul8u_error::@4: scope:[mul8u_error]  from mul8u_error::@3
  [251] phi()
  [252] call print_str 
  to:mul8u_error::@5
mul8u_error::@5: scope:[mul8u_error]  from mul8u_error::@4
  [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0
  [254] call print_word 
  to:mul8u_error::@6
mul8u_error::@6: scope:[mul8u_error]  from mul8u_error::@5
  [255] phi()
  [256] call print_str 
  to:mul8u_error::@7
mul8u_error::@7: scope:[mul8u_error]  from mul8u_error::@6
  [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0
  [258] call print_word 
  to:mul8u_error::@8
mul8u_error::@8: scope:[mul8u_error]  from mul8u_error::@7
  [259] phi()
  [260] call print_str 
  to:mul8u_error::@9
mul8u_error::@9: scope:[mul8u_error]  from mul8u_error::@8
  [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0
  [262] call print_word 
  to:mul8u_error::@10
mul8u_error::@10: scope:[mul8u_error]  from mul8u_error::@9
  [263] phi()
  [264] call print_ln 
  to:mul8u_error::@return
mul8u_error::@return: scope:[mul8u_error]  from mul8u_error::@10
  [265] return 
  to:@return

(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
mulf8u: scope:[mulf8u]  from mul8u_compare::@10
  [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
  [267] call mulf8u_prepare 
  to:mulf8u::@1
mulf8u::@1: scope:[mulf8u]  from mulf8u
  [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
  [269] call mulf8u_prepared 
  [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
  to:mulf8u::@2
mulf8u::@2: scope:[mulf8u]  from mulf8u::@1
  [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
  to:mulf8u::@return
mulf8u::@return: scope:[mulf8u]  from mulf8u::@2
  [272] return 
  to:@return

(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
muls8u: scope:[muls8u]  from mul8u_compare::@2
  [273] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1
  to:muls8u::@2
muls8u::@2: scope:[muls8u]  from muls8u muls8u::@3
  [274] (word) muls8u::m#3 ← phi( muls8u/(word) 0 muls8u::@3/(word) muls8u::m#1 )
  [274] (byte) muls8u::i#2 ← phi( muls8u/(byte) 0 muls8u::@3/(byte) muls8u::i#1 )
  [275] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@3
  to:muls8u::@1
muls8u::@1: scope:[muls8u]  from muls8u muls8u::@2
  [276] (word) muls8u::return#0 ← phi( muls8u/(word) 0 muls8u::@2/(word) muls8u::m#3 )
  to:muls8u::@return
muls8u::@return: scope:[muls8u]  from muls8u::@1
  [277] return 
  to:@return
muls8u::@3: scope:[muls8u]  from muls8u::@2
  [278] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0
  [279] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2
  to:muls8u::@2

(void()) mulf_tables_cmp()
mulf_tables_cmp: scope:[mulf_tables_cmp]  from main::@3
  [280] phi()
  to:mulf_tables_cmp::@1
mulf_tables_cmp::@1: scope:[mulf_tables_cmp]  from mulf_tables_cmp mulf_tables_cmp::@4
  [281] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte*) mula_sqr1_lo mulf_tables_cmp::@4/(byte*) mulf_tables_cmp::asm_sqr#1 )
  [281] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte*) mulf_sqr1_lo mulf_tables_cmp::@4/(byte*) mulf_tables_cmp::kc_sqr#1 )
  [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(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
  [283] phi()
  [284] call print_str 
  to:mulf_tables_cmp::@6
mulf_tables_cmp::@6: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@3
  [285] phi()
  [286] call print_ln 
  to:mulf_tables_cmp::@7
mulf_tables_cmp::@7: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@6
  [287] (byte*) print_char_cursor#226 ← (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
  [288] (byte*) print_line_cursor#11 ← phi( mulf_tables_cmp::@7/(byte*) print_line_cursor#1 mulf_tables_cmp::@10/(byte*) 1024 )
  [288] (byte*) print_char_cursor#100 ← phi( mulf_tables_cmp::@7/(byte*) print_char_cursor#226 mulf_tables_cmp::@10/(byte*) print_char_cursor#19 )
  [289] return 
  to:@return
mulf_tables_cmp::@2: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@1
  [290] 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
  [291] *((const byte*) BGCOL) ← (byte) 2
  [292] call print_str 
  to:mulf_tables_cmp::@8
mulf_tables_cmp::@8: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@5
  [293] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
  [294] call print_word 
  to:mulf_tables_cmp::@9
mulf_tables_cmp::@9: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@8
  [295] phi()
  [296] call print_str 
  to:mulf_tables_cmp::@10
mulf_tables_cmp::@10: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@9
  [297] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2
  [298] call print_word 
  to:mulf_tables_cmp::@return
mulf_tables_cmp::@4: scope:[mulf_tables_cmp]  from mulf_tables_cmp::@2
  [299] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2
  [300] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2
  to:mulf_tables_cmp::@1

(void()) mulf_init_asm()
mulf_init_asm: scope:[mulf_init_asm]  from main::@2
  asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!-  }
  [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo)
  [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi)
  [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo)
  [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi)
  to:mulf_init_asm::@return
mulf_init_asm::@return: scope:[mulf_init_asm]  from mulf_init_asm
  [306] return 
  to:@return

(void()) mulf_init()
mulf_init: scope:[mulf_init]  from main::@1
  [307] phi()
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@3
  [308] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
  [308] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
  [308] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
  [308] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
  [308] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
  [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
  to:mulf_init::@5
mulf_init::@5: scope:[mulf_init]  from mulf_init::@1 mulf_init::@8
  [310] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff )
  [310] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi )
  [310] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 )
  [310] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo )
  [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6
  to:mulf_init::@7
mulf_init::@7: scope:[mulf_init]  from mulf_init::@5
  [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100)
  [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100)
  to:mulf_init::@return
mulf_init::@return: scope:[mulf_init]  from mulf_init::@7
  [314] return 
  to:@return
mulf_init::@6: scope:[mulf_init]  from mulf_init::@5
  [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2)
  [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2)
  [317] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  [318] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  [319] 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
  [320] phi()
  to:mulf_init::@8
mulf_init::@8: scope:[mulf_init]  from mulf_init::@6 mulf_init::@9
  [321] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 )
  [322] (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
  [323] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  [324] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1
  [325] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3
  to:mulf_init::@4
mulf_init::@4: scope:[mulf_init]  from mulf_init::@2
  [326] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
  [327] (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
  [328] (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 )
  [328] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 )
  [329] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3
  [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4
  [331] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3
  [332] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5
  [333] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  [334] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  [335] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
  to:mulf_init::@1

(void()) print_cls()
print_cls: scope:[print_cls]  from main
  [336] phi()
  [337] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [338] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  [339] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [340] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
  [341] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [342] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [344] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@1


VARIABLE REGISTER WEIGHTS
(void()) main()
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(byte) memset::c
(byte*) memset::dst
(byte*) memset::dst#1 22.0
(byte*) memset::dst#2 14.666666666666666
(byte*) memset::end
(word) memset::num
(void*) memset::return
(void*) memset::str
(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
(byte~) mul8s::$13 4.0
(byte~) mul8s::$16 4.0
(byte~) mul8s::$17 4.0
(byte~) mul8s::$9 4.0
(signed byte) mul8s::a
(signed byte) mul8s::a#0 7.357142857142858
(signed byte) mul8s::b
(signed byte) mul8s::b#0 9.363636363636363
(word) mul8s::m
(word) mul8s::m#0 2.0
(word) mul8s::m#1 4.0
(word) mul8s::m#2 4.0
(word) mul8s::m#4 1.3333333333333333
(word) mul8s::m#5 2.5
(signed word) mul8s::return
(void()) mul8s_compare()
(signed byte) mul8s_compare::a
(signed byte) mul8s_compare::a#1 22.0
(signed byte) mul8s_compare::a#10 12.518518518518519
(signed byte) mul8s_compare::b
(signed byte) mul8s_compare::b#1 202.0
(signed byte) mul8s_compare::b#10 24.319999999999997
(signed word) mul8s_compare::mf
(signed word) mul8s_compare::mf#0 12.0
(signed word) mul8s_compare::mn
(signed word) mul8s_compare::mn#0 17.0
(signed word) mul8s_compare::ms
(signed word) mul8s_compare::ms#0 15.249999999999998
(byte) mul8s_compare::ok
(byte) mul8s_compare::ok#3 202.0
(byte) mul8s_compare::ok#4 33.666666666666664
(void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf)
(signed byte) mul8s_error::a
(signed byte) mul8s_error::a#0 0.5714285714285714
(signed byte) mul8s_error::b
(signed byte) mul8s_error::b#0 0.4
(signed word) mul8s_error::mf
(signed word) mul8s_error::mf#0 0.21052631578947367
(signed word) mul8s_error::mn
(signed word) mul8s_error::mn#0 0.25
(signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 0.3076923076923077
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 2002.0
(byte) mul8u::a
(byte) mul8u::a#0 1001.0
(byte) mul8u::a#1 2.0
(byte) mul8u::a#2 101.0
(byte) mul8u::a#3 667.6666666666667
(byte) mul8u::a#6 52.5
(byte) mul8u::b
(byte) mul8u::b#0 4.0
(byte) mul8u::b#1 202.0
(byte) mul8u::b#2 103.0
(word) mul8u::mb
(word) mul8u::mb#0 4.0
(word) mul8u::mb#1 2002.0
(word) mul8u::mb#2 429.2857142857143
(word) mul8u::res
(word) mul8u::res#1 2002.0
(word) mul8u::res#2 443.7142857142857
(word) mul8u::res#6 1001.0
(word) mul8u::return
(word) mul8u::return#2 4.0
(word) mul8u::return#3 202.0
(void()) mul8u_compare()
(byte) mul8u_compare::a
(byte) mul8u_compare::a#1 16.5
(byte) mul8u_compare::a#7 12.11111111111111
(byte) mul8u_compare::b
(byte) mul8u_compare::b#1 151.5
(byte) mul8u_compare::b#10 20.279999999999998
(word) mul8u_compare::mf
(word) mul8u_compare::mf#0 11.333333333333332
(word) mul8u_compare::mn
(word) mul8u_compare::mn#0 17.0
(word) mul8u_compare::ms
(word) mul8u_compare::ms#0 14.523809523809522
(byte) mul8u_compare::ok
(byte) mul8u_compare::ok#3 202.0
(byte) mul8u_compare::ok#4 33.666666666666664
(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
(byte) mul8u_error::a
(byte) mul8u_error::a#0 0.5714285714285714
(byte) mul8u_error::b
(byte) mul8u_error::b#0 0.4
(word) mul8u_error::mf
(word) mul8u_error::mf#0 0.21052631578947367
(word) mul8u_error::mn
(word) mul8u_error::mn#0 0.25
(word) mul8u_error::ms
(word) mul8u_error::ms#0 0.3076923076923077
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
(signed byte) mulf8s::a
(signed byte) mulf8s::a#0 33.666666666666664
(signed byte) mulf8s::b
(signed byte) mulf8s::b#0 25.75
(signed byte) mulf8s::mulf8s_prepare1_a
(signed word) mulf8s::return
(signed word) mulf8s::return#0 34.33333333333333
(signed word) mulf8s::return#2 202.0
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
(byte~) mulf8s_prepared::$12 4.0
(byte~) mulf8s_prepared::$15 4.0
(byte~) mulf8s_prepared::$16 4.0
(byte~) mulf8s_prepared::$8 4.0
(signed byte) mulf8s_prepared::b
(signed byte) mulf8s_prepared::b#0 0.4
(word) mulf8s_prepared::m
(word) mulf8s_prepared::m#0 2.0
(word) mulf8s_prepared::m#1 4.0
(word) mulf8s_prepared::m#2 4.0
(word) mulf8s_prepared::m#4 1.3333333333333333
(word) mulf8s_prepared::m#5 2.5
(signed word) mulf8s_prepared::return
(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
(byte) mulf8u::a
(byte) mulf8u::a#0 51.5
(byte) mulf8u::b
(byte) mulf8u::b#0 34.33333333333333
(word) mulf8u::return
(word) mulf8u::return#0 34.33333333333333
(word) mulf8u::return#2 202.0
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
(byte) mulf8u_prepare::a
(byte) mulf8u_prepare::a#0 4.0
(byte) mulf8u_prepare::a#1 4.0
(byte) mulf8u_prepare::a#2 6.0
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
(byte) mulf8u_prepared::b
(byte) mulf8u_prepared::b#0 4.0
(byte) mulf8u_prepared::b#1 4.0
(byte) mulf8u_prepared::b#2 6.0
(word) mulf8u_prepared::return
(word) mulf8u_prepared::return#0 1.5
(word) mulf8u_prepared::return#2 4.0
(word) mulf8u_prepared::return#3 4.0
(void()) mulf_init()
(byte~) mulf_init::$1 22.0
(byte~) mulf_init::$4 22.0
(byte~) mulf_init::$5 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()
(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
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(signed byte) muls8s::a
(signed byte) muls8s::a#0 175.58333333333334
(signed byte) muls8s::b
(signed byte) muls8s::b#0 191.1818181818182
(signed byte) muls8s::i
(signed byte) muls8s::i#1 2002.0
(signed byte) muls8s::i#2 1001.0
(signed byte) muls8s::j
(signed byte) muls8s::j#1 2002.0
(signed byte) muls8s::j#2 1001.0
(signed word) muls8s::m
(signed word) muls8s::m#1 1001.0
(signed word) muls8s::m#2 1001.0
(signed word) muls8s::m#3 1501.5
(signed word) muls8s::m#5 1501.5
(signed word) muls8s::return
(signed word) muls8s::return#0 701.0
(signed word) muls8s::return#2 202.0
(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
(byte) muls8u::a
(byte) muls8u::a#0 157.71428571428572
(byte) muls8u::b
(byte) muls8u::b#0 183.66666666666669
(byte) muls8u::i
(byte) muls8u::i#1 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#0 4.0
(byte) print_byte::b#1 4.0
(byte) print_byte::b#2 4.0
(byte) print_byte::b#3 4.0
(byte) print_byte::b#4 4.0
(byte) print_byte::b#5 3.5
(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.5
(byte*) print_char_cursor#135 5.25
(byte*) print_char_cursor#142 7.0
(byte*) print_char_cursor#143 3.9999999999999996
(byte*) print_char_cursor#155 28.0
(byte*) print_char_cursor#189 4.0
(byte*) print_char_cursor#19 0.7083333333333331
(byte*) print_char_cursor#190 4.0
(byte*) print_char_cursor#226 4.0
(byte*) print_char_cursor#86 8.0
(void()) print_cls()
(byte*) print_line_cursor
(byte*) print_line_cursor#1 0.6428571428571428
(byte*) print_line_cursor#11 0.09523809523809523
(byte*) print_line_cursor#23 24.0
(byte*) print_line_cursor#45 10.0
(void()) print_ln()
(void()) print_sbyte((signed byte) print_sbyte::b)
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0 4.0
(signed byte) print_sbyte::b#1 4.0
(signed byte) print_sbyte::b#2 4.0
(signed byte) print_sbyte::b#3 1.6666666666666665
(signed byte) print_sbyte::b#5 4.0
(byte*) print_screen
(void()) print_str((byte*) print_str::str)
(byte*) print_str::str
(byte*) print_str::str#0 22.0
(byte*) print_str::str#16 11.5
(byte*) print_str::str#18 2.0
(void()) print_sword((signed word) print_sword::w)
(signed word) print_sword::w
(signed word) print_sword::w#0 4.0
(signed word) print_sword::w#1 4.0
(signed word) print_sword::w#2 4.0
(signed word) print_sword::w#3 4.0
(signed word) print_sword::w#4 1.9999999999999998
(signed word) print_sword::w#6 4.0
(void()) print_word((word) print_word::w)
(word) print_word::w
(word) print_word::w#0 4.0
(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 5.333333333333333

Initial phi equivalence classes
[ mul8s_compare::a#10 mul8s_compare::a#1 ]
[ mul8s_compare::b#10 mul8s_compare::b#1 ]
[ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
[ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ]
[ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ]
[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
[ 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_word::w#0 ]
[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
[ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ]
[ print_str::str#16 print_str::str#18 print_str::str#0 ]
[ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
[ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ]
[ mul8u::b#2 mul8u::b#0 mul8u::b#1 ]
[ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ]
[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
[ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
[ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ]
[ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ]
[ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ]
[ muls8s::j#2 muls8s::j#1 ]
[ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ]
[ muls8s::i#2 muls8s::i#1 ]
[ mul8u_compare::a#7 mul8u_compare::a#1 ]
[ mul8u_compare::b#10 mul8u_compare::b#1 ]
[ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
[ muls8u::i#2 muls8u::i#1 ]
[ muls8u::return#0 muls8u::m#3 muls8u::m#1 ]
[ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ]
[ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ]
[ mulf_init::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#2 memset::dst#1 ]
Added variable muls8s::a#0 to live range equivalence class [ muls8s::a#0 ]
Added variable muls8s::b#0 to live range equivalence class [ muls8s::b#0 ]
Added variable muls8s::return#2 to live range equivalence class [ muls8s::return#2 ]
Added variable mul8s_compare::ms#0 to live range equivalence class [ mul8s_compare::ms#0 ]
Added variable mulf8s::a#0 to live range equivalence class [ mulf8s::a#0 ]
Added variable mulf8s::b#0 to live range equivalence class [ mulf8s::b#0 ]
Added variable mulf8s::return#2 to live range equivalence class [ mulf8s::return#2 ]
Added variable mul8s_compare::mf#0 to live range equivalence class [ mul8s_compare::mf#0 ]
Added variable mul8s::a#0 to live range equivalence class [ mul8s::a#0 ]
Added variable mul8s::b#0 to live range equivalence class [ mul8s::b#0 ]
Added variable mul8s_compare::mn#0 to live range equivalence class [ mul8s_compare::mn#0 ]
Added variable mul8s_error::a#0 to live range equivalence class [ mul8s_error::a#0 ]
Added variable mul8s_error::b#0 to live range equivalence class [ mul8s_error::b#0 ]
Added variable mul8s_error::ms#0 to live range equivalence class [ mul8s_error::ms#0 ]
Added variable mul8s_error::mn#0 to live range equivalence class [ mul8s_error::mn#0 ]
Added variable mul8s_error::mf#0 to live range equivalence class [ mul8s_error::mf#0 ]
Added variable print_byte::$0 to live range equivalence class [ print_byte::$0 ]
Added variable print_byte::$2 to live range equivalence class [ print_byte::$2 ]
Added variable mul8u::return#2 to live range equivalence class [ mul8u::return#2 ]
Added variable mul8s::$9 to live range equivalence class [ mul8s::$9 ]
Added variable mul8s::$16 to live range equivalence class [ mul8s::$16 ]
Added variable mul8s::$13 to live range equivalence class [ mul8s::$13 ]
Added variable mul8s::$17 to live range equivalence class [ mul8s::$17 ]
Added variable mul8u::$1 to live range equivalence class [ mul8u::$1 ]
Added variable mulf8s_prepared::b#0 to live range equivalence class [ mulf8s_prepared::b#0 ]
Added variable mulf8s::return#0 to live range equivalence class [ mulf8s::return#0 ]
Added variable mulf8u_prepared::return#3 to live range equivalence class [ mulf8u_prepared::return#3 ]
Added variable mulf8s_prepared::$8 to live range equivalence class [ mulf8s_prepared::$8 ]
Added variable mulf8s_prepared::$15 to live range equivalence class [ mulf8s_prepared::$15 ]
Added variable mulf8s_prepared::$12 to live range equivalence class [ mulf8s_prepared::$12 ]
Added variable mulf8s_prepared::$16 to live range equivalence class [ mulf8s_prepared::$16 ]
Added variable mulf8u_prepared::return#0 to live range equivalence class [ mulf8u_prepared::return#0 ]
Added variable muls8u::a#0 to live range equivalence class [ muls8u::a#0 ]
Added variable muls8u::b#0 to live range equivalence class [ muls8u::b#0 ]
Added variable muls8u::return#2 to live range equivalence class [ muls8u::return#2 ]
Added variable mul8u_compare::ms#0 to live range equivalence class [ mul8u_compare::ms#0 ]
Added variable mulf8u::a#0 to live range equivalence class [ mulf8u::a#0 ]
Added variable mulf8u::b#0 to live range equivalence class [ mulf8u::b#0 ]
Added variable mulf8u::return#2 to live range equivalence class [ mulf8u::return#2 ]
Added variable mul8u_compare::mf#0 to live range equivalence class [ mul8u_compare::mf#0 ]
Added variable mul8u::return#3 to live range equivalence class [ mul8u::return#3 ]
Added variable mul8u_compare::mn#0 to live range equivalence class [ mul8u_compare::mn#0 ]
Added variable mul8u_error::a#0 to live range equivalence class [ mul8u_error::a#0 ]
Added variable mul8u_error::b#0 to live range equivalence class [ mul8u_error::b#0 ]
Added variable mul8u_error::ms#0 to live range equivalence class [ mul8u_error::ms#0 ]
Added variable mul8u_error::mn#0 to live range equivalence class [ mul8u_error::mn#0 ]
Added variable mul8u_error::mf#0 to live range equivalence class [ mul8u_error::mf#0 ]
Added variable mulf8u_prepared::return#2 to live range equivalence class [ mulf8u_prepared::return#2 ]
Added variable mulf8u::return#0 to live range equivalence class [ mulf8u::return#0 ]
Added variable mulf_init::$1 to live range equivalence class [ mulf_init::$1 ]
Added variable mulf_init::$4 to live range equivalence class [ mulf_init::$4 ]
Added variable mulf_init::$5 to live range equivalence class [ mulf_init::$5 ]
Complete equivalence classes
[ mul8s_compare::a#10 mul8s_compare::a#1 ]
[ mul8s_compare::b#10 mul8s_compare::b#1 ]
[ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
[ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ]
[ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ]
[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
[ 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_word::w#0 ]
[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
[ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ]
[ print_str::str#16 print_str::str#18 print_str::str#0 ]
[ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
[ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ]
[ mul8u::b#2 mul8u::b#0 mul8u::b#1 ]
[ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ]
[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
[ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
[ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ]
[ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ]
[ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ]
[ muls8s::j#2 muls8s::j#1 ]
[ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ]
[ muls8s::i#2 muls8s::i#1 ]
[ mul8u_compare::a#7 mul8u_compare::a#1 ]
[ mul8u_compare::b#10 mul8u_compare::b#1 ]
[ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
[ muls8u::i#2 muls8u::i#1 ]
[ muls8u::return#0 muls8u::m#3 muls8u::m#1 ]
[ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ]
[ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ]
[ mulf_init::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#2 memset::dst#1 ]
[ muls8s::a#0 ]
[ muls8s::b#0 ]
[ muls8s::return#2 ]
[ mul8s_compare::ms#0 ]
[ mulf8s::a#0 ]
[ mulf8s::b#0 ]
[ mulf8s::return#2 ]
[ mul8s_compare::mf#0 ]
[ mul8s::a#0 ]
[ mul8s::b#0 ]
[ mul8s_compare::mn#0 ]
[ mul8s_error::a#0 ]
[ mul8s_error::b#0 ]
[ mul8s_error::ms#0 ]
[ mul8s_error::mn#0 ]
[ mul8s_error::mf#0 ]
[ print_byte::$0 ]
[ print_byte::$2 ]
[ mul8u::return#2 ]
[ mul8s::$9 ]
[ mul8s::$16 ]
[ mul8s::$13 ]
[ mul8s::$17 ]
[ mul8u::$1 ]
[ mulf8s_prepared::b#0 ]
[ mulf8s::return#0 ]
[ mulf8u_prepared::return#3 ]
[ mulf8s_prepared::$8 ]
[ mulf8s_prepared::$15 ]
[ mulf8s_prepared::$12 ]
[ mulf8s_prepared::$16 ]
[ mulf8u_prepared::return#0 ]
[ muls8u::a#0 ]
[ muls8u::b#0 ]
[ muls8u::return#2 ]
[ mul8u_compare::ms#0 ]
[ mulf8u::a#0 ]
[ mulf8u::b#0 ]
[ mulf8u::return#2 ]
[ mul8u_compare::mf#0 ]
[ mul8u::return#3 ]
[ mul8u_compare::mn#0 ]
[ mul8u_error::a#0 ]
[ mul8u_error::b#0 ]
[ mul8u_error::ms#0 ]
[ mul8u_error::mn#0 ]
[ mul8u_error::mf#0 ]
[ mulf8u_prepared::return#2 ]
[ mulf8u::return#0 ]
[ mulf_init::$1 ]
[ mulf_init::$4 ]
[ mulf_init::$5 ]
Allocated zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ]
Allocated zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ]
Allocated zp[1]:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
Allocated zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ]
Allocated zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ]
Allocated zp[1]:9 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
Allocated zp[2]:10 [ 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_word::w#0 ]
Allocated zp[1]:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
Allocated zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ]
Allocated zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ]
Allocated zp[1]:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
Allocated zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ]
Allocated zp[1]:20 [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ]
Allocated zp[1]:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ]
Allocated zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
Allocated zp[2]:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
Allocated zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ]
Allocated zp[1]:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ]
Allocated zp[1]:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ]
Allocated zp[1]:30 [ muls8s::j#2 muls8s::j#1 ]
Allocated zp[2]:31 [ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ]
Allocated zp[1]:33 [ muls8s::i#2 muls8s::i#1 ]
Allocated zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Allocated zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Allocated zp[1]:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
Allocated zp[1]:37 [ muls8u::i#2 muls8u::i#1 ]
Allocated zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ]
Allocated zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ]
Allocated zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ]
Allocated zp[2]:44 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ]
Allocated zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ]
Allocated zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ]
Allocated zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Allocated zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ]
Allocated zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Allocated zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
Allocated zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ]
Allocated zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
Allocated zp[2]:58 [ memset::dst#2 memset::dst#1 ]
Allocated zp[1]:60 [ muls8s::a#0 ]
Allocated zp[1]:61 [ muls8s::b#0 ]
Allocated zp[2]:62 [ muls8s::return#2 ]
Allocated zp[2]:64 [ mul8s_compare::ms#0 ]
Allocated zp[1]:66 [ mulf8s::a#0 ]
Allocated zp[1]:67 [ mulf8s::b#0 ]
Allocated zp[2]:68 [ mulf8s::return#2 ]
Allocated zp[2]:70 [ mul8s_compare::mf#0 ]
Allocated zp[1]:72 [ mul8s::a#0 ]
Allocated zp[1]:73 [ mul8s::b#0 ]
Allocated zp[2]:74 [ mul8s_compare::mn#0 ]
Allocated zp[1]:76 [ mul8s_error::a#0 ]
Allocated zp[1]:77 [ mul8s_error::b#0 ]
Allocated zp[2]:78 [ mul8s_error::ms#0 ]
Allocated zp[2]:80 [ mul8s_error::mn#0 ]
Allocated zp[2]:82 [ mul8s_error::mf#0 ]
Allocated zp[1]:84 [ print_byte::$0 ]
Allocated zp[1]:85 [ print_byte::$2 ]
Allocated zp[2]:86 [ mul8u::return#2 ]
Allocated zp[1]:88 [ mul8s::$9 ]
Allocated zp[1]:89 [ mul8s::$16 ]
Allocated zp[1]:90 [ mul8s::$13 ]
Allocated zp[1]:91 [ mul8s::$17 ]
Allocated zp[1]:92 [ mul8u::$1 ]
Allocated zp[1]:93 [ mulf8s_prepared::b#0 ]
Allocated zp[2]:94 [ mulf8s::return#0 ]
Allocated zp[2]:96 [ mulf8u_prepared::return#3 ]
Allocated zp[1]:98 [ mulf8s_prepared::$8 ]
Allocated zp[1]:99 [ mulf8s_prepared::$15 ]
Allocated zp[1]:100 [ mulf8s_prepared::$12 ]
Allocated zp[1]:101 [ mulf8s_prepared::$16 ]
Allocated zp[2]:102 [ mulf8u_prepared::return#0 ]
Allocated zp[1]:104 [ muls8u::a#0 ]
Allocated zp[1]:105 [ muls8u::b#0 ]
Allocated zp[2]:106 [ muls8u::return#2 ]
Allocated zp[2]:108 [ mul8u_compare::ms#0 ]
Allocated zp[1]:110 [ mulf8u::a#0 ]
Allocated zp[1]:111 [ mulf8u::b#0 ]
Allocated zp[2]:112 [ mulf8u::return#2 ]
Allocated zp[2]:114 [ mul8u_compare::mf#0 ]
Allocated zp[2]:116 [ mul8u::return#3 ]
Allocated zp[2]:118 [ mul8u_compare::mn#0 ]
Allocated zp[1]:120 [ mul8u_error::a#0 ]
Allocated zp[1]:121 [ mul8u_error::b#0 ]
Allocated zp[2]:122 [ mul8u_error::ms#0 ]
Allocated zp[2]:124 [ mul8u_error::mn#0 ]
Allocated zp[2]:126 [ mul8u_error::mf#0 ]
Allocated zp[2]:128 [ mulf8u_prepared::return#2 ]
Allocated zp[2]:130 [ mulf8u::return#0 ]
Allocated zp[1]:132 [ mulf_init::$1 ]
Allocated zp[1]:133 [ mulf_init::$4 ]
Allocated zp[1]:134 [ mulf_init::$5 ]

INITIAL ASM
Target platform is c64basic / MOS6502X
  // 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 = 5
  // @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) ← (byte) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
    // [5] call print_cls 
    // [336] 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 
    // [307] 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 
    // [280] 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 
    // [202] 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: {
    .label ms = $40
    .label mf = $46
    .label mn = $4a
    .label a = 2
    .label b = 3
    .label ok = 4
    // [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1]
  __b1_from_mul8s_compare:
    // [18] phi (signed byte) mul8s_compare::a#10 = (signed byte) -$80 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 
    lda #-$80
    sta.z a
    jmp __b1
    // mul8s_compare::@1
  __b1:
    // [19] if((signed byte) mul8s_compare::a#10!=(signed byte) -$80) goto mul8s_compare::@3 -- vbsz1_neq_vbsc1_then_la1 
    lda #-$80
    cmp.z a
    bne __b3_from___b1
    jmp __b2
    // mul8s_compare::@2
  __b2:
    // [20] (byte*) print_char_cursor#189 ← (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
    // [21] call print_str 
    // [114] phi from mul8s_compare::@2 to print_str [phi:mul8s_compare::@2->print_str]
  print_str_from___b2:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#189 [phi:mul8s_compare::@2->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [22] phi from mul8s_compare::@2 to mul8s_compare::@11 [phi:mul8s_compare::@2->mul8s_compare::@11]
  __b11_from___b2:
    jmp __b11
    // mul8s_compare::@11
  __b11:
    // [23] call print_ln 
    // [80] phi from mul8s_compare::@11 to print_ln [phi:mul8s_compare::@11->print_ln]
  print_ln_from___b11:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@11->print_ln#0] -- register_copy 
    // [80] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@11->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    // mul8s_compare::@return
  __breturn:
    // [24] return 
    rts
    // [25] phi from mul8s_compare::@1 to mul8s_compare::@3 [phi:mul8s_compare::@1->mul8s_compare::@3]
  __b3_from___b1:
    // [25] phi (signed byte) mul8s_compare::b#10 = (signed byte) -$80 [phi:mul8s_compare::@1->mul8s_compare::@3#0] -- vbsz1=vbsc1 
    lda #-$80
    sta.z b
    jmp __b3
    // mul8s_compare::@3
  __b3:
    // [26] if((signed byte) mul8s_compare::b#10!=(signed byte) -$80) goto mul8s_compare::@4 -- vbsz1_neq_vbsc1_then_la1 
    lda #-$80
    cmp.z b
    bne __b4
    jmp __b5
    // mul8s_compare::@5
  __b5:
    // [27] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#10 -- vbsz1=_inc_vbsz1 
    inc.z a
    // [18] phi from mul8s_compare::@5 to mul8s_compare::@1 [phi:mul8s_compare::@5->mul8s_compare::@1]
  __b1_from___b5:
    // [18] phi (signed byte) mul8s_compare::a#10 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@5->mul8s_compare::@1#0] -- register_copy 
    jmp __b1
    // mul8s_compare::@4
  __b4:
    // [28] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#10 -- vbsz1=vbsz2 
    lda.z a
    sta.z muls8s.a
    // [29] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 
    lda.z b
    sta.z muls8s.b
    // [30] call muls8s 
    jsr muls8s
    // [31] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 -- vwsz1=vwsz2 
    lda.z muls8s.return
    sta.z muls8s.return_1
    lda.z muls8s.return+1
    sta.z muls8s.return_1+1
    jmp __b12
    // mul8s_compare::@12
  __b12:
    // [32] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 -- vwsz1=vwsz2 
    lda.z muls8s.return_1
    sta.z ms
    lda.z muls8s.return_1+1
    sta.z ms+1
    // [33] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#10 -- vbsz1=vbsz2 
    lda.z a
    sta.z mulf8s.a
    // [34] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 
    lda.z b
    sta.z mulf8s.b
    // [35] call mulf8s 
    // [159] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s]
  mulf8s_from___b12:
    jsr mulf8s
    // [36] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 -- vwsz1=vwsz2 
    lda.z mulf8s.return
    sta.z mulf8s.return_1
    lda.z mulf8s.return+1
    sta.z mulf8s.return_1+1
    jmp __b13
    // mul8s_compare::@13
  __b13:
    // [37] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 -- vwsz1=vwsz2 
    lda.z mulf8s.return_1
    sta.z mf
    lda.z mulf8s.return_1+1
    sta.z mf+1
    // [38] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#10 -- vbsz1=vbsz2 
    lda.z a
    sta.z mul8s.a
    // [39] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 
    lda.z b
    sta.z mul8s.b
    // [40] call mul8s 
    jsr mul8s
    jmp __b14
    // mul8s_compare::@14
  __b14:
    // [41] (signed word) mul8s_compare::mn#0 ← (signed word)(word) mul8s::m#4 -- vwsz1=vwsz2 
    lda.z mul8s.m
    sta.z mn
    lda.z mul8s.m+1
    sta.z mn+1
    // [42] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@6 -- vwsz1_eq_vwsz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    beq __b6_from___b14
  !:
    // [43] phi from mul8s_compare::@14 to mul8s_compare::@9 [phi:mul8s_compare::@14->mul8s_compare::@9]
  __b9_from___b14:
    jmp __b9
    // mul8s_compare::@9
  __b9:
    // [44] phi from mul8s_compare::@9 to mul8s_compare::@6 [phi:mul8s_compare::@9->mul8s_compare::@6]
  __b6_from___b9:
    // [44] phi (byte) mul8s_compare::ok#4 = (byte) 0 [phi:mul8s_compare::@9->mul8s_compare::@6#0] -- vbuz1=vbuc1 
    lda #0
    sta.z ok
    jmp __b6
    // [44] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6]
  __b6_from___b14:
    // [44] phi (byte) mul8s_compare::ok#4 = (byte) 1 [phi:mul8s_compare::@14->mul8s_compare::@6#0] -- vbuz1=vbuc1 
    lda #1
    sta.z ok
    jmp __b6
    // mul8s_compare::@6
  __b6:
    // [45] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@15 -- vwsz1_eq_vwsz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    beq __b15_from___b6
  !:
    // [47] phi from mul8s_compare::@6 to mul8s_compare::@7 [phi:mul8s_compare::@6->mul8s_compare::@7]
  __b7_from___b6:
    // [47] phi (byte) mul8s_compare::ok#3 = (byte) 0 [phi:mul8s_compare::@6->mul8s_compare::@7#0] -- vbuz1=vbuc1 
    lda #0
    sta.z ok
    jmp __b7
    // [46] phi from mul8s_compare::@6 to mul8s_compare::@15 [phi:mul8s_compare::@6->mul8s_compare::@15]
  __b15_from___b6:
    jmp __b15
    // mul8s_compare::@15
  __b15:
    // [47] phi from mul8s_compare::@15 to mul8s_compare::@7 [phi:mul8s_compare::@15->mul8s_compare::@7]
  __b7_from___b15:
    // [47] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@15->mul8s_compare::@7#0] -- register_copy 
    jmp __b7
    // mul8s_compare::@7
  __b7:
    // [48] if((byte) mul8s_compare::ok#3!=(byte) 0) goto mul8s_compare::@8 -- vbuz1_neq_0_then_la1 
    lda.z ok
    cmp #0
    bne __b8
    jmp __b10
    // mul8s_compare::@10
  __b10:
    // [49] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [50] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#10 -- vbsz1=vbsz2 
    lda.z a
    sta.z mul8s_error.a
    // [51] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsz1=vbsz2 
    lda.z b
    sta.z mul8s_error.b
    // [52] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 -- vwsz1=vwsz2 
    lda.z ms
    sta.z mul8s_error.ms
    lda.z ms+1
    sta.z mul8s_error.ms+1
    // [53] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 -- vwsz1=vwsz2 
    lda.z mn
    sta.z mul8s_error.mn
    lda.z mn+1
    sta.z mul8s_error.mn+1
    // [54] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 -- vwsz1=vwsz2 
    lda.z mf
    sta.z mul8s_error.mf
    lda.z mf+1
    sta.z mul8s_error.mf+1
    // [55] call mul8s_error 
    jsr mul8s_error
    jmp __breturn
    // mul8s_compare::@8
  __b8:
    // [56] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 
    inc.z b
    // [25] phi from mul8s_compare::@8 to mul8s_compare::@3 [phi:mul8s_compare::@8->mul8s_compare::@3]
  __b3_from___b8:
    // [25] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@8->mul8s_compare::@3#0] -- register_copy 
    jmp __b3
    str: .text "signed multiply results match!"
    .byte 0
}
  // mul8s_error
// mul8s_error(signed byte zp($4c) a, signed byte zp($4d) b, signed word zp($4e) ms, signed word zp($50) mn, signed word zp($52) mf)
mul8s_error: {
    .label a = $4c
    .label b = $4d
    .label ms = $4e
    .label mn = $50
    .label mf = $52
    // [57] (byte*) print_char_cursor#190 ← (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
    // [58] call print_str 
    // [114] phi from mul8s_error to print_str [phi:mul8s_error->print_str]
  print_str_from_mul8s_error:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#190 [phi:mul8s_error->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_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
    // mul8s_error::@1
  __b1:
    // [59] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0 -- vbsz1=vbsz2 
    lda.z a
    sta.z print_sbyte.b
    // [60] call print_sbyte 
    // [121] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte]
  print_sbyte_from___b1:
    // [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy 
    jsr print_sbyte
    // [61] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2]
  __b2_from___b1:
    jmp __b2
    // mul8s_error::@2
  __b2:
    // [62] call print_str 
    // [114] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
  print_str_from___b2:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@2->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_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
    // mul8s_error::@3
  __b3:
    // [63] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsz1=vbsz2 
    lda.z b
    sta.z print_sbyte.b
    // [64] call print_sbyte 
    // [121] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte]
  print_sbyte_from___b3:
    // [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy 
    jsr print_sbyte
    // [65] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4]
  __b4_from___b3:
    jmp __b4
    // mul8s_error::@4
  __b4:
    // [66] call print_str 
    // [114] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
  print_str_from___b4:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@4->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_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
    // mul8s_error::@5
  __b5:
    // [67] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 -- vwsz1=vwsz2 
    lda.z ms
    sta.z print_sword.w
    lda.z ms+1
    sta.z print_sword.w+1
    // [68] call print_sword 
    // [85] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword]
  print_sword_from___b5:
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy 
    jsr print_sword
    // [69] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6]
  __b6_from___b5:
    jmp __b6
    // mul8s_error::@6
  __b6:
    // [70] call print_str 
    // [114] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
  print_str_from___b6:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@6->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_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
    // mul8s_error::@7
  __b7:
    // [71] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 
    lda.z mn
    sta.z print_sword.w
    lda.z mn+1
    sta.z print_sword.w+1
    // [72] call print_sword 
    // [85] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword]
  print_sword_from___b7:
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy 
    jsr print_sword
    // [73] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8]
  __b8_from___b7:
    jmp __b8
    // mul8s_error::@8
  __b8:
    // [74] call print_str 
    // [114] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
  print_str_from___b8:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@8->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_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
    // mul8s_error::@9
  __b9:
    // [75] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 
    lda.z mf
    sta.z print_sword.w
    lda.z mf+1
    sta.z print_sword.w+1
    // [76] call print_sword 
    // [85] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword]
  print_sword_from___b9:
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy 
    jsr print_sword
    // [77] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10]
  __b10_from___b9:
    jmp __b10
    // mul8s_error::@10
  __b10:
    // [78] call print_ln 
    // [80] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln]
  print_ln_from___b10:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8s_error::@10->print_ln#0] -- register_copy 
    // [80] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    // mul8s_error::@return
  __breturn:
    // [79] return 
    rts
    str: .text "signed multiply mismatch "
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [81] 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:
    // [81] 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:
    // [82] (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
  !:
    // [83] 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:
    // [84] return 
    rts
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp(7) w)
print_sword: {
    .label w = 7
    // [86] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1_from_print_sword
    // [87] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
  __b3_from_print_sword:
    jmp __b3
    // print_sword::@3
  __b3:
    // [88] call print_char 
    // [96] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
  print_char_from___b3:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [89] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [89] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#4 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    jmp __b2
    // print_sword::@2
  __b2:
    // [90] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 
    lda.z w
    sta.z print_word.w
    lda.z w+1
    sta.z print_word.w+1
    // [91] call print_word 
    // [100] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
  print_word_from___b2:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_sword::@return
  __breturn:
    // [92] return 
    rts
    // [93] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
  __b1_from_print_sword:
    jmp __b1
    // print_sword::@1
  __b1:
    // [94] call print_char 
    // [96] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
  print_char_from___b1:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta.z print_char.ch
    jsr print_char
    jmp __b4
    // print_sword::@4
  __b4:
    // [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 
    sec
    lda #0
    sbc.z w
    sta.z w
    lda #0
    sbc.z w+1
    sta.z w+1
    jmp __b2_from___b4
}
  // print_char
// Print a single char
// print_char(byte zp(9) ch)
print_char: {
    .label ch = 9
    // [97] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuz2 
    lda.z ch
    ldy #0
    sta (print_char_cursor),y
    // [98] (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:
    // [99] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp($a) w)
print_word: {
    .label w = $a
    // [101] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuz1=_hi_vwuz2 
    lda.z w+1
    sta.z print_byte.b
    // [102] call print_byte 
    // [106] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy 
    // [106] 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:
    // [103] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuz1=_lo_vwuz2 
    lda.z w
    sta.z print_byte.b
    // [104] call print_byte 
    // [106] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from___b1:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [106] 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:
    // [105] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte zp($c) b)
print_byte: {
    .label __0 = $54
    .label __2 = $55
    .label b = $c
    // [107] (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
    // [108] (byte) print_char::ch#4 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z __0
    lda print_hextab,y
    sta.z print_char.ch
    // [109] call print_char 
    // [96] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy 
    // [96] 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:
    // [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 
    lda #$f
    and.z b
    sta.z __2
    // [111] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z __2
    lda print_hextab,y
    sta.z print_char.ch
    // [112] call print_char 
    // [96] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from___b1:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [96] 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:
    // [113] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp($f) str)
print_str: {
    .label str = $f
    // [115] 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:
    // [115] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [115] 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:
    // [116] 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:
    // [117] return 
    rts
    // print_str::@2
  __b2:
    // [118] *((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
    // [119] (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
  !:
    // [120] (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
}
  // print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte zp($11) b)
print_sbyte: {
    .label b = $11
    // [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 
    lda.z b
    bmi __b1_from_print_sbyte
    // [123] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
  __b3_from_print_sbyte:
    jmp __b3
    // print_sbyte::@3
  __b3:
    // [124] call print_char 
    // [96] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
  print_char_from___b3:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@3->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [125] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [125] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy 
    jmp __b2
    // print_sbyte::@2
  __b2:
    // [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5 -- vbuz1=vbuz2 
    lda.z b
    sta.z print_byte.b
    // [127] call print_byte 
    // [106] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  print_byte_from___b2:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __breturn
    // print_sbyte::@return
  __breturn:
    // [128] return 
    rts
    // [129] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  __b1_from_print_sbyte:
    jmp __b1
    // print_sbyte::@1
  __b1:
    // [130] call print_char 
    // [96] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  print_char_from___b1:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@1->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta.z print_char.ch
    jsr print_char
    jmp __b4
    // print_sbyte::@4
  __b4:
    // [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsz1=_neg_vbsz1 
    lda.z b
    eor #$ff
    clc
    adc #1
    sta.z b
    jmp __b2_from___b4
}
  // mul8s
// Multiply of two signed bytes to a signed word
// Fixes offsets introduced by using unsigned multiplication
// mul8s(signed byte zp($48) a, signed byte zp($49) b)
mul8s: {
    .label __9 = $58
    .label __13 = $5a
    .label __16 = $59
    .label __17 = $5b
    .label m = $12
    .label a = $48
    .label b = $49
    // [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2 
    lda.z a
    sta.z mul8u.a
    // [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2 
    lda.z b
    sta.z mul8u.b
    // [134] call mul8u 
    // [148] phi from mul8s to mul8u [phi:mul8s->mul8u]
  mul8u_from_mul8s:
    // [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy 
    // [148] phi (byte) mul8u::b#2 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- register_copy 
    jsr mul8u
    // [135] (word) mul8u::return#2 ← (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 __b5
    // mul8s::@5
  __b5:
    // [136] (word) mul8s::m#0 ← (word) mul8u::return#2 -- vwuz1=vwuz2 
    lda.z mul8u.return
    sta.z m
    lda.z mul8u.return+1
    sta.z m+1
    // [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 
    lda.z a
    cmp #0
    bpl __b1_from___b5
    jmp __b3
    // mul8s::@3
  __b3:
    // [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 
    lda.z m+1
    sta.z __9
    // [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 
    lda.z __9
    sec
    sbc.z b
    sta.z __16
    // [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 
    lda.z __16
    sta.z m+1
    // [141] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy 
    jmp __b1
    // mul8s::@1
  __b1:
    // [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsz1_ge_0_then_la1 
    lda.z b
    cmp #0
    bpl __b2_from___b1
    jmp __b4
    // mul8s::@4
  __b4:
    // [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 
    lda.z m+1
    sta.z __13
    // [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 
    lda.z __13
    sec
    sbc.z a
    sta.z __17
    // [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 
    lda.z __17
    sta.z m+1
    // [146] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2]
  __b2_from___b1:
  __b2_from___b4:
    // [146] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy 
    jmp __b2
    // mul8s::@2
  __b2:
    jmp __breturn
    // mul8s::@return
  __breturn:
    // [147] return 
    rts
}
  // mul8u
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte zp($15) a, byte zp($14) b)
mul8u: {
    .label __1 = $5c
    .label mb = $18
    .label a = $15
    .label res = $16
    .label b = $14
    .label return = $56
    .label return_1 = $74
    // [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 -- vwuz1=_word_vbuz2 
    lda.z b
    sta.z mb
    lda #0
    sta.z mb+1
    // [150] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
  __b1_from_mul8u:
    // [150] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy 
    // [150] phi (word) mul8u::res#2 = (word) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z res
    lda #>0
    sta.z res+1
    // [150] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy 
    jmp __b1
    // mul8u::@1
  __b1:
    // [151] 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:
    // [152] return 
    rts
    // mul8u::@2
  __b2:
    // [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 
    lda #1
    and.z a
    sta.z __1
    // [154] 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:
    // [155] (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
    // [156] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
  __b3_from___b2:
  __b3_from___b4:
    // [156] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy 
    jmp __b3
    // mul8u::@3
  __b3:
    // [157] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 
    lsr.z a
    // [158] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 
    asl.z mb
    rol.z mb+1
    // [150] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
  __b1_from___b3:
    // [150] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy 
    // [150] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy 
    // [150] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy 
    jmp __b1
}
  // mulf8s
// Fast multiply two signed bytes to a word result
// mulf8s(signed byte zp($42) a, signed byte zp($43) b)
mulf8s: {
    .label return = $5e
    .label a = $42
    .label b = $43
    .label return_1 = $44
    jmp mulf8s_prepare1
    // mulf8s::mulf8s_prepare1
  mulf8s_prepare1:
    // [160] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 
    lda.z a
    sta.z mulf8u_prepare.a
    // [161] call mulf8u_prepare 
    // [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare]
  mulf8u_prepare_from_mulf8s_prepare1:
    // [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    jmp __b1
    // mulf8s::@1
  __b1:
    // [162] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 
    lda.z b
    sta.z mulf8s_prepared.b
    // [163] call mulf8s_prepared 
    jsr mulf8s_prepared
    jmp __b2
    // mulf8s::@2
  __b2:
    // [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 
    lda.z mulf8s_prepared.m
    sta.z return
    lda.z mulf8s_prepared.m+1
    sta.z return+1
    jmp __breturn
    // mulf8s::@return
  __breturn:
    // [165] return 
    rts
}
  // mulf8s_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8s_prepare(byte a)
// mulf8s_prepared(signed byte zp($5d) b)
mulf8s_prepared: {
    .label memA = $fd
    .label __8 = $62
    .label __12 = $64
    .label __15 = $63
    .label __16 = $65
    .label m = $1a
    .label b = $5d
    // [166] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 
    lda.z b
    sta.z mulf8u_prepared.b
    // [167] call mulf8u_prepared 
    // [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared]
  mulf8u_prepared_from_mulf8s_prepared:
    // [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
    // [168] (word) mulf8u_prepared::return#3 ← (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 __b5
    // mulf8s_prepared::@5
  __b5:
    // [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 
    lda.z mulf8u_prepared.return_2
    sta.z m
    lda.z mulf8u_prepared.return_2+1
    sta.z m+1
    // [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 
    lda memA
    cmp #0
    bpl __b1_from___b5
    jmp __b3
    // mulf8s_prepared::@3
  __b3:
    // [171] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 
    lda.z m+1
    sta.z __8
    // [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 
    lda.z __8
    sec
    sbc.z b
    sta.z __15
    // [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 
    lda.z __15
    sta.z m+1
    // [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy 
    jmp __b1
    // mulf8s_prepared::@1
  __b1:
    // [175] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 
    lda.z b
    cmp #0
    bpl __b2_from___b1
    jmp __b4
    // mulf8s_prepared::@4
  __b4:
    // [176] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 
    lda.z m+1
    sta.z __12
    // [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) -- vbuz1=vbuz2_minus__deref_pbuc1 
    lda.z __12
    sec
    sbc memA
    sta.z __16
    // [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 
    lda.z __16
    sta.z m+1
    // [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2]
  __b2_from___b1:
  __b2_from___b4:
    // [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy 
    jmp __b2
    // mulf8s_prepared::@2
  __b2:
    jmp __breturn
    // mulf8s_prepared::@return
  __breturn:
    // [180] 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 zp($1c) b)
mulf8u_prepared: {
    .label resL = $fe
    .label memB = $ff
    .label return = $66
    .label b = $1c
    .label return_1 = $80
    .label return_2 = $60
    // [182] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#2 -- _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
    // [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda resL
    sta.z return
    lda memB
    sta.z return+1
    jmp __breturn
    // mulf8u_prepared::@return
  __breturn:
    // [185] return 
    rts
}
  // mulf8u_prepare
// Prepare for fast multiply with an unsigned byte to a word result
// mulf8u_prepare(byte zp($1d) a)
mulf8u_prepare: {
    .label memA = $fd
    .label a = $1d
    // [187] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#2 -- _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:
    // [189] return 
    rts
}
  // muls8s
// Slow multiplication of signed bytes
// Perform a signed multiplication by repeated addition/subtraction
// muls8s(signed byte zp($3c) a, signed byte zp($3d) b)
muls8s: {
    .label m = $1f
    .label j = $1e
    .label return = $1f
    .label i = $21
    .label a = $3c
    .label b = $3d
    .label return_1 = $3e
    // [190] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 
    lda.z a
    bmi __b5_from_muls8s
    jmp __b2
    // muls8s::@2
  __b2:
    // [191] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 
    lda.z a
    cmp #1
    bmi __b1_from___b2
    // [192] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3]
  __b3_from___b2:
    // [192] phi (signed word) muls8s::m#3 = (signed word) 0 [phi:muls8s::@2->muls8s::@3#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    // [192] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vbsz1=vbsc1 
    lda #0
    sta.z j
    jmp __b3
    // muls8s::@3
  __b3:
    // [193] if((signed byte) muls8s::j#2!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsz1_neq_vbsz2_then_la1 
    lda.z j
    cmp.z a
    bne __b4
    // [194] phi from muls8s::@3 muls8s::@5 to muls8s::@1 [phi:muls8s::@3/muls8s::@5->muls8s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [194] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#3 [phi:muls8s::@3/muls8s::@5->muls8s::@1#0] -- register_copy 
    jmp __b1
    // [194] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1]
  __b1_from___b2:
    // [194] phi (signed word) muls8s::return#0 = (signed word) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    jmp __b1
    // muls8s::@1
  __b1:
    jmp __breturn
    // muls8s::@return
  __breturn:
    // [195] return 
    rts
    // muls8s::@4
  __b4:
    // [196] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 
    lda.z b
    sta.z $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    clc
    lda.z m
    adc.z $fe
    sta.z m
    lda.z m+1
    adc.z $ff
    sta.z m+1
    // [197] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 
    inc.z j
    // [192] phi from muls8s::@4 to muls8s::@3 [phi:muls8s::@4->muls8s::@3]
  __b3_from___b4:
    // [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@4->muls8s::@3#0] -- register_copy 
    // [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@4->muls8s::@3#1] -- register_copy 
    jmp __b3
    // [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5]
  __b5_from_muls8s:
    // [198] phi (signed word) muls8s::m#5 = (signed word) 0 [phi:muls8s->muls8s::@5#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    // [198] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@5#1] -- vbsz1=vbsc1 
    lda #0
    sta.z i
    jmp __b5
    // muls8s::@5
  __b5:
    // [199] if((signed byte) muls8s::i#2!=(signed byte) muls8s::a#0) goto muls8s::@6 -- vbsz1_neq_vbsz2_then_la1 
    lda.z i
    cmp.z a
    bne __b6
    jmp __b1_from___b5
    // muls8s::@6
  __b6:
    // [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 
    lda.z b
    sta.z $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    sec
    lda.z m
    sbc.z $fe
    sta.z m
    lda.z m+1
    sbc.z $ff
    sta.z m+1
    // [201] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 
    dec.z i
    // [198] phi from muls8s::@6 to muls8s::@5 [phi:muls8s::@6->muls8s::@5]
  __b5_from___b6:
    // [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@6->muls8s::@5#0] -- register_copy 
    // [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@6->muls8s::@5#1] -- register_copy 
    jmp __b5
}
  // mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = $6c
    .label mf = $72
    .label mn = $76
    .label b = $23
    .label a = $22
    .label ok = $24
    // [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
  __b1_from_mul8u_compare:
    // [203] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    jmp __b1
    // [203] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1]
  __b1_from___b8:
    // [203] 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:
    // [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
  __b2_from___b1:
    // [204] 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
    // [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
  __b2_from___b5:
    // [204] 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:
    // [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda.z a
    sta.z muls8u.a
    // [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda.z b
    sta.z muls8u.b
    // [207] call muls8u 
    jsr muls8u
    // [208] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 
    lda.z muls8u.return
    sta.z muls8u.return_1
    lda.z muls8u.return+1
    sta.z muls8u.return_1+1
    jmp __b10
    // mul8u_compare::@10
  __b10:
    // [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 
    lda.z muls8u.return_1
    sta.z ms
    lda.z muls8u.return_1+1
    sta.z ms+1
    // [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda.z a
    sta.z mulf8u.a
    // [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda.z b
    sta.z mulf8u.b
    // [212] call mulf8u 
    jsr mulf8u
    // [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 
    lda.z mulf8u.return
    sta.z mulf8u.return_1
    lda.z mulf8u.return+1
    sta.z mulf8u.return_1+1
    jmp __b11
    // mul8u_compare::@11
  __b11:
    // [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 
    lda.z mulf8u.return_1
    sta.z mf
    lda.z mulf8u.return_1+1
    sta.z mf+1
    // [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda.z a
    sta.z mul8u.a
    // [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda.z b
    sta.z mul8u.b
    // [217] call mul8u 
    // [148] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u]
  mul8u_from___b11:
    // [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy 
    // [148] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- register_copy 
    jsr mul8u
    // [218] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 
    lda.z mul8u.res
    sta.z mul8u.return_1
    lda.z mul8u.res+1
    sta.z mul8u.return_1+1
    jmp __b12
    // mul8u_compare::@12
  __b12:
    // [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 
    lda.z mul8u.return_1
    sta.z mn
    lda.z mul8u.return_1+1
    sta.z mn+1
    // [220] 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
  !:
    // [221] 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:
    // [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
  __b3_from___b6:
    // [222] 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
    // [222] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3]
  __b3_from___b12:
    // [222] 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:
    // [223] 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
  !:
    // [225] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
  __b4_from___b3:
    // [225] 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
    // [224] 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:
    // [225] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4]
  __b4_from___b14:
    // [225] 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:
    // [226] 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:
    // [227] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [228] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 
    lda.z a
    sta.z mul8u_error.a
    // [229] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 
    lda.z b
    sta.z mul8u_error.b
    // [230] (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
    // [231] (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
    // [232] (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
    // [233] call mul8u_error 
    // [243] 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:
    // [234] return 
    rts
    // mul8u_compare::@5
  __b5:
    // [235] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc.z b
    // [236] 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:
    // [237] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc.z a
    // [238] 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
    // [239] 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:
    // [240] call print_str 
    // [114] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str]
  print_str_from___b9:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_compare::@9->print_str#0] -- register_copy 
    // [114] 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
    // [241] 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:
    // [242] call print_ln 
    // [80] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln]
  print_ln_from___b13:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy 
    // [80] 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 zp($78) a, byte zp($79) b, word zp($7a) ms, word zp($7c) mn, word zp($7e) mf)
mul8u_error: {
    .label a = $78
    .label b = $79
    .label ms = $7a
    .label mn = $7c
    .label mf = $7e
    // [244] call print_str 
    // [114] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
  print_str_from_mul8u_error:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_error->print_str#0] -- register_copy 
    // [114] 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:
    // [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 
    lda.z a
    sta.z print_byte.b
    // [246] call print_byte 
    // [106] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
  print_byte_from___b1:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // [247] 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:
    // [248] call print_str 
    // [114] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
  print_str_from___b2:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy 
    // [114] 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:
    // [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 
    lda.z b
    sta.z print_byte.b
    // [250] call print_byte 
    // [106] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
  print_byte_from___b3:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
    // [251] 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:
    // [252] call print_str 
    // [114] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
  print_str_from___b4:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy 
    // [114] 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:
    // [253] (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
    // [254] call print_word 
    // [100] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
  print_word_from___b5:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@5->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy 
    jsr print_word
    // [255] 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:
    // [256] call print_str 
    // [114] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
  print_str_from___b6:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy 
    // [114] 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:
    // [257] (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
    // [258] call print_word 
    // [100] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
  print_word_from___b7:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@7->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy 
    jsr print_word
    // [259] 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:
    // [260] call print_str 
    // [114] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
  print_str_from___b8:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy 
    // [114] 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:
    // [261] (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
    // [262] call print_word 
    // [100] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
  print_word_from___b9:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@9->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy 
    jsr print_word
    // [263] 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:
    // [264] call print_ln 
    // [80] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
  print_ln_from___b10:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
    // [80] 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:
    // [265] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte zp($6e) a, byte zp($6f) b)
mulf8u: {
    .label return = $82
    .label a = $6e
    .label b = $6f
    .label return_1 = $70
    // [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 
    lda.z a
    sta.z mulf8u_prepare.a
    // [267] call mulf8u_prepare 
    // [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare]
  mulf8u_prepare_from_mulf8u:
    // [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    jmp __b1
    // mulf8u::@1
  __b1:
    // [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 
    lda.z b
    sta.z mulf8u_prepared.b
    // [269] call mulf8u_prepared 
    // [181] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared]
  mulf8u_prepared_from___b1:
    // [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
    // [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 
    lda.z mulf8u_prepared.return
    sta.z mulf8u_prepared.return_1
    lda.z mulf8u_prepared.return+1
    sta.z mulf8u_prepared.return_1+1
    jmp __b2
    // mulf8u::@2
  __b2:
    // [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 
    lda.z mulf8u_prepared.return_1
    sta.z return
    lda.z mulf8u_prepared.return_1+1
    sta.z return+1
    jmp __breturn
    // mulf8u::@return
  __breturn:
    // [272] return 
    rts
}
  // muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zp($68) a, byte zp($69) b)
muls8u: {
    .label return = $26
    .label m = $26
    .label i = $25
    .label a = $68
    .label b = $69
    .label return_1 = $6a
    // [273] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda.z a
    cmp #0
    beq __b1_from_muls8u
    // [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
  __b2_from_muls8u:
    // [274] phi (word) muls8u::m#3 = (word) 0 [phi:muls8u->muls8u::@2#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    // [274] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b2
    // muls8u::@2
  __b2:
    // [275] 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
    // [276] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
  __b1_from___b2:
    // [276] phi (word) muls8u::return#0 = (word) muls8u::m#3 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    jmp __b1
    // [276] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  __b1_from_muls8u:
    // [276] phi (word) muls8u::return#0 = (word) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    jmp __b1
    // muls8u::@1
  __b1:
    jmp __breturn
    // muls8u::@return
  __breturn:
    // [277] return 
    rts
    // muls8u::@3
  __b3:
    // [278] (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
  !:
    // [279] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [274] phi from muls8u::@3 to muls8u::@2 [phi:muls8u::@3->muls8u::@2]
  __b2_from___b3:
    // [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@3->muls8u::@2#0] -- register_copy 
    // [274] 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 = $2a
    .label kc_sqr = $28
    // [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
  __b1_from_mulf_tables_cmp:
    // [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte*) mula_sqr1_lo [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
    // [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte*) mulf_sqr1_lo [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:
    // [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(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
  !:
    // [283] 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:
    // [284] call print_str 
    // [114] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
  print_str_from___b3:
    // [114] 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
    // [114] 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
    // [285] 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:
    // [286] call print_ln 
    // [80] phi from mulf_tables_cmp::@6 to print_ln [phi:mulf_tables_cmp::@6->print_ln]
  print_ln_from___b6:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@6->print_ln#0] -- register_copy 
    // [80] 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:
    // [287] (byte*) print_char_cursor#226 ← (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
    // [288] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return]
  __breturn_from___b7:
    // [288] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- register_copy 
    // [288] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#226 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy 
    jmp __breturn
    // mulf_tables_cmp::@return
  __breturn:
    // [289] return 
    rts
    // mulf_tables_cmp::@2
  __b2:
    // [290] 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:
    // [291] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [292] call print_str 
    // [114] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
  print_str_from___b5:
    // [114] 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
    // [114] 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:
    // [293] (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
    // [294] call print_word 
    // [100] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
  print_word_from___b8:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy 
    jsr print_word
    // [295] 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:
    // [296] call print_str 
    // [114] phi from mulf_tables_cmp::@9 to print_str [phi:mulf_tables_cmp::@9->print_str]
  print_str_from___b9:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@9->print_str#0] -- register_copy 
    // [114] 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:
    // [297] (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
    // [298] call print_word 
    // [100] phi from mulf_tables_cmp::@10 to print_word [phi:mulf_tables_cmp::@10->print_word]
  print_word_from___b10:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@10->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@10->print_word#1] -- register_copy 
    jsr print_word
    // [288] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
  __breturn_from___b10:
    // [288] 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
    // [288] 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:
    // [299] (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
  !:
    // [300] (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
  !:
    // [281] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1]
  __b1_from___b4:
    // [281] 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 
    // [281] 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 !-
    // [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
    // [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
    // [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
    // [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
    jmp __breturn
    // mulf_init_asm::@return
  __breturn:
    // [306] return 
    rts
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    .label __1 = $84
    .label __4 = $85
    .label __5 = $86
    // x/2
    .label c = $2e
    // Counter used for determining x%2==0
    .label sqr1_hi = $2f
    // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4
    .label sqr = $38
    .label sqr1_lo = $2c
    // sqr = (x*x)/4
    .label x_2 = $31
    // Decrease or increase x_255 - initially we decrease
    .label sqr2_hi = $35
    // Fill mulf_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x)
    // g(0) = f(255), g(1) = f(254), ..., g(254) = f(1), g(255) = f(0), g(256) = f(1), ..., g(510) = f(255), g(511) = f(256)
    .label x_255 = $34
    .label sqr2_lo = $32
    //Start with g(0)=f(255)
    .label dir = $37
    // [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  __b1_from_mulf_init:
    // [308] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x_2
    // [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(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
    // [308] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1 
    lda #<0
    sta.z sqr
    lda #>0
    sta.z sqr+1
    // [308] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(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:
    // [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(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
    // [310] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
  __b5_from___b1:
    // [310] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [310] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [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
    // [310] 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
    // [310] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [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:
    // [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(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:
    // [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(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
    // [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
    jmp __breturn
    // mulf_init::@return
  __breturn:
    // [314] return 
    rts
    // mulf_init::@6
  __b6:
    // [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (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
    // [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (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
    // [317] (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
  !:
    // [318] (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
    // [319] 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
    // [321] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
  __b8_from___b6:
    // [321] 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
    // [320] 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:
    // [321] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
  __b8_from___b9:
    // [321] 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:
    // [322] (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
  !:
    // [310] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
  __b5_from___b8:
    // [310] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [310] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [310] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [310] 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:
    // [323] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // [324] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 
    lda #1
    and.z c
    sta.z __1
    // [325] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuz1_neq_0_then_la1 
    lda.z __1
    cmp #0
    bne __b3_from___b2
    jmp __b4
    // mulf_init::@4
  __b4:
    // [326] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 
    inc.z x_2
    // [327] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [328] 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:
    // [328] 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 
    // [328] 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:
    // [329] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 
    lda.z sqr
    sta.z __4
    // [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuz2 
    lda.z __4
    ldy #0
    sta (sqr1_lo),y
    // [331] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 
    lda.z sqr+1
    sta.z __5
    // [332] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 
    lda.z __5
    ldy #0
    sta (sqr1_hi),y
    // [333] (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
  !:
    // [334] (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
  !:
    // [335] (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
  !:
    // [308] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
  __b1_from___b3:
    // [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [308] 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: {
    // [337] call memset 
    // [339] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [338] 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 = $3a
    // [340] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [340] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp __b1
    // memset::@1
  __b1:
    // [341] if((byte*) memset::dst#2!=(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
    jmp __breturn
    // memset::@return
  __breturn:
    // [342] return 
    rts
    // memset::@2
  __b2:
    // [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [344] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [340] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [340] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // 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) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [20] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_char_cursor#189 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#189 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [31] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::return#2 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::return#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ]
Statement [32] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 ] ) always clobbers reg byte a 
Statement [36] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 ] ) always clobbers reg byte a 
Statement [37] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 ] ) always clobbers reg byte a 
Statement [41] (signed word) mul8s_compare::mn#0 ← (signed word)(word) mul8s::m#4 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a 
Statement [42] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@6 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a 
Statement [45] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
Statement [49] *((const byte*) BGCOL) ← (byte) 2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a 
Statement [52] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:76 [ mul8s_error::a#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:77 [ mul8s_error::b#0 ]
Statement [53] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 ] ) always clobbers reg byte a 
Statement [54] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 ] ) always clobbers reg byte a 
Statement [57] (byte*) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#190 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#190 ] ) always clobbers reg byte a 
Statement [67] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#1 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#1 print_char_cursor#134 ] ) always clobbers reg byte a 
Statement [71] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#2 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#2 print_char_cursor#134 ] ) always clobbers reg byte a 
Statement [75] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_sword::w#3 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 print_sword::w#3 print_char_cursor#134 ] ) always clobbers reg byte a 
Statement [82] (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:23 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8s_compare:15::mul8s_error:55::print_ln:78 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:242 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:233::print_ln:264 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:286 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a 
Statement [83] 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:23 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8s_compare:15::mul8s_error:55::print_ln:78 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:242 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:233::print_ln:264 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:286 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a 
Statement [86] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#134 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] ) always clobbers reg byte a 
Statement [90] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#19 print_word::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a 
Statement [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [97] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 [ print_char_cursor#86 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_char:88 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_char:88 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_char:88 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_char:94 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_char:94 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_char:94 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102::print_char:109 [ 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:233::print_word:258::print_byte:102::print_char:109 [ 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:233::print_word:262::print_byte:102::print_char:109 [ print_line_cursor#11 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102::print_char:109 [ 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:298::print_byte:102::print_char:109 [ print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104::print_char:109 [ 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:233::print_word:258::print_byte:104::print_char:109 [ print_line_cursor#11 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104::print_char:109 [ print_line_cursor#11 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:109 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104::print_char:109 [ print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127::print_char:109 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127::print_char:109 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246::print_char:109 [ 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:233::print_byte:250::print_char:109 [ 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::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102::print_char:112 [ 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:233::print_word:258::print_byte:102::print_char:112 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102::print_char:112 [ print_line_cursor#11 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102::print_char:112 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102::print_char:112 [ print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104::print_char:112 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104::print_char:112 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104::print_char:112 [ print_line_cursor#11 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:112 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104::print_char:112 [ print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127::print_char:112 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127::print_char:112 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246::print_char:112 [ 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:233::print_byte:250::print_char:112 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_char:124 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_char:124 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_char:130 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_char:130 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
Removing always clobbered register reg byte y as potential for zp[1]:77 [ mul8s_error::b#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:121 [ mul8u_error::b#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
Statement [101] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91 [ print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262 [ print_line_cursor#11 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:294 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:298 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [103] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254 [ 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:233::print_word:258 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262 [ print_line_cursor#11 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:294 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:298 [ print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [107] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:121 [ mul8u_error::b#0 ]
Statement [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ 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:233::print_word:258::print_byte:102 [ 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:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ 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:298::print_byte:102 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ 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:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ 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:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a 
Statement [116] 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:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ 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:233::print_str:248 [ 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:233::print_str:252 [ 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:233::print_str:256 [ 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:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ 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:296 [ 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 y as potential for zp[1]:76 [ mul8s_error::a#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:120 [ mul8u_error::a#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:120 [ mul8u_error::a#0 ]
Statement [118] *((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:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ 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:233::print_str:248 [ 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:233::print_str:252 [ 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:233::print_str:256 [ 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:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ 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:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a 
Statement [135] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:72 [ mul8s::a#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:73 [ mul8s::b#0 ]
Statement [136] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a 
Statement [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ) always clobbers reg byte a 
Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a 
Statement [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$13 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::m#5 mul8s::$13 ] ) always clobbers reg byte a 
Statement [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a 
Statement [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ 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#6 mul8u::mb#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Statement [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#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 [155] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#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 [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#0 ] ) always clobbers reg byte a 
Statement [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:93 [ mulf8s_prepared::b#0 ]
Statement [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a 
Statement [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a 
Statement [171] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a 
Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a 
Statement [176] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a 
Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a 
Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  } always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:93 [ mulf8s_prepared::b#0 ]
Removing always clobbered register reg byte x as potential for zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163::mulf8u_prepared:167 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ 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[1]:67 [ mulf8s::b#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:111 [ mulf8u::b#0 ]
Statement [196] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:60 [ muls8s::a#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:61 [ muls8s::b#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:30 [ muls8s::j#2 muls8s::j#1 ]
Statement [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ( main:2::mul8s_compare:15::muls8s:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:33 [ muls8s::i#2 muls8s::i#1 ]
Statement [208] (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 [209] (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 [213] (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 [214] (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 [218] (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 [219] (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 [220] 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 [223] 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[1]:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
Statement [227] *((const byte*) BGCOL) ← (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 [230] (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 [231] (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 [232] (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 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ) always clobbers reg byte a 
Statement [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#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 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:212 [ 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 [278] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:207 [ print_line_cursor#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[1]:104 [ muls8u::a#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:105 [ muls8u::b#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:37 [ muls8u::i#2 muls8u::i#1 ]
Statement [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(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 [287] (byte*) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#226 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#226 ] ) always clobbers reg byte a 
Statement [290] 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 [291] *((const byte*) BGCOL) ← (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 [293] (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 [297] (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 [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(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[1]:46 [ mulf_init::c#2 mulf_init::c#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Statement [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(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[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ]
Statement [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (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[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ]
Statement [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (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 [318] (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 [324] (byte~) mulf_init::$1 ← (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::$1 ] ( 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::$1 ] ) always clobbers reg byte a 
Statement [329] (byte~) mulf_init::$4 ← < (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::$4 ] ( 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::$4 ] ) always clobbers reg byte a 
Statement [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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[1]:46 [ mulf_init::c#2 mulf_init::c#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Statement [331] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a 
Statement [332] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y 
Statement [334] (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 [341] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [4] *((const byte*) BGCOL) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [20] (byte*) print_char_cursor#189 ← (byte*) print_line_cursor#1 [ print_char_cursor#189 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#189 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [31] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::return#2 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::return#2 ] ) always clobbers reg byte a 
Statement [32] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 ] ) always clobbers reg byte a 
Statement [36] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#2 ] ) always clobbers reg byte a 
Statement [37] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 ] ) always clobbers reg byte a 
Statement [41] (signed word) mul8s_compare::mn#0 ← (signed word)(word) mul8s::m#4 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a 
Statement [42] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@6 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a 
Statement [45] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_compare::ok#4 ] ) always clobbers reg byte a 
Statement [49] *((const byte*) BGCOL) ← (byte) 2 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s_compare::mn#0 ] ) always clobbers reg byte a 
Statement [52] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_compare::mn#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 ] ) always clobbers reg byte a 
Statement [53] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 ] ) always clobbers reg byte a 
Statement [54] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 ] ( main:2::mul8s_compare:15 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 ] ) always clobbers reg byte a 
Statement [57] (byte*) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#190 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#190 ] ) always clobbers reg byte a 
Statement [67] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#1 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#1 print_char_cursor#134 ] ) always clobbers reg byte a 
Statement [71] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#2 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#2 print_char_cursor#134 ] ) always clobbers reg byte a 
Statement [75] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 [ print_line_cursor#1 print_sword::w#3 print_char_cursor#134 ] ( main:2::mul8s_compare:15::mul8s_error:55 [ print_line_cursor#1 print_sword::w#3 print_char_cursor#134 ] ) always clobbers reg byte a 
Statement [82] (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:23 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8s_compare:15::mul8s_error:55::print_ln:78 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:242 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:233::print_ln:264 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:286 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a 
Statement [83] 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:23 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8s_compare:15::mul8s_error:55::print_ln:78 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::print_ln:242 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mul8u_compare:13::mul8u_error:233::print_ln:264 [ print_line_cursor#1 print_char_cursor#135 ] main:2::mulf_tables_cmp:11::print_ln:286 [ print_line_cursor#1 print_char_cursor#135 ] ) always clobbers reg byte a 
Statement [86] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#134 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#134 print_sword::w#4 ] ) always clobbers reg byte a 
Statement [90] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#19 print_word::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_word::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#19 print_word::w#0 ] ) always clobbers reg byte a 
Statement [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#19 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76 [ print_line_cursor#1 print_char_cursor#19 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [97] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 [ print_char_cursor#86 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_char:88 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_char:88 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_char:88 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_char:94 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_char:94 [ print_line_cursor#1 mul8s_error::mf#0 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_char:94 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102::print_char:109 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102::print_char:109 [ 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:233::print_word:258::print_byte:102::print_char:109 [ 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:233::print_word:262::print_byte:102::print_char:109 [ print_line_cursor#11 print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102::print_char:109 [ 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:298::print_byte:102::print_char:109 [ print_word::w#6 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104::print_char:109 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104::print_char:109 [ 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:233::print_word:258::print_byte:104::print_char:109 [ print_line_cursor#11 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104::print_char:109 [ print_line_cursor#11 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:109 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104::print_char:109 [ print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127::print_char:109 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127::print_char:109 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_byte::b#5 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246::print_char:109 [ 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:233::print_byte:250::print_char:109 [ 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::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102::print_char:112 [ print_line_cursor#1 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102::print_char:112 [ 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:233::print_word:258::print_byte:102::print_char:112 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102::print_char:112 [ print_line_cursor#11 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102::print_char:112 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102::print_char:112 [ print_word::w#6 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104::print_char:112 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104::print_char:112 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104::print_char:112 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104::print_char:112 [ print_line_cursor#11 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:112 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#86 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104::print_char:112 [ print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127::print_char:112 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127::print_char:112 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#86 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246::print_char:112 [ 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:233::print_byte:250::print_char:112 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_char:124 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_char:124 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_char:130 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_char:130 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_sbyte::b#3 print_char_cursor#86 ] ) always clobbers reg byte y 
Statement [101] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91 [ print_line_cursor#1 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262 [ print_line_cursor#11 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:294 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#142 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:298 [ print_word::w#6 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [103] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#19 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91 [ print_line_cursor#1 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254 [ 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:233::print_word:258 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262 [ print_line_cursor#11 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:294 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:298 [ print_char_cursor#19 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [107] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:102 [ print_line_cursor#11 mul8u_error::mf#0 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:102 [ print_word::w#6 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ print_line_cursor#11 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ print_line_cursor#11 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#143 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a 
Statement [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#19 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:102 [ print_line_cursor#1 mul8s_error::mf#0 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:102 [ print_line_cursor#1 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:102 [ 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:233::print_word:258::print_byte:102 [ 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:233::print_word:262::print_byte:102 [ print_line_cursor#11 print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:102 [ 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:298::print_byte:102 [ print_word::w#6 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:68::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:72::print_word:91::print_byte:104 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sword:76::print_word:91::print_byte:104 [ print_line_cursor#1 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:254::print_byte:104 [ 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:233::print_word:258::print_byte:104 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_word:262::print_byte:104 [ print_line_cursor#11 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#19 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:298::print_byte:104 [ print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60::print_byte:127 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64::print_byte:127 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:233::print_byte:246 [ 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:233::print_byte:250 [ print_line_cursor#11 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#19 print_byte::$2 ] ) always clobbers reg byte a 
Statement [116] 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:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ 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:233::print_str:248 [ 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:233::print_str:252 [ 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:233::print_str:256 [ 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:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ 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:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [118] *((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:21 [ print_line_cursor#1 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:58 [ print_line_cursor#1 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:62 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:66 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:70 [ print_line_cursor#1 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:55::print_str:74 [ print_line_cursor#1 mul8s_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::print_str:240 [ print_line_cursor#11 print_char_cursor#134 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:233::print_str:244 [ 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:233::print_str:248 [ 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:233::print_str:252 [ 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:233::print_str:256 [ 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:233::print_str:260 [ print_line_cursor#11 mul8u_error::mf#0 print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ print_char_cursor#134 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ 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:296 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#134 print_str::str#16 ] ) always clobbers reg byte a reg byte y 
Statement [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#19 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:60 [ print_line_cursor#1 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:55::print_sbyte:64 [ print_line_cursor#1 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_char_cursor#19 print_sbyte::b#0 ] ) always clobbers reg byte a 
Statement [135] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a 
Statement [136] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a 
Statement [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$9 ] ) always clobbers reg byte a 
Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a 
Statement [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$13 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::m#5 mul8s::$13 ] ) always clobbers reg byte a 
Statement [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:40 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a 
Statement [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ 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#6 mul8u::mb#0 ] ) always clobbers reg byte a 
Statement [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#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 [155] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:40::mul8u:134 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#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 [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s::return#0 ] ) always clobbers reg byte a 
Statement [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a 
Statement [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a 
Statement [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a 
Statement [171] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$8 ] ) always clobbers reg byte a 
Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a 
Statement [176] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$12 ] ) always clobbers reg byte a 
Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a 
Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  } always clobbers reg byte a reg byte x 
Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:35::mulf8s_prepared:163::mulf8u_prepared:167 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 mul8s_compare::ms#0 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ 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 [196] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a 
Statement [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ( main:2::mul8s_compare:15::muls8s:30 [ mul8s_compare::a#10 print_line_cursor#1 mul8s_compare::b#10 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#2 ] ) always clobbers reg byte a 
Statement [208] (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 [209] (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 [213] (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 [214] (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 [218] (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 [219] (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 [220] 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 [223] 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 [227] *((const byte*) BGCOL) ← (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 [230] (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 [231] (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 [232] (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 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a 
Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:233 [ print_char_cursor#134 print_line_cursor#11 print_word::w#5 ] ) always clobbers reg byte a 
Statement [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#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 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:212 [ 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 [278] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:207 [ print_line_cursor#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 [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(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 [287] (byte*) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#226 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#226 ] ) always clobbers reg byte a 
Statement [290] 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 [291] *((const byte*) BGCOL) ← (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 [293] (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 [297] (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 [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a 
Statement [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(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 [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(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 [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a 
Statement [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (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 [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (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 [318] (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 [324] (byte~) mulf_init::$1 ← (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::$1 ] ( 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::$1 ] ) always clobbers reg byte a 
Statement [329] (byte~) mulf_init::$4 ← < (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::$4 ] ( 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::$4 ] ) always clobbers reg byte a 
Statement [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 [ 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 [331] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a 
Statement [332] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y 
Statement [334] (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 [341] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:337 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Potential registers zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] : zp[1]:2 , reg byte y , 
Potential registers zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] : zp[1]:3 , reg byte y , 
Potential registers zp[1]:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] : zp[2]:5 , 
Potential registers zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] : zp[2]:7 , 
Potential registers zp[1]:9 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:10 [ 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_word::w#0 ] : zp[2]:10 , 
Potential registers zp[1]:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] : zp[1]:12 , reg byte x , 
Potential registers zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ] : zp[2]:13 , 
Potential registers zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ] : zp[2]:15 , 
Potential registers zp[1]:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] : zp[1]:17 , reg byte a , reg byte x , 
Potential registers zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] : zp[2]:18 , 
Potential registers zp[1]:20 [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] : zp[1]:20 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] : zp[1]:21 , reg byte x , reg byte y , 
Potential registers zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp[2]:22 , 
Potential registers zp[2]:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp[2]:24 , 
Potential registers zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] : zp[2]:26 , 
Potential registers zp[1]:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:30 [ muls8s::j#2 muls8s::j#1 ] : zp[1]:30 , reg byte x , reg byte y , 
Potential registers zp[2]:31 [ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] : zp[2]:31 , 
Potential registers zp[1]:33 [ muls8s::i#2 muls8s::i#1 ] : zp[1]:33 , reg byte x , reg byte y , 
Potential registers zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] : zp[1]:34 , reg byte y , 
Potential registers zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] : zp[1]:35 , reg byte y , 
Potential registers zp[1]:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] : zp[1]:36 , reg byte x , reg byte y , 
Potential registers zp[1]:37 [ muls8u::i#2 muls8u::i#1 ] : zp[1]:37 , reg byte x , reg byte y , 
Potential registers zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] : zp[2]:38 , 
Potential registers zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] : zp[2]:40 , 
Potential registers zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] : zp[2]:42 , 
Potential registers zp[2]:44 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] : zp[2]:44 , 
Potential registers zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] : zp[1]:46 , reg byte x , 
Potential registers zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] : zp[2]:47 , 
Potential registers zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] : zp[1]:49 , reg byte x , 
Potential registers zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] : zp[2]:50 , 
Potential registers zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] : zp[1]:52 , reg byte x , 
Potential registers zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] : zp[2]:53 , 
Potential registers zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] : zp[1]:55 , reg byte x , 
Potential registers zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] : zp[2]:56 , 
Potential registers zp[2]:58 [ memset::dst#2 memset::dst#1 ] : zp[2]:58 , 
Potential registers zp[1]:60 [ muls8s::a#0 ] : zp[1]:60 , reg byte x , reg byte y , 
Potential registers zp[1]:61 [ muls8s::b#0 ] : zp[1]:61 , reg byte x , reg byte y , 
Potential registers zp[2]:62 [ muls8s::return#2 ] : zp[2]:62 , 
Potential registers zp[2]:64 [ mul8s_compare::ms#0 ] : zp[2]:64 , 
Potential registers zp[1]:66 [ mulf8s::a#0 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:67 [ mulf8s::b#0 ] : zp[1]:67 , reg byte x , reg byte y , 
Potential registers zp[2]:68 [ mulf8s::return#2 ] : zp[2]:68 , 
Potential registers zp[2]:70 [ mul8s_compare::mf#0 ] : zp[2]:70 , 
Potential registers zp[1]:72 [ mul8s::a#0 ] : zp[1]:72 , reg byte x , reg byte y , 
Potential registers zp[1]:73 [ mul8s::b#0 ] : zp[1]:73 , reg byte x , reg byte y , 
Potential registers zp[2]:74 [ mul8s_compare::mn#0 ] : zp[2]:74 , 
Potential registers zp[1]:76 [ mul8s_error::a#0 ] : zp[1]:76 , reg byte x , 
Potential registers zp[1]:77 [ mul8s_error::b#0 ] : zp[1]:77 , reg byte x , 
Potential registers zp[2]:78 [ mul8s_error::ms#0 ] : zp[2]:78 , 
Potential registers zp[2]:80 [ mul8s_error::mn#0 ] : zp[2]:80 , 
Potential registers zp[2]:82 [ mul8s_error::mf#0 ] : zp[2]:82 , 
Potential registers zp[1]:84 [ print_byte::$0 ] : zp[1]:84 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:85 [ print_byte::$2 ] : zp[1]:85 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:86 [ mul8u::return#2 ] : zp[2]:86 , 
Potential registers zp[1]:88 [ mul8s::$9 ] : zp[1]:88 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:89 [ mul8s::$16 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:90 [ mul8s::$13 ] : zp[1]:90 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:91 [ mul8s::$17 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:92 [ mul8u::$1 ] : zp[1]:92 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:93 [ mulf8s_prepared::b#0 ] : zp[1]:93 , reg byte y , 
Potential registers zp[2]:94 [ mulf8s::return#0 ] : zp[2]:94 , 
Potential registers zp[2]:96 [ mulf8u_prepared::return#3 ] : zp[2]:96 , 
Potential registers zp[1]:98 [ mulf8s_prepared::$8 ] : zp[1]:98 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:99 [ mulf8s_prepared::$15 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:100 [ mulf8s_prepared::$12 ] : zp[1]:100 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:101 [ mulf8s_prepared::$16 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:102 [ mulf8u_prepared::return#0 ] : zp[2]:102 , 
Potential registers zp[1]:104 [ muls8u::a#0 ] : zp[1]:104 , reg byte x , reg byte y , 
Potential registers zp[1]:105 [ muls8u::b#0 ] : zp[1]:105 , reg byte x , reg byte y , 
Potential registers zp[2]:106 [ muls8u::return#2 ] : zp[2]:106 , 
Potential registers zp[2]:108 [ mul8u_compare::ms#0 ] : zp[2]:108 , 
Potential registers zp[1]:110 [ mulf8u::a#0 ] : zp[1]:110 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:111 [ mulf8u::b#0 ] : zp[1]:111 , reg byte x , reg byte y , 
Potential registers zp[2]:112 [ mulf8u::return#2 ] : zp[2]:112 , 
Potential registers zp[2]:114 [ mul8u_compare::mf#0 ] : zp[2]:114 , 
Potential registers zp[2]:116 [ mul8u::return#3 ] : zp[2]:116 , 
Potential registers zp[2]:118 [ mul8u_compare::mn#0 ] : zp[2]:118 , 
Potential registers zp[1]:120 [ mul8u_error::a#0 ] : zp[1]:120 , reg byte x , 
Potential registers zp[1]:121 [ mul8u_error::b#0 ] : zp[1]:121 , reg byte x , 
Potential registers zp[2]:122 [ mul8u_error::ms#0 ] : zp[2]:122 , 
Potential registers zp[2]:124 [ mul8u_error::mn#0 ] : zp[2]:124 , 
Potential registers zp[2]:126 [ mul8u_error::mf#0 ] : zp[2]:126 , 
Potential registers zp[2]:128 [ mulf8u_prepared::return#2 ] : zp[2]:128 , 
Potential registers zp[2]:130 [ mulf8u::return#0 ] : zp[2]:130 , 
Potential registers zp[1]:132 [ mulf_init::$1 ] : zp[1]:132 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:133 [ mulf_init::$4 ] : zp[1]:133 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:134 [ mulf_init::$5 ] : zp[1]:134 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [muls8s] 5,706: zp[2]:31 [ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] 3,003: zp[1]:30 [ muls8s::j#2 muls8s::j#1 ] 3,003: zp[1]:33 [ muls8s::i#2 muls8s::i#1 ] 202: zp[2]:62 [ muls8s::return#2 ] 191.18: zp[1]:61 [ muls8s::b#0 ] 175.58: zp[1]:60 [ muls8s::a#0 ] 
Uplift Scope [mul8u] 3,446.71: zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,435.29: zp[2]:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,002: zp[1]:92 [ mul8u::$1 ] 1,824.17: zp[1]:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] 309: zp[1]:20 [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] 202: zp[2]:116 [ mul8u::return#3 ] 4: zp[2]:86 [ mul8u::return#2 ] 
Uplift Scope [muls8u] 3,003: zp[1]:37 [ muls8u::i#2 muls8u::i#1 ] 2,869.83: zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 202: zp[2]:106 [ muls8u::return#2 ] 183.67: zp[1]:105 [ muls8u::b#0 ] 157.71: zp[1]:104 [ muls8u::a#0 ] 
Uplift Scope [mul8s_compare] 235.67: zp[1]:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] 226.32: zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] 34.52: zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] 17: zp[2]:74 [ mul8s_compare::mn#0 ] 15.25: zp[2]:64 [ mul8s_compare::ms#0 ] 12: zp[2]:70 [ mul8s_compare::mf#0 ] 
Uplift Scope [mul8u_compare] 235.67: zp[1]:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 171.78: zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 28.61: zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 17: zp[2]:118 [ mul8u_compare::mn#0 ] 14.52: zp[2]:108 [ mul8u_compare::ms#0 ] 11.33: zp[2]:114 [ mul8u_compare::mf#0 ] 
Uplift Scope [mulf8u] 202: zp[2]:112 [ mulf8u::return#2 ] 51.5: zp[1]:110 [ mulf8u::a#0 ] 34.33: zp[1]:111 [ mulf8u::b#0 ] 34.33: zp[2]:130 [ mulf8u::return#0 ] 
Uplift Scope [mulf8s] 202: zp[2]:68 [ mulf8s::return#2 ] 34.33: zp[2]:94 [ mulf8s::return#0 ] 33.67: zp[1]:66 [ mulf8s::a#0 ] 25.75: zp[1]:67 [ mulf8s::b#0 ] 
Uplift Scope [mulf_init] 47.67: zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:44 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:132 [ mulf_init::$1 ] 22: zp[1]:133 [ mulf_init::$4 ] 22: zp[1]:134 [ mulf_init::$5 ] 15.4: zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] 
Uplift Scope [] 77.65: zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ] 34.74: zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] 
Uplift Scope [mul8s] 13.83: zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 9.36: zp[1]:73 [ mul8s::b#0 ] 7.36: zp[1]:72 [ mul8s::a#0 ] 4: zp[1]:88 [ mul8s::$9 ] 4: zp[1]:89 [ mul8s::$16 ] 4: zp[1]:90 [ mul8s::$13 ] 4: zp[1]:91 [ mul8s::$17 ] 
Uplift Scope [mulf_tables_cmp] 26.4: zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] 17.6: zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] 
Uplift Scope [memset] 36.67: zp[2]:58 [ memset::dst#2 memset::dst#1 ] 
Uplift Scope [print_str] 35.5: zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ] 
Uplift Scope [print_byte] 23.5: zp[1]:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp[1]:84 [ print_byte::$0 ] 4: zp[1]:85 [ print_byte::$2 ] 
Uplift Scope [mulf8s_prepared] 13.83: zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp[1]:98 [ mulf8s_prepared::$8 ] 4: zp[1]:99 [ mulf8s_prepared::$15 ] 4: zp[1]:100 [ mulf8s_prepared::$12 ] 4: zp[1]:101 [ mulf8s_prepared::$16 ] 0.4: zp[1]:93 [ mulf8s_prepared::b#0 ] 
Uplift Scope [print_word] 29.33: zp[2]:10 [ 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_word::w#0 ] 
Uplift Scope [mulf8u_prepared] 14: zp[1]:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] 4: zp[2]:96 [ mulf8u_prepared::return#3 ] 4: zp[2]:128 [ mulf8u_prepared::return#2 ] 1.5: zp[2]:102 [ mulf8u_prepared::return#0 ] 
Uplift Scope [print_sword] 22: zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] 
Uplift Scope [print_sbyte] 17.67: zp[1]:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] 
Uplift Scope [print_char] 14: zp[1]:9 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] 
Uplift Scope [mulf8u_prepare] 14: zp[1]:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] 
Uplift Scope [mul8u_error] 0.57: zp[1]:120 [ mul8u_error::a#0 ] 0.4: zp[1]:121 [ mul8u_error::b#0 ] 0.31: zp[2]:122 [ mul8u_error::ms#0 ] 0.25: zp[2]:124 [ mul8u_error::mn#0 ] 0.21: zp[2]:126 [ mul8u_error::mf#0 ] 
Uplift Scope [mul8s_error] 0.57: zp[1]:76 [ mul8s_error::a#0 ] 0.4: zp[1]:77 [ mul8s_error::b#0 ] 0.31: zp[2]:78 [ mul8s_error::ms#0 ] 0.25: zp[2]:80 [ mul8s_error::mn#0 ] 0.21: zp[2]:82 [ mul8s_error::mf#0 ] 
Uplift Scope [RADIX] 
Uplift Scope [print_ln] 
Uplift Scope [print_cls] 
Uplift Scope [main] 
Uplift Scope [mulf_init_asm] 

Uplifting [muls8s] best 312432 combination zp[2]:31 [ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] zp[2]:62 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp[1]:60 [ muls8s::a#0 ] 
Uplifting [mul8u] best 302823 combination zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ] zp[2]:116 [ mul8u::return#3 ] zp[2]:86 [ mul8u::return#2 ] 
Uplifting [muls8u] best 292523 combination reg byte y [ muls8u::i#2 muls8u::i#1 ] zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] zp[2]:106 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp[1]:104 [ muls8u::a#0 ] 
Uplifting [mul8s_compare] best 291323 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] zp[2]:74 [ mul8s_compare::mn#0 ] zp[2]:64 [ mul8s_compare::ms#0 ] zp[2]:70 [ mul8s_compare::mf#0 ] 
Uplifting [mul8u_compare] best 290123 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp[2]:118 [ mul8u_compare::mn#0 ] zp[2]:108 [ mul8u_compare::ms#0 ] zp[2]:114 [ mul8u_compare::mf#0 ] 
Uplifting [mulf8u] best 289517 combination zp[2]:112 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp[2]:130 [ mulf8u::return#0 ] 
Uplifting [mulf8s] best 288911 combination zp[2]:68 [ mulf8s::return#2 ] zp[2]:94 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] 
Uplifting [mulf_init] best 288661 combination zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:44 [ 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::$1 ] reg byte a [ mulf_init::$4 ] reg byte a [ mulf_init::$5 ] zp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] 
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [] best 288661 combination zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ] zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] 
Uplifting [mul8s] best 288348 combination zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp[1]:72 [ mul8s::a#0 ] reg byte a [ mul8s::$9 ] reg byte a [ mul8s::$16 ] zp[1]:90 [ mul8s::$13 ] zp[1]:91 [ mul8s::$17 ] 
Limited combination testing to 100 combinations of 2304 possible.
Uplifting [mulf_tables_cmp] best 288348 combination zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] 
Uplifting [memset] best 288348 combination zp[2]:58 [ memset::dst#2 memset::dst#1 ] 
Uplifting [print_str] best 288348 combination zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ] 
Uplifting [print_byte] best 288325 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] 
Uplifting [mulf8s_prepared] best 288301 combination zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$8 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$12 ] reg byte a [ mulf8s_prepared::$16 ] zp[1]:93 [ mulf8s_prepared::b#0 ] 
Limited combination testing to 100 combinations of 512 possible.
Uplifting [print_word] best 288301 combination zp[2]:10 [ 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_word::w#0 ] 
Uplifting [mulf8u_prepared] best 288292 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ] zp[2]:96 [ mulf8u_prepared::return#3 ] zp[2]:128 [ mulf8u_prepared::return#2 ] zp[2]:102 [ mulf8u_prepared::return#0 ] 
Uplifting [print_sword] best 288292 combination zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] 
Uplifting [print_sbyte] best 288280 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] 
Uplifting [print_char] best 288259 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] 
Uplifting [mulf8u_prepare] best 288250 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ] 
Uplifting [mul8u_error] best 288244 combination reg byte x [ mul8u_error::a#0 ] zp[1]:121 [ mul8u_error::b#0 ] zp[2]:122 [ mul8u_error::ms#0 ] zp[2]:124 [ mul8u_error::mn#0 ] zp[2]:126 [ mul8u_error::mf#0 ] 
Uplifting [mul8s_error] best 288238 combination reg byte x [ mul8s_error::a#0 ] zp[1]:77 [ mul8s_error::b#0 ] zp[2]:78 [ mul8s_error::ms#0 ] zp[2]:80 [ mul8s_error::mn#0 ] zp[2]:82 [ mul8s_error::mf#0 ] 
Uplifting [RADIX] best 288238 combination 
Uplifting [print_ln] best 288238 combination 
Uplifting [print_cls] best 288238 combination 
Uplifting [main] best 288238 combination 
Uplifting [mulf_init_asm] best 288238 combination 
Attempting to uplift remaining variables inzp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ]
Uplifting [mul8s_compare] best 288238 combination zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] 
Attempting to uplift remaining variables inzp[1]:60 [ muls8s::a#0 ]
Uplifting [muls8s] best 288238 combination zp[1]:60 [ muls8s::a#0 ] 
Attempting to uplift remaining variables inzp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ]
Uplifting [mul8u_compare] best 288238 combination zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 
Attempting to uplift remaining variables inzp[1]:104 [ muls8u::a#0 ]
Uplifting [muls8u] best 288238 combination zp[1]:104 [ muls8u::a#0 ] 
Attempting to uplift remaining variables inzp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ]
Uplifting [mul8s_compare] best 288238 combination zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] 
Attempting to uplift remaining variables inzp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ]
Uplifting [mul8u_compare] best 288238 combination zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 
Attempting to uplift remaining variables inzp[1]:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Uplifting [mulf_init] best 288098 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] 
Attempting to uplift remaining variables inzp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ]
Uplifting [mulf_init] best 288098 combination zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] 
Attempting to uplift remaining variables inzp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ]
Uplifting [mulf_init] best 288098 combination zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] 
Attempting to uplift remaining variables inzp[1]:72 [ mul8s::a#0 ]
Uplifting [mul8s] best 288098 combination zp[1]:72 [ mul8s::a#0 ] 
Attempting to uplift remaining variables inzp[1]:90 [ mul8s::$13 ]
Uplifting [mul8s] best 288092 combination reg byte a [ mul8s::$13 ] 
Attempting to uplift remaining variables inzp[1]:91 [ mul8s::$17 ]
Uplifting [mul8s] best 288086 combination reg byte a [ mul8s::$17 ] 
Attempting to uplift remaining variables inzp[1]:77 [ mul8s_error::b#0 ]
Uplifting [mul8s_error] best 288086 combination zp[1]:77 [ mul8s_error::b#0 ] 
Attempting to uplift remaining variables inzp[1]:93 [ mulf8s_prepared::b#0 ]
Uplifting [mulf8s_prepared] best 288086 combination zp[1]:93 [ mulf8s_prepared::b#0 ] 
Attempting to uplift remaining variables inzp[1]:121 [ mul8u_error::b#0 ]
Uplifting [mul8u_error] best 288086 combination zp[1]:121 [ mul8u_error::b#0 ] 
Coalescing zero page register [ zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 ] ] with [ zp[1]:60 [ muls8s::a#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 muls8s::a#0 ] ] with [ zp[1]:72 [ mul8s::a#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] ] with [ zp[1]:77 [ mul8s_error::b#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 ] ] with [ zp[2]:10 [ 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_word::w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 ] ] with [ zp[2]:78 [ mul8s_error::ms#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] ] with [ zp[2]:74 [ mul8s_compare::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 ] ] with [ zp[2]:86 [ mul8u::return#2 ] ] - score: 1
Coalescing zero page register [ zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp[2]:116 [ mul8u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp[2]:94 [ mulf8s::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 ] ] with [ zp[2]:96 [ mulf8u_prepared::return#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:31 [ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] ] with [ zp[2]:62 [ muls8s::return#2 ] ] - score: 1
Coalescing zero page register [ zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] ] with [ zp[1]:104 [ muls8u::a#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] ] with [ zp[1]:121 [ mul8u_error::b#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] with [ zp[2]:106 [ muls8u::return#2 ] ] - score: 1
Coalescing zero page register [ zp[2]:68 [ mulf8s::return#2 ] ] with [ zp[2]:70 [ mul8s_compare::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:102 [ mulf8u_prepared::return#0 ] ] with [ zp[2]:128 [ mulf8u_prepared::return#2 ] ] - score: 1
Coalescing zero page register [ zp[2]:108 [ mul8u_compare::ms#0 ] ] with [ zp[2]:122 [ mul8u_error::ms#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:112 [ mulf8u::return#2 ] ] with [ zp[2]:114 [ mul8u_compare::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:112 [ mulf8u::return#2 mul8u_compare::mf#0 ] ] with [ zp[2]:130 [ mulf8u::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:118 [ mul8u_compare::mn#0 ] ] with [ zp[2]:124 [ mul8u_error::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 mul8s_error::ms#0 ] ] with [ zp[2]:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] with [ zp[2]:64 [ mul8s_compare::ms#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 ] ] with [ zp[2]:108 [ mul8u_compare::ms#0 mul8u_error::ms#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 ] ] with [ zp[2]:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp[2]:80 [ mul8s_error::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 ] ] with [ zp[2]:68 [ mulf8s::return#2 mul8s_compare::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 ] ] with [ zp[2]:102 [ mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] - score: 1
Coalescing zero page register [ zp[2]:112 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 ] ] with [ zp[2]:126 [ mul8u_error::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 ] ] with [ zp[2]:31 [ muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 ] ] - score: 1
Coalescing zero page register [ zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 ] ] with [ zp[2]:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ] - score: 1
Coalescing zero page register [ zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_error::mn#0 ] ] with [ zp[2]:118 [ mul8u_compare::mn#0 mul8u_error::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] with [ zp[2]:82 [ mul8s_error::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 ] ] with [ zp[2]:112 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] ] with [ zp[2]:15 [ print_str::str#16 print_str::str#18 print_str::str#0 ] ]
Coalescing zero page register [ zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ] ] with [ zp[1]:2 [ mul8s_compare::a#10 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 ] ]
Coalescing zero page register [ zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ] with [ zp[1]:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 ] ]
Coalescing zero page register [ zp[2]:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] ] with [ zp[2]:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#11 ] ]
Coalescing zero page register [ zp[2]:44 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp[2]:7 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ]
Coalescing zero page register [ zp[2]:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp[2]:13 [ print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ] ]
Coalescing zero page register [ zp[2]:50 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] with [ zp[2]:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_error::mn#0 mul8u_compare::mn#0 mul8u_error::mn#0 ] ]
Coalescing zero page register [ zp[2]:53 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] with [ zp[2]:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ]
Coalescing zero page register [ zp[2]:58 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:56 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ]
Coalescing zero page register [ zp[1]:93 [ mulf8s_prepared::b#0 ] ] with [ zp[1]:46 [ mulf_init::c#2 mulf_init::c#1 ] ]
Coalescing zero page register [ zp[1]:55 [ mulf_init::dir#2 mulf_init::dir#4 ] ] with [ zp[1]:34 [ mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mul8s_compare::a#10 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 ] ]
Coalescing zero page register [ zp[2]:58 [ memset::dst#2 memset::dst#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] with [ zp[2]:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 print_str::str#16 print_str::str#18 print_str::str#0 ] ]
Coalescing zero page register [ zp[1]:93 [ mulf8s_prepared::b#0 mulf_init::c#2 mulf_init::c#1 ] ] with [ zp[1]:35 [ mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 ] ]
Allocated (was zp[2]:40) zp[2]: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[2]:44) zp[2]:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ]
Allocated (was zp[2]:47) zp[2]:6 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ]
Allocated (was zp[2]:50) zp[2]:8 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_error::mn#0 mul8u_compare::mn#0 mul8u_error::mn#0 ]
Allocated (was zp[2]:53) zp[2]:10 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ]
Allocated (was zp[1]:55) zp[1]:12 [ mulf_init::dir#2 mulf_init::dir#4 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mul8s_compare::a#10 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 ]
Allocated (was zp[2]:58) zp[2]:13 [ memset::dst#2 memset::dst#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 print_str::str#16 print_str::str#18 print_str::str#0 ]
Allocated (was zp[1]:93) zp[1]:15 [ mulf8s_prepared::b#0 mulf_init::c#2 mulf_init::c#1 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 ]

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 = 6
  .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) ← (byte) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
    // [5] call print_cls 
    // [336] 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 
    // [307] 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 
    // [280] 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 
    // [202] 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: {
    .label ms = 4
    .label mf = $a
    .label mn = 8
    .label a = $c
    .label b = $f
    // [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1]
  __b1_from_mul8s_compare:
    // [18] phi (signed byte) mul8s_compare::a#10 = (signed byte) -$80 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 
    lda #-$80
    sta.z a
    jmp __b1
    // mul8s_compare::@1
  __b1:
    // [19] if((signed byte) mul8s_compare::a#10!=(signed byte) -$80) goto mul8s_compare::@3 -- vbsz1_neq_vbsc1_then_la1 
    lda #-$80
    cmp.z a
    bne __b3_from___b1
    jmp __b2
    // mul8s_compare::@2
  __b2:
    // [20] (byte*) print_char_cursor#189 ← (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
    // [21] call print_str 
    // [114] phi from mul8s_compare::@2 to print_str [phi:mul8s_compare::@2->print_str]
  print_str_from___b2:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#189 [phi:mul8s_compare::@2->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [22] phi from mul8s_compare::@2 to mul8s_compare::@11 [phi:mul8s_compare::@2->mul8s_compare::@11]
  __b11_from___b2:
    jmp __b11
    // mul8s_compare::@11
  __b11:
    // [23] call print_ln 
    // [80] phi from mul8s_compare::@11 to print_ln [phi:mul8s_compare::@11->print_ln]
  print_ln_from___b11:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@11->print_ln#0] -- register_copy 
    // [80] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@11->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    // mul8s_compare::@return
  __breturn:
    // [24] return 
    rts
    // [25] phi from mul8s_compare::@1 to mul8s_compare::@3 [phi:mul8s_compare::@1->mul8s_compare::@3]
  __b3_from___b1:
    // [25] phi (signed byte) mul8s_compare::b#10 = (signed byte) -$80 [phi:mul8s_compare::@1->mul8s_compare::@3#0] -- vbsz1=vbsc1 
    lda #-$80
    sta.z b
    jmp __b3
    // mul8s_compare::@3
  __b3:
    // [26] if((signed byte) mul8s_compare::b#10!=(signed byte) -$80) goto mul8s_compare::@4 -- vbsz1_neq_vbsc1_then_la1 
    lda #-$80
    cmp.z b
    bne __b4
    jmp __b5
    // mul8s_compare::@5
  __b5:
    // [27] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#10 -- vbsz1=_inc_vbsz1 
    inc.z a
    // [18] phi from mul8s_compare::@5 to mul8s_compare::@1 [phi:mul8s_compare::@5->mul8s_compare::@1]
  __b1_from___b5:
    // [18] phi (signed byte) mul8s_compare::a#10 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@5->mul8s_compare::@1#0] -- register_copy 
    jmp __b1
    // mul8s_compare::@4
  __b4:
    // [28] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#10
    // [29] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 
    ldx.z b
    // [30] call muls8s 
    jsr muls8s
    // [31] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0
    jmp __b12
    // mul8s_compare::@12
  __b12:
    // [32] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2
    // [33] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#10 -- vbsaa=vbsz1 
    lda.z a
    // [34] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 
    ldx.z b
    // [35] call mulf8s 
    // [159] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s]
  mulf8s_from___b12:
    jsr mulf8s
    // [36] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
    jmp __b13
    // mul8s_compare::@13
  __b13:
    // [37] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2
    // [38] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#10
    // [39] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsyy=vbsz1 
    ldy.z b
    // [40] call mul8s 
    jsr mul8s
    jmp __b14
    // mul8s_compare::@14
  __b14:
    // [41] (signed word) mul8s_compare::mn#0 ← (signed word)(word) mul8s::m#4
    // [42] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@6 -- vwsz1_eq_vwsz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    beq __b6_from___b14
  !:
    // [43] phi from mul8s_compare::@14 to mul8s_compare::@9 [phi:mul8s_compare::@14->mul8s_compare::@9]
  __b9_from___b14:
    jmp __b9
    // mul8s_compare::@9
  __b9:
    // [44] phi from mul8s_compare::@9 to mul8s_compare::@6 [phi:mul8s_compare::@9->mul8s_compare::@6]
  __b6_from___b9:
    // [44] phi (byte) mul8s_compare::ok#4 = (byte) 0 [phi:mul8s_compare::@9->mul8s_compare::@6#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b6
    // [44] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6]
  __b6_from___b14:
    // [44] phi (byte) mul8s_compare::ok#4 = (byte) 1 [phi:mul8s_compare::@14->mul8s_compare::@6#0] -- vbuxx=vbuc1 
    ldx #1
    jmp __b6
    // mul8s_compare::@6
  __b6:
    // [45] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@15 -- vwsz1_eq_vwsz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    beq __b15_from___b6
  !:
    // [47] phi from mul8s_compare::@6 to mul8s_compare::@7 [phi:mul8s_compare::@6->mul8s_compare::@7]
  __b7_from___b6:
    // [47] phi (byte) mul8s_compare::ok#3 = (byte) 0 [phi:mul8s_compare::@6->mul8s_compare::@7#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b7
    // [46] phi from mul8s_compare::@6 to mul8s_compare::@15 [phi:mul8s_compare::@6->mul8s_compare::@15]
  __b15_from___b6:
    jmp __b15
    // mul8s_compare::@15
  __b15:
    // [47] phi from mul8s_compare::@15 to mul8s_compare::@7 [phi:mul8s_compare::@15->mul8s_compare::@7]
  __b7_from___b15:
    // [47] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@15->mul8s_compare::@7#0] -- register_copy 
    jmp __b7
    // mul8s_compare::@7
  __b7:
    // [48] if((byte) mul8s_compare::ok#3!=(byte) 0) goto mul8s_compare::@8 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b8
    jmp __b10
    // mul8s_compare::@10
  __b10:
    // [49] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [50] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#10 -- vbsxx=vbsz1 
    ldx.z a
    // [51] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10
    // [52] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0
    // [53] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0
    // [54] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0
    // [55] call mul8s_error 
    jsr mul8s_error
    jmp __breturn
    // mul8s_compare::@8
  __b8:
    // [56] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 
    inc.z b
    // [25] phi from mul8s_compare::@8 to mul8s_compare::@3 [phi:mul8s_compare::@8->mul8s_compare::@3]
  __b3_from___b8:
    // [25] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@8->mul8s_compare::@3#0] -- register_copy 
    jmp __b3
    str: .text "signed multiply results match!"
    .byte 0
}
  // mul8s_error
// mul8s_error(signed byte register(X) a, signed byte zp($f) b, signed word zp(4) ms, signed word zp(8) mn, signed word zp($a) mf)
mul8s_error: {
    .label b = $f
    .label ms = 4
    .label mn = 8
    .label mf = $a
    // [57] (byte*) print_char_cursor#190 ← (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
    // [58] call print_str 
    // [114] phi from mul8s_error to print_str [phi:mul8s_error->print_str]
  print_str_from_mul8s_error:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#190 [phi:mul8s_error->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_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
    // mul8s_error::@1
  __b1:
    // [59] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0
    // [60] call print_sbyte 
    // [121] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte]
  print_sbyte_from___b1:
    // [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy 
    jsr print_sbyte
    // [61] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2]
  __b2_from___b1:
    jmp __b2
    // mul8s_error::@2
  __b2:
    // [62] call print_str 
    // [114] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
  print_str_from___b2:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@2->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_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
    // mul8s_error::@3
  __b3:
    // [63] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsxx=vbsz1 
    ldx.z b
    // [64] call print_sbyte 
    // [121] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte]
  print_sbyte_from___b3:
    // [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy 
    jsr print_sbyte
    // [65] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4]
  __b4_from___b3:
    jmp __b4
    // mul8s_error::@4
  __b4:
    // [66] call print_str 
    // [114] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
  print_str_from___b4:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@4->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_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
    // mul8s_error::@5
  __b5:
    // [67] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0
    // [68] call print_sword 
    // [85] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword]
  print_sword_from___b5:
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy 
    jsr print_sword
    // [69] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6]
  __b6_from___b5:
    jmp __b6
    // mul8s_error::@6
  __b6:
    // [70] call print_str 
    // [114] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
  print_str_from___b6:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@6->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_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
    // mul8s_error::@7
  __b7:
    // [71] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 
    lda.z mn
    sta.z print_sword.w
    lda.z mn+1
    sta.z print_sword.w+1
    // [72] call print_sword 
    // [85] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword]
  print_sword_from___b7:
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy 
    jsr print_sword
    // [73] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8]
  __b8_from___b7:
    jmp __b8
    // mul8s_error::@8
  __b8:
    // [74] call print_str 
    // [114] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
  print_str_from___b8:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@8->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_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
    // mul8s_error::@9
  __b9:
    // [75] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 
    lda.z mf
    sta.z print_sword.w
    lda.z mf+1
    sta.z print_sword.w+1
    // [76] call print_sword 
    // [85] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword]
  print_sword_from___b9:
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy 
    jsr print_sword
    // [77] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10]
  __b10_from___b9:
    jmp __b10
    // mul8s_error::@10
  __b10:
    // [78] call print_ln 
    // [80] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln]
  print_ln_from___b10:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8s_error::@10->print_ln#0] -- register_copy 
    // [80] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    // mul8s_error::@return
  __breturn:
    // [79] return 
    rts
    str: .text "signed multiply mismatch "
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [81] 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:
    // [81] 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:
    // [82] (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
  !:
    // [83] 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:
    // [84] return 
    rts
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp(4) w)
print_sword: {
    .label w = 4
    // [86] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1_from_print_sword
    // [87] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
  __b3_from_print_sword:
    jmp __b3
    // print_sword::@3
  __b3:
    // [88] call print_char 
    // [96] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
  print_char_from___b3:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [89] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [89] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#4 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    jmp __b2
    // print_sword::@2
  __b2:
    // [90] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6
    // [91] call print_word 
    // [100] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
  print_word_from___b2:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_sword::@return
  __breturn:
    // [92] return 
    rts
    // [93] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
  __b1_from_print_sword:
    jmp __b1
    // print_sword::@1
  __b1:
    // [94] call print_char 
    // [96] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
  print_char_from___b1:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp __b4
    // print_sword::@4
  __b4:
    // [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 
    sec
    lda #0
    sbc.z w
    sta.z w
    lda #0
    sbc.z w+1
    sta.z w+1
    jmp __b2_from___b4
}
  // print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
    // [97] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
    // [98] (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:
    // [99] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp(4) w)
print_word: {
    .label w = 4
    // [101] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 
    lda.z w+1
    tax
    // [102] call print_byte 
    // [106] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy 
    // [106] 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:
    // [103] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 
    lda.z w
    tax
    // [104] call print_byte 
    // [106] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from___b1:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [106] 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:
    // [105] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
    // [107] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    // [108] (byte) print_char::ch#4 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    // [109] call print_char 
    // [96] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy 
    // [96] 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:
    // [110] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // [111] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    // [112] call print_char 
    // [96] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from___b1:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [96] 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:
    // [113] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp($d) str)
print_str: {
    .label str = $d
    // [115] 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:
    // [115] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [115] 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:
    // [116] 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:
    // [117] return 
    rts
    // print_str::@2
  __b2:
    // [118] *((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
    // [119] (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
  !:
    // [120] (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
}
  // print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte register(X) b)
print_sbyte: {
    // [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi __b1_from_print_sbyte
    // [123] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
  __b3_from_print_sbyte:
    jmp __b3
    // print_sbyte::@3
  __b3:
    // [124] call print_char 
    // [96] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
  print_char_from___b3:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@3->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [125] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [125] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy 
    jmp __b2
    // print_sbyte::@2
  __b2:
    // [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5
    // [127] call print_byte 
    // [106] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  print_byte_from___b2:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __breturn
    // print_sbyte::@return
  __breturn:
    // [128] return 
    rts
    // [129] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  __b1_from_print_sbyte:
    jmp __b1
    // print_sbyte::@1
  __b1:
    // [130] call print_char 
    // [96] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  print_char_from___b1:
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@1->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp __b4
    // print_sbyte::@4
  __b4:
    // [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
    jmp __b2_from___b4
}
  // mul8s
// Multiply of two signed bytes to a signed word
// Fixes offsets introduced by using unsigned multiplication
// mul8s(signed byte zp($c) a, signed byte register(Y) b)
mul8s: {
    .label m = 8
    .label a = $c
    // [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 
    ldx.z a
    // [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy 
    tya
    // [134] call mul8u 
    // [148] phi from mul8s to mul8u [phi:mul8s->mul8u]
  mul8u_from_mul8s:
    // [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy 
    // [148] phi (byte) mul8u::b#2 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- register_copy 
    jsr mul8u
    // [135] (word) mul8u::return#2 ← (word) mul8u::res#2
    jmp __b5
    // mul8s::@5
  __b5:
    // [136] (word) mul8s::m#0 ← (word) mul8u::return#2
    // [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 
    lda.z a
    cmp #0
    bpl __b1_from___b5
    jmp __b3
    // mul8s::@3
  __b3:
    // [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 
    lda.z m+1
    // [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy 
    sty.z $ff
    sec
    sbc.z $ff
    // [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa 
    sta.z m+1
    // [141] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy 
    jmp __b1
    // mul8s::@1
  __b1:
    // [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 
    cpy #0
    bpl __b2_from___b1
    jmp __b4
    // mul8s::@4
  __b4:
    // [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 
    lda.z m+1
    // [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 
    sec
    sbc.z a
    // [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa 
    sta.z m+1
    // [146] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2]
  __b2_from___b1:
  __b2_from___b4:
    // [146] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy 
    jmp __b2
    // mul8s::@2
  __b2:
    jmp __breturn
    // mul8s::@return
  __breturn:
    // [147] 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 = $d
    .label res = 8
    .label return = 8
    // [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 -- vwuz1=_word_vbuaa 
    sta.z mb
    lda #0
    sta.z mb+1
    // [150] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
  __b1_from_mul8u:
    // [150] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy 
    // [150] phi (word) mul8u::res#2 = (word) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z res
    lda #>0
    sta.z res+1
    // [150] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy 
    jmp __b1
    // mul8u::@1
  __b1:
    // [151] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b2
    jmp __breturn
    // mul8u::@return
  __breturn:
    // [152] return 
    rts
    // mul8u::@2
  __b2:
    // [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #1
    // [154] 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:
    // [155] (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
    // [156] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
  __b3_from___b2:
  __b3_from___b4:
    // [156] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy 
    jmp __b3
    // mul8u::@3
  __b3:
    // [157] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [158] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 
    asl.z mb
    rol.z mb+1
    // [150] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
  __b1_from___b3:
    // [150] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy 
    // [150] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy 
    // [150] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy 
    jmp __b1
}
  // mulf8s
// Fast multiply two signed bytes to a word result
// mulf8s(signed byte register(A) a, signed byte register(X) b)
mulf8s: {
    .label return = $a
    jmp mulf8s_prepare1
    // mulf8s::mulf8s_prepare1
  mulf8s_prepare1:
    // [160] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0
    // [161] call mulf8u_prepare 
    // [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare]
  mulf8u_prepare_from_mulf8s_prepare1:
    // [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    jmp __b1
    // mulf8s::@1
  __b1:
    // [162] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx 
    stx.z mulf8s_prepared.b
    // [163] call mulf8s_prepared 
    jsr mulf8s_prepared
    jmp __b2
    // mulf8s::@2
  __b2:
    // [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4
    jmp __breturn
    // mulf8s::@return
  __breturn:
    // [165] return 
    rts
}
  // mulf8s_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8s_prepare(byte a)
// mulf8s_prepared(signed byte zp($f) b)
mulf8s_prepared: {
    .label memA = $fd
    .label m = $a
    .label b = $f
    // [166] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 
    ldx.z b
    // [167] call mulf8u_prepared 
    // [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared]
  mulf8u_prepared_from_mulf8s_prepared:
    // [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
    // [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
    jmp __b5
    // mulf8s_prepared::@5
  __b5:
    // [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
    // [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 
    lda memA
    cmp #0
    bpl __b1_from___b5
    jmp __b3
    // mulf8s_prepared::@3
  __b3:
    // [171] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 
    lda.z m+1
    // [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 
    sec
    sbc.z b
    // [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa 
    sta.z m+1
    // [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy 
    jmp __b1
    // mulf8s_prepared::@1
  __b1:
    // [175] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 
    lda.z b
    cmp #0
    bpl __b2_from___b1
    jmp __b4
    // mulf8s_prepared::@4
  __b4:
    // [176] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 
    lda.z m+1
    // [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) -- vbuaa=vbuaa_minus__deref_pbuc1 
    sec
    sbc memA
    // [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa 
    sta.z m+1
    // [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2]
  __b2_from___b1:
  __b2_from___b4:
    // [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy 
    jmp __b2
    // mulf8s_prepared::@2
  __b2:
    jmp __breturn
    // mulf8s_prepared::@return
  __breturn:
    // [180] 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 = $a
    // [182] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#2 -- _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
    // [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda resL
    sta.z return
    lda memB
    sta.z return+1
    jmp __breturn
    // mulf8u_prepared::@return
  __breturn:
    // [185] 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
    // [187] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#2 -- _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:
    // [189] return 
    rts
}
  // muls8s
// Slow multiplication of signed bytes
// Perform a signed multiplication by repeated addition/subtraction
// muls8s(signed byte zp($c) a, signed byte register(X) b)
muls8s: {
    .label m = 4
    .label return = 4
    .label a = $c
    // [190] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 
    lda.z a
    bmi __b5_from_muls8s
    jmp __b2
    // muls8s::@2
  __b2:
    // [191] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 
    lda.z a
    cmp #1
    bmi __b1_from___b2
    // [192] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3]
  __b3_from___b2:
    // [192] phi (signed word) muls8s::m#3 = (signed word) 0 [phi:muls8s::@2->muls8s::@3#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    // [192] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vbsyy=vbsc1 
    ldy #0
    jmp __b3
    // muls8s::@3
  __b3:
    // [193] if((signed byte) muls8s::j#2!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsyy_neq_vbsz1_then_la1 
    cpy.z a
    bne __b4
    // [194] phi from muls8s::@3 muls8s::@5 to muls8s::@1 [phi:muls8s::@3/muls8s::@5->muls8s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [194] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#3 [phi:muls8s::@3/muls8s::@5->muls8s::@1#0] -- register_copy 
    jmp __b1
    // [194] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1]
  __b1_from___b2:
    // [194] phi (signed word) muls8s::return#0 = (signed word) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    jmp __b1
    // muls8s::@1
  __b1:
    jmp __breturn
    // muls8s::@return
  __breturn:
    // [195] return 
    rts
    // muls8s::@4
  __b4:
    // [196] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx 
    txa
    sta.z $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    clc
    lda.z m
    adc.z $fe
    sta.z m
    lda.z m+1
    adc.z $ff
    sta.z m+1
    // [197] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy 
    iny
    // [192] phi from muls8s::@4 to muls8s::@3 [phi:muls8s::@4->muls8s::@3]
  __b3_from___b4:
    // [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@4->muls8s::@3#0] -- register_copy 
    // [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@4->muls8s::@3#1] -- register_copy 
    jmp __b3
    // [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5]
  __b5_from_muls8s:
    // [198] phi (signed word) muls8s::m#5 = (signed word) 0 [phi:muls8s->muls8s::@5#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    // [198] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@5#1] -- vbsyy=vbsc1 
    ldy #0
    jmp __b5
    // muls8s::@5
  __b5:
    // [199] if((signed byte) muls8s::i#2!=(signed byte) muls8s::a#0) goto muls8s::@6 -- vbsyy_neq_vbsz1_then_la1 
    cpy.z a
    bne __b6
    jmp __b1_from___b5
    // muls8s::@6
  __b6:
    // [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx 
    txa
    sta.z $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    sec
    lda.z m
    sbc.z $fe
    sta.z m
    lda.z m+1
    sbc.z $ff
    sta.z m+1
    // [201] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy 
    dey
    // [198] phi from muls8s::@6 to muls8s::@5 [phi:muls8s::@6->muls8s::@5]
  __b5_from___b6:
    // [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@6->muls8s::@5#0] -- register_copy 
    // [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@6->muls8s::@5#1] -- register_copy 
    jmp __b5
}
  // mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = 4
    .label mf = $a
    .label mn = 8
    .label b = $f
    .label a = $c
    // [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
  __b1_from_mul8u_compare:
    // [203] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    jmp __b1
    // [203] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1]
  __b1_from___b8:
    // [203] 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:
    // [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
  __b2_from___b1:
    // [204] 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
    // [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
  __b2_from___b5:
    // [204] 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:
    // [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
    // [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx.z b
    // [207] call muls8u 
    jsr muls8u
    // [208] (word) muls8u::return#2 ← (word) muls8u::return#0
    jmp __b10
    // mul8u_compare::@10
  __b10:
    // [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
    // [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 
    lda.z a
    // [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx.z b
    // [212] call mulf8u 
    jsr mulf8u
    // [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0
    jmp __b11
    // mul8u_compare::@11
  __b11:
    // [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
    // [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx.z a
    // [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 
    lda.z b
    // [217] call mul8u 
    // [148] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u]
  mul8u_from___b11:
    // [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy 
    // [148] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- register_copy 
    jsr mul8u
    // [218] (word) mul8u::return#3 ← (word) mul8u::res#2
    jmp __b12
    // mul8u_compare::@12
  __b12:
    // [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
    // [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    beq __b3_from___b12
  !:
    // [221] 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:
    // [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
  __b3_from___b6:
    // [222] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b3
    // [222] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3]
  __b3_from___b12:
    // [222] 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:
    // [223] 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
  !:
    // [225] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
  __b4_from___b3:
    // [225] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b4
    // [224] 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:
    // [225] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4]
  __b4_from___b14:
    // [225] 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:
    // [226] 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:
    // [227] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [228] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx.z a
    // [229] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
    // [230] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
    // [231] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
    // [232] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
    // [233] call mul8u_error 
    // [243] 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:
    // [234] return 
    rts
    // mul8u_compare::@5
  __b5:
    // [235] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc.z b
    // [236] 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:
    // [237] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc.z a
    // [238] 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
    // [239] 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:
    // [240] call print_str 
    // [114] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str]
  print_str_from___b9:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_compare::@9->print_str#0] -- register_copy 
    // [114] 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
    // [241] 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:
    // [242] call print_ln 
    // [80] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln]
  print_ln_from___b13:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy 
    // [80] 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 zp($f) b, word zp(4) ms, word zp(8) mn, word zp($a) mf)
mul8u_error: {
    .label b = $f
    .label ms = 4
    .label mn = 8
    .label mf = $a
    // [244] call print_str 
    // [114] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
  print_str_from_mul8u_error:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_error->print_str#0] -- register_copy 
    // [114] 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:
    // [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
    // [246] call print_byte 
    // [106] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
  print_byte_from___b1:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // [247] 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:
    // [248] call print_str 
    // [114] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
  print_str_from___b2:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy 
    // [114] 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:
    // [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 
    ldx.z b
    // [250] call print_byte 
    // [106] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
  print_byte_from___b3:
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
    // [251] 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:
    // [252] call print_str 
    // [114] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
  print_str_from___b4:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy 
    // [114] 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:
    // [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0
    // [254] call print_word 
    // [100] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
  print_word_from___b5:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@5->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy 
    jsr print_word
    // [255] 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:
    // [256] call print_str 
    // [114] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
  print_str_from___b6:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy 
    // [114] 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:
    // [257] (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
    // [258] call print_word 
    // [100] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
  print_word_from___b7:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@7->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy 
    jsr print_word
    // [259] 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:
    // [260] call print_str 
    // [114] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
  print_str_from___b8:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy 
    // [114] 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:
    // [261] (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
    // [262] call print_word 
    // [100] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
  print_word_from___b9:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@9->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy 
    jsr print_word
    // [263] 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:
    // [264] call print_ln 
    // [80] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
  print_ln_from___b10:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
    // [80] 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:
    // [265] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte register(A) a, byte register(X) b)
mulf8u: {
    .label return = $a
    // [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
    // [267] call mulf8u_prepare 
    // [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare]
  mulf8u_prepare_from_mulf8u:
    // [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    jmp __b1
    // mulf8u::@1
  __b1:
    // [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
    // [269] call mulf8u_prepared 
    // [181] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared]
  mulf8u_prepared_from___b1:
    // [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
    // [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
    jmp __b2
    // mulf8u::@2
  __b2:
    // [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
    jmp __breturn
    // mulf8u::@return
  __breturn:
    // [272] return 
    rts
}
  // muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zp($c) a, byte register(X) b)
muls8u: {
    .label return = 4
    .label m = 4
    .label a = $c
    // [273] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda.z a
    cmp #0
    beq __b1_from_muls8u
    // [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
  __b2_from_muls8u:
    // [274] phi (word) muls8u::m#3 = (word) 0 [phi:muls8u->muls8u::@2#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    // [274] phi (byte) muls8u::i#2 = (byte) 0 [phi:muls8u->muls8u::@2#1] -- vbuyy=vbuc1 
    ldy #0
    jmp __b2
    // muls8u::@2
  __b2:
    // [275] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@3 -- vbuyy_neq_vbuz1_then_la1 
    cpy.z a
    bne __b3
    // [276] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
  __b1_from___b2:
    // [276] phi (word) muls8u::return#0 = (word) muls8u::m#3 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    jmp __b1
    // [276] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  __b1_from_muls8u:
    // [276] phi (word) muls8u::return#0 = (word) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    jmp __b1
    // muls8u::@1
  __b1:
    jmp __breturn
    // muls8u::@return
  __breturn:
    // [277] return 
    rts
    // muls8u::@3
  __b3:
    // [278] (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
  !:
    // [279] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [274] phi from muls8u::@3 to muls8u::@2 [phi:muls8u::@3->muls8u::@2]
  __b2_from___b3:
    // [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@3->muls8u::@2#0] -- register_copy 
    // [274] 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
    // [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
  __b1_from_mulf_tables_cmp:
    // [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte*) mula_sqr1_lo [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
    // [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte*) mulf_sqr1_lo [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:
    // [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(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
  !:
    // [283] 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:
    // [284] call print_str 
    // [114] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
  print_str_from___b3:
    // [114] 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
    // [114] 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
    // [285] 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:
    // [286] call print_ln 
    // [80] phi from mulf_tables_cmp::@6 to print_ln [phi:mulf_tables_cmp::@6->print_ln]
  print_ln_from___b6:
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@6->print_ln#0] -- register_copy 
    // [80] 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:
    // [287] (byte*) print_char_cursor#226 ← (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
    // [288] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return]
  __breturn_from___b7:
    // [288] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- register_copy 
    // [288] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#226 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy 
    jmp __breturn
    // mulf_tables_cmp::@return
  __breturn:
    // [289] return 
    rts
    // mulf_tables_cmp::@2
  __b2:
    // [290] 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:
    // [291] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [292] call print_str 
    // [114] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
  print_str_from___b5:
    // [114] 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
    // [114] 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:
    // [293] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
    // [294] call print_word 
    // [100] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
  print_word_from___b8:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy 
    jsr print_word
    // [295] 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:
    // [296] call print_str 
    // [114] phi from mulf_tables_cmp::@9 to print_str [phi:mulf_tables_cmp::@9->print_str]
  print_str_from___b9:
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@9->print_str#0] -- register_copy 
    // [114] 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:
    // [297] (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
    // [298] call print_word 
    // [100] phi from mulf_tables_cmp::@10 to print_word [phi:mulf_tables_cmp::@10->print_word]
  print_word_from___b10:
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@10->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@10->print_word#1] -- register_copy 
    jsr print_word
    // [288] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
  __breturn_from___b10:
    // [288] 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
    // [288] 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:
    // [299] (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
  !:
    // [300] (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
  !:
    // [281] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1]
  __b1_from___b4:
    // [281] 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 
    // [281] 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 !-
    // [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
    // [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
    // [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
    // [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
    jmp __breturn
    // mulf_init_asm::@return
  __breturn:
    // [306] return 
    rts
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    // x/2
    .label c = $f
    // Counter used for determining x%2==0
    .label sqr1_hi = 6
    // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4
    .label sqr = $d
    .label sqr1_lo = 4
    // Decrease or increase x_255 - initially we decrease
    .label sqr2_hi = $a
    .label sqr2_lo = 8
    //Start with g(0)=f(255)
    .label dir = $c
    // [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  __b1_from_mulf_init:
    // [308] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(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
    // [308] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1 
    lda #<0
    sta.z sqr
    lda #>0
    sta.z sqr+1
    // [308] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(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:
    // [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(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
    // [310] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
  __b5_from___b1:
    // [310] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [310] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [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
    // [310] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 
    ldx #-1
    // [310] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [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:
    // [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(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:
    // [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(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
    // [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
    jmp __breturn
    // mulf_init::@return
  __breturn:
    // [314] return 
    rts
    // mulf_init::@6
  __b6:
    // [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda mulf_sqr1_lo,x
    ldy #0
    sta (sqr2_lo),y
    // [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda mulf_sqr1_hi,x
    ldy #0
    sta (sqr2_hi),y
    // [317] (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
  !:
    // [318] (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
    // [319] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b9_from___b6
    // [321] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
  __b8_from___b6:
    // [321] 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
    // [320] 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:
    // [321] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
  __b8_from___b9:
    // [321] 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:
    // [322] (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
  !:
    // [310] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
  __b5_from___b8:
    // [310] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [310] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [310] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [310] 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:
    // [323] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // [324] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 
    lda #1
    and.z c
    // [325] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b3_from___b2
    jmp __b4
    // mulf_init::@4
  __b4:
    // [326] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx 
    inx
    // [327] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [328] 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:
    // [328] 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 
    // [328] 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:
    // [329] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 
    lda.z sqr
    // [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_lo),y
    // [331] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 
    lda.z sqr+1
    // [332] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_hi),y
    // [333] (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
  !:
    // [334] (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
  !:
    // [335] (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
  !:
    // [308] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
  __b1_from___b3:
    // [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [308] 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: {
    // [337] call memset 
    // [339] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [338] 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 = $d
    // [340] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [340] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp __b1
    // memset::@1
  __b1:
    // [341] if((byte*) memset::dst#2!=(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
    jmp __breturn
    // memset::@return
  __breturn:
    // [342] return 
    rts
    // memset::@2
  __b2:
    // [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [344] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [340] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [340] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // 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 __b11
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b5
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp __b14
Removing instruction jmp __b9
Removing instruction jmp __b6
Removing instruction jmp __b15
Removing instruction jmp __b7
Removing instruction jmp __b10
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 __b3
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b4
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 __breturn
Removing instruction jmp __b3
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b4
Removing instruction jmp __b3
Removing instruction jmp mulf8s_prepare1
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b5
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b5
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 __b2
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 __b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy #0
Removing instruction lda #>0
Removing instruction ldx memB
Removing instruction lda memA
Removing instruction lda #>0
Replacing instruction ldy #0 with TAY
Removing instruction lda #>0
Removing instruction lda #>0
Replacing instruction ldy #0 with TAY
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 __bbegin with __b1
Replacing label __b15_from___b6 with __b7
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from_print_sword with __b1
Replacing label __b2_from___b4 with __b2
Replacing label __b1_from___b2 with __b1
Replacing label __b1_from_print_sbyte with __b1
Replacing label __b2_from___b4 with __b2
Replacing label __b1_from___b5 with __b1
Replacing label __b2_from___b1 with __b2
Replacing label __b3_from___b2 with __b3
Replacing label __b1_from___b5 with __b1
Replacing label __b2_from___b1 with __b2
Replacing label __b14_from___b3 with __b4
Replacing label __b2_from___b5 with __b2
Replacing label __b1_from___b8 with __b1
Replacing label __b9_from___b6 with __b8
Replacing label __b3_from___b2 with __b3
Removing instruction __bbegin:
Removing instruction __b1_from___bbegin:
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 __b11_from___b2:
Removing instruction print_ln_from___b11:
Removing instruction __b9_from___b14:
Removing instruction __b6_from___b9:
Removing instruction __b15_from___b6:
Removing instruction __b15:
Removing instruction __b7_from___b15:
Removing instruction print_sbyte_from___b1:
Removing instruction __b2_from___b1:
Removing instruction print_str_from___b2:
Removing instruction __b4_from___b3:
Removing instruction print_str_from___b4:
Removing instruction print_sword_from___b5:
Removing instruction __b6_from___b5:
Removing instruction print_str_from___b6:
Removing instruction __b8_from___b7:
Removing instruction print_str_from___b8:
Removing instruction __b10_from___b9:
Removing instruction print_ln_from___b10:
Removing instruction __b1_from_print_ln:
Removing instruction __b1_from___b1:
Removing instruction __b3_from_print_sword:
Removing instruction print_char_from___b3:
Removing instruction __b2_from___b3:
Removing instruction __b2_from___b4:
Removing instruction print_word_from___b2:
Removing instruction __b1_from_print_sword:
Removing instruction print_char_from___b1:
Removing instruction __b1_from_print_str:
Removing instruction __b1_from___b2:
Removing instruction __b3_from_print_sbyte:
Removing instruction print_char_from___b3:
Removing instruction __b2_from___b3:
Removing instruction __b2_from___b4:
Removing instruction print_byte_from___b2:
Removing instruction __b1_from_print_sbyte:
Removing instruction print_char_from___b1:
Removing instruction __b1_from___b3:
Removing instruction __b1_from___b5:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b4:
Removing instruction __breturn:
Removing instruction __b3_from___b2:
Removing instruction __b3_from___b4:
Removing instruction mulf8u_prepare_from_mulf8s_prepare1:
Removing instruction __breturn:
Removing instruction __b1_from___b3:
Removing instruction __b1_from___b5:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b4:
Removing instruction __breturn:
Removing instruction __b1_from___b3:
Removing instruction __breturn:
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 mulf8u_prepared_from___b1:
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:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __bend:
Removing instruction print_cls_from_main:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __breturn:
Removing instruction __b1_from_mul8s_compare:
Removing instruction __b2:
Removing instruction print_str_from___b2:
Removing instruction __b11:
Removing instruction __b5:
Removing instruction __b1_from___b5:
Removing instruction __b12:
Removing instruction mulf8s_from___b12:
Removing instruction __b13:
Removing instruction __b14:
Removing instruction __b9:
Removing instruction __b7_from___b6:
Removing instruction __b10:
Removing instruction __b3_from___b8:
Removing instruction print_str_from_mul8s_error:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction print_sbyte_from___b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction print_sword_from___b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction print_sword_from___b9:
Removing instruction __b10:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction print_byte_from_print_word:
Removing instruction __b1:
Removing instruction print_byte_from___b1:
Removing instruction __breturn:
Removing instruction print_char_from_print_byte:
Removing instruction __b1:
Removing instruction print_char_from___b1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction mul8u_from_mul8s:
Removing instruction __b5:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b1_from_mul8u:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __b1_from___b3:
Removing instruction mulf8s_prepare1:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction mulf8u_prepared_from_mulf8s_prepared:
Removing instruction __b5:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b2:
Removing instruction __b3_from___b2:
Removing instruction __b3_from___b4:
Removing instruction __b5_from___b6:
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 mulf8u_prepare_from_mulf8u:
Removing instruction __b1:
Removing instruction __b2:
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 __b1_from_memset:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
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
Skipping double jump to __b1 in jmp __b1_from___b5
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___b1 to b1
Relabelling long label __b6_from___b14 to b2
Relabelling long label __b1_from___b5 to b1
Relabelling long label __b1_from___b2 to b2
Relabelling long label __b5_from_muls8s to b3
Relabelling long label __b3_from___b12 to b1
Relabelling long label __b1_from_muls8u to b1
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b7
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b4
Removing instruction jmp __b8
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #<0
Removing instruction lda.z a
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction b1:
Removing instruction __breturn:
Removing instruction __b1:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Replacing jump to rts with rts in jmp __b1
Succesful ASM optimization Pass5DoubleJumpElimination
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 53281
(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::@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[2]:13 22.0
(byte*) memset::dst#2 dst zp[2]:13 14.666666666666666
(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
(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
(byte~) mul8s::$13 reg byte a 4.0
(byte~) mul8s::$16 reg byte a 4.0
(byte~) mul8s::$17 reg byte a 4.0
(byte~) mul8s::$9 reg byte a 4.0
(label) mul8s::@1
(label) mul8s::@2
(label) mul8s::@3
(label) mul8s::@4
(label) mul8s::@5
(label) mul8s::@return
(signed byte) mul8s::a
(signed byte) mul8s::a#0 a zp[1]:12 7.357142857142858
(signed byte) mul8s::b
(signed byte) mul8s::b#0 reg byte y 9.363636363636363
(word) mul8s::m
(word) mul8s::m#0 m zp[2]:8 2.0
(word) mul8s::m#1 m zp[2]:8 4.0
(word) mul8s::m#2 m zp[2]:8 4.0
(word) mul8s::m#4 m zp[2]:8 1.3333333333333333
(word) mul8s::m#5 m zp[2]:8 2.5
(signed word) mul8s::return
(void()) mul8s_compare()
(label) mul8s_compare::@1
(label) mul8s_compare::@10
(label) mul8s_compare::@11
(label) mul8s_compare::@12
(label) mul8s_compare::@13
(label) mul8s_compare::@14
(label) mul8s_compare::@15
(label) mul8s_compare::@2
(label) mul8s_compare::@3
(label) mul8s_compare::@4
(label) mul8s_compare::@5
(label) mul8s_compare::@6
(label) mul8s_compare::@7
(label) mul8s_compare::@8
(label) mul8s_compare::@9
(label) mul8s_compare::@return
(signed byte) mul8s_compare::a
(signed byte) mul8s_compare::a#1 a zp[1]:12 22.0
(signed byte) mul8s_compare::a#10 a zp[1]:12 12.518518518518519
(signed byte) mul8s_compare::b
(signed byte) mul8s_compare::b#1 b zp[1]:15 202.0
(signed byte) mul8s_compare::b#10 b zp[1]:15 24.319999999999997
(signed word) mul8s_compare::mf
(signed word) mul8s_compare::mf#0 mf zp[2]:10 12.0
(signed word) mul8s_compare::mn
(signed word) mul8s_compare::mn#0 mn zp[2]:8 17.0
(signed word) mul8s_compare::ms
(signed word) mul8s_compare::ms#0 ms zp[2]:4 15.249999999999998
(byte) mul8s_compare::ok
(byte) mul8s_compare::ok#3 reg byte x 202.0
(byte) mul8s_compare::ok#4 reg byte x 33.666666666666664
(const string) mul8s_compare::str[]  = (string) "signed multiply results match!"
(void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf)
(label) mul8s_error::@1
(label) mul8s_error::@10
(label) mul8s_error::@2
(label) mul8s_error::@3
(label) mul8s_error::@4
(label) mul8s_error::@5
(label) mul8s_error::@6
(label) mul8s_error::@7
(label) mul8s_error::@8
(label) mul8s_error::@9
(label) mul8s_error::@return
(signed byte) mul8s_error::a
(signed byte) mul8s_error::a#0 reg byte x 0.5714285714285714
(signed byte) mul8s_error::b
(signed byte) mul8s_error::b#0 b zp[1]:15 0.4
(signed word) mul8s_error::mf
(signed word) mul8s_error::mf#0 mf zp[2]:10 0.21052631578947367
(signed word) mul8s_error::mn
(signed word) mul8s_error::mn#0 mn zp[2]:8 0.25
(signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 ms zp[2]:4 0.3076923076923077
(const string) mul8s_error::str[]  = (string) "signed multiply mismatch "
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1
(label) mul8u::@2
(label) mul8u::@3
(label) mul8u::@4
(label) mul8u::@return
(byte) mul8u::a
(byte) mul8u::a#0 reg byte x 1001.0
(byte) mul8u::a#1 reg byte x 2.0
(byte) mul8u::a#2 reg byte x 101.0
(byte) mul8u::a#3 reg byte x 667.6666666666667
(byte) mul8u::a#6 reg byte x 52.5
(byte) mul8u::b
(byte) mul8u::b#0 reg byte a 4.0
(byte) mul8u::b#1 reg byte a 202.0
(byte) mul8u::b#2 reg byte a 103.0
(word) mul8u::mb
(word) mul8u::mb#0 mb zp[2]:13 4.0
(word) mul8u::mb#1 mb zp[2]:13 2002.0
(word) mul8u::mb#2 mb zp[2]:13 429.2857142857143
(word) mul8u::res
(word) mul8u::res#1 res zp[2]:8 2002.0
(word) mul8u::res#2 res zp[2]:8 443.7142857142857
(word) mul8u::res#6 res zp[2]:8 1001.0
(word) mul8u::return
(word) mul8u::return#2 return zp[2]:8 4.0
(word) mul8u::return#3 return zp[2]:8 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[1]:12 16.5
(byte) mul8u_compare::a#7 a zp[1]:12 12.11111111111111
(byte) mul8u_compare::b
(byte) mul8u_compare::b#1 b zp[1]:15 151.5
(byte) mul8u_compare::b#10 b zp[1]:15 20.279999999999998
(word) mul8u_compare::mf
(word) mul8u_compare::mf#0 mf zp[2]:10 11.333333333333332
(word) mul8u_compare::mn
(word) mul8u_compare::mn#0 mn zp[2]:8 17.0
(word) mul8u_compare::ms
(word) mul8u_compare::ms#0 ms zp[2]: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[]  = (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[1]:15 0.4
(word) mul8u_error::mf
(word) mul8u_error::mf#0 mf zp[2]:10 0.21052631578947367
(word) mul8u_error::mn
(word) mul8u_error::mn#0 mn zp[2]:8 0.25
(word) mul8u_error::ms
(word) mul8u_error::ms#0 ms zp[2]:4 0.3076923076923077
(const string) mul8u_error::str[]  = (string) "multiply mismatch "
(const byte*) mula_sqr1_hi[(number) $200]  = { fill( $200, 0) }
(const byte*) mula_sqr1_lo[(number) $200]  = { fill( $200, 0) }
(const byte*) mula_sqr2_hi[(number) $200]  = { fill( $200, 0) }
(const byte*) mula_sqr2_lo[(number) $200]  = { fill( $200, 0) }
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
(label) mulf8s::@1
(label) mulf8s::@2
(label) mulf8s::@return
(signed byte) mulf8s::a
(signed byte) mulf8s::a#0 reg byte a 33.666666666666664
(signed byte) mulf8s::b
(signed byte) mulf8s::b#0 reg byte x 25.75
(label) mulf8s::mulf8s_prepare1
(signed byte) mulf8s::mulf8s_prepare1_a
(signed word) mulf8s::return
(signed word) mulf8s::return#0 return zp[2]:10 34.33333333333333
(signed word) mulf8s::return#2 return zp[2]:10 202.0
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
(byte~) mulf8s_prepared::$12 reg byte a 4.0
(byte~) mulf8s_prepared::$15 reg byte a 4.0
(byte~) mulf8s_prepared::$16 reg byte a 4.0
(byte~) mulf8s_prepared::$8 reg byte a 4.0
(label) mulf8s_prepared::@1
(label) mulf8s_prepared::@2
(label) mulf8s_prepared::@3
(label) mulf8s_prepared::@4
(label) mulf8s_prepared::@5
(label) mulf8s_prepared::@return
(signed byte) mulf8s_prepared::b
(signed byte) mulf8s_prepared::b#0 b zp[1]:15 0.4
(word) mulf8s_prepared::m
(word) mulf8s_prepared::m#0 m zp[2]:10 2.0
(word) mulf8s_prepared::m#1 m zp[2]:10 4.0
(word) mulf8s_prepared::m#2 m zp[2]:10 4.0
(word) mulf8s_prepared::m#4 m zp[2]:10 1.3333333333333333
(word) mulf8s_prepared::m#5 m zp[2]:10 2.5
(const signed byte*) mulf8s_prepared::memA = (signed byte*) 253
(signed word) mulf8s_prepared::return
(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[2]:10 34.33333333333333
(word) mulf8u::return#2 return zp[2]:10 202.0
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
(label) mulf8u_prepare::@return
(byte) mulf8u_prepare::a
(byte) mulf8u_prepare::a#0 reg byte a 4.0
(byte) mulf8u_prepare::a#1 reg byte a 4.0
(byte) mulf8u_prepare::a#2 reg byte a 6.0
(const byte*) mulf8u_prepare::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::b#1 reg byte x 4.0
(byte) mulf8u_prepared::b#2 reg byte x 6.0
(const byte*) mulf8u_prepared::memB = (byte*) 255
(const byte*) mulf8u_prepared::resL = (byte*) 254
(word) mulf8u_prepared::return
(word) mulf8u_prepared::return#0 return zp[2]:10 1.5
(word) mulf8u_prepared::return#2 return zp[2]:10 4.0
(word) mulf8u_prepared::return#3 return zp[2]:10 4.0
(void()) mulf_init()
(byte~) mulf_init::$1 reg byte a 22.0
(byte~) mulf_init::$4 reg byte a 22.0
(byte~) mulf_init::$5 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[1]:15 2.5384615384615383
(byte) mulf_init::c#2 c zp[1]:15 11.0
(byte) mulf_init::dir
(byte) mulf_init::dir#2 dir zp[1]:12 4.125
(byte) mulf_init::dir#4 dir zp[1]:12 11.0
(word) mulf_init::sqr
(word) mulf_init::sqr#1 sqr zp[2]:13 11.0
(word) mulf_init::sqr#2 sqr zp[2]:13 22.0
(word) mulf_init::sqr#3 sqr zp[2]:13 9.166666666666666
(word) mulf_init::sqr#4 sqr zp[2]:13 5.5
(byte*) mulf_init::sqr1_hi
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:6 7.333333333333333
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:6 2.75
(byte*) mulf_init::sqr1_lo
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:4 22.0
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:4 3.142857142857143
(byte*) mulf_init::sqr2_hi
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:10 3.6666666666666665
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:10 8.25
(byte*) mulf_init::sqr2_lo
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:8 22.0
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:8 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
(const byte*) mulf_init_asm::mem = (byte*) 255
(const byte*) mulf_sqr1_hi[(number) $200]  = { fill( $200, 0) }
(const byte*) mulf_sqr1_lo[(number) $200]  = { fill( $200, 0) }
(const byte*) mulf_sqr2_hi[(number) $200]  = { fill( $200, 0) }
(const byte*) mulf_sqr2_lo[(number) $200]  = { 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[2]:4 11.0
(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp[2]:4 6.6000000000000005
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp[2]:2 22.0
(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp[2]:2 4.4
(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)
(label) muls8s::@1
(label) muls8s::@2
(label) muls8s::@3
(label) muls8s::@4
(label) muls8s::@5
(label) muls8s::@6
(label) muls8s::@return
(signed byte) muls8s::a
(signed byte) muls8s::a#0 a zp[1]:12 175.58333333333334
(signed byte) muls8s::b
(signed byte) muls8s::b#0 reg byte x 191.1818181818182
(signed byte) muls8s::i
(signed byte) muls8s::i#1 reg byte y 2002.0
(signed byte) muls8s::i#2 reg byte y 1001.0
(signed byte) muls8s::j
(signed byte) muls8s::j#1 reg byte y 2002.0
(signed byte) muls8s::j#2 reg byte y 1001.0
(signed word) muls8s::m
(signed word) muls8s::m#1 m zp[2]:4 1001.0
(signed word) muls8s::m#2 m zp[2]:4 1001.0
(signed word) muls8s::m#3 m zp[2]:4 1501.5
(signed word) muls8s::m#5 m zp[2]:4 1501.5
(signed word) muls8s::return
(signed word) muls8s::return#0 return zp[2]:4 701.0
(signed word) muls8s::return#2 return zp[2]:4 202.0
(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[1]:12 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[2]:4 1001.0
(word) muls8u::m#3 m zp[2]:4 1501.5
(word) muls8u::return
(word) muls8u::return#0 return zp[2]:4 367.33333333333337
(word) muls8u::return#2 return zp[2]: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#0 reg byte x 4.0
(byte) print_byte::b#1 reg byte x 4.0
(byte) print_byte::b#2 reg byte x 4.0
(byte) print_byte::b#3 reg byte x 4.0
(byte) print_byte::b#4 reg byte x 4.0
(byte) print_byte::b#5 reg byte x 3.5
(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[2]:6 11.0
(byte*) print_char_cursor#100 print_char_cursor zp[2]:6 0.1951219512195122
(byte*) print_char_cursor#134 print_char_cursor zp[2]:6 1.5
(byte*) print_char_cursor#135 print_char_cursor zp[2]:6 5.25
(byte*) print_char_cursor#142 print_char_cursor zp[2]:6 7.0
(byte*) print_char_cursor#143 print_char_cursor zp[2]:6 3.9999999999999996
(byte*) print_char_cursor#155 print_char_cursor zp[2]:6 28.0
(byte*) print_char_cursor#189 print_char_cursor zp[2]:6 4.0
(byte*) print_char_cursor#19 print_char_cursor zp[2]:6 0.7083333333333331
(byte*) print_char_cursor#190 print_char_cursor zp[2]:6 4.0
(byte*) print_char_cursor#226 print_char_cursor zp[2]:6 4.0
(byte*) print_char_cursor#86 print_char_cursor zp[2]:6 8.0
(void()) print_cls()
(label) print_cls::@return
(const byte*) print_hextab[]  = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.6428571428571428
(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 0.09523809523809523
(byte*) print_line_cursor#23 print_line_cursor zp[2]:2 24.0
(byte*) print_line_cursor#45 print_line_cursor zp[2]:2 10.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(void()) print_sbyte((signed byte) print_sbyte::b)
(label) print_sbyte::@1
(label) print_sbyte::@2
(label) print_sbyte::@3
(label) print_sbyte::@4
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0 reg byte x 4.0
(signed byte) print_sbyte::b#1 reg byte x 4.0
(signed byte) print_sbyte::b#2 reg byte x 4.0
(signed byte) print_sbyte::b#3 reg byte x 1.6666666666666665
(signed byte) print_sbyte::b#5 reg byte x 4.0
(byte*) print_screen
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp[2]:13 22.0
(byte*) print_str::str#16 str zp[2]:13 11.5
(byte*) print_str::str#18 str zp[2]:13 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp[2]:4 4.0
(signed word) print_sword::w#1 w zp[2]:4 4.0
(signed word) print_sword::w#2 w zp[2]:4 4.0
(signed word) print_sword::w#3 w zp[2]:4 4.0
(signed word) print_sword::w#4 w zp[2]:4 1.9999999999999998
(signed word) print_sword::w#6 w zp[2]:4 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word) print_word::w#0 w zp[2]:4 4.0
(word) print_word::w#1 w zp[2]:4 4.0
(word) print_word::w#2 w zp[2]:4 4.0
(word) print_word::w#3 w zp[2]:4 4.0
(word) print_word::w#4 w zp[2]:4 4.0
(word) print_word::w#5 w zp[2]:4 4.0
(word) print_word::w#6 w zp[2]:4 5.333333333333333
(const string) str1[]  = (string) "*"
(const string) str2[]  = (string) " slow:"
(const string) str3[]  = (string) " / normal:"
(const string) str4[]  = (string) " / fast:"

reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
reg byte a [ mul8u::b#2 mul8u::b#0 mul8u::b#1 ]
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ]
reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#1 mulf8u_prepared::b#0 ]
reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#1 mulf8u_prepare::a#0 ]
reg byte y [ muls8s::j#2 muls8s::j#1 ]
reg byte y [ muls8s::i#2 muls8s::i#1 ]
reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
reg byte y [ muls8u::i#2 muls8u::i#1 ]
zp[2]: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[2]:4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 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_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::return#0 muls8s::m#5 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ]
zp[2]:6 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 print_char_cursor#155 print_char_cursor#189 print_char_cursor#190 print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#100 print_char_cursor#1 print_char_cursor#226 ]
reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
zp[2]:8 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_error::mn#0 mul8u_compare::mn#0 mul8u_error::mn#0 ]
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
zp[2]:10 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ]
zp[1]:12 [ mulf_init::dir#2 mulf_init::dir#4 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mul8s_compare::a#10 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 ]
zp[2]:13 [ memset::dst#2 memset::dst#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 print_str::str#16 print_str::str#18 print_str::str#0 ]
reg byte x [ muls8s::b#0 ]
reg byte a [ mulf8s::a#0 ]
reg byte x [ mulf8s::b#0 ]
reg byte y [ mul8s::b#0 ]
reg byte x [ mul8s_error::a#0 ]
reg byte a [ print_byte::$0 ]
reg byte x [ print_byte::$2 ]
reg byte a [ mul8s::$9 ]
reg byte a [ mul8s::$16 ]
reg byte a [ mul8s::$13 ]
reg byte a [ mul8s::$17 ]
reg byte a [ mul8u::$1 ]
zp[1]:15 [ mulf8s_prepared::b#0 mulf_init::c#2 mulf_init::c#1 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 ]
reg byte a [ mulf8s_prepared::$8 ]
reg byte a [ mulf8s_prepared::$15 ]
reg byte a [ mulf8s_prepared::$12 ]
reg byte a [ mulf8s_prepared::$16 ]
reg byte x [ muls8u::b#0 ]
reg byte a [ mulf8u::a#0 ]
reg byte x [ mulf8u::b#0 ]
reg byte x [ mul8u_error::a#0 ]
reg byte a [ mulf_init::$1 ]
reg byte a [ mulf_init::$4 ]
reg byte a [ mulf_init::$5 ]


FINAL ASSEMBLER
Score: 236851

  // 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 = 6
  .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) ← (byte) 5 -- _deref_pbuc1=vbuc2 
    lda #5
    sta BGCOL
    // print_cls()
    // [5] call print_cls 
    // [336] 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 
    // [307] 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 
    // [280] 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 
    // [202] 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: {
    .label ms = 4
    .label mf = $a
    .label mn = 8
    .label a = $c
    .label b = $f
    // [18] phi from mul8s_compare to mul8s_compare::@1 [phi:mul8s_compare->mul8s_compare::@1]
    // [18] phi (signed byte) mul8s_compare::a#10 = (signed byte) -$80 [phi:mul8s_compare->mul8s_compare::@1#0] -- vbsz1=vbsc1 
    lda #-$80
    sta.z a
    // mul8s_compare::@1
  __b1:
    // for(signed byte a = -128; a!=-128; a++)
    // [19] if((signed byte) mul8s_compare::a#10!=(signed byte) -$80) goto mul8s_compare::@3 -- vbsz1_neq_vbsc1_then_la1 
    lda #-$80
    cmp.z a
    bne b1
    // mul8s_compare::@2
    // [20] (byte*) print_char_cursor#189 ← (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!")
    // [21] call print_str 
    // [114] phi from mul8s_compare::@2 to print_str [phi:mul8s_compare::@2->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#189 [phi:mul8s_compare::@2->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) mul8s_compare::str [phi:mul8s_compare::@2->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [22] phi from mul8s_compare::@2 to mul8s_compare::@11 [phi:mul8s_compare::@2->mul8s_compare::@11]
    // mul8s_compare::@11
    // print_ln()
    // [23] call print_ln 
    // [80] phi from mul8s_compare::@11 to print_ln [phi:mul8s_compare::@11->print_ln]
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8s_compare::@11->print_ln#0] -- register_copy 
    // [80] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_compare::@11->print_ln#1] -- register_copy 
    jsr print_ln
    // mul8s_compare::@return
    // }
    // [24] return 
    rts
    // [25] phi from mul8s_compare::@1 to mul8s_compare::@3 [phi:mul8s_compare::@1->mul8s_compare::@3]
  b1:
    // [25] phi (signed byte) mul8s_compare::b#10 = (signed byte) -$80 [phi:mul8s_compare::@1->mul8s_compare::@3#0] -- vbsz1=vbsc1 
    lda #-$80
    sta.z b
    // mul8s_compare::@3
  __b3:
    // for(signed byte b = -128; b!=-128; b++)
    // [26] if((signed byte) mul8s_compare::b#10!=(signed byte) -$80) goto mul8s_compare::@4 -- vbsz1_neq_vbsc1_then_la1 
    lda #-$80
    cmp.z b
    bne __b4
    // mul8s_compare::@5
    // for(signed byte a = -128; a!=-128; a++)
    // [27] (signed byte) mul8s_compare::a#1 ← ++ (signed byte) mul8s_compare::a#10 -- vbsz1=_inc_vbsz1 
    inc.z a
    // [18] phi from mul8s_compare::@5 to mul8s_compare::@1 [phi:mul8s_compare::@5->mul8s_compare::@1]
    // [18] phi (signed byte) mul8s_compare::a#10 = (signed byte) mul8s_compare::a#1 [phi:mul8s_compare::@5->mul8s_compare::@1#0] -- register_copy 
    jmp __b1
    // mul8s_compare::@4
  __b4:
    // muls8s(a, b)
    // [28] (signed byte) muls8s::a#0 ← (signed byte) mul8s_compare::a#10
    // [29] (signed byte) muls8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 
    ldx.z b
    // [30] call muls8s 
    jsr muls8s
    // [31] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0
    // mul8s_compare::@12
    // ms = muls8s(a, b)
    // [32] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2
    // mulf8s(a,b)
    // [33] (signed byte) mulf8s::a#0 ← (signed byte) mul8s_compare::a#10 -- vbsaa=vbsz1 
    lda.z a
    // [34] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 
    ldx.z b
    // [35] call mulf8s 
    // [159] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s]
    jsr mulf8s
    // mulf8s(a,b)
    // [36] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
    // mul8s_compare::@13
    // mf = mulf8s(a,b)
    // [37] (signed word) mul8s_compare::mf#0 ← (signed word) mulf8s::return#2
    // mul8s(a,b)
    // [38] (signed byte) mul8s::a#0 ← (signed byte) mul8s_compare::a#10
    // [39] (signed byte) mul8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsyy=vbsz1 
    ldy.z b
    // [40] call mul8s 
    jsr mul8s
    // mul8s_compare::@14
    // mn = mul8s(a,b)
    // [41] (signed word) mul8s_compare::mn#0 ← (signed word)(word) mul8s::m#4
    // if(ms!=mf)
    // [42] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@6 -- vwsz1_eq_vwsz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    beq b2
  !:
    // [43] phi from mul8s_compare::@14 to mul8s_compare::@9 [phi:mul8s_compare::@14->mul8s_compare::@9]
    // mul8s_compare::@9
    // [44] phi from mul8s_compare::@9 to mul8s_compare::@6 [phi:mul8s_compare::@9->mul8s_compare::@6]
    // [44] phi (byte) mul8s_compare::ok#4 = (byte) 0 [phi:mul8s_compare::@9->mul8s_compare::@6#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b6
    // [44] phi from mul8s_compare::@14 to mul8s_compare::@6 [phi:mul8s_compare::@14->mul8s_compare::@6]
  b2:
    // [44] phi (byte) mul8s_compare::ok#4 = (byte) 1 [phi:mul8s_compare::@14->mul8s_compare::@6#0] -- vbuxx=vbuc1 
    ldx #1
    // mul8s_compare::@6
  __b6:
    // if(ms!=mn)
    // [45] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@15 -- vwsz1_eq_vwsz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    beq __b7
  !:
    // [47] phi from mul8s_compare::@6 to mul8s_compare::@7 [phi:mul8s_compare::@6->mul8s_compare::@7]
    // [47] phi (byte) mul8s_compare::ok#3 = (byte) 0 [phi:mul8s_compare::@6->mul8s_compare::@7#0] -- vbuxx=vbuc1 
    ldx #0
    // [46] phi from mul8s_compare::@6 to mul8s_compare::@15 [phi:mul8s_compare::@6->mul8s_compare::@15]
    // mul8s_compare::@15
    // [47] phi from mul8s_compare::@15 to mul8s_compare::@7 [phi:mul8s_compare::@15->mul8s_compare::@7]
    // [47] phi (byte) mul8s_compare::ok#3 = (byte) mul8s_compare::ok#4 [phi:mul8s_compare::@15->mul8s_compare::@7#0] -- register_copy 
    // mul8s_compare::@7
  __b7:
    // if(ok==0)
    // [48] if((byte) mul8s_compare::ok#3!=(byte) 0) goto mul8s_compare::@8 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b8
    // mul8s_compare::@10
    // *BGCOL = 2
    // [49] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // mul8s_error(a,b, ms, mn, mf)
    // [50] (signed byte) mul8s_error::a#0 ← (signed byte) mul8s_compare::a#10 -- vbsxx=vbsz1 
    ldx.z a
    // [51] (signed byte) mul8s_error::b#0 ← (signed byte) mul8s_compare::b#10
    // [52] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare::ms#0
    // [53] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0
    // [54] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0
    // [55] call mul8s_error 
    jsr mul8s_error
    rts
    // mul8s_compare::@8
  __b8:
    // for(signed byte b = -128; b!=-128; b++)
    // [56] (signed byte) mul8s_compare::b#1 ← ++ (signed byte) mul8s_compare::b#10 -- vbsz1=_inc_vbsz1 
    inc.z b
    // [25] phi from mul8s_compare::@8 to mul8s_compare::@3 [phi:mul8s_compare::@8->mul8s_compare::@3]
    // [25] phi (signed byte) mul8s_compare::b#10 = (signed byte) mul8s_compare::b#1 [phi:mul8s_compare::@8->mul8s_compare::@3#0] -- register_copy 
    jmp __b3
    str: .text "signed multiply results match!"
    .byte 0
}
  // mul8s_error
// mul8s_error(signed byte register(X) a, signed byte zp($f) b, signed word zp(4) ms, signed word zp(8) mn, signed word zp($a) mf)
mul8s_error: {
    .label b = $f
    .label ms = 4
    .label mn = 8
    .label mf = $a
    // [57] (byte*) print_char_cursor#190 ← (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 mismatch ")
    // [58] call print_str 
    // [114] phi from mul8s_error to print_str [phi:mul8s_error->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#190 [phi:mul8s_error->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) mul8s_error::str [phi:mul8s_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // mul8s_error::@1
    // print_sbyte(a)
    // [59] (signed byte) print_sbyte::b#1 ← (signed byte) mul8s_error::a#0
    // [60] call print_sbyte 
    // [121] phi from mul8s_error::@1 to print_sbyte [phi:mul8s_error::@1->print_sbyte]
    // [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:mul8s_error::@1->print_sbyte#0] -- register_copy 
    jsr print_sbyte
    // [61] phi from mul8s_error::@1 to mul8s_error::@2 [phi:mul8s_error::@1->mul8s_error::@2]
    // mul8s_error::@2
    // print_str("*")
    // [62] call print_str 
    // [114] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@2->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_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
    // mul8s_error::@3
    // print_sbyte(b)
    // [63] (signed byte) print_sbyte::b#2 ← (signed byte) mul8s_error::b#0 -- vbsxx=vbsz1 
    ldx.z b
    // [64] call print_sbyte 
    // [121] phi from mul8s_error::@3 to print_sbyte [phi:mul8s_error::@3->print_sbyte]
    // [121] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#2 [phi:mul8s_error::@3->print_sbyte#0] -- register_copy 
    jsr print_sbyte
    // [65] phi from mul8s_error::@3 to mul8s_error::@4 [phi:mul8s_error::@3->mul8s_error::@4]
    // mul8s_error::@4
    // print_str(" slow:")
    // [66] call print_str 
    // [114] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@4->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_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
    // mul8s_error::@5
    // print_sword(ms)
    // [67] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0
    // [68] call print_sword 
    // [85] phi from mul8s_error::@5 to print_sword [phi:mul8s_error::@5->print_sword]
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#1 [phi:mul8s_error::@5->print_sword#0] -- register_copy 
    jsr print_sword
    // [69] phi from mul8s_error::@5 to mul8s_error::@6 [phi:mul8s_error::@5->mul8s_error::@6]
    // mul8s_error::@6
    // print_str(" / normal:")
    // [70] call print_str 
    // [114] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@6->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_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
    // mul8s_error::@7
    // print_sword(mn)
    // [71] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 -- vwsz1=vwsz2 
    lda.z mn
    sta.z print_sword.w
    lda.z mn+1
    sta.z print_sword.w+1
    // [72] call print_sword 
    // [85] phi from mul8s_error::@7 to print_sword [phi:mul8s_error::@7->print_sword]
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#2 [phi:mul8s_error::@7->print_sword#0] -- register_copy 
    jsr print_sword
    // [73] phi from mul8s_error::@7 to mul8s_error::@8 [phi:mul8s_error::@7->mul8s_error::@8]
    // mul8s_error::@8
    // print_str(" / fast:")
    // [74] call print_str 
    // [114] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8s_error::@8->print_str#0] -- register_copy 
    // [114] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_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
    // mul8s_error::@9
    // print_sword(mf)
    // [75] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf#0 -- vwsz1=vwsz2 
    lda.z mf
    sta.z print_sword.w
    lda.z mf+1
    sta.z print_sword.w+1
    // [76] call print_sword 
    // [85] phi from mul8s_error::@9 to print_sword [phi:mul8s_error::@9->print_sword]
    // [85] phi (signed word) print_sword::w#4 = (signed word) print_sword::w#3 [phi:mul8s_error::@9->print_sword#0] -- register_copy 
    jsr print_sword
    // [77] phi from mul8s_error::@9 to mul8s_error::@10 [phi:mul8s_error::@9->mul8s_error::@10]
    // mul8s_error::@10
    // print_ln()
    // [78] call print_ln 
    // [80] phi from mul8s_error::@10 to print_ln [phi:mul8s_error::@10->print_ln]
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8s_error::@10->print_ln#0] -- register_copy 
    // [80] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#1 [phi:mul8s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    // mul8s_error::@return
    // }
    // [79] return 
    rts
    str: .text "signed multiply mismatch "
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [81] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
    // [81] 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
    // [82] (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)
    // [83] 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
    // }
    // [84] return 
    rts
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp(4) w)
print_sword: {
    .label w = 4
    // if(w<0)
    // [86] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1
    // [87] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
    // print_sword::@3
    // print_char(' ')
    // [88] call print_char 
    // [96] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [89] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2]
    // [89] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#4 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    // print_sword::@2
  __b2:
    // print_word((word)w)
    // [90] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6
    // [91] call print_word 
    // [100] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#19 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    // print_sword::@return
    // }
    // [92] return 
    rts
    // [93] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
    // print_sword::@1
  __b1:
    // print_char('-')
    // [94] call print_char 
    // [96] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    // print_sword::@4
    // w = -w
    // [95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 -- vwsz1=_neg_vwsz1 
    sec
    lda #0
    sbc.z w
    sta.z w
    lda #0
    sbc.z w+1
    sta.z w+1
    jmp __b2
}
  // print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
    // *(print_char_cursor++) = ch
    // [97] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
    // *(print_char_cursor++) = ch;
    // [98] (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
    // }
    // [99] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp(4) w)
print_word: {
    .label w = 4
    // print_byte(>w)
    // [101] (byte) print_byte::b#1 ← > (word) print_word::w#6 -- vbuxx=_hi_vwuz1 
    lda.z w+1
    tax
    // [102] call print_byte 
    // [106] phi from print_word to print_byte [phi:print_word->print_byte]
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy 
    // [106] 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)
    // [103] (byte) print_byte::b#2 ← < (word) print_word::w#6 -- vbuxx=_lo_vwuz1 
    lda.z w
    tax
    // [104] call print_byte 
    // [106] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [106] 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
    // }
    // [105] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
    // b>>4
    // [107] (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])
    // [108] (byte) print_char::ch#4 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    // [109] call print_char 
    // [96] phi from print_byte to print_char [phi:print_byte->print_char]
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#143 [phi:print_byte->print_char#0] -- register_copy 
    // [96] 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
    // [110] (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])
    // [111] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    // [112] call print_char 
    // [96] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#19 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [96] 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
    // }
    // [113] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp($d) str)
print_str: {
    .label str = $d
    // [115] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
    // [115] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [115] 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)
    // [116] 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
    // }
    // [117] return 
    rts
    // print_str::@2
  __b2:
    // *(print_char_cursor++) = *(str++)
    // [118] *((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++);
    // [119] (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
  !:
    // [120] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp __b1
}
  // print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte register(X) b)
print_sbyte: {
    // if(b<0)
    // [122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi __b1
    // [123] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
    // print_sbyte::@3
    // print_char(' ')
    // [124] call print_char 
    // [96] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@3->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [125] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2]
    // [125] phi (signed byte) print_sbyte::b#5 = (signed byte) print_sbyte::b#3 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy 
    // print_sbyte::@2
  __b2:
    // print_byte((byte)b)
    // [126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5
    // [127] call print_byte 
    // [106] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#19 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#0 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
    // print_sbyte::@return
    // }
    // [128] return 
    rts
    // [129] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
    // print_sbyte::@1
  __b1:
    // print_char('-')
    // [130] call print_char 
    // [96] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
    // [96] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#134 [phi:print_sbyte::@1->print_char#0] -- register_copy 
    // [96] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    // print_sbyte::@4
    // b = -b
    // [131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
    jmp __b2
}
  // mul8s
// Multiply of two signed bytes to a signed word
// Fixes offsets introduced by using unsigned multiplication
// mul8s(signed byte zp($c) a, signed byte register(Y) b)
mul8s: {
    .label m = 8
    .label a = $c
    // mul8u((byte)a, (byte) b)
    // [132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 
    ldx.z a
    // [133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuyy 
    tya
    // [134] call mul8u 
    // [148] phi from mul8s to mul8u [phi:mul8s->mul8u]
    // [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:mul8s->mul8u#0] -- register_copy 
    // [148] phi (byte) mul8u::b#2 = (byte) mul8u::b#0 [phi:mul8s->mul8u#1] -- register_copy 
    jsr mul8u
    // mul8u((byte)a, (byte) b)
    // [135] (word) mul8u::return#2 ← (word) mul8u::res#2
    // mul8s::@5
    // m = mul8u((byte)a, (byte) b)
    // [136] (word) mul8s::m#0 ← (word) mul8u::return#2
    // if(a<0)
    // [137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1 -- vbsz1_ge_0_then_la1 
    lda.z a
    cmp #0
    bpl __b1
    // mul8s::@3
    // >m
    // [138] (byte~) mul8s::$9 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 
    lda.z m+1
    // >m = (>m)-(byte)b
    // [139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy 
    sty.z $ff
    sec
    sbc.z $ff
    // [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa 
    sta.z m+1
    // [141] phi from mul8s::@3 mul8s::@5 to mul8s::@1 [phi:mul8s::@3/mul8s::@5->mul8s::@1]
    // [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@5->mul8s::@1#0] -- register_copy 
    // mul8s::@1
  __b1:
    // if(b<0)
    // [142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 
    cpy #0
    bpl __b2
    // mul8s::@4
    // >m
    // [143] (byte~) mul8s::$13 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 
    lda.z m+1
    // >m = (>m)-(byte)a
    // [144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 
    sec
    sbc.z a
    // [145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa 
    sta.z m+1
    // [146] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2]
    // [146] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy 
    // mul8s::@2
  __b2:
    // mul8s::@return
    // }
    // [147] 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 = $d
    .label res = 8
    .label return = 8
    // mb = b
    // [149] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2 -- vwuz1=_word_vbuaa 
    sta.z mb
    lda #0
    sta.z mb+1
    // [150] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
    // [150] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy 
    // [150] phi (word) mul8u::res#2 = (word) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vwuc1 
    sta.z res
    sta.z res+1
    // [150] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy 
    // mul8u::@1
  __b1:
    // while(a!=0)
    // [151] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b2
    // mul8u::@return
    // }
    // [152] return 
    rts
    // mul8u::@2
  __b2:
    // a&1
    // [153] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #1
    // if( (a&1) != 0)
    // [154] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq __b3
    // mul8u::@4
    // res = res + mb
    // [155] (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
    // [156] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
    // [156] 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
    // [157] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // mb = mb<<1
    // [158] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1 
    asl.z mb
    rol.z mb+1
    // [150] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
    // [150] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy 
    // [150] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy 
    // [150] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy 
    jmp __b1
}
  // mulf8s
// Fast multiply two signed bytes to a word result
// mulf8s(signed byte register(A) a, signed byte register(X) b)
mulf8s: {
    .label return = $a
    // mulf8s::mulf8s_prepare1
    // mulf8u_prepare((byte)a)
    // [160] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0
    // [161] call mulf8u_prepare 
    // [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare]
    // [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#1 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    // mulf8s::@1
    // mulf8s_prepared(b)
    // [162] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx 
    stx.z mulf8s_prepared.b
    // [163] call mulf8s_prepared 
    jsr mulf8s_prepared
    // mulf8s::@2
    // [164] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4
    // mulf8s::@return
    // }
    // [165] return 
    rts
}
  // mulf8s_prepared
// Calculate fast multiply with a prepared unsigned byte to a word result
// The prepared number is set by calling mulf8s_prepare(byte a)
// mulf8s_prepared(signed byte zp($f) b)
mulf8s_prepared: {
    .label memA = $fd
    .label m = $a
    .label b = $f
    // mulf8u_prepared((byte) b)
    // [166] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 
    ldx.z b
    // [167] call mulf8u_prepared 
    // [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared]
    // [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#1 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
    // mulf8u_prepared((byte) b)
    // [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
    // mulf8s_prepared::@5
    // m = mulf8u_prepared((byte) b)
    // [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
    // if(*memA<0)
    // [170] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 
    lda memA
    cmp #0
    bpl __b1
    // mulf8s_prepared::@3
    // >m
    // [171] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 
    lda.z m+1
    // >m = (>m)-(byte)b
    // [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 
    sec
    sbc.z b
    // [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa 
    sta.z m+1
    // [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@5 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1]
    // [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@5->mulf8s_prepared::@1#0] -- register_copy 
    // mulf8s_prepared::@1
  __b1:
    // if(b<0)
    // [175] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 
    lda.z b
    cmp #0
    bpl __b2
    // mulf8s_prepared::@4
    // >m
    // [176] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 
    lda.z m+1
    // >m = (>m)-(byte)*memA
    // [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA) -- vbuaa=vbuaa_minus__deref_pbuc1 
    sec
    sbc memA
    // [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa 
    sta.z m+1
    // [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2]
    // [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy 
    // mulf8s_prepared::@2
  __b2:
    // mulf8s_prepared::@return
    // }
    // [180] 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 = $a
    // *memB = b
    // [182] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#2 -- _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 };
    // [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda resL
    sta.z return
    lda memB
    sta.z return+1
    // mulf8u_prepared::@return
    // }
    // [185] 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
    // [187] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#2 -- _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
    // }
    // [189] return 
    rts
}
  // muls8s
// Slow multiplication of signed bytes
// Perform a signed multiplication by repeated addition/subtraction
// muls8s(signed byte zp($c) a, signed byte register(X) b)
muls8s: {
    .label m = 4
    .label return = 4
    .label a = $c
    // if(a<0)
    // [190] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 
    lda.z a
    bmi b3
    // muls8s::@2
    // if (a>0)
    // [191] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1 -- vbsz1_le_0_then_la1 
    cmp #1
    bmi b2
    // [192] phi from muls8s::@2 to muls8s::@3 [phi:muls8s::@2->muls8s::@3]
    // [192] phi (signed word) muls8s::m#3 = (signed word) 0 [phi:muls8s::@2->muls8s::@3#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z m
    sta.z m+1
    // [192] phi (signed byte) muls8s::j#2 = (signed byte) 0 [phi:muls8s::@2->muls8s::@3#1] -- vbsyy=vbsc1 
    tay
    // muls8s::@3
  __b3:
    // for(signed byte j = 0; j!=a; j++)
    // [193] if((signed byte) muls8s::j#2!=(signed byte) muls8s::a#0) goto muls8s::@4 -- vbsyy_neq_vbsz1_then_la1 
    cpy.z a
    bne __b4
    // [194] phi from muls8s::@3 muls8s::@5 to muls8s::@1 [phi:muls8s::@3/muls8s::@5->muls8s::@1]
    // [194] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#3 [phi:muls8s::@3/muls8s::@5->muls8s::@1#0] -- register_copy 
    rts
    // [194] phi from muls8s::@2 to muls8s::@1 [phi:muls8s::@2->muls8s::@1]
  b2:
    // [194] phi (signed word) muls8s::return#0 = (signed word) 0 [phi:muls8s::@2->muls8s::@1#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z return
    sta.z return+1
    // muls8s::@1
    // muls8s::@return
    // }
    // [195] return 
    rts
    // muls8s::@4
  __b4:
    // m = m + b
    // [196] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx 
    txa
    sta.z $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    clc
    lda.z m
    adc.z $fe
    sta.z m
    lda.z m+1
    adc.z $ff
    sta.z m+1
    // for(signed byte j = 0; j!=a; j++)
    // [197] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy 
    iny
    // [192] phi from muls8s::@4 to muls8s::@3 [phi:muls8s::@4->muls8s::@3]
    // [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@4->muls8s::@3#0] -- register_copy 
    // [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@4->muls8s::@3#1] -- register_copy 
    jmp __b3
    // [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5]
  b3:
    // [198] phi (signed word) muls8s::m#5 = (signed word) 0 [phi:muls8s->muls8s::@5#0] -- vwsz1=vwsc1 
    lda #<0
    sta.z m
    sta.z m+1
    // [198] phi (signed byte) muls8s::i#2 = (signed byte) 0 [phi:muls8s->muls8s::@5#1] -- vbsyy=vbsc1 
    tay
    // muls8s::@5
  __b5:
    // for(signed byte i = 0; i!=a; i--)
    // [199] if((signed byte) muls8s::i#2!=(signed byte) muls8s::a#0) goto muls8s::@6 -- vbsyy_neq_vbsz1_then_la1 
    cpy.z a
    bne __b6
    rts
    // muls8s::@6
  __b6:
    // m = m - b
    // [200] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx 
    txa
    sta.z $fe
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    sec
    lda.z m
    sbc.z $fe
    sta.z m
    lda.z m+1
    sbc.z $ff
    sta.z m+1
    // for(signed byte i = 0; i!=a; i--)
    // [201] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy 
    dey
    // [198] phi from muls8s::@6 to muls8s::@5 [phi:muls8s::@6->muls8s::@5]
    // [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@6->muls8s::@5#0] -- register_copy 
    // [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@6->muls8s::@5#1] -- register_copy 
    jmp __b5
}
  // mul8u_compare
// Perform all possible byte multiplications (slow and fast) and compare the results
mul8u_compare: {
    .label ms = 4
    .label mf = $a
    .label mn = 8
    .label b = $f
    .label a = $c
    // [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1]
    // [203] phi (byte) mul8u_compare::a#7 = (byte) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    // [203] phi from mul8u_compare::@8 to mul8u_compare::@1 [phi:mul8u_compare::@8->mul8u_compare::@1]
    // [203] 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:
    // [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2]
    // [204] phi (byte) mul8u_compare::b#10 = (byte) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z b
    // [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2]
    // [204] 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)
    // [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
    // [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx.z b
    // [207] call muls8u 
    jsr muls8u
    // [208] (word) muls8u::return#2 ← (word) muls8u::return#0
    // mul8u_compare::@10
    // ms = muls8u(a, b)
    // [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
    // mulf8u(a,b)
    // [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 
    lda.z a
    // [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 
    ldx.z b
    // [212] call mulf8u 
    jsr mulf8u
    // [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0
    // mul8u_compare::@11
    // mf = mulf8u(a,b)
    // [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
    // mul8u(a,b)
    // [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx.z a
    // [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 
    lda.z b
    // [217] call mul8u 
    // [148] phi from mul8u_compare::@11 to mul8u [phi:mul8u_compare::@11->mul8u]
    // [148] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@11->mul8u#0] -- register_copy 
    // [148] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@11->mul8u#1] -- register_copy 
    jsr mul8u
    // mul8u(a,b)
    // [218] (word) mul8u::return#3 ← (word) mul8u::res#2
    // mul8u_compare::@12
    // mn = mul8u(a,b)
    // [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
    // if(ms!=mf)
    // [220] 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 b1
  !:
    // [221] phi from mul8u_compare::@12 to mul8u_compare::@6 [phi:mul8u_compare::@12->mul8u_compare::@6]
    // mul8u_compare::@6
    // [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3]
    // [222] phi (byte) mul8u_compare::ok#4 = (byte) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b3
    // [222] phi from mul8u_compare::@12 to mul8u_compare::@3 [phi:mul8u_compare::@12->mul8u_compare::@3]
  b1:
    // [222] 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)
    // [223] 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
  !:
    // [225] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4]
    // [225] phi (byte) mul8u_compare::ok#3 = (byte) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    // [224] phi from mul8u_compare::@3 to mul8u_compare::@14 [phi:mul8u_compare::@3->mul8u_compare::@14]
    // mul8u_compare::@14
    // [225] phi from mul8u_compare::@14 to mul8u_compare::@4 [phi:mul8u_compare::@14->mul8u_compare::@4]
    // [225] 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)
    // [226] 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
    // [227] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // mul8u_error(a,b, ms, mn, mf)
    // [228] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 
    ldx.z a
    // [229] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
    // [230] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
    // [231] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
    // [232] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
    // [233] call mul8u_error 
    // [243] phi from mul8u_compare::@7 to mul8u_error [phi:mul8u_compare::@7->mul8u_error]
    jsr mul8u_error
    // mul8u_compare::@return
    // }
    // [234] return 
    rts
    // mul8u_compare::@5
  __b5:
    // for(byte b: 0..255)
    // [235] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 
    inc.z b
    // [236] 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)
    // [237] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 
    inc.z a
    // [238] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 
    lda.z a
    cmp #0
    bne __b1
    // [239] phi from mul8u_compare::@8 to mul8u_compare::@9 [phi:mul8u_compare::@8->mul8u_compare::@9]
    // mul8u_compare::@9
    // print_str("multiply results match!")
    // [240] call print_str 
    // [114] phi from mul8u_compare::@9 to print_str [phi:mul8u_compare::@9->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_compare::@9->print_str#0] -- register_copy 
    // [114] 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
    // [241] phi from mul8u_compare::@9 to mul8u_compare::@13 [phi:mul8u_compare::@9->mul8u_compare::@13]
    // mul8u_compare::@13
    // print_ln()
    // [242] call print_ln 
    // [80] phi from mul8u_compare::@13 to print_ln [phi:mul8u_compare::@13->print_ln]
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mul8u_compare::@13->print_ln#0] -- register_copy 
    // [80] 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 zp($f) b, word zp(4) ms, word zp(8) mn, word zp($a) mf)
mul8u_error: {
    .label b = $f
    .label ms = 4
    .label mn = 8
    .label mf = $a
    // print_str("multiply mismatch ")
    // [244] call print_str 
    // [114] phi from mul8u_error to print_str [phi:mul8u_error->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#100 [phi:mul8u_error->print_str#0] -- register_copy 
    // [114] 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)
    // [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
    // [246] call print_byte 
    // [106] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte]
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@1->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2]
    // mul8u_error::@2
    // print_str("*")
    // [248] call print_str 
    // [114] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@2->print_str#0] -- register_copy 
    // [114] 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)
    // [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 
    ldx.z b
    // [250] call print_byte 
    // [106] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte]
    // [106] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:mul8u_error::@3->print_byte#0] -- register_copy 
    // [106] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy 
    jsr print_byte
    // [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4]
    // mul8u_error::@4
    // print_str(" slow:")
    // [252] call print_str 
    // [114] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@4->print_str#0] -- register_copy 
    // [114] 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)
    // [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0
    // [254] call print_word 
    // [100] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word]
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@5->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy 
    jsr print_word
    // [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6]
    // mul8u_error::@6
    // print_str(" / normal:")
    // [256] call print_str 
    // [114] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@6->print_str#0] -- register_copy 
    // [114] 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)
    // [257] (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
    // [258] call print_word 
    // [100] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word]
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@7->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy 
    jsr print_word
    // [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8]
    // mul8u_error::@8
    // print_str(" / fast:")
    // [260] call print_str 
    // [114] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mul8u_error::@8->print_str#0] -- register_copy 
    // [114] 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)
    // [261] (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
    // [262] call print_word 
    // [100] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word]
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mul8u_error::@9->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy 
    jsr print_word
    // [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10]
    // mul8u_error::@10
    // print_ln()
    // [264] call print_ln 
    // [80] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln]
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#19 [phi:mul8u_error::@10->print_ln#0] -- register_copy 
    // [80] 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
    // }
    // [265] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // mulf8u
// Fast multiply two unsigned bytes to a word result
// mulf8u(byte register(A) a, byte register(X) b)
mulf8u: {
    .label return = $a
    // mulf8u_prepare(a)
    // [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
    // [267] call mulf8u_prepare 
    // [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare]
    // [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy 
    jsr mulf8u_prepare
    // mulf8u::@1
    // mulf8u_prepared(b)
    // [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
    // [269] call mulf8u_prepared 
    // [181] phi from mulf8u::@1 to mulf8u_prepared [phi:mulf8u::@1->mulf8u_prepared]
    // [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@1->mulf8u_prepared#0] -- register_copy 
    jsr mulf8u_prepared
    // mulf8u_prepared(b)
    // [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
    // mulf8u::@2
    // [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
    // mulf8u::@return
    // }
    // [272] return 
    rts
}
  // muls8u
// Slow multiplication of unsigned bytes
// Calculate an unsigned multiplication by repeated addition
// muls8u(byte zp($c) a, byte register(X) b)
muls8u: {
    .label return = 4
    .label m = 4
    .label a = $c
    // if(a!=0)
    // [273] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 
    lda.z a
    cmp #0
    beq b1
    // [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2]
    // [274] phi (word) muls8u::m#3 = (word) 0 [phi:muls8u->muls8u::@2#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z m
    sta.z m+1
    // [274] 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++)
    // [275] if((byte) muls8u::i#2!=(byte) muls8u::a#0) goto muls8u::@3 -- vbuyy_neq_vbuz1_then_la1 
    cpy.z a
    bne __b3
    // [276] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1]
    // [276] phi (word) muls8u::return#0 = (word) muls8u::m#3 [phi:muls8u::@2->muls8u::@1#0] -- register_copy 
    rts
    // [276] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1]
  b1:
    // [276] phi (word) muls8u::return#0 = (word) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z return
    sta.z return+1
    // muls8u::@1
    // muls8u::@return
    // }
    // [277] return 
    rts
    // muls8u::@3
  __b3:
    // m = m + b
    // [278] (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++)
    // [279] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [274] phi from muls8u::@3 to muls8u::@2 [phi:muls8u::@3->muls8u::@2]
    // [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@3->muls8u::@2#0] -- register_copy 
    // [274] 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
    // [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1]
    // [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte*) mula_sqr1_lo [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
    // [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte*) mulf_sqr1_lo [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++)
    // [282] if((byte*) mulf_tables_cmp::kc_sqr#2<(const byte*) mulf_sqr1_lo+(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
  !:
    // [283] 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!")
    // [284] call print_str 
    // [114] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str]
    // [114] 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
    // [114] 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
    // [285] 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()
    // [286] call print_ln 
    // [80] phi from mulf_tables_cmp::@6 to print_ln [phi:mulf_tables_cmp::@6->print_ln]
    // [80] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@6->print_ln#0] -- register_copy 
    // [80] 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
    // [287] (byte*) print_char_cursor#226 ← (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
    // [288] phi from mulf_tables_cmp::@7 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return]
    // [288] phi (byte*) print_line_cursor#11 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#0] -- register_copy 
    // [288] phi (byte*) print_char_cursor#100 = (byte*) print_char_cursor#226 [phi:mulf_tables_cmp::@7->mulf_tables_cmp::@return#1] -- register_copy 
    // mulf_tables_cmp::@return
    // }
    // [289] return 
    rts
    // mulf_tables_cmp::@2
  __b2:
    // if(*kc_sqr != *asm_sqr)
    // [290] 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
    // [291] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // print_str("multiply table mismatch at ")
    // [292] call print_str 
    // [114] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str]
    // [114] 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
    // [114] 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)
    // [293] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
    // [294] call print_word 
    // [100] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word]
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#1 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy 
    jsr print_word
    // [295] 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(" / ")
    // [296] call print_str 
    // [114] phi from mulf_tables_cmp::@9 to print_str [phi:mulf_tables_cmp::@9->print_str]
    // [114] phi (byte*) print_char_cursor#155 = (byte*) print_char_cursor#19 [phi:mulf_tables_cmp::@9->print_str#0] -- register_copy 
    // [114] 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)
    // [297] (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
    // [298] call print_word 
    // [100] phi from mulf_tables_cmp::@10 to print_word [phi:mulf_tables_cmp::@10->print_word]
    // [100] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:mulf_tables_cmp::@10->print_word#0] -- register_copy 
    // [100] phi (word) print_word::w#6 = (word) print_word::w#2 [phi:mulf_tables_cmp::@10->print_word#1] -- register_copy 
    jsr print_word
    // [288] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return]
    // [288] 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
    // [288] 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++;
    // [299] (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++)
    // [300] (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
  !:
    // [281] phi from mulf_tables_cmp::@4 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@4->mulf_tables_cmp::@1]
    // [281] 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 
    // [281] 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
    // [302] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_lo) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_lo
    sta mem
    // *mem = *mula_sqr1_hi
    // [303] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr1_hi) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr1_hi
    sta mem
    // *mem = *mula_sqr2_lo
    // [304] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_lo) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_lo
    sta mem
    // *mem = *mula_sqr2_hi
    // [305] *((const byte*) mulf_init_asm::mem) ← *((const byte*) mula_sqr2_hi) -- _deref_pbuc1=_deref_pbuc2 
    lda mula_sqr2_hi
    sta mem
    // mulf_init_asm::@return
    // }
    // [306] return 
    rts
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    // x/2
    .label c = $f
    // Counter used for determining x%2==0
    .label sqr1_hi = 6
    // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4
    .label sqr = $d
    .label sqr1_lo = 4
    // Decrease or increase x_255 - initially we decrease
    .label sqr2_hi = $a
    .label sqr2_lo = 8
    //Start with g(0)=f(255)
    .label dir = $c
    // [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
    // [308] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte*) mulf_sqr1_hi+(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
    // [308] phi (word) mulf_init::sqr#4 = (word) 0 [phi:mulf_init->mulf_init::@1#2] -- vwuz1=vwuc1 
    txa
    sta.z sqr
    sta.z sqr+1
    // [308] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    sta.z c
    // [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte*) mulf_sqr1_lo+(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++)
    // [309] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(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
    // [310] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
    // [310] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [310] phi (byte*) mulf_init::sqr2_hi#2 = (const byte*) mulf_sqr2_hi [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
    // [310] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 
    ldx #-1
    // [310] phi (byte*) mulf_init::sqr2_lo#2 = (const byte*) mulf_sqr2_lo [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++)
    // [311] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(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)
    // [312] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(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)
    // [313] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100) -- _deref_pbuc1=_deref_pbuc2 
    lda mulf_sqr1_hi+$100
    sta mulf_sqr2_hi+$1ff
    // mulf_init::@return
    // }
    // [314] return 
    rts
    // mulf_init::@6
  __b6:
    // *sqr2_lo = mulf_sqr1_lo[x_255]
    // [315] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (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]
    // [316] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (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];
    // [317] (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
    // [318] (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)
    // [319] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b8
    // [321] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
    // [321] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 
    lda #1
    sta.z dir
    // [320] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9]
    // mulf_init::@9
    // [321] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
    // [321] 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++)
    // [322] (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
  !:
    // [310] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
    // [310] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [310] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [310] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [310] 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)
    // [323] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // ++c&1
    // [324] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 
    lda #1
    and.z c
    // if((++c&1)==0)
    // [325] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b3
    // mulf_init::@4
    // x_2++;
    // [326] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx 
    inx
    // sqr++;
    // [327] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [328] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3]
    // [328] 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 
    // [328] 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
    // [329] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 
    lda.z sqr
    // *sqr1_lo = <sqr
    // [330] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_lo),y
    // >sqr
    // [331] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 
    lda.z sqr+1
    // *sqr1_hi++ = >sqr
    // [332] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa 
    sta (sqr1_hi),y
    // *sqr1_hi++ = >sqr;
    // [333] (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
    // [334] (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++)
    // [335] (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
  !:
    // [308] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
    // [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [308] 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)
    // [337] call memset 
    // [339] phi from print_cls to memset [phi:print_cls->memset]
    jsr memset
    // print_cls::@return
    // }
    // [338] 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 = $d
    // [340] phi from memset to memset::@1 [phi:memset->memset::@1]
    // [340] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    // memset::@1
  __b1:
    // for(char* dst = str; dst!=end; dst++)
    // [341] if((byte*) memset::dst#2!=(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
    // }
    // [342] return 
    rts
    // memset::@2
  __b2:
    // *dst = c
    // [343] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [344] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [340] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
    // [340] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // 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

