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
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) @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) print_sdword::@4
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) @38
Culled Empty Block (label) @39
Culled Empty Block (label) @40
Culled Empty Block (label) mul16u::@5
Culled Empty Block (label) mul16u::@6
Culled Empty Block (label) mul16u::@8
Culled Empty Block (label) mul16u::@9
Culled Empty Block (label) @41
Culled Empty Block (label) mul16s::@5
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) @45
Culled Empty Block (label) @46
Culled Empty Block (label) @47
Culled Empty Block (label) @48
Culled Empty Block (label) @49
Culled Empty Block (label) mulf16u::@1
Culled Empty Block (label) @50
Culled Empty Block (label) mulf16s::@5
Culled Empty Block (label) @51
Culled Empty Block (label) @52
Culled Empty Block (label) muls16u::@7
Culled Empty Block (label) muls16u::@6
Culled Empty Block (label) muls16u::@8
Culled Empty Block (label) muls16u::@9
Culled Empty Block (label) muls16u::@3
Culled Empty Block (label) @53
Culled Empty Block (label) muls16s::@2
Culled Empty Block (label) muls16s::@11
Culled Empty Block (label) muls16s::@10
Culled Empty Block (label) muls16s::@12
Culled Empty Block (label) muls16s::@13
Culled Empty Block (label) muls16s::@6
Culled Empty Block (label) muls16s::@17
Culled Empty Block (label) muls16s::@16
Culled Empty Block (label) muls16s::@18
Culled Empty Block (label) muls16s::@19
Culled Empty Block (label) muls16s::@7
Culled Empty Block (label) @54
Culled Empty Block (label) mul16u_compare::@9
Culled Empty Block (label) @55
Culled Empty Block (label) @56
Culled Empty Block (label) mul16s_compare::@9
Culled Empty Block (label) @57

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:@58

(void()) print_str((byte*) print_str::str)
print_str: scope:[print_str]  from mul16s_compare::@1 mul16s_compare::@17 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@17 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8
  (byte*) print_char_cursor#154 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#149 mul16s_compare::@17/(byte*) print_char_cursor#51 mul16s_error/(byte*) print_char_cursor#152 mul16s_error::@2/(byte*) print_char_cursor#55 mul16s_error::@4/(byte*) print_char_cursor#57 mul16s_error::@6/(byte*) print_char_cursor#59 mul16s_error::@8/(byte*) print_char_cursor#61 mul16u_compare::@1/(byte*) print_char_cursor#145 mul16u_compare::@17/(byte*) print_char_cursor#33 mul16u_error/(byte*) print_char_cursor#148 mul16u_error::@2/(byte*) print_char_cursor#37 mul16u_error::@4/(byte*) print_char_cursor#39 mul16u_error::@6/(byte*) print_char_cursor#41 mul16u_error::@8/(byte*) print_char_cursor#43 )
  (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(byte*) print_str::str#8 mul16s_compare::@17/(byte*) print_str::str#9 mul16s_error/(byte*) print_str::str#10 mul16s_error::@2/(byte*) print_str::str#11 mul16s_error::@4/(byte*) print_str::str#12 mul16s_error::@6/(byte*) print_str::str#13 mul16s_error::@8/(byte*) print_str::str#14 mul16u_compare::@1/(byte*) print_str::str#1 mul16u_compare::@17/(byte*) print_str::str#2 mul16u_error/(byte*) print_str::str#3 mul16u_error::@2/(byte*) print_str::str#4 mul16u_error::@4/(byte*) print_str::str#5 mul16u_error::@6/(byte*) print_str::str#6 mul16u_error::@8/(byte*) print_str::str#7 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#154 print_str::@2/(byte*) print_char_cursor#1 )
  (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 )
  (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#15)
  if((bool~) print_str::$0) goto print_str::@2
  to:print_str::@return
print_str::@2: scope:[print_str]  from print_str::@1
  (byte*) print_char_cursor#67 ← phi( print_str::@1/(byte*) print_char_cursor#132 )
  (byte*) print_str::str#16 ← phi( print_str::@1/(byte*) print_str::str#15 )
  *((byte*) print_char_cursor#67) ← *((byte*) print_str::str#16)
  (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#67
  (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16
  to:print_str::@1
print_str::@return: scope:[print_str]  from print_str::@1
  (byte*) print_char_cursor#68 ← phi( print_str::@1/(byte*) print_char_cursor#132 )
  (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#68
  return 
  to:@return

(void()) print_ln()
print_ln: scope:[print_ln]  from mul16s_compare::@11 mul16s_compare::@18 mul16s_error::@10 mul16u_compare::@11 mul16u_compare::@18 mul16u_error::@10
  (byte*) print_char_cursor#133 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#151 mul16s_compare::@18/(byte*) print_char_cursor#52 mul16s_error::@10/(byte*) print_char_cursor#63 mul16u_compare::@11/(byte*) print_char_cursor#147 mul16u_compare::@18/(byte*) print_char_cursor#34 mul16u_error::@10/(byte*) print_char_cursor#45 )
  (byte*) print_line_cursor#43 ← phi( mul16s_compare::@11/(byte*) print_line_cursor#51 mul16s_compare::@18/(byte*) print_line_cursor#52 mul16s_error::@10/(byte*) print_line_cursor#53 mul16u_compare::@11/(byte*) print_line_cursor#47 mul16u_compare::@18/(byte*) print_line_cursor#48 mul16u_error::@10/(byte*) print_line_cursor#49 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  (byte*) print_char_cursor#69 ← phi( print_ln/(byte*) print_char_cursor#133 print_ln::@1/(byte*) print_char_cursor#69 )
  (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 )
  (byte*~) print_ln::$0 ← (byte*) print_line_cursor#22 + (number) $28
  (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0
  (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#69
  if((bool~) print_ln::$1) goto print_ln::@1
  to:print_ln::@2
print_ln::@2: scope:[print_ln]  from print_ln::@1
  (byte*) print_line_cursor#23 ← phi( print_ln::@1/(byte*) print_line_cursor#1 )
  (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#23
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@2
  (byte*) print_char_cursor#70 ← phi( print_ln::@2/(byte*) print_char_cursor#3 )
  (byte*) print_line_cursor#24 ← phi( print_ln::@2/(byte*) print_line_cursor#23 )
  (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#24
  (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#70
  return 
  to:@return

(void()) print_sword((signed word) print_sword::w)
print_sword: scope:[print_sword]  from mul16s_error::@1 mul16s_error::@3
  (byte*) print_char_cursor#155 ← phi( mul16s_error::@1/(byte*) print_char_cursor#54 mul16s_error::@3/(byte*) print_char_cursor#56 )
  (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 )
  (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (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#6 ← phi( print_sword/(signed word) print_sword::w#3 )
  (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#155 )
  (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#4 ← phi( print_sword::@1/(signed word) print_sword::w#6 )
  (byte*) print_char_cursor#71 ← phi( print_sword::@1/(byte*) print_char_cursor#23 )
  (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#71
  (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4
  (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#8 ← phi( print_sword/(signed word) print_sword::w#3 )
  (byte*) print_char_cursor#135 ← phi( print_sword/(byte*) print_char_cursor#155 )
  (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#7 ← phi( print_sword::@3/(signed word) print_sword::w#8 )
  (byte*) print_char_cursor#72 ← phi( print_sword::@3/(byte*) print_char_cursor#23 )
  (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#72
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword::@5 print_sword::@6
  (byte*) print_char_cursor#136 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 )
  (signed word) print_sword::w#5 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#7 )
  (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#5
  (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#73 ← phi( print_sword::@2/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#73
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@7
  (byte*) print_char_cursor#74 ← phi( print_sword::@7/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#74
  return 
  to:@return

(void()) print_word((word) print_word::w)
print_word: scope:[print_word]  from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2
  (byte*) print_char_cursor#137 ← phi( mul16u_error::@1/(byte*) print_char_cursor#36 mul16u_error::@3/(byte*) print_char_cursor#38 print_dword/(byte*) print_char_cursor#138 print_dword::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#136 )
  (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 )
  (byte~) print_word::$0 ← > (word) print_word::w#5
  (byte) print_byte::b#0 ← (byte~) print_word::$0
  call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  (word) print_word::w#6 ← phi( print_word/(word) print_word::w#5 )
  (byte*) print_char_cursor#75 ← phi( print_word/(byte*) print_char_cursor#21 )
  (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#75
  (byte~) print_word::$2 ← < (word) print_word::w#6
  (byte) print_byte::b#1 ← (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#76 ← phi( print_word::@1/(byte*) print_char_cursor#21 )
  (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#76
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@2
  (byte*) print_char_cursor#77 ← phi( print_word::@2/(byte*) print_char_cursor#10 )
  (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#77
  return 
  to:@return

(void()) print_dword((dword) print_dword::dw)
print_dword: scope:[print_dword]  from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@2
  (byte*) print_char_cursor#138 ← phi( mul16u_error::@5/(byte*) print_char_cursor#40 mul16u_error::@7/(byte*) print_char_cursor#42 mul16u_error::@9/(byte*) print_char_cursor#44 print_sdword::@2/(byte*) print_char_cursor#141 )
  (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@2/(dword) print_dword::dw#0 )
  (word~) print_dword::$0 ← > (dword) print_dword::dw#4
  (word) print_word::w#1 ← (word~) print_dword::$0
  call print_word 
  to:print_dword::@1
print_dword::@1: scope:[print_dword]  from print_dword
  (dword) print_dword::dw#5 ← phi( print_dword/(dword) print_dword::dw#4 )
  (byte*) print_char_cursor#78 ← phi( print_dword/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#78
  (word~) print_dword::$2 ← < (dword) print_dword::dw#5
  (word) print_word::w#2 ← (word~) print_dword::$2
  call print_word 
  to:print_dword::@2
print_dword::@2: scope:[print_dword]  from print_dword::@1
  (byte*) print_char_cursor#79 ← phi( print_dword::@1/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#79
  to:print_dword::@return
print_dword::@return: scope:[print_dword]  from print_dword::@2
  (byte*) print_char_cursor#80 ← phi( print_dword::@2/(byte*) print_char_cursor#13 )
  (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#80
  return 
  to:@return

(void()) print_sdword((signed dword) print_sdword::dw)
print_sdword: scope:[print_sdword]  from mul16s_error::@5 mul16s_error::@7 mul16s_error::@9
  (byte*) print_char_cursor#156 ← phi( mul16s_error::@5/(byte*) print_char_cursor#58 mul16s_error::@7/(byte*) print_char_cursor#60 mul16s_error::@9/(byte*) print_char_cursor#62 )
  (signed dword) print_sdword::dw#4 ← phi( mul16s_error::@5/(signed dword) print_sdword::dw#1 mul16s_error::@7/(signed dword) print_sdword::dw#2 mul16s_error::@9/(signed dword) print_sdword::dw#3 )
  (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#4 < (number) 0
  if((bool~) print_sdword::$0) goto print_sdword::@1
  to:print_sdword::@3
print_sdword::@1: scope:[print_sdword]  from print_sdword
  (signed dword) print_sdword::dw#7 ← phi( print_sdword/(signed dword) print_sdword::dw#4 )
  (byte*) print_char_cursor#139 ← phi( print_sdword/(byte*) print_char_cursor#156 )
  (byte) print_char::ch#2 ← (byte) '-'
  call print_char 
  to:print_sdword::@5
print_sdword::@5: scope:[print_sdword]  from print_sdword::@1
  (signed dword) print_sdword::dw#5 ← phi( print_sdword::@1/(signed dword) print_sdword::dw#7 )
  (byte*) print_char_cursor#81 ← phi( print_sdword::@1/(byte*) print_char_cursor#23 )
  (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#81
  (signed dword~) print_sdword::$5 ← - (signed dword) print_sdword::dw#5
  (signed dword) print_sdword::dw#0 ← (signed dword~) print_sdword::$5
  to:print_sdword::@2
print_sdword::@3: scope:[print_sdword]  from print_sdword
  (signed dword) print_sdword::dw#9 ← phi( print_sdword/(signed dword) print_sdword::dw#4 )
  (byte*) print_char_cursor#140 ← phi( print_sdword/(byte*) print_char_cursor#156 )
  (byte) print_char::ch#3 ← (byte) ' '
  call print_char 
  to:print_sdword::@6
print_sdword::@6: scope:[print_sdword]  from print_sdword::@3
  (signed dword) print_sdword::dw#8 ← phi( print_sdword::@3/(signed dword) print_sdword::dw#9 )
  (byte*) print_char_cursor#82 ← phi( print_sdword::@3/(byte*) print_char_cursor#23 )
  (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#82
  to:print_sdword::@2
print_sdword::@2: scope:[print_sdword]  from print_sdword::@5 print_sdword::@6
  (byte*) print_char_cursor#141 ← phi( print_sdword::@5/(byte*) print_char_cursor#15 print_sdword::@6/(byte*) print_char_cursor#16 )
  (signed dword) print_sdword::dw#6 ← phi( print_sdword::@5/(signed dword) print_sdword::dw#0 print_sdword::@6/(signed dword) print_sdword::dw#8 )
  (dword~) print_sdword::$1 ← ((dword)) (signed dword) print_sdword::dw#6
  (dword) print_dword::dw#0 ← (dword~) print_sdword::$1
  call print_dword 
  to:print_sdword::@7
print_sdword::@7: scope:[print_sdword]  from print_sdword::@2
  (byte*) print_char_cursor#83 ← phi( print_sdword::@2/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#83
  to:print_sdword::@return
print_sdword::@return: scope:[print_sdword]  from print_sdword::@7
  (byte*) print_char_cursor#84 ← phi( print_sdword::@7/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#84
  return 
  to:@return

(void()) print_byte((byte) print_byte::b)
print_byte: scope:[print_byte]  from print_word print_word::@1
  (byte*) print_char_cursor#142 ← phi( print_word/(byte*) print_char_cursor#137 print_word::@1/(byte*) print_char_cursor#9 )
  (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
  (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (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#3 ← phi( print_byte/(byte) print_byte::b#2 )
  (byte*) print_char_cursor#85 ← phi( print_byte/(byte*) print_char_cursor#23 )
  (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#85
  (number~) print_byte::$2 ← (byte) print_byte::b#3 & (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#86 ← phi( print_byte::@1/(byte*) print_char_cursor#23 )
  (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#86
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@2
  (byte*) print_char_cursor#87 ← phi( print_byte::@2/(byte*) print_char_cursor#20 )
  (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#87
  return 
  to:@return

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3
  (byte*) print_char_cursor#88 ← phi( print_byte/(byte*) print_char_cursor#142 print_byte::@1/(byte*) print_char_cursor#19 print_sdword::@1/(byte*) print_char_cursor#139 print_sdword::@3/(byte*) print_char_cursor#140 print_sword::@1/(byte*) print_char_cursor#134 print_sword::@3/(byte*) print_char_cursor#135 )
  (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sdword::@1/(byte) print_char::ch#2 print_sdword::@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#88) ← (byte) print_char::ch#6
  (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  (byte*) print_char_cursor#89 ← phi( print_char/(byte*) print_char_cursor#22 )
  (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#89
  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#24 ← (byte*) print_line_cursor#3
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  (byte*) print_char_cursor#90 ← phi( print_cls::@1/(byte*) print_char_cursor#24 )
  (byte*) print_line_cursor#25 ← phi( print_cls::@1/(byte*) print_line_cursor#3 )
  (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#25
  (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#90
  return 
  to:@return

(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
mul16u: scope:[mul16u]  from mul16s mul16u_compare::@13
  (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@13/(word) mul16u::a#2 )
  (word) mul16u::b#2 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@13/(word) mul16u::b#1 )
  (dword) mul16u::res#0 ← (dword) 0
  (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2
  to:mul16u::@1
mul16u::@1: scope:[mul16u]  from mul16u mul16u::@4
  (dword) mul16u::mb#5 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
  (dword) mul16u::res#4 ← phi( mul16u/(dword) mul16u::res#0 mul16u::@4/(dword) mul16u::res#6 )
  (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
  (bool~) mul16u::$0 ← (word) mul16u::a#3 != (number) 0
  if((bool~) mul16u::$0) goto mul16u::@2
  to:mul16u::@3
mul16u::@2: scope:[mul16u]  from mul16u::@1
  (dword) mul16u::res#5 ← phi( mul16u::@1/(dword) mul16u::res#4 )
  (dword) mul16u::mb#4 ← phi( mul16u::@1/(dword) mul16u::mb#5 )
  (word) mul16u::a#4 ← phi( mul16u::@1/(word) mul16u::a#3 )
  (number~) mul16u::$1 ← (word) mul16u::a#4 & (number) 1
  (bool~) mul16u::$2 ← (number~) mul16u::$1 != (number) 0
  (bool~) mul16u::$3 ← ! (bool~) mul16u::$2
  if((bool~) mul16u::$3) goto mul16u::@4
  to:mul16u::@7
mul16u::@3: scope:[mul16u]  from mul16u::@1
  (dword) mul16u::res#2 ← phi( mul16u::@1/(dword) mul16u::res#4 )
  (dword) mul16u::return#0 ← (dword) mul16u::res#2
  to:mul16u::@return
mul16u::@4: scope:[mul16u]  from mul16u::@2 mul16u::@7
  (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#5 mul16u::@7/(dword) mul16u::res#1 )
  (dword) mul16u::mb#2 ← phi( mul16u::@2/(dword) mul16u::mb#4 mul16u::@7/(dword) mul16u::mb#3 )
  (word) mul16u::a#5 ← phi( mul16u::@2/(word) mul16u::a#4 mul16u::@7/(word) mul16u::a#7 )
  (word~) mul16u::$5 ← (word) mul16u::a#5 >> (number) 1
  (word) mul16u::a#0 ← (word~) mul16u::$5
  (dword~) mul16u::$6 ← (dword) mul16u::mb#2 << (number) 1
  (dword) mul16u::mb#1 ← (dword~) mul16u::$6
  to:mul16u::@1
mul16u::@7: scope:[mul16u]  from mul16u::@2
  (word) mul16u::a#7 ← phi( mul16u::@2/(word) mul16u::a#4 )
  (dword) mul16u::mb#3 ← phi( mul16u::@2/(dword) mul16u::mb#4 )
  (dword) mul16u::res#3 ← phi( mul16u::@2/(dword) mul16u::res#5 )
  (dword~) mul16u::$4 ← (dword) mul16u::res#3 + (dword) mul16u::mb#3
  (dword) mul16u::res#1 ← (dword~) mul16u::$4
  to:mul16u::@4
mul16u::@return: scope:[mul16u]  from mul16u::@3
  (dword) mul16u::return#4 ← phi( mul16u::@3/(dword) mul16u::return#0 )
  (dword) mul16u::return#1 ← (dword) mul16u::return#4
  return 
  to:@return

(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
mul16s: scope:[mul16s]  from mul16s_compare::@13
  (signed word) mul16s::b#1 ← phi( mul16s_compare::@13/(signed word) mul16s::b#0 )
  (signed word) mul16s::a#1 ← phi( mul16s_compare::@13/(signed word) mul16s::a#0 )
  (word~) mul16s::$0 ← ((word)) (signed word) mul16s::a#1
  (word~) mul16s::$1 ← ((word)) (signed word) mul16s::b#1
  (word) mul16u::a#1 ← (word~) mul16s::$0
  (word) mul16u::b#0 ← (word~) mul16s::$1
  call mul16u 
  (dword) mul16u::return#2 ← (dword) mul16u::return#1
  to:mul16s::@6
mul16s::@6: scope:[mul16s]  from mul16s
  (signed word) mul16s::b#4 ← phi( mul16s/(signed word) mul16s::b#1 )
  (signed word) mul16s::a#2 ← phi( mul16s/(signed word) mul16s::a#1 )
  (dword) mul16u::return#5 ← phi( mul16s/(dword) mul16u::return#2 )
  (dword~) mul16s::$2 ← (dword) mul16u::return#5
  (dword) mul16s::m#0 ← (dword~) mul16s::$2
  (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (number) 0
  (bool~) mul16s::$4 ← ! (bool~) mul16s::$3
  if((bool~) mul16s::$4) goto mul16s::@1
  to:mul16s::@3
mul16s::@1: scope:[mul16s]  from mul16s::@3 mul16s::@6
  (signed word) mul16s::a#4 ← phi( mul16s::@3/(signed word) mul16s::a#5 mul16s::@6/(signed word) mul16s::a#2 )
  (dword) mul16s::m#6 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
  (signed word) mul16s::b#2 ← phi( mul16s::@3/(signed word) mul16s::b#3 mul16s::@6/(signed word) mul16s::b#4 )
  (bool~) mul16s::$5 ← (signed word) mul16s::b#2 < (number) 0
  (bool~) mul16s::$6 ← ! (bool~) mul16s::$5
  if((bool~) mul16s::$6) goto mul16s::@2
  to:mul16s::@4
mul16s::@3: scope:[mul16s]  from mul16s::@6
  (signed word) mul16s::a#5 ← phi( mul16s::@6/(signed word) mul16s::a#2 )
  (signed word) mul16s::b#3 ← phi( mul16s::@6/(signed word) mul16s::b#4 )
  (dword) mul16s::m#3 ← phi( mul16s::@6/(dword) mul16s::m#0 )
  (word~) mul16s::$9 ← > (dword) mul16s::m#3
  (word~) mul16s::$10 ← ((word)) (signed word) mul16s::b#3
  (word~) mul16s::$11 ← (word~) mul16s::$9 - (word~) mul16s::$10
  (word~) mul16s::$16 ← (word~) mul16s::$11
  (dword) mul16s::m#1 ← (dword) mul16s::m#3 hi= (word~) mul16s::$16
  to:mul16s::@1
mul16s::@2: scope:[mul16s]  from mul16s::@1 mul16s::@4
  (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#6 mul16s::@4/(dword) mul16s::m#2 )
  (signed dword~) mul16s::$7 ← ((signed dword)) (dword) mul16s::m#4
  (signed dword) mul16s::return#0 ← (signed dword~) mul16s::$7
  to:mul16s::@return
mul16s::@4: scope:[mul16s]  from mul16s::@1
  (signed word) mul16s::a#3 ← phi( mul16s::@1/(signed word) mul16s::a#4 )
  (dword) mul16s::m#5 ← phi( mul16s::@1/(dword) mul16s::m#6 )
  (word~) mul16s::$13 ← > (dword) mul16s::m#5
  (word~) mul16s::$14 ← ((word)) (signed word) mul16s::a#3
  (word~) mul16s::$15 ← (word~) mul16s::$13 - (word~) mul16s::$14
  (word~) mul16s::$17 ← (word~) mul16s::$15
  (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
  to:mul16s::@2
mul16s::@return: scope:[mul16s]  from mul16s::@2
  (signed dword) mul16s::return#3 ← phi( mul16s::@2/(signed dword) mul16s::return#0 )
  (signed dword) mul16s::return#1 ← (signed dword) mul16s::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

(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
mulf16u: scope:[mulf16u]  from mul16u_compare::@14 mulf16s
  (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 )
  (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 )
  *((const word*) mulf16u::memA) ← (word) mulf16u::a#2
  *((const word*) mulf16u::memB) ← (word) mulf16u::b#2
  asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !:  }
  (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR)
  to:mulf16u::@return
mulf16u::@return: scope:[mulf16u]  from mulf16u
  (dword) mulf16u::return#4 ← phi( mulf16u/(dword) mulf16u::return#0 )
  (dword) mulf16u::return#1 ← (dword) mulf16u::return#4
  return 
  to:@return

(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
mulf16s: scope:[mulf16s]  from mul16s_compare::@14
  (signed word) mulf16s::b#1 ← phi( mul16s_compare::@14/(signed word) mulf16s::b#0 )
  (signed word) mulf16s::a#1 ← phi( mul16s_compare::@14/(signed word) mulf16s::a#0 )
  (word~) mulf16s::$0 ← ((word)) (signed word) mulf16s::a#1
  (word~) mulf16s::$1 ← ((word)) (signed word) mulf16s::b#1
  (word) mulf16u::a#0 ← (word~) mulf16s::$0
  (word) mulf16u::b#0 ← (word~) mulf16s::$1
  call mulf16u 
  (dword) mulf16u::return#2 ← (dword) mulf16u::return#1
  to:mulf16s::@6
mulf16s::@6: scope:[mulf16s]  from mulf16s
  (signed word) mulf16s::b#4 ← phi( mulf16s/(signed word) mulf16s::b#1 )
  (signed word) mulf16s::a#2 ← phi( mulf16s/(signed word) mulf16s::a#1 )
  (dword) mulf16u::return#5 ← phi( mulf16s/(dword) mulf16u::return#2 )
  (dword~) mulf16s::$2 ← (dword) mulf16u::return#5
  (dword) mulf16s::m#0 ← (dword~) mulf16s::$2
  (bool~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (number) 0
  (bool~) mulf16s::$4 ← ! (bool~) mulf16s::$3
  if((bool~) mulf16s::$4) goto mulf16s::@1
  to:mulf16s::@3
mulf16s::@1: scope:[mulf16s]  from mulf16s::@3 mulf16s::@6
  (signed word) mulf16s::a#4 ← phi( mulf16s::@3/(signed word) mulf16s::a#5 mulf16s::@6/(signed word) mulf16s::a#2 )
  (dword) mulf16s::m#6 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 )
  (signed word) mulf16s::b#2 ← phi( mulf16s::@3/(signed word) mulf16s::b#3 mulf16s::@6/(signed word) mulf16s::b#4 )
  (bool~) mulf16s::$5 ← (signed word) mulf16s::b#2 < (number) 0
  (bool~) mulf16s::$6 ← ! (bool~) mulf16s::$5
  if((bool~) mulf16s::$6) goto mulf16s::@2
  to:mulf16s::@4
mulf16s::@3: scope:[mulf16s]  from mulf16s::@6
  (signed word) mulf16s::a#5 ← phi( mulf16s::@6/(signed word) mulf16s::a#2 )
  (signed word) mulf16s::b#3 ← phi( mulf16s::@6/(signed word) mulf16s::b#4 )
  (dword) mulf16s::m#3 ← phi( mulf16s::@6/(dword) mulf16s::m#0 )
  (word~) mulf16s::$9 ← > (dword) mulf16s::m#3
  (word~) mulf16s::$10 ← ((word)) (signed word) mulf16s::b#3
  (word~) mulf16s::$11 ← (word~) mulf16s::$9 - (word~) mulf16s::$10
  (word~) mulf16s::$16 ← (word~) mulf16s::$11
  (dword) mulf16s::m#1 ← (dword) mulf16s::m#3 hi= (word~) mulf16s::$16
  to:mulf16s::@1
mulf16s::@2: scope:[mulf16s]  from mulf16s::@1 mulf16s::@4
  (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#6 mulf16s::@4/(dword) mulf16s::m#2 )
  (signed dword~) mulf16s::$7 ← ((signed dword)) (dword) mulf16s::m#4
  (signed dword) mulf16s::return#0 ← (signed dword~) mulf16s::$7
  to:mulf16s::@return
mulf16s::@4: scope:[mulf16s]  from mulf16s::@1
  (signed word) mulf16s::a#3 ← phi( mulf16s::@1/(signed word) mulf16s::a#4 )
  (dword) mulf16s::m#5 ← phi( mulf16s::@1/(dword) mulf16s::m#6 )
  (word~) mulf16s::$13 ← > (dword) mulf16s::m#5
  (word~) mulf16s::$14 ← ((word)) (signed word) mulf16s::a#3
  (word~) mulf16s::$15 ← (word~) mulf16s::$13 - (word~) mulf16s::$14
  (word~) mulf16s::$17 ← (word~) mulf16s::$15
  (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17
  to:mulf16s::@2
mulf16s::@return: scope:[mulf16s]  from mulf16s::@2
  (signed dword) mulf16s::return#3 ← phi( mulf16s::@2/(signed dword) mulf16s::return#0 )
  (signed dword) mulf16s::return#1 ← (signed dword) mulf16s::return#3
  return 
  to:@return

(void()) main()
main: scope:[main]  from @58
  (byte*) print_char_cursor#143 ← phi( @58/(byte*) print_char_cursor#153 )
  (byte*) print_line_cursor#44 ← phi( @58/(byte*) print_line_cursor#54 )
  (byte*) print_screen#3 ← phi( @58/(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#91 ← phi( main/(byte*) print_char_cursor#25 )
  (byte*) print_line_cursor#26 ← phi( main/(byte*) print_line_cursor#4 )
  (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#26
  (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#91
  call mulf_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte*) print_line_cursor#45 ← phi( main::@1/(byte*) print_line_cursor#5 )
  (byte*) print_char_cursor#144 ← phi( main::@1/(byte*) print_char_cursor#26 )
  call mul16u_compare 
  to:main::@3
main::@3: scope:[main]  from main::@2
  (byte*) print_line_cursor#27 ← phi( main::@2/(byte*) print_line_cursor#10 )
  (byte*) print_char_cursor#92 ← phi( main::@2/(byte*) print_char_cursor#32 )
  (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#92
  (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#27
  call mul16s_compare 
  to:main::@4
main::@4: scope:[main]  from main::@3
  (byte*) print_line_cursor#28 ← phi( main::@3/(byte*) print_line_cursor#16 )
  (byte*) print_char_cursor#93 ← phi( main::@3/(byte*) print_char_cursor#50 )
  (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#93
  (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#28
  to:main::@return
main::@return: scope:[main]  from main::@4
  (byte*) print_char_cursor#94 ← phi( main::@4/(byte*) print_char_cursor#28 )
  (byte*) print_line_cursor#29 ← phi( main::@4/(byte*) print_line_cursor#7 )
  (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#29
  (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#94
  return 
  to:@return

(dword()) muls16u((word) muls16u::a , (word) muls16u::b)
muls16u: scope:[muls16u]  from mul16u_compare::@2
  (word) muls16u::b#4 ← phi( mul16u_compare::@2/(word) muls16u::b#0 )
  (word) muls16u::a#1 ← phi( mul16u_compare::@2/(word) muls16u::a#0 )
  (dword) muls16u::m#0 ← (dword) 0
  (bool~) muls16u::$0 ← (word) muls16u::a#1 != (number) 0
  (bool~) muls16u::$1 ← ! (bool~) muls16u::$0
  if((bool~) muls16u::$1) goto muls16u::@1
  to:muls16u::@2
muls16u::@1: scope:[muls16u]  from muls16u muls16u::@4
  (dword) muls16u::m#2 ← phi( muls16u/(dword) muls16u::m#0 muls16u::@4/(dword) muls16u::m#4 )
  (dword) muls16u::return#0 ← (dword) muls16u::m#2
  to:muls16u::@return
muls16u::@2: scope:[muls16u]  from muls16u
  (word) muls16u::b#3 ← phi( muls16u/(word) muls16u::b#4 )
  (dword) muls16u::m#5 ← phi( muls16u/(dword) muls16u::m#0 )
  (word) muls16u::a#3 ← phi( muls16u/(word) muls16u::a#1 )
  (word) muls16u::i#0 ← (word) 0
  to:muls16u::@4
muls16u::@4: scope:[muls16u]  from muls16u::@2 muls16u::@5
  (word) muls16u::b#2 ← phi( muls16u::@2/(word) muls16u::b#3 muls16u::@5/(word) muls16u::b#1 )
  (dword) muls16u::m#4 ← phi( muls16u::@2/(dword) muls16u::m#5 muls16u::@5/(dword) muls16u::m#1 )
  (word) muls16u::a#2 ← phi( muls16u::@2/(word) muls16u::a#3 muls16u::@5/(word) muls16u::a#4 )
  (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#0 muls16u::@5/(word) muls16u::i#1 )
  (bool~) muls16u::$2 ← (word) muls16u::i#2 != (word) muls16u::a#2
  if((bool~) muls16u::$2) goto muls16u::@5
  to:muls16u::@1
muls16u::@5: scope:[muls16u]  from muls16u::@4
  (word) muls16u::a#4 ← phi( muls16u::@4/(word) muls16u::a#2 )
  (word) muls16u::i#3 ← phi( muls16u::@4/(word) muls16u::i#2 )
  (word) muls16u::b#1 ← phi( muls16u::@4/(word) muls16u::b#2 )
  (dword) muls16u::m#3 ← phi( muls16u::@4/(dword) muls16u::m#4 )
  (dword~) muls16u::$3 ← (dword) muls16u::m#3 + (word) muls16u::b#1
  (dword) muls16u::m#1 ← (dword~) muls16u::$3
  (word) muls16u::i#1 ← ++ (word) muls16u::i#3
  to:muls16u::@4
muls16u::@return: scope:[muls16u]  from muls16u::@1
  (dword) muls16u::return#3 ← phi( muls16u::@1/(dword) muls16u::return#0 )
  (dword) muls16u::return#1 ← (dword) muls16u::return#3
  return 
  to:@return

(signed dword()) muls16s((signed word) muls16s::a , (signed word) muls16s::b)
muls16s: scope:[muls16s]  from mul16s_compare::@2
  (signed word) muls16s::b#7 ← phi( mul16s_compare::@2/(signed word) muls16s::b#0 )
  (signed word) muls16s::a#1 ← phi( mul16s_compare::@2/(signed word) muls16s::a#0 )
  (signed dword) muls16s::m#0 ← (signed dword) 0
  (bool~) muls16s::$0 ← (signed word) muls16s::a#1 < (number) 0
  if((bool~) muls16s::$0) goto muls16s::@1
  to:muls16s::@4
muls16s::@1: scope:[muls16s]  from muls16s
  (signed word) muls16s::b#6 ← phi( muls16s/(signed word) muls16s::b#7 )
  (signed dword) muls16s::m#10 ← phi( muls16s/(signed dword) muls16s::m#0 )
  (signed word) muls16s::a#7 ← phi( muls16s/(signed word) muls16s::a#1 )
  (signed word) muls16s::i#0 ← (signed word) 0
  to:muls16s::@14
muls16s::@4: scope:[muls16s]  from muls16s
  (signed word) muls16s::b#8 ← phi( muls16s/(signed word) muls16s::b#7 )
  (signed dword) muls16s::m#8 ← phi( muls16s/(signed dword) muls16s::m#0 )
  (signed word) muls16s::a#2 ← phi( muls16s/(signed word) muls16s::a#1 )
  (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (number) 0
  (bool~) muls16s::$2 ← ! (bool~) muls16s::$1
  if((bool~) muls16s::$2) goto muls16s::@3
  to:muls16s::@5
muls16s::@5: scope:[muls16s]  from muls16s::@4
  (signed word) muls16s::b#5 ← phi( muls16s::@4/(signed word) muls16s::b#8 )
  (signed dword) muls16s::m#9 ← phi( muls16s::@4/(signed dword) muls16s::m#8 )
  (signed word) muls16s::a#5 ← phi( muls16s::@4/(signed word) muls16s::a#2 )
  (signed word) muls16s::j#0 ← (signed word) 0
  to:muls16s::@8
muls16s::@8: scope:[muls16s]  from muls16s::@5 muls16s::@9
  (signed word) muls16s::b#3 ← phi( muls16s::@5/(signed word) muls16s::b#5 muls16s::@9/(signed word) muls16s::b#1 )
  (signed dword) muls16s::m#6 ← phi( muls16s::@5/(signed dword) muls16s::m#9 muls16s::@9/(signed dword) muls16s::m#1 )
  (signed word) muls16s::a#3 ← phi( muls16s::@5/(signed word) muls16s::a#5 muls16s::@9/(signed word) muls16s::a#6 )
  (signed word) muls16s::j#2 ← phi( muls16s::@5/(signed word) muls16s::j#0 muls16s::@9/(signed word) muls16s::j#1 )
  (bool~) muls16s::$3 ← (signed word) muls16s::j#2 != (signed word) muls16s::a#3
  if((bool~) muls16s::$3) goto muls16s::@9
  to:muls16s::@3
muls16s::@9: scope:[muls16s]  from muls16s::@8
  (signed word) muls16s::a#6 ← phi( muls16s::@8/(signed word) muls16s::a#3 )
  (signed word) muls16s::j#3 ← phi( muls16s::@8/(signed word) muls16s::j#2 )
  (signed word) muls16s::b#1 ← phi( muls16s::@8/(signed word) muls16s::b#3 )
  (signed dword) muls16s::m#3 ← phi( muls16s::@8/(signed dword) muls16s::m#6 )
  (signed dword~) muls16s::$4 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#1
  (signed dword) muls16s::m#1 ← (signed dword~) muls16s::$4
  (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#3
  to:muls16s::@8
muls16s::@3: scope:[muls16s]  from muls16s::@14 muls16s::@4 muls16s::@8
  (signed dword) muls16s::m#4 ← phi( muls16s::@14/(signed dword) muls16s::m#7 muls16s::@4/(signed dword) muls16s::m#8 muls16s::@8/(signed dword) muls16s::m#6 )
  (signed dword) muls16s::return#0 ← (signed dword) muls16s::m#4
  to:muls16s::@return
muls16s::@14: scope:[muls16s]  from muls16s::@1 muls16s::@15
  (signed word) muls16s::b#4 ← phi( muls16s::@1/(signed word) muls16s::b#6 muls16s::@15/(signed word) muls16s::b#2 )
  (signed dword) muls16s::m#7 ← phi( muls16s::@1/(signed dword) muls16s::m#10 muls16s::@15/(signed dword) muls16s::m#2 )
  (signed word) muls16s::a#4 ← phi( muls16s::@1/(signed word) muls16s::a#7 muls16s::@15/(signed word) muls16s::a#8 )
  (signed word) muls16s::i#2 ← phi( muls16s::@1/(signed word) muls16s::i#0 muls16s::@15/(signed word) muls16s::i#1 )
  (bool~) muls16s::$5 ← (signed word) muls16s::i#2 != (signed word) muls16s::a#4
  if((bool~) muls16s::$5) goto muls16s::@15
  to:muls16s::@3
muls16s::@15: scope:[muls16s]  from muls16s::@14
  (signed word) muls16s::a#8 ← phi( muls16s::@14/(signed word) muls16s::a#4 )
  (signed word) muls16s::i#3 ← phi( muls16s::@14/(signed word) muls16s::i#2 )
  (signed word) muls16s::b#2 ← phi( muls16s::@14/(signed word) muls16s::b#4 )
  (signed dword) muls16s::m#5 ← phi( muls16s::@14/(signed dword) muls16s::m#7 )
  (signed dword~) muls16s::$6 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#2
  (signed dword) muls16s::m#2 ← (signed dword~) muls16s::$6
  (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#3
  to:muls16s::@14
muls16s::@return: scope:[muls16s]  from muls16s::@3
  (signed dword) muls16s::return#3 ← phi( muls16s::@3/(signed dword) muls16s::return#0 )
  (signed dword) muls16s::return#1 ← (signed dword) muls16s::return#3
  return 
  to:@return

(void()) mul16u_compare()
mul16u_compare: scope:[mul16u_compare]  from main::@2
  (byte*) print_line_cursor#95 ← phi( main::@2/(byte*) print_line_cursor#45 )
  (byte*) print_char_cursor#157 ← phi( main::@2/(byte*) print_char_cursor#144 )
  (word) mul16u_compare::a#0 ← (word) 0
  (word) mul16u_compare::b#0 ← (word) 0
  (byte) mul16u_compare::i#0 ← (byte) 0
  to:mul16u_compare::@1
mul16u_compare::@1: scope:[mul16u_compare]  from mul16u_compare mul16u_compare::@10
  (byte*) print_line_cursor#91 ← phi( mul16u_compare/(byte*) print_line_cursor#95 mul16u_compare::@10/(byte*) print_line_cursor#56 )
  (byte) mul16u_compare::i#13 ← phi( mul16u_compare/(byte) mul16u_compare::i#0 mul16u_compare::@10/(byte) mul16u_compare::i#1 )
  (word) mul16u_compare::b#9 ← phi( mul16u_compare/(word) mul16u_compare::b#0 mul16u_compare::@10/(word) mul16u_compare::b#12 )
  (word) mul16u_compare::a#9 ← phi( mul16u_compare/(word) mul16u_compare::a#0 mul16u_compare::@10/(word) mul16u_compare::a#12 )
  (byte*) print_char_cursor#145 ← phi( mul16u_compare/(byte*) print_char_cursor#157 mul16u_compare::@10/(byte*) print_char_cursor#158 )
  (byte*) print_str::str#1 ← (const byte*) mul16u_compare::str
  call print_str 
  to:mul16u_compare::@12
mul16u_compare::@12: scope:[mul16u_compare]  from mul16u_compare::@1
  (byte*) print_line_cursor#87 ← phi( mul16u_compare::@1/(byte*) print_line_cursor#91 )
  (byte) mul16u_compare::i#12 ← phi( mul16u_compare::@1/(byte) mul16u_compare::i#13 )
  (word) mul16u_compare::b#6 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#9 )
  (word) mul16u_compare::a#6 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#9 )
  (byte*) print_char_cursor#95 ← phi( mul16u_compare::@1/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#95
  (byte) mul16u_compare::j#0 ← (byte) 0
  to:mul16u_compare::@2
mul16u_compare::@2: scope:[mul16u_compare]  from mul16u_compare::@12 mul16u_compare::@5
  (byte*) print_line_cursor#83 ← phi( mul16u_compare::@12/(byte*) print_line_cursor#87 mul16u_compare::@5/(byte*) print_line_cursor#63 )
  (byte*) print_char_cursor#177 ← phi( mul16u_compare::@12/(byte*) print_char_cursor#30 mul16u_compare::@5/(byte*) print_char_cursor#165 )
  (byte) mul16u_compare::i#11 ← phi( mul16u_compare::@12/(byte) mul16u_compare::i#12 mul16u_compare::@5/(byte) mul16u_compare::i#3 )
  (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@12/(byte) mul16u_compare::j#0 mul16u_compare::@5/(byte) mul16u_compare::j#1 )
  (word) mul16u_compare::b#2 ← phi( mul16u_compare::@12/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#7 )
  (word) mul16u_compare::a#2 ← phi( mul16u_compare::@12/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#7 )
  (number~) mul16u_compare::$4 ← (word) mul16u_compare::a#2 + (number) $d2b
  (word) mul16u_compare::a#1 ← (number~) mul16u_compare::$4
  (number~) mul16u_compare::$5 ← (word) mul16u_compare::b#2 + (number) $ffd
  (word) mul16u_compare::b#1 ← (number~) mul16u_compare::$5
  (word) muls16u::a#0 ← (word) mul16u_compare::a#1
  (word) muls16u::b#0 ← (word) mul16u_compare::b#1
  call muls16u 
  (dword) muls16u::return#2 ← (dword) muls16u::return#1
  to:mul16u_compare::@13
mul16u_compare::@13: scope:[mul16u_compare]  from mul16u_compare::@2
  (byte*) print_line_cursor#79 ← phi( mul16u_compare::@2/(byte*) print_line_cursor#83 )
  (byte*) print_char_cursor#175 ← phi( mul16u_compare::@2/(byte*) print_char_cursor#177 )
  (byte) mul16u_compare::i#10 ← phi( mul16u_compare::@2/(byte) mul16u_compare::i#11 )
  (byte) mul16u_compare::j#9 ← phi( mul16u_compare::@2/(byte) mul16u_compare::j#10 )
  (word) mul16u_compare::b#3 ← phi( mul16u_compare::@2/(word) mul16u_compare::b#1 )
  (word) mul16u_compare::a#3 ← phi( mul16u_compare::@2/(word) mul16u_compare::a#1 )
  (dword) muls16u::return#4 ← phi( mul16u_compare::@2/(dword) muls16u::return#2 )
  (dword~) mul16u_compare::$6 ← (dword) muls16u::return#4
  (dword) mul16u_compare::ms#0 ← (dword~) mul16u_compare::$6
  (word) mul16u::a#2 ← (word) mul16u_compare::a#3
  (word) mul16u::b#1 ← (word) mul16u_compare::b#3
  call mul16u 
  (dword) mul16u::return#3 ← (dword) mul16u::return#1
  to:mul16u_compare::@14
mul16u_compare::@14: scope:[mul16u_compare]  from mul16u_compare::@13
  (byte*) print_line_cursor#75 ← phi( mul16u_compare::@13/(byte*) print_line_cursor#79 )
  (byte*) print_char_cursor#173 ← phi( mul16u_compare::@13/(byte*) print_char_cursor#175 )
  (byte) mul16u_compare::i#9 ← phi( mul16u_compare::@13/(byte) mul16u_compare::i#10 )
  (byte) mul16u_compare::j#8 ← phi( mul16u_compare::@13/(byte) mul16u_compare::j#9 )
  (dword) mul16u_compare::ms#4 ← phi( mul16u_compare::@13/(dword) mul16u_compare::ms#0 )
  (word) mul16u_compare::b#4 ← phi( mul16u_compare::@13/(word) mul16u_compare::b#3 )
  (word) mul16u_compare::a#4 ← phi( mul16u_compare::@13/(word) mul16u_compare::a#3 )
  (dword) mul16u::return#6 ← phi( mul16u_compare::@13/(dword) mul16u::return#3 )
  (dword~) mul16u_compare::$7 ← (dword) mul16u::return#6
  (dword) mul16u_compare::mn#0 ← (dword~) mul16u_compare::$7
  (word) mulf16u::a#1 ← (word) mul16u_compare::a#4
  (word) mulf16u::b#1 ← (word) mul16u_compare::b#4
  call mulf16u 
  (dword) mulf16u::return#3 ← (dword) mulf16u::return#1
  to:mul16u_compare::@15
mul16u_compare::@15: scope:[mul16u_compare]  from mul16u_compare::@14
  (byte*) print_line_cursor#69 ← phi( mul16u_compare::@14/(byte*) print_line_cursor#75 )
  (byte*) print_char_cursor#169 ← phi( mul16u_compare::@14/(byte*) print_char_cursor#173 )
  (byte) mul16u_compare::i#7 ← phi( mul16u_compare::@14/(byte) mul16u_compare::i#9 )
  (word) mul16u_compare::b#13 ← phi( mul16u_compare::@14/(word) mul16u_compare::b#4 )
  (word) mul16u_compare::a#13 ← phi( mul16u_compare::@14/(word) mul16u_compare::a#4 )
  (byte) mul16u_compare::j#6 ← phi( mul16u_compare::@14/(byte) mul16u_compare::j#8 )
  (dword) mul16u_compare::mn#3 ← phi( mul16u_compare::@14/(dword) mul16u_compare::mn#0 )
  (dword) mul16u_compare::ms#1 ← phi( mul16u_compare::@14/(dword) mul16u_compare::ms#4 )
  (dword) mulf16u::return#6 ← phi( mul16u_compare::@14/(dword) mulf16u::return#3 )
  (dword~) mul16u_compare::$8 ← (dword) mulf16u::return#6
  (dword) mul16u_compare::mf#0 ← (dword~) mul16u_compare::$8
  (byte) mul16u_compare::ok#0 ← (byte) 1
  (bool~) mul16u_compare::$9 ← (dword) mul16u_compare::ms#1 != (dword) mul16u_compare::mf#0
  (bool~) mul16u_compare::$10 ← ! (bool~) mul16u_compare::$9
  if((bool~) mul16u_compare::$10) goto mul16u_compare::@3
  to:mul16u_compare::@6
mul16u_compare::@3: scope:[mul16u_compare]  from mul16u_compare::@15 mul16u_compare::@6
  (byte*) print_line_cursor#61 ← phi( mul16u_compare::@15/(byte*) print_line_cursor#69 mul16u_compare::@6/(byte*) print_line_cursor#70 )
  (byte*) print_char_cursor#163 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#169 mul16u_compare::@6/(byte*) print_char_cursor#170 )
  (byte) mul16u_compare::i#5 ← phi( mul16u_compare::@15/(byte) mul16u_compare::i#7 mul16u_compare::@6/(byte) mul16u_compare::i#8 )
  (dword) mul16u_compare::mf#3 ← phi( mul16u_compare::@15/(dword) mul16u_compare::mf#0 mul16u_compare::@6/(dword) mul16u_compare::mf#5 )
  (word) mul16u_compare::b#10 ← phi( mul16u_compare::@15/(word) mul16u_compare::b#13 mul16u_compare::@6/(word) mul16u_compare::b#14 )
  (word) mul16u_compare::a#10 ← phi( mul16u_compare::@15/(word) mul16u_compare::a#13 mul16u_compare::@6/(word) mul16u_compare::a#14 )
  (byte) mul16u_compare::j#4 ← phi( mul16u_compare::@15/(byte) mul16u_compare::j#6 mul16u_compare::@6/(byte) mul16u_compare::j#7 )
  (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#0 mul16u_compare::@6/(byte) mul16u_compare::ok#1 )
  (dword) mul16u_compare::mn#1 ← phi( mul16u_compare::@15/(dword) mul16u_compare::mn#3 mul16u_compare::@6/(dword) mul16u_compare::mn#4 )
  (dword) mul16u_compare::ms#2 ← phi( mul16u_compare::@15/(dword) mul16u_compare::ms#1 mul16u_compare::@6/(dword) mul16u_compare::ms#5 )
  (bool~) mul16u_compare::$11 ← (dword) mul16u_compare::ms#2 != (dword) mul16u_compare::mn#1
  (bool~) mul16u_compare::$12 ← ! (bool~) mul16u_compare::$11
  if((bool~) mul16u_compare::$12) goto mul16u_compare::@4
  to:mul16u_compare::@7
mul16u_compare::@6: scope:[mul16u_compare]  from mul16u_compare::@15
  (byte*) print_line_cursor#70 ← phi( mul16u_compare::@15/(byte*) print_line_cursor#69 )
  (byte*) print_char_cursor#170 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#169 )
  (byte) mul16u_compare::i#8 ← phi( mul16u_compare::@15/(byte) mul16u_compare::i#7 )
  (dword) mul16u_compare::mf#5 ← phi( mul16u_compare::@15/(dword) mul16u_compare::mf#0 )
  (word) mul16u_compare::b#14 ← phi( mul16u_compare::@15/(word) mul16u_compare::b#13 )
  (word) mul16u_compare::a#14 ← phi( mul16u_compare::@15/(word) mul16u_compare::a#13 )
  (byte) mul16u_compare::j#7 ← phi( mul16u_compare::@15/(byte) mul16u_compare::j#6 )
  (dword) mul16u_compare::mn#4 ← phi( mul16u_compare::@15/(dword) mul16u_compare::mn#3 )
  (dword) mul16u_compare::ms#5 ← phi( mul16u_compare::@15/(dword) mul16u_compare::ms#1 )
  (byte) mul16u_compare::ok#1 ← (number) 0
  to:mul16u_compare::@3
mul16u_compare::@4: scope:[mul16u_compare]  from mul16u_compare::@3 mul16u_compare::@7
  (byte*) print_line_cursor#55 ← phi( mul16u_compare::@3/(byte*) print_line_cursor#61 mul16u_compare::@7/(byte*) print_line_cursor#62 )
  (byte*) print_char_cursor#159 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#163 mul16u_compare::@7/(byte*) print_char_cursor#164 )
  (byte) mul16u_compare::i#4 ← phi( mul16u_compare::@3/(byte) mul16u_compare::i#5 mul16u_compare::@7/(byte) mul16u_compare::i#6 )
  (dword) mul16u_compare::mf#2 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mf#3 mul16u_compare::@7/(dword) mul16u_compare::mf#4 )
  (dword) mul16u_compare::mn#5 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mn#1 mul16u_compare::@7/(dword) mul16u_compare::mn#6 )
  (dword) mul16u_compare::ms#6 ← phi( mul16u_compare::@3/(dword) mul16u_compare::ms#2 mul16u_compare::@7/(dword) mul16u_compare::ms#7 )
  (word) mul16u_compare::b#8 ← phi( mul16u_compare::@3/(word) mul16u_compare::b#10 mul16u_compare::@7/(word) mul16u_compare::b#11 )
  (word) mul16u_compare::a#8 ← phi( mul16u_compare::@3/(word) mul16u_compare::a#10 mul16u_compare::@7/(word) mul16u_compare::a#11 )
  (byte) mul16u_compare::j#3 ← phi( mul16u_compare::@3/(byte) mul16u_compare::j#4 mul16u_compare::@7/(byte) mul16u_compare::j#5 )
  (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@3/(byte) mul16u_compare::ok#4 mul16u_compare::@7/(byte) mul16u_compare::ok#2 )
  (bool~) mul16u_compare::$13 ← (byte) mul16u_compare::ok#3 == (number) 0
  (bool~) mul16u_compare::$14 ← ! (bool~) mul16u_compare::$13
  if((bool~) mul16u_compare::$14) goto mul16u_compare::@5
  to:mul16u_compare::@8
mul16u_compare::@7: scope:[mul16u_compare]  from mul16u_compare::@3
  (byte*) print_line_cursor#62 ← phi( mul16u_compare::@3/(byte*) print_line_cursor#61 )
  (byte*) print_char_cursor#164 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#163 )
  (byte) mul16u_compare::i#6 ← phi( mul16u_compare::@3/(byte) mul16u_compare::i#5 )
  (dword) mul16u_compare::mf#4 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mf#3 )
  (dword) mul16u_compare::mn#6 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mn#1 )
  (dword) mul16u_compare::ms#7 ← phi( mul16u_compare::@3/(dword) mul16u_compare::ms#2 )
  (word) mul16u_compare::b#11 ← phi( mul16u_compare::@3/(word) mul16u_compare::b#10 )
  (word) mul16u_compare::a#11 ← phi( mul16u_compare::@3/(word) mul16u_compare::a#10 )
  (byte) mul16u_compare::j#5 ← phi( mul16u_compare::@3/(byte) mul16u_compare::j#4 )
  (byte) mul16u_compare::ok#2 ← (number) 0
  to:mul16u_compare::@4
mul16u_compare::@5: scope:[mul16u_compare]  from mul16u_compare::@4
  (byte*) print_line_cursor#63 ← phi( mul16u_compare::@4/(byte*) print_line_cursor#55 )
  (byte*) print_char_cursor#165 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#159 )
  (byte) mul16u_compare::i#3 ← phi( mul16u_compare::@4/(byte) mul16u_compare::i#4 )
  (word) mul16u_compare::b#7 ← phi( mul16u_compare::@4/(word) mul16u_compare::b#8 )
  (word) mul16u_compare::a#7 ← phi( mul16u_compare::@4/(word) mul16u_compare::a#8 )
  (byte) mul16u_compare::j#2 ← phi( mul16u_compare::@4/(byte) mul16u_compare::j#3 )
  (byte) mul16u_compare::j#1 ← (byte) mul16u_compare::j#2 + rangenext(0,$f)
  (bool~) mul16u_compare::$16 ← (byte) mul16u_compare::j#1 != rangelast(0,$f)
  if((bool~) mul16u_compare::$16) goto mul16u_compare::@2
  to:mul16u_compare::@10
mul16u_compare::@8: scope:[mul16u_compare]  from mul16u_compare::@4
  (byte*) print_line_cursor#46 ← phi( mul16u_compare::@4/(byte*) print_line_cursor#55 )
  (byte*) print_char_cursor#146 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#159 )
  (dword) mul16u_compare::mf#1 ← phi( mul16u_compare::@4/(dword) mul16u_compare::mf#2 )
  (dword) mul16u_compare::mn#2 ← phi( mul16u_compare::@4/(dword) mul16u_compare::mn#5 )
  (dword) mul16u_compare::ms#3 ← phi( mul16u_compare::@4/(dword) mul16u_compare::ms#6 )
  (word) mul16u_compare::b#5 ← phi( mul16u_compare::@4/(word) mul16u_compare::b#8 )
  (word) mul16u_compare::a#5 ← phi( mul16u_compare::@4/(word) mul16u_compare::a#8 )
  *((const byte*) BGCOL) ← (number) 2
  (word) mul16u_error::a#0 ← (word) mul16u_compare::a#5
  (word) mul16u_error::b#0 ← (word) mul16u_compare::b#5
  (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#3
  (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#2
  (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#1
  call mul16u_error 
  to:mul16u_compare::@16
mul16u_compare::@16: scope:[mul16u_compare]  from mul16u_compare::@8
  (byte*) print_line_cursor#30 ← phi( mul16u_compare::@8/(byte*) print_line_cursor#14 )
  (byte*) print_char_cursor#96 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#47 )
  (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#96
  (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#30
  to:mul16u_compare::@return
mul16u_compare::@return: scope:[mul16u_compare]  from mul16u_compare::@16 mul16u_compare::@19
  (byte*) print_line_cursor#31 ← phi( mul16u_compare::@16/(byte*) print_line_cursor#9 mul16u_compare::@19/(byte*) print_line_cursor#12 )
  (byte*) print_char_cursor#97 ← phi( mul16u_compare::@16/(byte*) print_char_cursor#31 mul16u_compare::@19/(byte*) print_char_cursor#35 )
  (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#97
  (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#31
  return 
  to:@return
mul16u_compare::@10: scope:[mul16u_compare]  from mul16u_compare::@5
  (word) mul16u_compare::b#12 ← phi( mul16u_compare::@5/(word) mul16u_compare::b#7 )
  (word) mul16u_compare::a#12 ← phi( mul16u_compare::@5/(word) mul16u_compare::a#7 )
  (byte*) print_line_cursor#56 ← phi( mul16u_compare::@5/(byte*) print_line_cursor#63 )
  (byte*) print_char_cursor#158 ← phi( mul16u_compare::@5/(byte*) print_char_cursor#165 )
  (byte) mul16u_compare::i#2 ← phi( mul16u_compare::@5/(byte) mul16u_compare::i#3 )
  (byte) mul16u_compare::i#1 ← (byte) mul16u_compare::i#2 + rangenext(0,$f)
  (bool~) mul16u_compare::$17 ← (byte) mul16u_compare::i#1 != rangelast(0,$f)
  if((bool~) mul16u_compare::$17) goto mul16u_compare::@1
  to:mul16u_compare::@11
mul16u_compare::@11: scope:[mul16u_compare]  from mul16u_compare::@10
  (byte*) print_char_cursor#147 ← phi( mul16u_compare::@10/(byte*) print_char_cursor#158 )
  (byte*) print_line_cursor#47 ← phi( mul16u_compare::@10/(byte*) print_line_cursor#56 )
  call print_ln 
  to:mul16u_compare::@17
mul16u_compare::@17: scope:[mul16u_compare]  from mul16u_compare::@11
  (byte*) print_char_cursor#98 ← phi( mul16u_compare::@11/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#32 ← phi( mul16u_compare::@11/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#32
  (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#98
  (byte*) print_str::str#2 ← (const byte*) mul16u_compare::str1
  call print_str 
  to:mul16u_compare::@18
mul16u_compare::@18: scope:[mul16u_compare]  from mul16u_compare::@17
  (byte*) print_line_cursor#48 ← phi( mul16u_compare::@17/(byte*) print_line_cursor#11 )
  (byte*) print_char_cursor#99 ← phi( mul16u_compare::@17/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#99
  call print_ln 
  to:mul16u_compare::@19
mul16u_compare::@19: scope:[mul16u_compare]  from mul16u_compare::@18
  (byte*) print_char_cursor#100 ← phi( mul16u_compare::@18/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#33 ← phi( mul16u_compare::@18/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#33
  (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#100
  to:mul16u_compare::@return

(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
mul16u_error: scope:[mul16u_error]  from mul16u_compare::@8
  (byte*) print_line_cursor#99 ← phi( mul16u_compare::@8/(byte*) print_line_cursor#46 )
  (dword) mul16u_error::mf#10 ← phi( mul16u_compare::@8/(dword) mul16u_error::mf#0 )
  (dword) mul16u_error::mn#8 ← phi( mul16u_compare::@8/(dword) mul16u_error::mn#0 )
  (dword) mul16u_error::ms#6 ← phi( mul16u_compare::@8/(dword) mul16u_error::ms#0 )
  (word) mul16u_error::b#4 ← phi( mul16u_compare::@8/(word) mul16u_error::b#0 )
  (word) mul16u_error::a#2 ← phi( mul16u_compare::@8/(word) mul16u_error::a#0 )
  (byte*) print_char_cursor#148 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#146 )
  (byte*) print_str::str#3 ← (const byte*) mul16u_error::str
  call print_str 
  to:mul16u_error::@1
mul16u_error::@1: scope:[mul16u_error]  from mul16u_error
  (byte*) print_line_cursor#96 ← phi( mul16u_error/(byte*) print_line_cursor#99 )
  (dword) mul16u_error::mf#9 ← phi( mul16u_error/(dword) mul16u_error::mf#10 )
  (dword) mul16u_error::mn#7 ← phi( mul16u_error/(dword) mul16u_error::mn#8 )
  (dword) mul16u_error::ms#5 ← phi( mul16u_error/(dword) mul16u_error::ms#6 )
  (word) mul16u_error::b#3 ← phi( mul16u_error/(word) mul16u_error::b#4 )
  (word) mul16u_error::a#1 ← phi( mul16u_error/(word) mul16u_error::a#2 )
  (byte*) print_char_cursor#101 ← phi( mul16u_error/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#101
  (word) print_word::w#3 ← (word) mul16u_error::a#1
  call print_word 
  to:mul16u_error::@2
mul16u_error::@2: scope:[mul16u_error]  from mul16u_error::@1
  (byte*) print_line_cursor#92 ← phi( mul16u_error::@1/(byte*) print_line_cursor#96 )
  (dword) mul16u_error::mf#8 ← phi( mul16u_error::@1/(dword) mul16u_error::mf#9 )
  (dword) mul16u_error::mn#6 ← phi( mul16u_error::@1/(dword) mul16u_error::mn#7 )
  (dword) mul16u_error::ms#4 ← phi( mul16u_error::@1/(dword) mul16u_error::ms#5 )
  (word) mul16u_error::b#2 ← phi( mul16u_error::@1/(word) mul16u_error::b#3 )
  (byte*) print_char_cursor#102 ← phi( mul16u_error::@1/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#102
  (byte*) print_str::str#4 ← (const byte*) mul16u_error::str1
  call print_str 
  to:mul16u_error::@3
mul16u_error::@3: scope:[mul16u_error]  from mul16u_error::@2
  (byte*) print_line_cursor#88 ← phi( mul16u_error::@2/(byte*) print_line_cursor#92 )
  (dword) mul16u_error::mf#7 ← phi( mul16u_error::@2/(dword) mul16u_error::mf#8 )
  (dword) mul16u_error::mn#5 ← phi( mul16u_error::@2/(dword) mul16u_error::mn#6 )
  (dword) mul16u_error::ms#3 ← phi( mul16u_error::@2/(dword) mul16u_error::ms#4 )
  (word) mul16u_error::b#1 ← phi( mul16u_error::@2/(word) mul16u_error::b#2 )
  (byte*) print_char_cursor#103 ← phi( mul16u_error::@2/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#103
  (word) print_word::w#4 ← (word) mul16u_error::b#1
  call print_word 
  to:mul16u_error::@4
mul16u_error::@4: scope:[mul16u_error]  from mul16u_error::@3
  (byte*) print_line_cursor#84 ← phi( mul16u_error::@3/(byte*) print_line_cursor#88 )
  (dword) mul16u_error::mf#6 ← phi( mul16u_error::@3/(dword) mul16u_error::mf#7 )
  (dword) mul16u_error::mn#4 ← phi( mul16u_error::@3/(dword) mul16u_error::mn#5 )
  (dword) mul16u_error::ms#2 ← phi( mul16u_error::@3/(dword) mul16u_error::ms#3 )
  (byte*) print_char_cursor#104 ← phi( mul16u_error::@3/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#104
  (byte*) print_str::str#5 ← (const byte*) mul16u_error::str2
  call print_str 
  to:mul16u_error::@5
mul16u_error::@5: scope:[mul16u_error]  from mul16u_error::@4
  (byte*) print_line_cursor#80 ← phi( mul16u_error::@4/(byte*) print_line_cursor#84 )
  (dword) mul16u_error::mf#5 ← phi( mul16u_error::@4/(dword) mul16u_error::mf#6 )
  (dword) mul16u_error::mn#3 ← phi( mul16u_error::@4/(dword) mul16u_error::mn#4 )
  (dword) mul16u_error::ms#1 ← phi( mul16u_error::@4/(dword) mul16u_error::ms#2 )
  (byte*) print_char_cursor#105 ← phi( mul16u_error::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#105
  (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#1
  call print_dword 
  to:mul16u_error::@6
mul16u_error::@6: scope:[mul16u_error]  from mul16u_error::@5
  (byte*) print_line_cursor#76 ← phi( mul16u_error::@5/(byte*) print_line_cursor#80 )
  (dword) mul16u_error::mf#4 ← phi( mul16u_error::@5/(dword) mul16u_error::mf#5 )
  (dword) mul16u_error::mn#2 ← phi( mul16u_error::@5/(dword) mul16u_error::mn#3 )
  (byte*) print_char_cursor#106 ← phi( mul16u_error::@5/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#106
  (byte*) print_str::str#6 ← (const byte*) mul16u_error::str3
  call print_str 
  to:mul16u_error::@7
mul16u_error::@7: scope:[mul16u_error]  from mul16u_error::@6
  (byte*) print_line_cursor#71 ← phi( mul16u_error::@6/(byte*) print_line_cursor#76 )
  (dword) mul16u_error::mf#3 ← phi( mul16u_error::@6/(dword) mul16u_error::mf#4 )
  (dword) mul16u_error::mn#1 ← phi( mul16u_error::@6/(dword) mul16u_error::mn#2 )
  (byte*) print_char_cursor#107 ← phi( mul16u_error::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#107
  (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#1
  call print_dword 
  to:mul16u_error::@8
mul16u_error::@8: scope:[mul16u_error]  from mul16u_error::@7
  (byte*) print_line_cursor#64 ← phi( mul16u_error::@7/(byte*) print_line_cursor#71 )
  (dword) mul16u_error::mf#2 ← phi( mul16u_error::@7/(dword) mul16u_error::mf#3 )
  (byte*) print_char_cursor#108 ← phi( mul16u_error::@7/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#108
  (byte*) print_str::str#7 ← (const byte*) mul16u_error::str4
  call print_str 
  to:mul16u_error::@9
mul16u_error::@9: scope:[mul16u_error]  from mul16u_error::@8
  (byte*) print_line_cursor#57 ← phi( mul16u_error::@8/(byte*) print_line_cursor#64 )
  (dword) mul16u_error::mf#1 ← phi( mul16u_error::@8/(dword) mul16u_error::mf#2 )
  (byte*) print_char_cursor#109 ← phi( mul16u_error::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#109
  (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#1
  call print_dword 
  to:mul16u_error::@10
mul16u_error::@10: scope:[mul16u_error]  from mul16u_error::@9
  (byte*) print_line_cursor#49 ← phi( mul16u_error::@9/(byte*) print_line_cursor#57 )
  (byte*) print_char_cursor#110 ← phi( mul16u_error::@9/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#110
  call print_ln 
  to:mul16u_error::@11
mul16u_error::@11: scope:[mul16u_error]  from mul16u_error::@10
  (byte*) print_char_cursor#111 ← phi( mul16u_error::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#34 ← phi( mul16u_error::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#34
  (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#111
  to:mul16u_error::@return
mul16u_error::@return: scope:[mul16u_error]  from mul16u_error::@11
  (byte*) print_line_cursor#35 ← phi( mul16u_error::@11/(byte*) print_line_cursor#13 )
  (byte*) print_char_cursor#112 ← phi( mul16u_error::@11/(byte*) print_char_cursor#46 )
  (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#112
  (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#35
  return 
  to:@return

(void()) mul16s_compare()
mul16s_compare: scope:[mul16s_compare]  from main::@3
  (byte*) print_line_cursor#97 ← phi( main::@3/(byte*) print_line_cursor#6 )
  (byte*) print_char_cursor#160 ← phi( main::@3/(byte*) print_char_cursor#27 )
  (signed word) mul16s_compare::a#0 ← (signed word) -$7fff
  (signed word) mul16s_compare::b#0 ← (signed word) -$7fff
  (byte) mul16s_compare::i#0 ← (byte) 0
  to:mul16s_compare::@1
mul16s_compare::@1: scope:[mul16s_compare]  from mul16s_compare mul16s_compare::@10
  (byte*) print_line_cursor#93 ← phi( mul16s_compare/(byte*) print_line_cursor#97 mul16s_compare::@10/(byte*) print_line_cursor#59 )
  (byte) mul16s_compare::i#13 ← phi( mul16s_compare/(byte) mul16s_compare::i#0 mul16s_compare::@10/(byte) mul16s_compare::i#1 )
  (signed word) mul16s_compare::b#9 ← phi( mul16s_compare/(signed word) mul16s_compare::b#0 mul16s_compare::@10/(signed word) mul16s_compare::b#12 )
  (signed word) mul16s_compare::a#9 ← phi( mul16s_compare/(signed word) mul16s_compare::a#0 mul16s_compare::@10/(signed word) mul16s_compare::a#12 )
  (byte*) print_char_cursor#149 ← phi( mul16s_compare/(byte*) print_char_cursor#160 mul16s_compare::@10/(byte*) print_char_cursor#161 )
  (byte*) print_str::str#8 ← (const byte*) mul16s_compare::str
  call print_str 
  to:mul16s_compare::@12
mul16s_compare::@12: scope:[mul16s_compare]  from mul16s_compare::@1
  (byte*) print_line_cursor#89 ← phi( mul16s_compare::@1/(byte*) print_line_cursor#93 )
  (byte) mul16s_compare::i#12 ← phi( mul16s_compare::@1/(byte) mul16s_compare::i#13 )
  (signed word) mul16s_compare::b#6 ← phi( mul16s_compare::@1/(signed word) mul16s_compare::b#9 )
  (signed word) mul16s_compare::a#6 ← phi( mul16s_compare::@1/(signed word) mul16s_compare::a#9 )
  (byte*) print_char_cursor#113 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#113
  (byte) mul16s_compare::j#0 ← (byte) 0
  to:mul16s_compare::@2
mul16s_compare::@2: scope:[mul16s_compare]  from mul16s_compare::@12 mul16s_compare::@5
  (byte*) print_line_cursor#85 ← phi( mul16s_compare::@12/(byte*) print_line_cursor#89 mul16s_compare::@5/(byte*) print_line_cursor#67 )
  (byte*) print_char_cursor#178 ← phi( mul16s_compare::@12/(byte*) print_char_cursor#48 mul16s_compare::@5/(byte*) print_char_cursor#168 )
  (byte) mul16s_compare::i#11 ← phi( mul16s_compare::@12/(byte) mul16s_compare::i#12 mul16s_compare::@5/(byte) mul16s_compare::i#3 )
  (byte) mul16s_compare::j#10 ← phi( mul16s_compare::@12/(byte) mul16s_compare::j#0 mul16s_compare::@5/(byte) mul16s_compare::j#1 )
  (signed word) mul16s_compare::b#2 ← phi( mul16s_compare::@12/(signed word) mul16s_compare::b#6 mul16s_compare::@5/(signed word) mul16s_compare::b#7 )
  (signed word) mul16s_compare::a#2 ← phi( mul16s_compare::@12/(signed word) mul16s_compare::a#6 mul16s_compare::@5/(signed word) mul16s_compare::a#7 )
  (number~) mul16s_compare::$4 ← (signed word) mul16s_compare::a#2 + (number) $d2b
  (signed word) mul16s_compare::a#1 ← (number~) mul16s_compare::$4
  (number~) mul16s_compare::$5 ← (signed word) mul16s_compare::b#2 + (number) $ffd
  (signed word) mul16s_compare::b#1 ← (number~) mul16s_compare::$5
  (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1
  (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1
  call muls16s 
  (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#1
  to:mul16s_compare::@13
mul16s_compare::@13: scope:[mul16s_compare]  from mul16s_compare::@2
  (byte*) print_line_cursor#81 ← phi( mul16s_compare::@2/(byte*) print_line_cursor#85 )
  (byte*) print_char_cursor#176 ← phi( mul16s_compare::@2/(byte*) print_char_cursor#178 )
  (byte) mul16s_compare::i#10 ← phi( mul16s_compare::@2/(byte) mul16s_compare::i#11 )
  (byte) mul16s_compare::j#9 ← phi( mul16s_compare::@2/(byte) mul16s_compare::j#10 )
  (signed word) mul16s_compare::b#3 ← phi( mul16s_compare::@2/(signed word) mul16s_compare::b#1 )
  (signed word) mul16s_compare::a#3 ← phi( mul16s_compare::@2/(signed word) mul16s_compare::a#1 )
  (signed dword) muls16s::return#4 ← phi( mul16s_compare::@2/(signed dword) muls16s::return#2 )
  (signed dword~) mul16s_compare::$6 ← (signed dword) muls16s::return#4
  (signed dword) mul16s_compare::ms#0 ← (signed dword~) mul16s_compare::$6
  (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#3
  (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#3
  call mul16s 
  (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#1
  to:mul16s_compare::@14
mul16s_compare::@14: scope:[mul16s_compare]  from mul16s_compare::@13
  (byte*) print_line_cursor#77 ← phi( mul16s_compare::@13/(byte*) print_line_cursor#81 )
  (byte*) print_char_cursor#174 ← phi( mul16s_compare::@13/(byte*) print_char_cursor#176 )
  (byte) mul16s_compare::i#9 ← phi( mul16s_compare::@13/(byte) mul16s_compare::i#10 )
  (byte) mul16s_compare::j#8 ← phi( mul16s_compare::@13/(byte) mul16s_compare::j#9 )
  (signed dword) mul16s_compare::ms#4 ← phi( mul16s_compare::@13/(signed dword) mul16s_compare::ms#0 )
  (signed word) mul16s_compare::b#4 ← phi( mul16s_compare::@13/(signed word) mul16s_compare::b#3 )
  (signed word) mul16s_compare::a#4 ← phi( mul16s_compare::@13/(signed word) mul16s_compare::a#3 )
  (signed dword) mul16s::return#4 ← phi( mul16s_compare::@13/(signed dword) mul16s::return#2 )
  (signed dword~) mul16s_compare::$7 ← (signed dword) mul16s::return#4
  (signed dword) mul16s_compare::mn#0 ← (signed dword~) mul16s_compare::$7
  (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#4
  (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#4
  call mulf16s 
  (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#1
  to:mul16s_compare::@15
mul16s_compare::@15: scope:[mul16s_compare]  from mul16s_compare::@14
  (byte*) print_line_cursor#72 ← phi( mul16s_compare::@14/(byte*) print_line_cursor#77 )
  (byte*) print_char_cursor#171 ← phi( mul16s_compare::@14/(byte*) print_char_cursor#174 )
  (byte) mul16s_compare::i#7 ← phi( mul16s_compare::@14/(byte) mul16s_compare::i#9 )
  (signed word) mul16s_compare::b#13 ← phi( mul16s_compare::@14/(signed word) mul16s_compare::b#4 )
  (signed word) mul16s_compare::a#13 ← phi( mul16s_compare::@14/(signed word) mul16s_compare::a#4 )
  (byte) mul16s_compare::j#6 ← phi( mul16s_compare::@14/(byte) mul16s_compare::j#8 )
  (signed dword) mul16s_compare::mn#3 ← phi( mul16s_compare::@14/(signed dword) mul16s_compare::mn#0 )
  (signed dword) mul16s_compare::ms#1 ← phi( mul16s_compare::@14/(signed dword) mul16s_compare::ms#4 )
  (signed dword) mulf16s::return#4 ← phi( mul16s_compare::@14/(signed dword) mulf16s::return#2 )
  (signed dword~) mul16s_compare::$8 ← (signed dword) mulf16s::return#4
  (signed dword) mul16s_compare::mf#0 ← (signed dword~) mul16s_compare::$8
  (byte) mul16s_compare::ok#0 ← (byte) 1
  (bool~) mul16s_compare::$9 ← (signed dword) mul16s_compare::ms#1 != (signed dword) mul16s_compare::mf#0
  (bool~) mul16s_compare::$10 ← ! (bool~) mul16s_compare::$9
  if((bool~) mul16s_compare::$10) goto mul16s_compare::@3
  to:mul16s_compare::@6
mul16s_compare::@3: scope:[mul16s_compare]  from mul16s_compare::@15 mul16s_compare::@6
  (byte*) print_line_cursor#65 ← phi( mul16s_compare::@15/(byte*) print_line_cursor#72 mul16s_compare::@6/(byte*) print_line_cursor#73 )
  (byte*) print_char_cursor#166 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#171 mul16s_compare::@6/(byte*) print_char_cursor#172 )
  (byte) mul16s_compare::i#5 ← phi( mul16s_compare::@15/(byte) mul16s_compare::i#7 mul16s_compare::@6/(byte) mul16s_compare::i#8 )
  (signed dword) mul16s_compare::mf#3 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::mf#0 mul16s_compare::@6/(signed dword) mul16s_compare::mf#5 )
  (signed word) mul16s_compare::b#10 ← phi( mul16s_compare::@15/(signed word) mul16s_compare::b#13 mul16s_compare::@6/(signed word) mul16s_compare::b#14 )
  (signed word) mul16s_compare::a#10 ← phi( mul16s_compare::@15/(signed word) mul16s_compare::a#13 mul16s_compare::@6/(signed word) mul16s_compare::a#14 )
  (byte) mul16s_compare::j#4 ← phi( mul16s_compare::@15/(byte) mul16s_compare::j#6 mul16s_compare::@6/(byte) mul16s_compare::j#7 )
  (byte) mul16s_compare::ok#4 ← phi( mul16s_compare::@15/(byte) mul16s_compare::ok#0 mul16s_compare::@6/(byte) mul16s_compare::ok#1 )
  (signed dword) mul16s_compare::mn#1 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::mn#3 mul16s_compare::@6/(signed dword) mul16s_compare::mn#4 )
  (signed dword) mul16s_compare::ms#2 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::ms#1 mul16s_compare::@6/(signed dword) mul16s_compare::ms#5 )
  (bool~) mul16s_compare::$11 ← (signed dword) mul16s_compare::ms#2 != (signed dword) mul16s_compare::mn#1
  (bool~) mul16s_compare::$12 ← ! (bool~) mul16s_compare::$11
  if((bool~) mul16s_compare::$12) goto mul16s_compare::@4
  to:mul16s_compare::@7
mul16s_compare::@6: scope:[mul16s_compare]  from mul16s_compare::@15
  (byte*) print_line_cursor#73 ← phi( mul16s_compare::@15/(byte*) print_line_cursor#72 )
  (byte*) print_char_cursor#172 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#171 )
  (byte) mul16s_compare::i#8 ← phi( mul16s_compare::@15/(byte) mul16s_compare::i#7 )
  (signed dword) mul16s_compare::mf#5 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::mf#0 )
  (signed word) mul16s_compare::b#14 ← phi( mul16s_compare::@15/(signed word) mul16s_compare::b#13 )
  (signed word) mul16s_compare::a#14 ← phi( mul16s_compare::@15/(signed word) mul16s_compare::a#13 )
  (byte) mul16s_compare::j#7 ← phi( mul16s_compare::@15/(byte) mul16s_compare::j#6 )
  (signed dword) mul16s_compare::mn#4 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::mn#3 )
  (signed dword) mul16s_compare::ms#5 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::ms#1 )
  (byte) mul16s_compare::ok#1 ← (number) 0
  to:mul16s_compare::@3
mul16s_compare::@4: scope:[mul16s_compare]  from mul16s_compare::@3 mul16s_compare::@7
  (byte*) print_line_cursor#58 ← phi( mul16s_compare::@3/(byte*) print_line_cursor#65 mul16s_compare::@7/(byte*) print_line_cursor#66 )
  (byte*) print_char_cursor#162 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#166 mul16s_compare::@7/(byte*) print_char_cursor#167 )
  (byte) mul16s_compare::i#4 ← phi( mul16s_compare::@3/(byte) mul16s_compare::i#5 mul16s_compare::@7/(byte) mul16s_compare::i#6 )
  (signed dword) mul16s_compare::mf#2 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mf#3 mul16s_compare::@7/(signed dword) mul16s_compare::mf#4 )
  (signed dword) mul16s_compare::mn#5 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mn#1 mul16s_compare::@7/(signed dword) mul16s_compare::mn#6 )
  (signed dword) mul16s_compare::ms#6 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::ms#2 mul16s_compare::@7/(signed dword) mul16s_compare::ms#7 )
  (signed word) mul16s_compare::b#8 ← phi( mul16s_compare::@3/(signed word) mul16s_compare::b#10 mul16s_compare::@7/(signed word) mul16s_compare::b#11 )
  (signed word) mul16s_compare::a#8 ← phi( mul16s_compare::@3/(signed word) mul16s_compare::a#10 mul16s_compare::@7/(signed word) mul16s_compare::a#11 )
  (byte) mul16s_compare::j#3 ← phi( mul16s_compare::@3/(byte) mul16s_compare::j#4 mul16s_compare::@7/(byte) mul16s_compare::j#5 )
  (byte) mul16s_compare::ok#3 ← phi( mul16s_compare::@3/(byte) mul16s_compare::ok#4 mul16s_compare::@7/(byte) mul16s_compare::ok#2 )
  (bool~) mul16s_compare::$13 ← (byte) mul16s_compare::ok#3 == (number) 0
  (bool~) mul16s_compare::$14 ← ! (bool~) mul16s_compare::$13
  if((bool~) mul16s_compare::$14) goto mul16s_compare::@5
  to:mul16s_compare::@8
mul16s_compare::@7: scope:[mul16s_compare]  from mul16s_compare::@3
  (byte*) print_line_cursor#66 ← phi( mul16s_compare::@3/(byte*) print_line_cursor#65 )
  (byte*) print_char_cursor#167 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#166 )
  (byte) mul16s_compare::i#6 ← phi( mul16s_compare::@3/(byte) mul16s_compare::i#5 )
  (signed dword) mul16s_compare::mf#4 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mf#3 )
  (signed dword) mul16s_compare::mn#6 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mn#1 )
  (signed dword) mul16s_compare::ms#7 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::ms#2 )
  (signed word) mul16s_compare::b#11 ← phi( mul16s_compare::@3/(signed word) mul16s_compare::b#10 )
  (signed word) mul16s_compare::a#11 ← phi( mul16s_compare::@3/(signed word) mul16s_compare::a#10 )
  (byte) mul16s_compare::j#5 ← phi( mul16s_compare::@3/(byte) mul16s_compare::j#4 )
  (byte) mul16s_compare::ok#2 ← (number) 0
  to:mul16s_compare::@4
mul16s_compare::@5: scope:[mul16s_compare]  from mul16s_compare::@4
  (byte*) print_line_cursor#67 ← phi( mul16s_compare::@4/(byte*) print_line_cursor#58 )
  (byte*) print_char_cursor#168 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#162 )
  (byte) mul16s_compare::i#3 ← phi( mul16s_compare::@4/(byte) mul16s_compare::i#4 )
  (signed word) mul16s_compare::b#7 ← phi( mul16s_compare::@4/(signed word) mul16s_compare::b#8 )
  (signed word) mul16s_compare::a#7 ← phi( mul16s_compare::@4/(signed word) mul16s_compare::a#8 )
  (byte) mul16s_compare::j#2 ← phi( mul16s_compare::@4/(byte) mul16s_compare::j#3 )
  (byte) mul16s_compare::j#1 ← (byte) mul16s_compare::j#2 + rangenext(0,$f)
  (bool~) mul16s_compare::$16 ← (byte) mul16s_compare::j#1 != rangelast(0,$f)
  if((bool~) mul16s_compare::$16) goto mul16s_compare::@2
  to:mul16s_compare::@10
mul16s_compare::@8: scope:[mul16s_compare]  from mul16s_compare::@4
  (byte*) print_line_cursor#50 ← phi( mul16s_compare::@4/(byte*) print_line_cursor#58 )
  (byte*) print_char_cursor#150 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#162 )
  (signed dword) mul16s_compare::mf#1 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::mf#2 )
  (signed dword) mul16s_compare::mn#2 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::mn#5 )
  (signed dword) mul16s_compare::ms#3 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::ms#6 )
  (signed word) mul16s_compare::b#5 ← phi( mul16s_compare::@4/(signed word) mul16s_compare::b#8 )
  (signed word) mul16s_compare::a#5 ← phi( mul16s_compare::@4/(signed word) mul16s_compare::a#8 )
  *((const byte*) BGCOL) ← (number) 2
  (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#5
  (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#5
  (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#3
  (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#2
  (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#1
  call mul16s_error 
  to:mul16s_compare::@16
mul16s_compare::@16: scope:[mul16s_compare]  from mul16s_compare::@8
  (byte*) print_line_cursor#36 ← phi( mul16s_compare::@8/(byte*) print_line_cursor#20 )
  (byte*) print_char_cursor#114 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#65 )
  (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#114
  (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#36
  to:mul16s_compare::@return
mul16s_compare::@return: scope:[mul16s_compare]  from mul16s_compare::@16 mul16s_compare::@19
  (byte*) print_line_cursor#37 ← phi( mul16s_compare::@16/(byte*) print_line_cursor#15 mul16s_compare::@19/(byte*) print_line_cursor#18 )
  (byte*) print_char_cursor#115 ← phi( mul16s_compare::@16/(byte*) print_char_cursor#49 mul16s_compare::@19/(byte*) print_char_cursor#53 )
  (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#115
  (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#37
  return 
  to:@return
mul16s_compare::@10: scope:[mul16s_compare]  from mul16s_compare::@5
  (signed word) mul16s_compare::b#12 ← phi( mul16s_compare::@5/(signed word) mul16s_compare::b#7 )
  (signed word) mul16s_compare::a#12 ← phi( mul16s_compare::@5/(signed word) mul16s_compare::a#7 )
  (byte*) print_line_cursor#59 ← phi( mul16s_compare::@5/(byte*) print_line_cursor#67 )
  (byte*) print_char_cursor#161 ← phi( mul16s_compare::@5/(byte*) print_char_cursor#168 )
  (byte) mul16s_compare::i#2 ← phi( mul16s_compare::@5/(byte) mul16s_compare::i#3 )
  (byte) mul16s_compare::i#1 ← (byte) mul16s_compare::i#2 + rangenext(0,$f)
  (bool~) mul16s_compare::$17 ← (byte) mul16s_compare::i#1 != rangelast(0,$f)
  if((bool~) mul16s_compare::$17) goto mul16s_compare::@1
  to:mul16s_compare::@11
mul16s_compare::@11: scope:[mul16s_compare]  from mul16s_compare::@10
  (byte*) print_char_cursor#151 ← phi( mul16s_compare::@10/(byte*) print_char_cursor#161 )
  (byte*) print_line_cursor#51 ← phi( mul16s_compare::@10/(byte*) print_line_cursor#59 )
  call print_ln 
  to:mul16s_compare::@17
mul16s_compare::@17: scope:[mul16s_compare]  from mul16s_compare::@11
  (byte*) print_char_cursor#116 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#38 ← phi( mul16s_compare::@11/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#38
  (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#116
  (byte*) print_str::str#9 ← (const byte*) mul16s_compare::str1
  call print_str 
  to:mul16s_compare::@18
mul16s_compare::@18: scope:[mul16s_compare]  from mul16s_compare::@17
  (byte*) print_line_cursor#52 ← phi( mul16s_compare::@17/(byte*) print_line_cursor#17 )
  (byte*) print_char_cursor#117 ← phi( mul16s_compare::@17/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#117
  call print_ln 
  to:mul16s_compare::@19
mul16s_compare::@19: scope:[mul16s_compare]  from mul16s_compare::@18
  (byte*) print_char_cursor#118 ← phi( mul16s_compare::@18/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#39 ← phi( mul16s_compare::@18/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#39
  (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#118
  to:mul16s_compare::@return

(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
mul16s_error: scope:[mul16s_error]  from mul16s_compare::@8
  (byte*) print_line_cursor#100 ← phi( mul16s_compare::@8/(byte*) print_line_cursor#50 )
  (signed dword) mul16s_error::mf#10 ← phi( mul16s_compare::@8/(signed dword) mul16s_error::mf#0 )
  (signed dword) mul16s_error::mn#8 ← phi( mul16s_compare::@8/(signed dword) mul16s_error::mn#0 )
  (signed dword) mul16s_error::ms#6 ← phi( mul16s_compare::@8/(signed dword) mul16s_error::ms#0 )
  (signed word) mul16s_error::b#4 ← phi( mul16s_compare::@8/(signed word) mul16s_error::b#0 )
  (signed word) mul16s_error::a#2 ← phi( mul16s_compare::@8/(signed word) mul16s_error::a#0 )
  (byte*) print_char_cursor#152 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#150 )
  (byte*) print_str::str#10 ← (const byte*) mul16s_error::str
  call print_str 
  to:mul16s_error::@1
mul16s_error::@1: scope:[mul16s_error]  from mul16s_error
  (byte*) print_line_cursor#98 ← phi( mul16s_error/(byte*) print_line_cursor#100 )
  (signed dword) mul16s_error::mf#9 ← phi( mul16s_error/(signed dword) mul16s_error::mf#10 )
  (signed dword) mul16s_error::mn#7 ← phi( mul16s_error/(signed dword) mul16s_error::mn#8 )
  (signed dword) mul16s_error::ms#5 ← phi( mul16s_error/(signed dword) mul16s_error::ms#6 )
  (signed word) mul16s_error::b#3 ← phi( mul16s_error/(signed word) mul16s_error::b#4 )
  (signed word) mul16s_error::a#1 ← phi( mul16s_error/(signed word) mul16s_error::a#2 )
  (byte*) print_char_cursor#119 ← phi( mul16s_error/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#119
  (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#1
  call print_sword 
  to:mul16s_error::@2
mul16s_error::@2: scope:[mul16s_error]  from mul16s_error::@1
  (byte*) print_line_cursor#94 ← phi( mul16s_error::@1/(byte*) print_line_cursor#98 )
  (signed dword) mul16s_error::mf#8 ← phi( mul16s_error::@1/(signed dword) mul16s_error::mf#9 )
  (signed dword) mul16s_error::mn#6 ← phi( mul16s_error::@1/(signed dword) mul16s_error::mn#7 )
  (signed dword) mul16s_error::ms#4 ← phi( mul16s_error::@1/(signed dword) mul16s_error::ms#5 )
  (signed word) mul16s_error::b#2 ← phi( mul16s_error::@1/(signed word) mul16s_error::b#3 )
  (byte*) print_char_cursor#120 ← phi( mul16s_error::@1/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#120
  (byte*) print_str::str#11 ← (const byte*) mul16s_error::str1
  call print_str 
  to:mul16s_error::@3
mul16s_error::@3: scope:[mul16s_error]  from mul16s_error::@2
  (byte*) print_line_cursor#90 ← phi( mul16s_error::@2/(byte*) print_line_cursor#94 )
  (signed dword) mul16s_error::mf#7 ← phi( mul16s_error::@2/(signed dword) mul16s_error::mf#8 )
  (signed dword) mul16s_error::mn#5 ← phi( mul16s_error::@2/(signed dword) mul16s_error::mn#6 )
  (signed dword) mul16s_error::ms#3 ← phi( mul16s_error::@2/(signed dword) mul16s_error::ms#4 )
  (signed word) mul16s_error::b#1 ← phi( mul16s_error::@2/(signed word) mul16s_error::b#2 )
  (byte*) print_char_cursor#121 ← phi( mul16s_error::@2/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#121
  (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#1
  call print_sword 
  to:mul16s_error::@4
mul16s_error::@4: scope:[mul16s_error]  from mul16s_error::@3
  (byte*) print_line_cursor#86 ← phi( mul16s_error::@3/(byte*) print_line_cursor#90 )
  (signed dword) mul16s_error::mf#6 ← phi( mul16s_error::@3/(signed dword) mul16s_error::mf#7 )
  (signed dword) mul16s_error::mn#4 ← phi( mul16s_error::@3/(signed dword) mul16s_error::mn#5 )
  (signed dword) mul16s_error::ms#2 ← phi( mul16s_error::@3/(signed dword) mul16s_error::ms#3 )
  (byte*) print_char_cursor#122 ← phi( mul16s_error::@3/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#122
  (byte*) print_str::str#12 ← (const byte*) mul16s_error::str2
  call print_str 
  to:mul16s_error::@5
mul16s_error::@5: scope:[mul16s_error]  from mul16s_error::@4
  (byte*) print_line_cursor#82 ← phi( mul16s_error::@4/(byte*) print_line_cursor#86 )
  (signed dword) mul16s_error::mf#5 ← phi( mul16s_error::@4/(signed dword) mul16s_error::mf#6 )
  (signed dword) mul16s_error::mn#3 ← phi( mul16s_error::@4/(signed dword) mul16s_error::mn#4 )
  (signed dword) mul16s_error::ms#1 ← phi( mul16s_error::@4/(signed dword) mul16s_error::ms#2 )
  (byte*) print_char_cursor#123 ← phi( mul16s_error::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#123
  (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#1
  call print_sdword 
  to:mul16s_error::@6
mul16s_error::@6: scope:[mul16s_error]  from mul16s_error::@5
  (byte*) print_line_cursor#78 ← phi( mul16s_error::@5/(byte*) print_line_cursor#82 )
  (signed dword) mul16s_error::mf#4 ← phi( mul16s_error::@5/(signed dword) mul16s_error::mf#5 )
  (signed dword) mul16s_error::mn#2 ← phi( mul16s_error::@5/(signed dword) mul16s_error::mn#3 )
  (byte*) print_char_cursor#124 ← phi( mul16s_error::@5/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#124
  (byte*) print_str::str#13 ← (const byte*) mul16s_error::str3
  call print_str 
  to:mul16s_error::@7
mul16s_error::@7: scope:[mul16s_error]  from mul16s_error::@6
  (byte*) print_line_cursor#74 ← phi( mul16s_error::@6/(byte*) print_line_cursor#78 )
  (signed dword) mul16s_error::mf#3 ← phi( mul16s_error::@6/(signed dword) mul16s_error::mf#4 )
  (signed dword) mul16s_error::mn#1 ← phi( mul16s_error::@6/(signed dword) mul16s_error::mn#2 )
  (byte*) print_char_cursor#125 ← phi( mul16s_error::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#125
  (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#1
  call print_sdword 
  to:mul16s_error::@8
mul16s_error::@8: scope:[mul16s_error]  from mul16s_error::@7
  (byte*) print_line_cursor#68 ← phi( mul16s_error::@7/(byte*) print_line_cursor#74 )
  (signed dword) mul16s_error::mf#2 ← phi( mul16s_error::@7/(signed dword) mul16s_error::mf#3 )
  (byte*) print_char_cursor#126 ← phi( mul16s_error::@7/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#126
  (byte*) print_str::str#14 ← (const byte*) mul16s_error::str4
  call print_str 
  to:mul16s_error::@9
mul16s_error::@9: scope:[mul16s_error]  from mul16s_error::@8
  (byte*) print_line_cursor#60 ← phi( mul16s_error::@8/(byte*) print_line_cursor#68 )
  (signed dword) mul16s_error::mf#1 ← phi( mul16s_error::@8/(signed dword) mul16s_error::mf#2 )
  (byte*) print_char_cursor#127 ← phi( mul16s_error::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#127
  (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#1
  call print_sdword 
  to:mul16s_error::@10
mul16s_error::@10: scope:[mul16s_error]  from mul16s_error::@9
  (byte*) print_line_cursor#53 ← phi( mul16s_error::@9/(byte*) print_line_cursor#60 )
  (byte*) print_char_cursor#128 ← phi( mul16s_error::@9/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#128
  call print_ln 
  to:mul16s_error::@11
mul16s_error::@11: scope:[mul16s_error]  from mul16s_error::@10
  (byte*) print_char_cursor#129 ← phi( mul16s_error::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#40 ← phi( mul16s_error::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#40
  (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#129
  to:mul16s_error::@return
mul16s_error::@return: scope:[mul16s_error]  from mul16s_error::@11
  (byte*) print_line_cursor#41 ← phi( mul16s_error::@11/(byte*) print_line_cursor#19 )
  (byte*) print_char_cursor#130 ← phi( mul16s_error::@11/(byte*) print_char_cursor#64 )
  (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#130
  (byte*) print_line_cursor#20 ← (byte*) print_line_cursor#41
  return 
  to:@return
@58: scope:[]  from @13
  (byte*) print_screen#4 ← phi( @13/(byte*) print_screen#0 )
  (byte*) print_char_cursor#153 ← phi( @13/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#54 ← phi( @13/(byte*) print_line_cursor#0 )
  call main 
  to:@59
@59: scope:[]  from @58
  (byte*) print_char_cursor#131 ← phi( @58/(byte*) print_char_cursor#29 )
  (byte*) print_line_cursor#42 ← phi( @58/(byte*) print_line_cursor#8 )
  (byte*) print_line_cursor#21 ← (byte*) print_line_cursor#42
  (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#131
  to:@end
@end: scope:[]  from @59

SYMBOL TABLE SSA
(label) @13
(label) @58
(label) @59
(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::@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 dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
(word~) mul16s::$0
(word~) mul16s::$1
(word~) mul16s::$10
(word~) mul16s::$11
(word~) mul16s::$13
(word~) mul16s::$14
(word~) mul16s::$15
(word~) mul16s::$16
(word~) mul16s::$17
(dword~) mul16s::$2
(bool~) mul16s::$3
(bool~) mul16s::$4
(bool~) mul16s::$5
(bool~) mul16s::$6
(signed dword~) mul16s::$7
(word~) mul16s::$9
(label) mul16s::@1
(label) mul16s::@2
(label) mul16s::@3
(label) mul16s::@4
(label) mul16s::@6
(label) mul16s::@return
(signed word) mul16s::a
(signed word) mul16s::a#0
(signed word) mul16s::a#1
(signed word) mul16s::a#2
(signed word) mul16s::a#3
(signed word) mul16s::a#4
(signed word) mul16s::a#5
(signed word) mul16s::b
(signed word) mul16s::b#0
(signed word) mul16s::b#1
(signed word) mul16s::b#2
(signed word) mul16s::b#3
(signed word) mul16s::b#4
(dword) mul16s::m
(dword) mul16s::m#0
(dword) mul16s::m#1
(dword) mul16s::m#2
(dword) mul16s::m#3
(dword) mul16s::m#4
(dword) mul16s::m#5
(dword) mul16s::m#6
(signed dword) mul16s::return
(signed dword) mul16s::return#0
(signed dword) mul16s::return#1
(signed dword) mul16s::return#2
(signed dword) mul16s::return#3
(signed dword) mul16s::return#4
(void()) mul16s_compare()
(bool~) mul16s_compare::$10
(bool~) mul16s_compare::$11
(bool~) mul16s_compare::$12
(bool~) mul16s_compare::$13
(bool~) mul16s_compare::$14
(bool~) mul16s_compare::$16
(bool~) mul16s_compare::$17
(number~) mul16s_compare::$4
(number~) mul16s_compare::$5
(signed dword~) mul16s_compare::$6
(signed dword~) mul16s_compare::$7
(signed dword~) mul16s_compare::$8
(bool~) mul16s_compare::$9
(label) mul16s_compare::@1
(label) mul16s_compare::@10
(label) mul16s_compare::@11
(label) mul16s_compare::@12
(label) mul16s_compare::@13
(label) mul16s_compare::@14
(label) mul16s_compare::@15
(label) mul16s_compare::@16
(label) mul16s_compare::@17
(label) mul16s_compare::@18
(label) mul16s_compare::@19
(label) mul16s_compare::@2
(label) mul16s_compare::@3
(label) mul16s_compare::@4
(label) mul16s_compare::@5
(label) mul16s_compare::@6
(label) mul16s_compare::@7
(label) mul16s_compare::@8
(label) mul16s_compare::@return
(signed word) mul16s_compare::a
(signed word) mul16s_compare::a#0
(signed word) mul16s_compare::a#1
(signed word) mul16s_compare::a#10
(signed word) mul16s_compare::a#11
(signed word) mul16s_compare::a#12
(signed word) mul16s_compare::a#13
(signed word) mul16s_compare::a#14
(signed word) mul16s_compare::a#2
(signed word) mul16s_compare::a#3
(signed word) mul16s_compare::a#4
(signed word) mul16s_compare::a#5
(signed word) mul16s_compare::a#6
(signed word) mul16s_compare::a#7
(signed word) mul16s_compare::a#8
(signed word) mul16s_compare::a#9
(signed word) mul16s_compare::b
(signed word) mul16s_compare::b#0
(signed word) mul16s_compare::b#1
(signed word) mul16s_compare::b#10
(signed word) mul16s_compare::b#11
(signed word) mul16s_compare::b#12
(signed word) mul16s_compare::b#13
(signed word) mul16s_compare::b#14
(signed word) mul16s_compare::b#2
(signed word) mul16s_compare::b#3
(signed word) mul16s_compare::b#4
(signed word) mul16s_compare::b#5
(signed word) mul16s_compare::b#6
(signed word) mul16s_compare::b#7
(signed word) mul16s_compare::b#8
(signed word) mul16s_compare::b#9
(byte) mul16s_compare::i
(byte) mul16s_compare::i#0
(byte) mul16s_compare::i#1
(byte) mul16s_compare::i#10
(byte) mul16s_compare::i#11
(byte) mul16s_compare::i#12
(byte) mul16s_compare::i#13
(byte) mul16s_compare::i#2
(byte) mul16s_compare::i#3
(byte) mul16s_compare::i#4
(byte) mul16s_compare::i#5
(byte) mul16s_compare::i#6
(byte) mul16s_compare::i#7
(byte) mul16s_compare::i#8
(byte) mul16s_compare::i#9
(byte) mul16s_compare::j
(byte) mul16s_compare::j#0
(byte) mul16s_compare::j#1
(byte) mul16s_compare::j#10
(byte) mul16s_compare::j#2
(byte) mul16s_compare::j#3
(byte) mul16s_compare::j#4
(byte) mul16s_compare::j#5
(byte) mul16s_compare::j#6
(byte) mul16s_compare::j#7
(byte) mul16s_compare::j#8
(byte) mul16s_compare::j#9
(signed dword) mul16s_compare::mf
(signed dword) mul16s_compare::mf#0
(signed dword) mul16s_compare::mf#1
(signed dword) mul16s_compare::mf#2
(signed dword) mul16s_compare::mf#3
(signed dword) mul16s_compare::mf#4
(signed dword) mul16s_compare::mf#5
(signed dword) mul16s_compare::mn
(signed dword) mul16s_compare::mn#0
(signed dword) mul16s_compare::mn#1
(signed dword) mul16s_compare::mn#2
(signed dword) mul16s_compare::mn#3
(signed dword) mul16s_compare::mn#4
(signed dword) mul16s_compare::mn#5
(signed dword) mul16s_compare::mn#6
(signed dword) mul16s_compare::ms
(signed dword) mul16s_compare::ms#0
(signed dword) mul16s_compare::ms#1
(signed dword) mul16s_compare::ms#2
(signed dword) mul16s_compare::ms#3
(signed dword) mul16s_compare::ms#4
(signed dword) mul16s_compare::ms#5
(signed dword) mul16s_compare::ms#6
(signed dword) mul16s_compare::ms#7
(byte) mul16s_compare::ok
(byte) mul16s_compare::ok#0
(byte) mul16s_compare::ok#1
(byte) mul16s_compare::ok#2
(byte) mul16s_compare::ok#3
(byte) mul16s_compare::ok#4
(const byte*) mul16s_compare::str[(byte) 2]  = (byte*) "."
(const byte*) mul16s_compare::str1[(byte) $24]  = (byte*) "signed word multiply results match!"
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
(label) mul16s_error::@1
(label) mul16s_error::@10
(label) mul16s_error::@11
(label) mul16s_error::@2
(label) mul16s_error::@3
(label) mul16s_error::@4
(label) mul16s_error::@5
(label) mul16s_error::@6
(label) mul16s_error::@7
(label) mul16s_error::@8
(label) mul16s_error::@9
(label) mul16s_error::@return
(signed word) mul16s_error::a
(signed word) mul16s_error::a#0
(signed word) mul16s_error::a#1
(signed word) mul16s_error::a#2
(signed word) mul16s_error::b
(signed word) mul16s_error::b#0
(signed word) mul16s_error::b#1
(signed word) mul16s_error::b#2
(signed word) mul16s_error::b#3
(signed word) mul16s_error::b#4
(signed dword) mul16s_error::mf
(signed dword) mul16s_error::mf#0
(signed dword) mul16s_error::mf#1
(signed dword) mul16s_error::mf#10
(signed dword) mul16s_error::mf#2
(signed dword) mul16s_error::mf#3
(signed dword) mul16s_error::mf#4
(signed dword) mul16s_error::mf#5
(signed dword) mul16s_error::mf#6
(signed dword) mul16s_error::mf#7
(signed dword) mul16s_error::mf#8
(signed dword) mul16s_error::mf#9
(signed dword) mul16s_error::mn
(signed dword) mul16s_error::mn#0
(signed dword) mul16s_error::mn#1
(signed dword) mul16s_error::mn#2
(signed dword) mul16s_error::mn#3
(signed dword) mul16s_error::mn#4
(signed dword) mul16s_error::mn#5
(signed dword) mul16s_error::mn#6
(signed dword) mul16s_error::mn#7
(signed dword) mul16s_error::mn#8
(signed dword) mul16s_error::ms
(signed dword) mul16s_error::ms#0
(signed dword) mul16s_error::ms#1
(signed dword) mul16s_error::ms#2
(signed dword) mul16s_error::ms#3
(signed dword) mul16s_error::ms#4
(signed dword) mul16s_error::ms#5
(signed dword) mul16s_error::ms#6
(const byte*) mul16s_error::str[(byte) $1f]  = (byte*) "signed word multiply mismatch "
(const byte*) mul16s_error::str1[(byte) 2]  = (byte*) "*"
(const byte*) mul16s_error::str2[(byte) 7]  = (byte*) " slow:"
(const byte*) mul16s_error::str3[(byte) $b]  = (byte*) " / normal:"
(const byte*) mul16s_error::str4[(byte) 9]  = (byte*) " / fast:"
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(bool~) mul16u::$0
(number~) mul16u::$1
(bool~) mul16u::$2
(bool~) mul16u::$3
(dword~) mul16u::$4
(word~) mul16u::$5
(dword~) mul16u::$6
(label) mul16u::@1
(label) mul16u::@2
(label) mul16u::@3
(label) mul16u::@4
(label) mul16u::@7
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0
(word) mul16u::a#1
(word) mul16u::a#2
(word) mul16u::a#3
(word) mul16u::a#4
(word) mul16u::a#5
(word) mul16u::a#6
(word) mul16u::a#7
(word) mul16u::b
(word) mul16u::b#0
(word) mul16u::b#1
(word) mul16u::b#2
(dword) mul16u::mb
(dword) mul16u::mb#0
(dword) mul16u::mb#1
(dword) mul16u::mb#2
(dword) mul16u::mb#3
(dword) mul16u::mb#4
(dword) mul16u::mb#5
(dword) mul16u::res
(dword) mul16u::res#0
(dword) mul16u::res#1
(dword) mul16u::res#2
(dword) mul16u::res#3
(dword) mul16u::res#4
(dword) mul16u::res#5
(dword) mul16u::res#6
(dword) mul16u::return
(dword) mul16u::return#0
(dword) mul16u::return#1
(dword) mul16u::return#2
(dword) mul16u::return#3
(dword) mul16u::return#4
(dword) mul16u::return#5
(dword) mul16u::return#6
(void()) mul16u_compare()
(bool~) mul16u_compare::$10
(bool~) mul16u_compare::$11
(bool~) mul16u_compare::$12
(bool~) mul16u_compare::$13
(bool~) mul16u_compare::$14
(bool~) mul16u_compare::$16
(bool~) mul16u_compare::$17
(number~) mul16u_compare::$4
(number~) mul16u_compare::$5
(dword~) mul16u_compare::$6
(dword~) mul16u_compare::$7
(dword~) mul16u_compare::$8
(bool~) mul16u_compare::$9
(label) mul16u_compare::@1
(label) mul16u_compare::@10
(label) mul16u_compare::@11
(label) mul16u_compare::@12
(label) mul16u_compare::@13
(label) mul16u_compare::@14
(label) mul16u_compare::@15
(label) mul16u_compare::@16
(label) mul16u_compare::@17
(label) mul16u_compare::@18
(label) mul16u_compare::@19
(label) mul16u_compare::@2
(label) mul16u_compare::@3
(label) mul16u_compare::@4
(label) mul16u_compare::@5
(label) mul16u_compare::@6
(label) mul16u_compare::@7
(label) mul16u_compare::@8
(label) mul16u_compare::@return
(word) mul16u_compare::a
(word) mul16u_compare::a#0
(word) mul16u_compare::a#1
(word) mul16u_compare::a#10
(word) mul16u_compare::a#11
(word) mul16u_compare::a#12
(word) mul16u_compare::a#13
(word) mul16u_compare::a#14
(word) mul16u_compare::a#2
(word) mul16u_compare::a#3
(word) mul16u_compare::a#4
(word) mul16u_compare::a#5
(word) mul16u_compare::a#6
(word) mul16u_compare::a#7
(word) mul16u_compare::a#8
(word) mul16u_compare::a#9
(word) mul16u_compare::b
(word) mul16u_compare::b#0
(word) mul16u_compare::b#1
(word) mul16u_compare::b#10
(word) mul16u_compare::b#11
(word) mul16u_compare::b#12
(word) mul16u_compare::b#13
(word) mul16u_compare::b#14
(word) mul16u_compare::b#2
(word) mul16u_compare::b#3
(word) mul16u_compare::b#4
(word) mul16u_compare::b#5
(word) mul16u_compare::b#6
(word) mul16u_compare::b#7
(word) mul16u_compare::b#8
(word) mul16u_compare::b#9
(byte) mul16u_compare::i
(byte) mul16u_compare::i#0
(byte) mul16u_compare::i#1
(byte) mul16u_compare::i#10
(byte) mul16u_compare::i#11
(byte) mul16u_compare::i#12
(byte) mul16u_compare::i#13
(byte) mul16u_compare::i#2
(byte) mul16u_compare::i#3
(byte) mul16u_compare::i#4
(byte) mul16u_compare::i#5
(byte) mul16u_compare::i#6
(byte) mul16u_compare::i#7
(byte) mul16u_compare::i#8
(byte) mul16u_compare::i#9
(byte) mul16u_compare::j
(byte) mul16u_compare::j#0
(byte) mul16u_compare::j#1
(byte) mul16u_compare::j#10
(byte) mul16u_compare::j#2
(byte) mul16u_compare::j#3
(byte) mul16u_compare::j#4
(byte) mul16u_compare::j#5
(byte) mul16u_compare::j#6
(byte) mul16u_compare::j#7
(byte) mul16u_compare::j#8
(byte) mul16u_compare::j#9
(dword) mul16u_compare::mf
(dword) mul16u_compare::mf#0
(dword) mul16u_compare::mf#1
(dword) mul16u_compare::mf#2
(dword) mul16u_compare::mf#3
(dword) mul16u_compare::mf#4
(dword) mul16u_compare::mf#5
(dword) mul16u_compare::mn
(dword) mul16u_compare::mn#0
(dword) mul16u_compare::mn#1
(dword) mul16u_compare::mn#2
(dword) mul16u_compare::mn#3
(dword) mul16u_compare::mn#4
(dword) mul16u_compare::mn#5
(dword) mul16u_compare::mn#6
(dword) mul16u_compare::ms
(dword) mul16u_compare::ms#0
(dword) mul16u_compare::ms#1
(dword) mul16u_compare::ms#2
(dword) mul16u_compare::ms#3
(dword) mul16u_compare::ms#4
(dword) mul16u_compare::ms#5
(dword) mul16u_compare::ms#6
(dword) mul16u_compare::ms#7
(byte) mul16u_compare::ok
(byte) mul16u_compare::ok#0
(byte) mul16u_compare::ok#1
(byte) mul16u_compare::ok#2
(byte) mul16u_compare::ok#3
(byte) mul16u_compare::ok#4
(const byte*) mul16u_compare::str[(byte) 2]  = (byte*) "."
(const byte*) mul16u_compare::str1[(byte) $1d]  = (byte*) "word multiply results match!"
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
(label) mul16u_error::@1
(label) mul16u_error::@10
(label) mul16u_error::@11
(label) mul16u_error::@2
(label) mul16u_error::@3
(label) mul16u_error::@4
(label) mul16u_error::@5
(label) mul16u_error::@6
(label) mul16u_error::@7
(label) mul16u_error::@8
(label) mul16u_error::@9
(label) mul16u_error::@return
(word) mul16u_error::a
(word) mul16u_error::a#0
(word) mul16u_error::a#1
(word) mul16u_error::a#2
(word) mul16u_error::b
(word) mul16u_error::b#0
(word) mul16u_error::b#1
(word) mul16u_error::b#2
(word) mul16u_error::b#3
(word) mul16u_error::b#4
(dword) mul16u_error::mf
(dword) mul16u_error::mf#0
(dword) mul16u_error::mf#1
(dword) mul16u_error::mf#10
(dword) mul16u_error::mf#2
(dword) mul16u_error::mf#3
(dword) mul16u_error::mf#4
(dword) mul16u_error::mf#5
(dword) mul16u_error::mf#6
(dword) mul16u_error::mf#7
(dword) mul16u_error::mf#8
(dword) mul16u_error::mf#9
(dword) mul16u_error::mn
(dword) mul16u_error::mn#0
(dword) mul16u_error::mn#1
(dword) mul16u_error::mn#2
(dword) mul16u_error::mn#3
(dword) mul16u_error::mn#4
(dword) mul16u_error::mn#5
(dword) mul16u_error::mn#6
(dword) mul16u_error::mn#7
(dword) mul16u_error::mn#8
(dword) mul16u_error::ms
(dword) mul16u_error::ms#0
(dword) mul16u_error::ms#1
(dword) mul16u_error::ms#2
(dword) mul16u_error::ms#3
(dword) mul16u_error::ms#4
(dword) mul16u_error::ms#5
(dword) mul16u_error::ms#6
(const byte*) mul16u_error::str[(byte) $13]  = (byte*) "multiply mismatch "
(const byte*) mul16u_error::str1[(byte) 2]  = (byte*) "*"
(const byte*) mul16u_error::str2[(byte) 7]  = (byte*) " slow:"
(const byte*) mul16u_error::str3[(byte) $b]  = (byte*) " / normal:"
(const byte*) mul16u_error::str4[(byte) 9]  = (byte*) " / fast:"
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
(word~) mulf16s::$0
(word~) mulf16s::$1
(word~) mulf16s::$10
(word~) mulf16s::$11
(word~) mulf16s::$13
(word~) mulf16s::$14
(word~) mulf16s::$15
(word~) mulf16s::$16
(word~) mulf16s::$17
(dword~) mulf16s::$2
(bool~) mulf16s::$3
(bool~) mulf16s::$4
(bool~) mulf16s::$5
(bool~) mulf16s::$6
(signed dword~) mulf16s::$7
(word~) mulf16s::$9
(label) mulf16s::@1
(label) mulf16s::@2
(label) mulf16s::@3
(label) mulf16s::@4
(label) mulf16s::@6
(label) mulf16s::@return
(signed word) mulf16s::a
(signed word) mulf16s::a#0
(signed word) mulf16s::a#1
(signed word) mulf16s::a#2
(signed word) mulf16s::a#3
(signed word) mulf16s::a#4
(signed word) mulf16s::a#5
(signed word) mulf16s::b
(signed word) mulf16s::b#0
(signed word) mulf16s::b#1
(signed word) mulf16s::b#2
(signed word) mulf16s::b#3
(signed word) mulf16s::b#4
(dword) mulf16s::m
(dword) mulf16s::m#0
(dword) mulf16s::m#1
(dword) mulf16s::m#2
(dword) mulf16s::m#3
(dword) mulf16s::m#4
(dword) mulf16s::m#5
(dword) mulf16s::m#6
(signed dword) mulf16s::return
(signed dword) mulf16s::return#0
(signed dword) mulf16s::return#1
(signed dword) mulf16s::return#2
(signed dword) mulf16s::return#3
(signed dword) mulf16s::return#4
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
(label) mulf16u::@return
(word) mulf16u::a
(word) mulf16u::a#0
(word) mulf16u::a#1
(word) mulf16u::a#2
(word) mulf16u::b
(word) mulf16u::b#0
(word) mulf16u::b#1
(word) mulf16u::b#2
(const word*) mulf16u::memA = (word*)(number) $f8
(const word*) mulf16u::memB = (word*)(number) $fa
(const dword*) mulf16u::memR = (dword*)(number) $fc
(dword) mulf16u::return
(dword) mulf16u::return#0
(dword) mulf16u::return#1
(dword) mulf16u::return#2
(dword) mulf16u::return#3
(dword) mulf16u::return#4
(dword) mulf16u::return#5
(dword) mulf16u::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
(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) }
(signed dword()) muls16s((signed word) muls16s::a , (signed word) muls16s::b)
(bool~) muls16s::$0
(bool~) muls16s::$1
(bool~) muls16s::$2
(bool~) muls16s::$3
(signed dword~) muls16s::$4
(bool~) muls16s::$5
(signed dword~) muls16s::$6
(label) muls16s::@1
(label) muls16s::@14
(label) muls16s::@15
(label) muls16s::@3
(label) muls16s::@4
(label) muls16s::@5
(label) muls16s::@8
(label) muls16s::@9
(label) muls16s::@return
(signed word) muls16s::a
(signed word) muls16s::a#0
(signed word) muls16s::a#1
(signed word) muls16s::a#2
(signed word) muls16s::a#3
(signed word) muls16s::a#4
(signed word) muls16s::a#5
(signed word) muls16s::a#6
(signed word) muls16s::a#7
(signed word) muls16s::a#8
(signed word) muls16s::b
(signed word) muls16s::b#0
(signed word) muls16s::b#1
(signed word) muls16s::b#2
(signed word) muls16s::b#3
(signed word) muls16s::b#4
(signed word) muls16s::b#5
(signed word) muls16s::b#6
(signed word) muls16s::b#7
(signed word) muls16s::b#8
(signed word) muls16s::i
(signed word) muls16s::i#0
(signed word) muls16s::i#1
(signed word) muls16s::i#2
(signed word) muls16s::i#3
(signed word) muls16s::j
(signed word) muls16s::j#0
(signed word) muls16s::j#1
(signed word) muls16s::j#2
(signed word) muls16s::j#3
(signed dword) muls16s::m
(signed dword) muls16s::m#0
(signed dword) muls16s::m#1
(signed dword) muls16s::m#10
(signed dword) muls16s::m#2
(signed dword) muls16s::m#3
(signed dword) muls16s::m#4
(signed dword) muls16s::m#5
(signed dword) muls16s::m#6
(signed dword) muls16s::m#7
(signed dword) muls16s::m#8
(signed dword) muls16s::m#9
(signed dword) muls16s::return
(signed dword) muls16s::return#0
(signed dword) muls16s::return#1
(signed dword) muls16s::return#2
(signed dword) muls16s::return#3
(signed dword) muls16s::return#4
(dword()) muls16u((word) muls16u::a , (word) muls16u::b)
(bool~) muls16u::$0
(bool~) muls16u::$1
(bool~) muls16u::$2
(dword~) muls16u::$3
(label) muls16u::@1
(label) muls16u::@2
(label) muls16u::@4
(label) muls16u::@5
(label) muls16u::@return
(word) muls16u::a
(word) muls16u::a#0
(word) muls16u::a#1
(word) muls16u::a#2
(word) muls16u::a#3
(word) muls16u::a#4
(word) muls16u::b
(word) muls16u::b#0
(word) muls16u::b#1
(word) muls16u::b#2
(word) muls16u::b#3
(word) muls16u::b#4
(word) muls16u::i
(word) muls16u::i#0
(word) muls16u::i#1
(word) muls16u::i#2
(word) muls16u::i#3
(dword) muls16u::m
(dword) muls16u::m#0
(dword) muls16u::m#1
(dword) muls16u::m#2
(dword) muls16u::m#3
(dword) muls16u::m#4
(dword) muls16u::m#5
(dword) muls16u::return
(dword) muls16u::return#0
(dword) muls16u::return#1
(dword) muls16u::return#2
(dword) muls16u::return#3
(dword) muls16u::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
(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#18
(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
(void()) print_dword((dword) print_dword::dw)
(word~) print_dword::$0
(word~) print_dword::$2
(label) print_dword::@1
(label) print_dword::@2
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0
(dword) print_dword::dw#1
(dword) print_dword::dw#2
(dword) print_dword::dw#3
(dword) print_dword::dw#4
(dword) print_dword::dw#5
(const byte*) print_hextab[]  = (byte*) "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#11
(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
(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_sdword((signed dword) print_sdword::dw)
(bool~) print_sdword::$0
(dword~) print_sdword::$1
(signed dword~) print_sdword::$5
(label) print_sdword::@1
(label) print_sdword::@2
(label) print_sdword::@3
(label) print_sdword::@5
(label) print_sdword::@6
(label) print_sdword::@7
(label) print_sdword::@return
(signed dword) print_sdword::dw
(signed dword) print_sdword::dw#0
(signed dword) print_sdword::dw#1
(signed dword) print_sdword::dw#2
(signed dword) print_sdword::dw#3
(signed dword) print_sdword::dw#4
(signed dword) print_sdword::dw#5
(signed dword) print_sdword::dw#6
(signed dword) print_sdword::dw#7
(signed dword) print_sdword::dw#8
(signed dword) print_sdword::dw#9
(void()) print_str((byte*) print_str::str)
(bool~) print_str::$0
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0
(byte*) print_str::str#1
(byte*) print_str::str#10
(byte*) print_str::str#11
(byte*) print_str::str#12
(byte*) print_str::str#13
(byte*) print_str::str#14
(byte*) print_str::str#15
(byte*) print_str::str#16
(byte*) print_str::str#17
(byte*) print_str::str#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
(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

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#15)
Adding number conversion cast (unumber) $28 in (byte*~) print_ln::$0 ← (byte*) print_line_cursor#22 + (number) $28
Adding number conversion cast (snumber) 0 in (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#4 < (number) 0
Adding number conversion cast (unumber) 4 in (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4
Adding number conversion cast (unumber) $f in (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f
Adding number conversion cast (unumber) print_byte::$2 in (number~) print_byte::$2 ← (byte) print_byte::b#3 & (unumber)(number) $f
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Adding number conversion cast (unumber) 0 in (bool~) mul16u::$0 ← (word) mul16u::a#3 != (number) 0
Adding number conversion cast (unumber) 1 in (number~) mul16u::$1 ← (word) mul16u::a#4 & (number) 1
Adding number conversion cast (unumber) mul16u::$1 in (number~) mul16u::$1 ← (word) mul16u::a#4 & (unumber)(number) 1
Adding number conversion cast (unumber) 0 in (bool~) mul16u::$2 ← (unumber~) mul16u::$1 != (number) 0
Adding number conversion cast (unumber) 1 in (word~) mul16u::$5 ← (word) mul16u::a#5 >> (number) 1
Adding number conversion cast (unumber) 1 in (dword~) mul16u::$6 ← (dword) mul16u::mb#2 << (number) 1
Adding number conversion cast (snumber) 0 in (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) mul16s::$5 ← (signed word) mul16s::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~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) mulf16s::$5 ← (signed word) mulf16s::b#2 < (number) 0
Adding number conversion cast (unumber) 5 in *((const byte*) BGCOL) ← (number) 5
Adding number conversion cast (unumber) 0 in (bool~) muls16u::$0 ← (word) muls16u::a#1 != (number) 0
Adding number conversion cast (snumber) 0 in (bool~) muls16s::$0 ← (signed word) muls16s::a#1 < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (number) 0
Adding number conversion cast (unumber) $d2b in (number~) mul16u_compare::$4 ← (word) mul16u_compare::a#2 + (number) $d2b
Adding number conversion cast (unumber) mul16u_compare::$4 in (number~) mul16u_compare::$4 ← (word) mul16u_compare::a#2 + (unumber)(number) $d2b
Adding number conversion cast (unumber) $ffd in (number~) mul16u_compare::$5 ← (word) mul16u_compare::b#2 + (number) $ffd
Adding number conversion cast (unumber) mul16u_compare::$5 in (number~) mul16u_compare::$5 ← (word) mul16u_compare::b#2 + (unumber)(number) $ffd
Adding number conversion cast (unumber) 0 in (byte) mul16u_compare::ok#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) mul16u_compare::$13 ← (byte) mul16u_compare::ok#3 == (number) 0
Adding number conversion cast (unumber) 0 in (byte) mul16u_compare::ok#2 ← (number) 0
Adding number conversion cast (unumber) 2 in *((const byte*) BGCOL) ← (number) 2
Adding number conversion cast (snumber) $d2b in (number~) mul16s_compare::$4 ← (signed word) mul16s_compare::a#2 + (number) $d2b
Adding number conversion cast (snumber) mul16s_compare::$4 in (number~) mul16s_compare::$4 ← (signed word) mul16s_compare::a#2 + (snumber)(number) $d2b
Adding number conversion cast (snumber) $ffd in (number~) mul16s_compare::$5 ← (signed word) mul16s_compare::b#2 + (number) $ffd
Adding number conversion cast (snumber) mul16s_compare::$5 in (number~) mul16s_compare::$5 ← (signed word) mul16s_compare::b#2 + (snumber)(number) $ffd
Adding number conversion cast (unumber) 0 in (byte) mul16s_compare::ok#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) mul16s_compare::$13 ← (byte) mul16s_compare::ok#3 == (number) 0
Adding number conversion cast (unumber) 0 in (byte) mul16s_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#5
Inlining cast (dword~) print_sdword::$1 ← (dword)(signed dword) print_sdword::dw#6
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (word~) mul16s::$0 ← (word)(signed word) mul16s::a#1
Inlining cast (word~) mul16s::$1 ← (word)(signed word) mul16s::b#1
Inlining cast (word~) mul16s::$10 ← (word)(signed word) mul16s::b#3
Inlining cast (signed dword~) mul16s::$7 ← (signed dword)(dword) mul16s::m#4
Inlining cast (word~) mul16s::$14 ← (word)(signed word) mul16s::a#3
Inlining cast (byte) mulf_init::dir#1 ← (unumber)(number) 1
Inlining cast (word~) mulf16s::$0 ← (word)(signed word) mulf16s::a#1
Inlining cast (word~) mulf16s::$1 ← (word)(signed word) mulf16s::b#1
Inlining cast (word~) mulf16s::$10 ← (word)(signed word) mulf16s::b#3
Inlining cast (signed dword~) mulf16s::$7 ← (signed dword)(dword) mulf16s::m#4
Inlining cast (word~) mulf16s::$14 ← (word)(signed word) mulf16s::a#3
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 5
Inlining cast (byte) mul16u_compare::ok#1 ← (unumber)(number) 0
Inlining cast (byte) mul16u_compare::ok#2 ← (unumber)(number) 0
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 2
Inlining cast (byte) mul16s_compare::ok#1 ← (unumber)(number) 0
Inlining cast (byte) mul16s_compare::ok#2 ← (unumber)(number) 0
Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 2
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (word*) 248
Simplifying constant pointer cast (word*) 250
Simplifying constant pointer cast (dword*) 252
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 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 $d2b
Simplifying constant integer cast $ffd
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast $d2b
Simplifying constant integer cast $ffd
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 (word) $d2b
Finalized unsigned number type (word) $ffd
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 word) $d2b
Finalized signed number type (signed word) $ffd
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#3 & (byte) $f
Inferred type updated to byte in (unumber~) mul16u::$1 ← (word) mul16u::a#4 & (byte) 1
Inferred type updated to byte in (unumber~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1
Inferred type updated to word in (unumber~) mul16u_compare::$4 ← (word) mul16u_compare::a#2 + (word) $d2b
Inferred type updated to word in (unumber~) mul16u_compare::$5 ← (word) mul16u_compare::b#2 + (word) $ffd
Inferred type updated to signed word in (snumber~) mul16s_compare::$4 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b
Inferred type updated to signed word in (snumber~) mul16s_compare::$5 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd
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 [164] (bool~) mul16u::$3 ← (byte~) mul16u::$1 == (byte) 0 from [163] (bool~) mul16u::$2 ← (byte~) mul16u::$1 != (byte) 0
Inversing boolean not [190] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (signed byte) 0 from [189] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (signed byte) 0
Inversing boolean not [194] (bool~) mul16s::$6 ← (signed word) mul16s::b#2 >= (signed byte) 0 from [193] (bool~) mul16s::$5 ← (signed word) mul16s::b#2 < (signed byte) 0
Inversing boolean not [226] (bool~) mulf_init::$3 ← (byte~) mulf_init::$1 != (byte) 0 from [225] (bool~) mulf_init::$2 ← (byte~) mulf_init::$1 == (byte) 0
Inversing boolean not [254] (bool~) mulf_init::$10 ← (byte) mulf_init::x_255#1 != (byte) 0 from [253] (bool~) mulf_init::$9 ← (byte) mulf_init::x_255#1 == (byte) 0
Inversing boolean not [282] (bool~) mulf16s::$4 ← (signed word) mulf16s::a#2 >= (signed byte) 0 from [281] (bool~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (signed byte) 0
Inversing boolean not [286] (bool~) mulf16s::$6 ← (signed word) mulf16s::b#2 >= (signed byte) 0 from [285] (bool~) mulf16s::$5 ← (signed word) mulf16s::b#2 < (signed byte) 0
Inversing boolean not [329] (bool~) muls16u::$1 ← (word) muls16u::a#1 == (byte) 0 from [328] (bool~) muls16u::$0 ← (word) muls16u::a#1 != (byte) 0
Inversing boolean not [353] (bool~) muls16s::$2 ← (signed word) muls16s::a#2 <= (signed byte) 0 from [352] (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (signed byte) 0
Inversing boolean not [414] (bool~) mul16u_compare::$10 ← (dword) mul16u_compare::ms#1 == (dword) mul16u_compare::mf#0 from [413] (bool~) mul16u_compare::$9 ← (dword) mul16u_compare::ms#1 != (dword) mul16u_compare::mf#0
Inversing boolean not [418] (bool~) mul16u_compare::$12 ← (dword) mul16u_compare::ms#2 == (dword) mul16u_compare::mn#1 from [417] (bool~) mul16u_compare::$11 ← (dword) mul16u_compare::ms#2 != (dword) mul16u_compare::mn#1
Inversing boolean not [424] (bool~) mul16u_compare::$14 ← (byte) mul16u_compare::ok#3 != (byte) 0 from [423] (bool~) mul16u_compare::$13 ← (byte) mul16u_compare::ok#3 == (byte) 0
Inversing boolean not [551] (bool~) mul16s_compare::$10 ← (signed dword) mul16s_compare::ms#1 == (signed dword) mul16s_compare::mf#0 from [550] (bool~) mul16s_compare::$9 ← (signed dword) mul16s_compare::ms#1 != (signed dword) mul16s_compare::mf#0
Inversing boolean not [555] (bool~) mul16s_compare::$12 ← (signed dword) mul16s_compare::ms#2 == (signed dword) mul16s_compare::mn#1 from [554] (bool~) mul16s_compare::$11 ← (signed dword) mul16s_compare::ms#2 != (signed dword) mul16s_compare::mn#1
Inversing boolean not [561] (bool~) mul16s_compare::$14 ← (byte) mul16s_compare::ok#3 != (byte) 0 from [560] (bool~) mul16s_compare::$13 ← (byte) mul16s_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#54 (byte*) print_char_cursor#153 (byte*) print_screen#4 
Alias (byte*) print_str::str#15 = (byte*) print_str::str#16 
Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#68 (byte*) print_char_cursor#2 
Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#23 (byte*) print_char_cursor#3 (byte*) print_line_cursor#24 (byte*) print_char_cursor#70 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 
Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 (byte*) print_char_cursor#135 
Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#4 (signed word) print_sword::w#8 (signed word) print_sword::w#7 
Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#71 
Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 
Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#72 
Alias (word) print_word::w#0 = (word~) print_sword::$1 
Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#73 (byte*) print_char_cursor#74 (byte*) print_char_cursor#8 
Alias (byte) print_byte::b#0 = (byte~) print_word::$0 
Alias (word) print_word::w#5 = (word) print_word::w#6 
Alias (byte*) print_char_cursor#75 = (byte*) print_char_cursor#9 
Alias (byte) print_byte::b#1 = (byte~) print_word::$2 
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#11 
Alias (word) print_word::w#1 = (word~) print_dword::$0 
Alias (dword) print_dword::dw#4 = (dword) print_dword::dw#5 
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#78 
Alias (word) print_word::w#2 = (word~) print_dword::$2 
Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#14 
Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#156 (byte*) print_char_cursor#140 
Alias (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#7 (signed dword) print_sdword::dw#5 (signed dword) print_sdword::dw#9 (signed dword) print_sdword::dw#8 
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#81 
Alias (signed dword) print_sdword::dw#0 = (signed dword~) print_sdword::$5 
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#82 
Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$1 
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#83 (byte*) print_char_cursor#84 (byte*) print_char_cursor#18 
Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 
Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#85 
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#86 (byte*) print_char_cursor#87 (byte*) print_char_cursor#21 
Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#23 
Alias (byte*) print_line_cursor#25 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#24 (byte*) print_char_cursor#90 (byte*) print_line_cursor#4 (byte*) print_char_cursor#25 
Alias (word) mul16u::a#3 = (word) mul16u::a#4 (word) mul16u::a#7 
Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 
Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#4 (dword) mul16u::return#1 
Alias (word) mul16u::a#0 = (word~) mul16u::$5 
Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 
Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 
Alias (word) mul16u::a#1 = (word~) mul16s::$0 
Alias (word) mul16u::b#0 = (word~) mul16s::$1 
Alias (dword) mul16u::return#2 = (dword) mul16u::return#5 
Alias (signed word) mul16s::a#1 = (signed word) mul16s::a#2 (signed word) mul16s::a#5 
Alias (signed word) mul16s::b#1 = (signed word) mul16s::b#4 (signed word) mul16s::b#3 
Alias (dword) mul16s::m#0 = (dword~) mul16s::$2 (dword) mul16s::m#3 
Alias (word~) mul16s::$16 = (word~) mul16s::$11 
Alias (signed dword) mul16s::return#0 = (signed dword~) mul16s::$7 (signed dword) mul16s::return#3 (signed dword) mul16s::return#1 
Alias (dword) mul16s::m#5 = (dword) mul16s::m#6 
Alias (signed word) mul16s::a#3 = (signed word) mul16s::a#4 
Alias (word~) mul16s::$17 = (word~) mul16s::$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 (dword) mulf16u::return#0 = (dword) mulf16u::return#4 (dword) mulf16u::return#1 
Alias (word) mulf16u::a#0 = (word~) mulf16s::$0 
Alias (word) mulf16u::b#0 = (word~) mulf16s::$1 
Alias (dword) mulf16u::return#2 = (dword) mulf16u::return#5 
Alias (signed word) mulf16s::a#1 = (signed word) mulf16s::a#2 (signed word) mulf16s::a#5 
Alias (signed word) mulf16s::b#1 = (signed word) mulf16s::b#4 (signed word) mulf16s::b#3 
Alias (dword) mulf16s::m#0 = (dword~) mulf16s::$2 (dword) mulf16s::m#3 
Alias (word~) mulf16s::$16 = (word~) mulf16s::$11 
Alias (signed dword) mulf16s::return#0 = (signed dword~) mulf16s::$7 (signed dword) mulf16s::return#3 (signed dword) mulf16s::return#1 
Alias (dword) mulf16s::m#5 = (dword) mulf16s::m#6 
Alias (signed word) mulf16s::a#3 = (signed word) mulf16s::a#4 
Alias (word~) mulf16s::$17 = (word~) mulf16s::$15 
Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#45 
Alias (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 (byte*) print_char_cursor#91 
Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#92 
Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#6 
Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#93 (byte*) print_char_cursor#94 (byte*) print_char_cursor#29 
Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#7 (byte*) print_line_cursor#29 (byte*) print_line_cursor#8 
Alias (dword) muls16u::return#0 = (dword) muls16u::m#2 (dword) muls16u::return#3 (dword) muls16u::return#1 
Alias (word) muls16u::a#1 = (word) muls16u::a#3 
Alias (dword) muls16u::m#0 = (dword) muls16u::m#5 
Alias (word) muls16u::b#3 = (word) muls16u::b#4 
Alias (dword) muls16u::m#3 = (dword) muls16u::m#4 
Alias (word) muls16u::b#1 = (word) muls16u::b#2 
Alias (word) muls16u::i#2 = (word) muls16u::i#3 
Alias (word) muls16u::a#2 = (word) muls16u::a#4 
Alias (dword) muls16u::m#1 = (dword~) muls16u::$3 
Alias (signed word) muls16s::a#1 = (signed word) muls16s::a#7 (signed word) muls16s::a#2 (signed word) muls16s::a#5 
Alias (signed dword) muls16s::m#0 = (signed dword) muls16s::m#10 (signed dword) muls16s::m#8 (signed dword) muls16s::m#9 
Alias (signed word) muls16s::b#5 = (signed word) muls16s::b#6 (signed word) muls16s::b#7 (signed word) muls16s::b#8 
Alias (signed dword) muls16s::m#3 = (signed dword) muls16s::m#6 
Alias (signed word) muls16s::b#1 = (signed word) muls16s::b#3 
Alias (signed word) muls16s::j#2 = (signed word) muls16s::j#3 
Alias (signed word) muls16s::a#3 = (signed word) muls16s::a#6 
Alias (signed dword) muls16s::m#1 = (signed dword~) muls16s::$4 
Alias (signed dword) muls16s::return#0 = (signed dword) muls16s::m#4 (signed dword) muls16s::return#3 (signed dword) muls16s::return#1 
Alias (signed dword) muls16s::m#5 = (signed dword) muls16s::m#7 
Alias (signed word) muls16s::b#2 = (signed word) muls16s::b#4 
Alias (signed word) muls16s::i#2 = (signed word) muls16s::i#3 
Alias (signed word) muls16s::a#4 = (signed word) muls16s::a#8 
Alias (signed dword) muls16s::m#2 = (signed dword~) muls16s::$6 
Alias (word) mul16u_compare::a#6 = (word) mul16u_compare::a#9 
Alias (word) mul16u_compare::b#6 = (word) mul16u_compare::b#9 
Alias (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#13 
Alias (byte*) print_line_cursor#87 = (byte*) print_line_cursor#91 
Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#95 
Alias (word) mul16u_compare::a#1 = (word~) mul16u_compare::$4 (word) mul16u_compare::a#3 (word) mul16u_compare::a#4 (word) mul16u_compare::a#13 (word) mul16u_compare::a#14 
Alias (word) mul16u_compare::b#1 = (word~) mul16u_compare::$5 (word) mul16u_compare::b#3 (word) mul16u_compare::b#4 (word) mul16u_compare::b#13 (word) mul16u_compare::b#14 
Alias (dword) muls16u::return#2 = (dword) muls16u::return#4 
Alias (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#9 (byte) mul16u_compare::j#8 (byte) mul16u_compare::j#6 (byte) mul16u_compare::j#7 
Alias (byte) mul16u_compare::i#10 = (byte) mul16u_compare::i#11 (byte) mul16u_compare::i#9 (byte) mul16u_compare::i#7 (byte) mul16u_compare::i#8 
Alias (byte*) print_char_cursor#169 = (byte*) print_char_cursor#175 (byte*) print_char_cursor#177 (byte*) print_char_cursor#173 (byte*) print_char_cursor#170 
Alias (byte*) print_line_cursor#69 = (byte*) print_line_cursor#79 (byte*) print_line_cursor#83 (byte*) print_line_cursor#75 (byte*) print_line_cursor#70 
Alias (dword) mul16u_compare::ms#0 = (dword~) mul16u_compare::$6 (dword) mul16u_compare::ms#4 (dword) mul16u_compare::ms#1 (dword) mul16u_compare::ms#5 
Alias (dword) mul16u::return#3 = (dword) mul16u::return#6 
Alias (dword) mul16u_compare::mn#0 = (dword~) mul16u_compare::$7 (dword) mul16u_compare::mn#3 (dword) mul16u_compare::mn#4 
Alias (dword) mulf16u::return#3 = (dword) mulf16u::return#6 
Alias (dword) mul16u_compare::mf#0 = (dword~) mul16u_compare::$8 (dword) mul16u_compare::mf#5 
Alias (byte) mul16u_compare::j#4 = (byte) mul16u_compare::j#5 
Alias (word) mul16u_compare::a#10 = (word) mul16u_compare::a#11 
Alias (word) mul16u_compare::b#10 = (word) mul16u_compare::b#11 
Alias (dword) mul16u_compare::ms#2 = (dword) mul16u_compare::ms#7 
Alias (dword) mul16u_compare::mn#1 = (dword) mul16u_compare::mn#6 
Alias (dword) mul16u_compare::mf#3 = (dword) mul16u_compare::mf#4 
Alias (byte) mul16u_compare::i#5 = (byte) mul16u_compare::i#6 
Alias (byte*) print_char_cursor#163 = (byte*) print_char_cursor#164 
Alias (byte*) print_line_cursor#61 = (byte*) print_line_cursor#62 
Alias (byte) mul16u_compare::j#2 = (byte) mul16u_compare::j#3 
Alias (word) mul16u_compare::a#12 = (word) mul16u_compare::a#7 (word) mul16u_compare::a#8 (word) mul16u_compare::a#5 
Alias (word) mul16u_compare::b#12 = (word) mul16u_compare::b#7 (word) mul16u_compare::b#8 (word) mul16u_compare::b#5 
Alias (byte) mul16u_compare::i#2 = (byte) mul16u_compare::i#3 (byte) mul16u_compare::i#4 
Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#165 (byte*) print_char_cursor#159 (byte*) print_char_cursor#158 (byte*) print_char_cursor#147 
Alias (byte*) print_line_cursor#46 = (byte*) print_line_cursor#63 (byte*) print_line_cursor#55 (byte*) print_line_cursor#56 (byte*) print_line_cursor#47 
Alias (dword) mul16u_compare::ms#3 = (dword) mul16u_compare::ms#6 
Alias (dword) mul16u_compare::mn#2 = (dword) mul16u_compare::mn#5 
Alias (dword) mul16u_compare::mf#1 = (dword) mul16u_compare::mf#2 
Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#96 
Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#9 
Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#97 
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#31 
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#48 
Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#98 
Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#99 
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#33 
Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#35 
Alias (word) mul16u_error::a#1 = (word) mul16u_error::a#2 
Alias (word) mul16u_error::b#1 = (word) mul16u_error::b#3 (word) mul16u_error::b#4 (word) mul16u_error::b#2 
Alias (dword) mul16u_error::ms#1 = (dword) mul16u_error::ms#5 (dword) mul16u_error::ms#6 (dword) mul16u_error::ms#4 (dword) mul16u_error::ms#3 (dword) mul16u_error::ms#2 
Alias (dword) mul16u_error::mn#1 = (dword) mul16u_error::mn#7 (dword) mul16u_error::mn#8 (dword) mul16u_error::mn#6 (dword) mul16u_error::mn#5 (dword) mul16u_error::mn#4 (dword) mul16u_error::mn#3 (dword) mul16u_error::mn#2 
Alias (dword) mul16u_error::mf#1 = (dword) mul16u_error::mf#9 (dword) mul16u_error::mf#10 (dword) mul16u_error::mf#8 (dword) mul16u_error::mf#7 (dword) mul16u_error::mf#6 (dword) mul16u_error::mf#5 (dword) mul16u_error::mf#4 (dword) mul16u_error::mf#3 (dword) mul16u_error::mf#2 
Alias (byte*) print_line_cursor#49 = (byte*) print_line_cursor#96 (byte*) print_line_cursor#99 (byte*) print_line_cursor#92 (byte*) print_line_cursor#88 (byte*) print_line_cursor#84 (byte*) print_line_cursor#80 (byte*) print_line_cursor#76 (byte*) print_line_cursor#71 (byte*) print_line_cursor#64 (byte*) print_line_cursor#57 
Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#36 
Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#37 
Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#38 
Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#39 
Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#40 
Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#41 
Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#42 
Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#43 
Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#44 
Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#45 
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#14 
Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#46 (byte*) print_char_cursor#112 (byte*) print_char_cursor#47 
Alias (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#9 
Alias (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#9 
Alias (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#13 
Alias (byte*) print_line_cursor#89 = (byte*) print_line_cursor#93 
Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#48 
Alias (signed word) mul16s_compare::a#1 = (signed word~) mul16s_compare::$4 (signed word) mul16s_compare::a#3 (signed word) mul16s_compare::a#4 (signed word) mul16s_compare::a#13 (signed word) mul16s_compare::a#14 
Alias (signed word) mul16s_compare::b#1 = (signed word~) mul16s_compare::$5 (signed word) mul16s_compare::b#3 (signed word) mul16s_compare::b#4 (signed word) mul16s_compare::b#13 (signed word) mul16s_compare::b#14 
Alias (signed dword) muls16s::return#2 = (signed dword) muls16s::return#4 
Alias (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#9 (byte) mul16s_compare::j#8 (byte) mul16s_compare::j#6 (byte) mul16s_compare::j#7 
Alias (byte) mul16s_compare::i#10 = (byte) mul16s_compare::i#11 (byte) mul16s_compare::i#9 (byte) mul16s_compare::i#7 (byte) mul16s_compare::i#8 
Alias (byte*) print_char_cursor#171 = (byte*) print_char_cursor#176 (byte*) print_char_cursor#178 (byte*) print_char_cursor#174 (byte*) print_char_cursor#172 
Alias (byte*) print_line_cursor#72 = (byte*) print_line_cursor#81 (byte*) print_line_cursor#85 (byte*) print_line_cursor#77 (byte*) print_line_cursor#73 
Alias (signed dword) mul16s_compare::ms#0 = (signed dword~) mul16s_compare::$6 (signed dword) mul16s_compare::ms#4 (signed dword) mul16s_compare::ms#1 (signed dword) mul16s_compare::ms#5 
Alias (signed dword) mul16s::return#2 = (signed dword) mul16s::return#4 
Alias (signed dword) mul16s_compare::mn#0 = (signed dword~) mul16s_compare::$7 (signed dword) mul16s_compare::mn#3 (signed dword) mul16s_compare::mn#4 
Alias (signed dword) mulf16s::return#2 = (signed dword) mulf16s::return#4 
Alias (signed dword) mul16s_compare::mf#0 = (signed dword~) mul16s_compare::$8 (signed dword) mul16s_compare::mf#5 
Alias (byte) mul16s_compare::j#4 = (byte) mul16s_compare::j#5 
Alias (signed word) mul16s_compare::a#10 = (signed word) mul16s_compare::a#11 
Alias (signed word) mul16s_compare::b#10 = (signed word) mul16s_compare::b#11 
Alias (signed dword) mul16s_compare::ms#2 = (signed dword) mul16s_compare::ms#7 
Alias (signed dword) mul16s_compare::mn#1 = (signed dword) mul16s_compare::mn#6 
Alias (signed dword) mul16s_compare::mf#3 = (signed dword) mul16s_compare::mf#4 
Alias (byte) mul16s_compare::i#5 = (byte) mul16s_compare::i#6 
Alias (byte*) print_char_cursor#166 = (byte*) print_char_cursor#167 
Alias (byte*) print_line_cursor#65 = (byte*) print_line_cursor#66 
Alias (byte) mul16s_compare::j#2 = (byte) mul16s_compare::j#3 
Alias (signed word) mul16s_compare::a#12 = (signed word) mul16s_compare::a#7 (signed word) mul16s_compare::a#8 (signed word) mul16s_compare::a#5 
Alias (signed word) mul16s_compare::b#12 = (signed word) mul16s_compare::b#7 (signed word) mul16s_compare::b#8 (signed word) mul16s_compare::b#5 
Alias (byte) mul16s_compare::i#2 = (byte) mul16s_compare::i#3 (byte) mul16s_compare::i#4 
Alias (byte*) print_char_cursor#150 = (byte*) print_char_cursor#168 (byte*) print_char_cursor#162 (byte*) print_char_cursor#161 (byte*) print_char_cursor#151 
Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#67 (byte*) print_line_cursor#58 (byte*) print_line_cursor#59 (byte*) print_line_cursor#51 
Alias (signed dword) mul16s_compare::ms#3 = (signed dword) mul16s_compare::ms#6 
Alias (signed dword) mul16s_compare::mn#2 = (signed dword) mul16s_compare::mn#5 
Alias (signed dword) mul16s_compare::mf#1 = (signed dword) mul16s_compare::mf#2 
Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#49 
Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#36 
Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#50 
Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#37 
Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#38 (byte*) print_line_cursor#52 
Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#51 
Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#52 
Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#39 
Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#53 
Alias (signed word) mul16s_error::a#1 = (signed word) mul16s_error::a#2 
Alias (signed word) mul16s_error::b#1 = (signed word) mul16s_error::b#3 (signed word) mul16s_error::b#4 (signed word) mul16s_error::b#2 
Alias (signed dword) mul16s_error::ms#1 = (signed dword) mul16s_error::ms#5 (signed dword) mul16s_error::ms#6 (signed dword) mul16s_error::ms#4 (signed dword) mul16s_error::ms#3 (signed dword) mul16s_error::ms#2 
Alias (signed dword) mul16s_error::mn#1 = (signed dword) mul16s_error::mn#7 (signed dword) mul16s_error::mn#8 (signed dword) mul16s_error::mn#6 (signed dword) mul16s_error::mn#5 (signed dword) mul16s_error::mn#4 (signed dword) mul16s_error::mn#3 (signed dword) mul16s_error::mn#2 
Alias (signed dword) mul16s_error::mf#1 = (signed dword) mul16s_error::mf#9 (signed dword) mul16s_error::mf#10 (signed dword) mul16s_error::mf#8 (signed dword) mul16s_error::mf#7 (signed dword) mul16s_error::mf#6 (signed dword) mul16s_error::mf#5 (signed dword) mul16s_error::mf#4 (signed dword) mul16s_error::mf#3 (signed dword) mul16s_error::mf#2 
Alias (byte*) print_line_cursor#100 = (byte*) print_line_cursor#98 (byte*) print_line_cursor#94 (byte*) print_line_cursor#90 (byte*) print_line_cursor#86 (byte*) print_line_cursor#82 (byte*) print_line_cursor#78 (byte*) print_line_cursor#74 (byte*) print_line_cursor#68 (byte*) print_line_cursor#60 (byte*) print_line_cursor#53 
Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#54 
Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#55 
Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#56 
Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#57 
Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#58 
Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#59 
Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#60 
Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#61 
Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#62 
Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#63 
Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#40 (byte*) print_line_cursor#41 (byte*) print_line_cursor#20 
Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#130 (byte*) print_char_cursor#65 
Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#42 
Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#66 
Successful SSA optimization Pass2AliasElimination
Alias (word) mul16u::a#3 = (word) mul16u::a#5 
Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 
Alias (signed word) mul16s::b#1 = (signed word) mul16s::b#2 
Alias (signed word) mul16s::a#1 = (signed word) mul16s::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 word) mulf16s::b#1 = (signed word) mulf16s::b#2 
Alias (signed word) mulf16s::a#1 = (signed word) mulf16s::a#3 
Alias (dword) mul16u_compare::ms#0 = (dword) mul16u_compare::ms#2 (dword) mul16u_compare::ms#3 
Alias (dword) mul16u_compare::mn#0 = (dword) mul16u_compare::mn#1 (dword) mul16u_compare::mn#2 
Alias (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#4 (byte) mul16u_compare::j#2 
Alias (word) mul16u_compare::a#1 = (word) mul16u_compare::a#10 (word) mul16u_compare::a#12 
Alias (word) mul16u_compare::b#1 = (word) mul16u_compare::b#10 (word) mul16u_compare::b#12 
Alias (dword) mul16u_compare::mf#0 = (dword) mul16u_compare::mf#3 (dword) mul16u_compare::mf#1 
Alias (byte) mul16u_compare::i#10 = (byte) mul16u_compare::i#5 (byte) mul16u_compare::i#2 
Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#163 (byte*) print_char_cursor#169 
Alias (byte*) print_line_cursor#46 = (byte*) print_line_cursor#61 (byte*) print_line_cursor#69 
Alias (signed dword) mul16s_compare::ms#0 = (signed dword) mul16s_compare::ms#2 (signed dword) mul16s_compare::ms#3 
Alias (signed dword) mul16s_compare::mn#0 = (signed dword) mul16s_compare::mn#1 (signed dword) mul16s_compare::mn#2 
Alias (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#4 (byte) mul16s_compare::j#2 
Alias (signed word) mul16s_compare::a#1 = (signed word) mul16s_compare::a#10 (signed word) mul16s_compare::a#12 
Alias (signed word) mul16s_compare::b#1 = (signed word) mul16s_compare::b#10 (signed word) mul16s_compare::b#12 
Alias (signed dword) mul16s_compare::mf#0 = (signed dword) mul16s_compare::mf#3 (signed dword) mul16s_compare::mf#1 
Alias (byte) mul16s_compare::i#10 = (byte) mul16s_compare::i#5 (byte) mul16s_compare::i#2 
Alias (byte*) print_char_cursor#150 = (byte*) print_char_cursor#166 (byte*) print_char_cursor#171 
Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#72 
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#69 (byte*) print_char_cursor#133
Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#22
Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#22
Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#10
Identical Phi Values (byte*) print_char_cursor#75 (byte*) print_char_cursor#20
Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#20
Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#10
Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#10
Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#22
Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#22
Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#13
Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#22
Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#22
Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_screen#3
Identical Phi Values (signed word) mul16s::a#1 (signed word) mul16s::a#0
Identical Phi Values (signed word) mul16s::b#1 (signed word) mul16s::b#0
Identical Phi Values (signed word) mulf16s::a#1 (signed word) mulf16s::a#0
Identical Phi Values (signed word) mulf16s::b#1 (signed word) mulf16s::b#0
Identical Phi Values (byte*) print_screen#3 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_line_cursor#44 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#25
Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_line_cursor#25
Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#32
Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#10
Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#115
Identical Phi Values (byte*) print_line_cursor#28 (byte*) print_line_cursor#16
Identical Phi Values (word) muls16u::a#1 (word) muls16u::a#0
Identical Phi Values (word) muls16u::b#3 (word) muls16u::b#0
Identical Phi Values (word) muls16u::a#2 (word) muls16u::a#1
Identical Phi Values (word) muls16u::b#1 (word) muls16u::b#3
Identical Phi Values (signed word) muls16s::a#1 (signed word) muls16s::a#0
Identical Phi Values (signed word) muls16s::b#5 (signed word) muls16s::b#0
Identical Phi Values (signed word) muls16s::a#3 (signed word) muls16s::a#1
Identical Phi Values (signed word) muls16s::b#1 (signed word) muls16s::b#5
Identical Phi Values (signed word) muls16s::a#4 (signed word) muls16s::a#1
Identical Phi Values (signed word) muls16s::b#2 (signed word) muls16s::b#5
Identical Phi Values (byte*) print_char_cursor#157 (byte*) print_char_cursor#144
Identical Phi Values (byte*) print_line_cursor#95 (byte*) print_line_cursor#26
Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#132
Identical Phi Values (byte) mul16u_compare::i#10 (byte) mul16u_compare::i#12
Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#30
Identical Phi Values (byte*) print_line_cursor#46 (byte*) print_line_cursor#87
Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#111
Identical Phi Values (byte*) print_line_cursor#30 (byte*) print_line_cursor#13
Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#146
Identical Phi Values (word) mul16u_error::a#1 (word) mul16u_error::a#0
Identical Phi Values (word) mul16u_error::b#1 (word) mul16u_error::b#0
Identical Phi Values (dword) mul16u_error::ms#1 (dword) mul16u_error::ms#0
Identical Phi Values (dword) mul16u_error::mn#1 (dword) mul16u_error::mn#0
Identical Phi Values (dword) mul16u_error::mf#1 (dword) mul16u_error::mf#0
Identical Phi Values (byte*) print_line_cursor#49 (byte*) print_line_cursor#46
Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#10
Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#10
Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#13
Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#13
Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#13
Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#160 (byte*) print_char_cursor#27
Identical Phi Values (byte*) print_line_cursor#97 (byte*) print_line_cursor#27
Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#132
Identical Phi Values (byte) mul16s_compare::i#10 (byte) mul16s_compare::i#12
Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_char_cursor#113
Identical Phi Values (byte*) print_line_cursor#50 (byte*) print_line_cursor#89
Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#129
Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#19
Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#152 (byte*) print_char_cursor#150
Identical Phi Values (signed word) mul16s_error::a#1 (signed word) mul16s_error::a#0
Identical Phi Values (signed word) mul16s_error::b#1 (signed word) mul16s_error::b#0
Identical Phi Values (signed dword) mul16s_error::ms#1 (signed dword) mul16s_error::ms#0
Identical Phi Values (signed dword) mul16s_error::mn#1 (signed dword) mul16s_error::mn#0
Identical Phi Values (signed dword) mul16s_error::mf#1 (signed dword) mul16s_error::mf#0
Identical Phi Values (byte*) print_line_cursor#100 (byte*) print_line_cursor#50
Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_line_cursor#21 (byte*) print_line_cursor#28
Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#28
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (void*) memset::return#0 (void*) memset::str#0
Identical Phi Values (byte*) print_char_cursor#134 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_char_cursor#22
Identical Phi Values (byte*) print_char_cursor#139 (byte*) print_char_cursor#132
Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#22
Identical Phi Values (byte*) print_line_cursor#87 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_line_cursor#89 (byte*) print_line_cursor#10
Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#1
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) memset::$1 [2] if((word) memset::num#0<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [9] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) print_str::$0 [17] if((byte) 0!=*((byte*) print_str::str#15)) goto print_str::@2
Simple Condition (bool~) print_ln::$1 [26] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1
Simple Condition (bool~) print_sword::$0 [30] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1
Simple Condition (bool~) print_sdword::$0 [61] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1
Simple Condition (bool~) mul16u::$0 [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
Simple Condition (bool~) mul16u::$3 [103] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@4
Simple Condition (bool~) mul16s::$4 [116] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1
Simple Condition (bool~) mul16s::$6 [119] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2
Simple Condition (bool~) mulf_init::$0 [138] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
Simple Condition (bool~) mulf_init::$3 [142] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@4
Simple Condition (bool~) mulf_init::$7 [159] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@10
Simple Condition (bool~) mulf_init::$10 [165] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@12
Simple Condition (bool~) mulf16s::$4 [185] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1
Simple Condition (bool~) mulf16s::$6 [188] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2
Simple Condition (bool~) muls16u::$1 [213] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1
Simple Condition (bool~) muls16u::$2 [218] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@5
Simple Condition (bool~) muls16s::$0 [225] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@1
Simple Condition (bool~) muls16s::$2 [228] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@3
Simple Condition (bool~) muls16s::$3 [232] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@9
Simple Condition (bool~) muls16s::$5 [238] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@15
Simple Condition (bool~) mul16u_compare::$10 [271] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3
Simple Condition (bool~) mul16u_compare::$12 [274] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@4
Simple Condition (bool~) mul16u_compare::$14 [278] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5
Simple Condition (bool~) mul16u_compare::$16 [282] if((byte) mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2
Simple Condition (bool~) mul16u_compare::$17 [295] if((byte) mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1
Simple Condition (bool~) mul16s_compare::$10 [366] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3
Simple Condition (bool~) mul16s_compare::$12 [369] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@4
Simple Condition (bool~) mul16s_compare::$14 [373] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5
Simple Condition (bool~) mul16s_compare::$16 [377] if((byte) mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2
Simple Condition (bool~) mul16s_compare::$17 [390] if((byte) mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) print_line_cursor#0 = (byte*) 1024
Constant (const byte) print_char::ch#0 = '-'
Constant (const byte) print_char::ch#1 = ' '
Constant (const byte) print_char::ch#2 = '-'
Constant (const byte) print_char::ch#3 = ' '
Constant (const byte) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const dword) mul16u::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 dword) muls16u::m#0 = 0
Constant (const word) muls16u::i#0 = 0
Constant (const signed dword) muls16s::m#0 = 0
Constant (const signed word) muls16s::i#0 = 0
Constant (const signed word) muls16s::j#0 = 0
Constant (const word) mul16u_compare::a#0 = 0
Constant (const word) mul16u_compare::b#0 = 0
Constant (const byte) mul16u_compare::i#0 = 0
Constant (const byte*) print_str::str#1 = mul16u_compare::str
Constant (const byte) mul16u_compare::j#0 = 0
Constant (const byte) mul16u_compare::ok#0 = 1
Constant (const byte) mul16u_compare::ok#1 = 0
Constant (const byte) mul16u_compare::ok#2 = 0
Constant (const byte*) print_str::str#2 = mul16u_compare::str1
Constant (const byte*) print_str::str#3 = mul16u_error::str
Constant (const byte*) print_str::str#4 = mul16u_error::str1
Constant (const byte*) print_str::str#5 = mul16u_error::str2
Constant (const byte*) print_str::str#6 = mul16u_error::str3
Constant (const byte*) print_str::str#7 = mul16u_error::str4
Constant (const signed word) mul16s_compare::a#0 = -$7fff
Constant (const signed word) mul16s_compare::b#0 = -$7fff
Constant (const byte) mul16s_compare::i#0 = 0
Constant (const byte*) print_str::str#8 = mul16s_compare::str
Constant (const byte) mul16s_compare::j#0 = 0
Constant (const byte) mul16s_compare::ok#0 = 1
Constant (const byte) mul16s_compare::ok#1 = 0
Constant (const byte) mul16s_compare::ok#2 = 0
Constant (const byte*) print_str::str#9 = mul16s_compare::str1
Constant (const byte*) print_str::str#10 = mul16s_error::str
Constant (const byte*) print_str::str#11 = mul16s_error::str1
Constant (const byte*) print_str::str#12 = mul16s_error::str2
Constant (const byte*) print_str::str#13 = mul16s_error::str3
Constant (const byte*) print_str::str#14 = mul16s_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 [2] if((const word) memset::num#0<=(byte) 0) goto memset::@1
Successful SSA optimization Pass2ConstantIfs
Consolidated constant strings into (const byte*) str
Consolidated constant strings into (const byte*) str1
Consolidated constant strings into (const byte*) str2
Consolidated constant strings into (const byte*) str3
Consolidated constant strings into (const byte*) str4
Successful SSA optimization Pass2ConstantStringConsolidation
Resolved ranged next value [280] mul16u_compare::j#1 ← ++ mul16u_compare::j#10 to ++
Resolved ranged comparison value [282] if(mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 to (number) $10
Resolved ranged next value [293] mul16u_compare::i#1 ← ++ mul16u_compare::i#12 to ++
Resolved ranged comparison value [295] if(mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 to (number) $10
Resolved ranged next value [375] mul16s_compare::j#1 ← ++ mul16s_compare::j#10 to ++
Resolved ranged comparison value [377] if(mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 to (number) $10
Resolved ranged next value [388] mul16s_compare::i#1 ← ++ mul16s_compare::i#12 to ++
Resolved ranged comparison value [390] if(mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 to (number) $10
Eliminating unused constant (const void*) memset::return#2
Successful SSA optimization PassNEliminateUnusedVars
Adding number conversion cast (unumber) $10 in if((byte) mul16u_compare::j#1!=(number) $10) goto mul16u_compare::@2
Adding number conversion cast (unumber) $10 in if((byte) mul16u_compare::i#1!=(number) $10) goto mul16u_compare::@1
Adding number conversion cast (unumber) $10 in if((byte) mul16s_compare::j#1!=(number) $10) goto mul16s_compare::@2
Adding number conversion cast (unumber) $10 in if((byte) mul16s_compare::i#1!=(number) $10) goto mul16s_compare::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast $10
Simplifying constant integer cast $10
Simplifying constant integer cast $10
Simplifying constant integer cast $10
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $10
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 [81] (word~) mul16s::$10 ← (word)(signed word) mul16s::b#0 keeping mul16s::b#0
Inlining Noop Cast [87] (word~) mul16s::$14 ← (word)(signed word) mul16s::a#0 keeping mul16s::a#0
Inlining Noop Cast [133] (word~) mulf16s::$10 ← (word)(signed word) mulf16s::b#0 keeping mulf16s::b#0
Inlining Noop Cast [139] (word~) mulf16s::$14 ← (word)(signed word) mulf16s::a#0 keeping mulf16s::a#0
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_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 dword) mul16u::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 dword) muls16u::m#0
Inlining constant with var siblings (const word) muls16u::i#0
Inlining constant with var siblings (const signed dword) muls16s::m#0
Inlining constant with var siblings (const signed word) muls16s::i#0
Inlining constant with var siblings (const signed word) muls16s::j#0
Inlining constant with var siblings (const word) mul16u_compare::a#0
Inlining constant with var siblings (const word) mul16u_compare::b#0
Inlining constant with var siblings (const byte) mul16u_compare::i#0
Inlining constant with var siblings (const byte) mul16u_compare::j#0
Inlining constant with var siblings (const byte) mul16u_compare::ok#0
Inlining constant with var siblings (const byte) mul16u_compare::ok#1
Inlining constant with var siblings (const byte) mul16u_compare::ok#2
Inlining constant with var siblings (const signed word) mul16s_compare::a#0
Inlining constant with var siblings (const signed word) mul16s_compare::b#0
Inlining constant with var siblings (const byte) mul16s_compare::i#0
Inlining constant with var siblings (const byte) mul16s_compare::j#0
Inlining constant with var siblings (const byte) mul16s_compare::ok#0
Inlining constant with var siblings (const byte) mul16s_compare::ok#1
Inlining constant with var siblings (const byte) mul16s_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 mul16u_error::str1 = (const byte*) str1
Constant inlined mul16u_error::str3 = (const byte*) str3
Constant inlined mulf_init::sqr2_hi#0 = (const byte*) mulf_sqr2_hi
Constant inlined mul16u_error::str2 = (const byte*) str2
Constant inlined mul16u_error::str4 = (const byte*) str4
Constant inlined muls16s::j#0 = (signed word) 0
Constant inlined mul16u_compare::ok#0 = (byte) 1
Constant inlined mulf_init::dir#1 = (byte) 1
Constant inlined mulf_init::dir#0 = (byte) $ff
Constant inlined muls16u::i#0 = (word) 0
Constant inlined mul16u_compare::ok#2 = (byte) 0
Constant inlined mul16u_compare::ok#1 = (byte) 0
Constant inlined mul16s_error::str1 = (const byte*) str1
Constant inlined muls16u::m#0 = (dword) 0
Constant inlined mul16s_compare::a#0 = (signed word) -$7fff
Constant inlined mulf_init::x_255#0 = (byte) -1
Constant inlined mul16s_error::str4 = (const byte*) str4
Constant inlined mul16s_error::str3 = (const byte*) str3
Constant inlined mul16s_error::str2 = (const byte*) str2
Constant inlined mulf_init::x_2#0 = (byte) 0
Constant inlined mul16u_compare::a#0 = (word) 0
Constant inlined mul16s_compare::j#0 = (byte) 0
Constant inlined mul16u_compare::j#0 = (byte) 0
Constant inlined print_line_cursor#0 = (byte*) 1024
Constant inlined print_str::str#9 = (const byte*) mul16s_compare::str1
Constant inlined mulf_init::sqr1_hi#0 = (const byte*) mulf_sqr1_hi+(byte) 1
Constant inlined mulf_init::sqr1_lo#0 = (const byte*) mulf_sqr1_lo+(byte) 1
Constant inlined print_str::str#4 = (const byte*) str1
Constant inlined print_str::str#3 = (const byte*) mul16u_error::str
Constant inlined print_str::str#2 = (const byte*) mul16u_compare::str1
Constant inlined memset::dst#0 = (byte*)(const void*) memset::str#0
Constant inlined print_str::str#1 = (const byte*) str
Constant inlined print_str::str#8 = (const byte*) str
Constant inlined print_str::str#7 = (const byte*) str4
Constant inlined print_str::str#6 = (const byte*) str3
Constant inlined print_str::str#5 = (const byte*) str2
Constant inlined mulf_init::c#0 = (byte) 0
Constant inlined muls16s::i#0 = (signed word) 0
Constant inlined mul16s_compare::str = (const byte*) str
Constant inlined print_str::str#13 = (const byte*) str3
Constant inlined print_str::str#12 = (const byte*) str2
Constant inlined print_str::str#11 = (const byte*) str1
Constant inlined print_str::str#10 = (const byte*) mul16s_error::str
Constant inlined muls16s::m#0 = (signed dword) 0
Constant inlined mul16s_compare::ok#0 = (byte) 1
Constant inlined mul16s_compare::ok#1 = (byte) 0
Constant inlined print_str::str#14 = (const byte*) str4
Constant inlined mul16s_compare::ok#2 = (byte) 0
Constant inlined memset::$2 = (byte*)(const void*) memset::str#0
Constant inlined mul16u::res#0 = (dword) 0
Constant inlined mul16s_compare::b#0 = (signed word) -$7fff
Constant inlined mul16u_compare::b#0 = (word) 0
Constant inlined mul16s_compare::i#0 = (byte) 0
Constant inlined mulf_init::sqr#0 = (word) 0
Constant inlined mul16u_compare::i#0 = (byte) 0
Constant inlined print_char::ch#3 = (byte) ' '
Constant inlined print_char::ch#2 = (byte) '-'
Constant inlined print_char::ch#1 = (byte) ' '
Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined mul16u_compare::str = (const byte*) str
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 mul16u::@10(between mul16u::@2 and mul16u::@4)
Added new block during phi lifting mul16s::@7(between mul16s::@6 and mul16s::@1)
Added new block during phi lifting mul16s::@8(between mul16s::@1 and mul16s::@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 mulf16s::@7(between mulf16s::@6 and mulf16s::@1)
Added new block during phi lifting mulf16s::@8(between mulf16s::@1 and mulf16s::@2)
Added new block during phi lifting muls16u::@10(between muls16u::@4 and muls16u::@1)
Added new block during phi lifting muls16s::@20(between muls16s::@14 and muls16s::@3)
Added new block during phi lifting muls16s::@21(between muls16s::@8 and muls16s::@3)
Added new block during phi lifting mul16u_compare::@20(between mul16u_compare::@10 and mul16u_compare::@1)
Added new block during phi lifting mul16u_compare::@21(between mul16u_compare::@5 and mul16u_compare::@2)
Added new block during phi lifting mul16u_compare::@22(between mul16u_compare::@3 and mul16u_compare::@4)
Added new block during phi lifting mul16s_compare::@20(between mul16s_compare::@10 and mul16s_compare::@1)
Added new block during phi lifting mul16s_compare::@21(between mul16s_compare::@5 and mul16s_compare::@2)
Added new block during phi lifting mul16s_compare::@22(between mul16s_compare::@3 and mul16s_compare::@4)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @13
Adding NOP phi() at start of @58
Adding NOP phi() at start of @59
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 mul16s_compare::@6
Adding NOP phi() at start of mul16s_compare::@7
Adding NOP phi() at start of mul16s_compare::@16
Adding NOP phi() at start of mul16s_compare::@19
Adding NOP phi() at start of print_ln::@2
Adding NOP phi() at start of mul16s_error::@11
Adding NOP phi() at start of print_sdword::@7
Adding NOP phi() at start of print_dword::@2
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_sword::@7
Adding NOP phi() at start of mul16u::@3
Adding NOP phi() at start of muls16s::@5
Adding NOP phi() at start of muls16s::@1
Adding NOP phi() at start of mul16u_compare
Adding NOP phi() at start of mul16u_compare::@6
Adding NOP phi() at start of mul16u_compare::@7
Adding NOP phi() at start of mul16u_compare::@16
Adding NOP phi() at start of mul16u_compare::@19
Adding NOP phi() at start of mul16u_error::@11
Adding NOP phi() at start of muls16u::@2
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 mul16u_compare:11 mul16s_compare:13 
Calls in [mul16s_compare] to print_str:19 muls16s:27 mul16s:32 mulf16s:37 mul16s_error:53 print_ln:62 print_str:64 print_ln:67 
Calls in [mul16s_error] to print_str:97 print_sword:100 print_str:102 print_sword:105 print_str:107 print_sdword:110 print_str:112 print_sdword:115 print_str:117 print_sdword:120 print_ln:123 
Calls in [print_sdword] to print_char:129 print_dword:135 print_char:139 
Calls in [print_dword] to print_word:150 print_word:154 
Calls in [print_word] to print_byte:161 print_byte:165 
Calls in [print_byte] to print_char:173 print_char:178 
Calls in [print_sword] to print_char:184 print_word:190 print_char:194 
Calls in [mulf16s] to mulf16u:201 
Calls in [mul16s] to mul16u:230 
Calls in [mul16u_compare] to print_str:291 muls16u:299 mul16u:306 mulf16u:313 mul16u_error:329 print_ln:337 print_str:339 print_ln:342 
Calls in [mul16u_error] to print_str:353 print_word:357 print_str:359 print_word:363 print_str:365 print_dword:369 print_str:371 print_dword:375 print_str:377 print_dword:381 print_ln:383 
Calls in [print_cls] to memset:442 

Created 70 initial phi equivalence classes
Not coalescing [16] print_char_cursor#219 ← print_line_cursor#1
Coalesced [18] print_char_cursor#179 ← print_char_cursor#149
Coalesced [20] mul16s_compare::a#16 ← mul16s_compare::a#6
Coalesced [21] mul16s_compare::b#16 ← mul16s_compare::b#6
Coalesced [60] print_line_cursor#101 ← print_line_cursor#1
Coalesced [61] print_char_cursor#195 ← print_char_cursor#132
Not coalescing [63] print_char_cursor#180 ← print_line_cursor#1
Coalesced (already) [65] print_line_cursor#102 ← print_line_cursor#1
Coalesced (already) [66] print_char_cursor#196 ← print_char_cursor#132
Coalesced [69] print_char_cursor#220 ← print_char_cursor#132
Coalesced [70] mul16s_compare::a#15 ← mul16s_compare::a#1
Coalesced [71] mul16s_compare::b#15 ← mul16s_compare::b#1
Coalesced [72] mul16s_compare::i#14 ← mul16s_compare::i#1
Coalesced (already) [73] mul16s_compare::a#17 ← mul16s_compare::a#1
Coalesced (already) [74] mul16s_compare::b#17 ← mul16s_compare::b#1
Coalesced [75] mul16s_compare::j#11 ← mul16s_compare::j#1
Coalesced [76] mul16s_compare::ok#5 ← mul16s_compare::ok#4
Coalesced [78] print_line_cursor#105 ← print_line_cursor#43
Coalesced (already) [84] print_line_cursor#106 ← print_line_cursor#1
Coalesced [86] print_str::str#18 ← print_str::str#17
Coalesced (already) [87] print_char_cursor#193 ← print_char_cursor#154
Coalesced [94] print_str::str#19 ← print_str::str#0
Coalesced [95] print_char_cursor#194 ← print_char_cursor#1
Coalesced (already) [96] print_char_cursor#181 ← print_char_cursor#132
Coalesced [99] print_sword::w#9 ← print_sword::w#1
Coalesced [101] print_char_cursor#182 ← print_char_cursor#22
Coalesced [104] print_sword::w#10 ← print_sword::w#2
Coalesced (already) [106] print_char_cursor#183 ← print_char_cursor#22
Coalesced [109] print_sdword::dw#10 ← print_sdword::dw#1
Coalesced (already) [111] print_char_cursor#184 ← print_char_cursor#22
Coalesced [114] print_sdword::dw#11 ← print_sdword::dw#2
Coalesced (already) [116] print_char_cursor#185 ← print_char_cursor#22
Coalesced [119] print_sdword::dw#12 ← print_sdword::dw#3
Coalesced (already) [121] print_line_cursor#103 ← print_line_cursor#1
Coalesced (already) [122] print_char_cursor#197 ← print_char_cursor#22
Coalesced [128] print_char_cursor#215 ← print_char_cursor#132
Coalesced [130] print_sdword::dw#14 ← print_sdword::dw#4
Coalesced [133] print_dword::dw#9 ← print_dword::dw#0
Coalesced [134] print_char_cursor#209 ← print_char_cursor#22
Coalesced (already) [138] print_char_cursor#214 ← print_char_cursor#132
Coalesced [141] print_sdword::dw#13 ← print_sdword::dw#0
Coalesced [148] print_word::w#9 ← print_word::w#1
Coalesced [149] print_char_cursor#203 ← print_char_cursor#138
Coalesced [152] print_word::w#10 ← print_word::w#2
Coalesced (already) [153] print_char_cursor#204 ← print_char_cursor#22
Coalesced [159] print_byte::b#4 ← print_byte::b#0
Coalesced [160] print_char_cursor#210 ← print_char_cursor#137
Coalesced [163] print_byte::b#5 ← print_byte::b#1
Coalesced (already) [164] print_char_cursor#211 ← print_char_cursor#22
Coalesced [171] print_char::ch#7 ← print_char::ch#4
Coalesced (already) [172] print_char_cursor#212 ← print_char_cursor#142
Coalesced [176] print_char::ch#8 ← print_char::ch#5
Coalesced (already) [177] print_char_cursor#213 ← print_char_cursor#22
Coalesced (already) [183] print_char_cursor#217 ← print_char_cursor#132
Coalesced [185] print_sword::w#12 ← print_sword::w#3
Coalesced [188] print_word::w#11 ← print_word::w#0
Coalesced (already) [189] print_char_cursor#205 ← print_char_cursor#22
Coalesced (already) [193] print_char_cursor#216 ← print_char_cursor#132
Coalesced [196] print_sword::w#11 ← print_sword::w#0
Coalesced [199] mulf16u::a#4 ← mulf16u::a#0
Coalesced [200] mulf16u::b#4 ← mulf16u::b#0
Coalesced [208] mulf16s::m#7 ← mulf16s::m#1
Coalesced [214] mulf16s::m#10 ← mulf16s::m#2
Coalesced [218] mulf16s::m#9 ← mulf16s::m#5
Coalesced [219] mulf16s::m#8 ← mulf16s::m#0
Coalesced [228] mul16u::b#3 ← mul16u::b#0
Coalesced [229] mul16u::a#8 ← mul16u::a#1
Coalesced [237] mul16s::m#7 ← mul16s::m#1
Coalesced [243] mul16s::m#10 ← mul16s::m#2
Coalesced [247] mul16s::m#9 ← mul16s::m#5
Coalesced [248] mul16s::m#8 ← mul16s::m#0
Coalesced [251] mul16u::a#10 ← mul16u::a#6
Coalesced [252] mul16u::mb#6 ← mul16u::mb#0
Coalesced [260] mul16u::res#9 ← mul16u::res#1
Coalesced [264] mul16u::a#11 ← mul16u::a#0
Coalesced [265] mul16u::res#7 ← mul16u::res#6
Coalesced [266] mul16u::mb#7 ← mul16u::mb#1
Coalesced (already) [267] mul16u::res#8 ← mul16u::res#2
Coalesced [273] muls16s::return#6 ← muls16s::m#3
Coalesced [278] muls16s::j#4 ← muls16s::j#1
Coalesced [279] muls16s::m#11 ← muls16s::m#1
Coalesced [283] muls16s::return#5 ← muls16s::m#5
Coalesced [286] muls16s::i#4 ← muls16s::i#1
Coalesced [287] muls16s::m#12 ← muls16s::m#2
Coalesced [290] print_char_cursor#186 ← print_char_cursor#145
Coalesced [292] mul16u_compare::a#16 ← mul16u_compare::a#6
Coalesced [293] mul16u_compare::b#16 ← mul16u_compare::b#6
Coalesced [304] mul16u::b#4 ← mul16u::b#1
Coalesced [305] mul16u::a#9 ← mul16u::a#2
Coalesced [311] mulf16u::a#3 ← mulf16u::a#1
Coalesced [312] mulf16u::b#3 ← mulf16u::b#1
Coalesced (already) [336] print_char_cursor#198 ← print_char_cursor#132
Not coalescing [338] print_char_cursor#187 ← print_line_cursor#1
Coalesced (already) [340] print_line_cursor#104 ← print_line_cursor#1
Coalesced (already) [341] print_char_cursor#199 ← print_char_cursor#132
Coalesced (already) [344] print_char_cursor#218 ← print_char_cursor#132
Coalesced [345] mul16u_compare::a#15 ← mul16u_compare::a#1
Coalesced [346] mul16u_compare::b#15 ← mul16u_compare::b#1
Coalesced [347] mul16u_compare::i#14 ← mul16u_compare::i#1
Coalesced (already) [348] mul16u_compare::a#17 ← mul16u_compare::a#1
Coalesced (already) [349] mul16u_compare::b#17 ← mul16u_compare::b#1
Coalesced [350] mul16u_compare::j#11 ← mul16u_compare::j#1
Coalesced [351] mul16u_compare::ok#5 ← mul16u_compare::ok#4
Coalesced (already) [352] print_char_cursor#188 ← print_char_cursor#132
Coalesced [355] print_word::w#7 ← print_word::w#3
Coalesced (already) [356] print_char_cursor#201 ← print_char_cursor#132
Coalesced (already) [358] print_char_cursor#189 ← print_char_cursor#22
Coalesced [361] print_word::w#8 ← print_word::w#4
Coalesced (already) [362] print_char_cursor#202 ← print_char_cursor#132
Coalesced (already) [364] print_char_cursor#190 ← print_char_cursor#22
Coalesced [367] print_dword::dw#6 ← print_dword::dw#1
Coalesced (already) [368] print_char_cursor#206 ← print_char_cursor#132
Coalesced (already) [370] print_char_cursor#191 ← print_char_cursor#22
Coalesced [373] print_dword::dw#7 ← print_dword::dw#2
Coalesced (already) [374] print_char_cursor#207 ← print_char_cursor#132
Coalesced (already) [376] print_char_cursor#192 ← print_char_cursor#22
Coalesced [379] print_dword::dw#8 ← print_dword::dw#3
Coalesced (already) [380] print_char_cursor#208 ← print_char_cursor#132
Coalesced (already) [382] print_char_cursor#200 ← print_char_cursor#22
Coalesced [390] muls16u::return#5 ← muls16u::m#3
Coalesced [395] muls16u::i#4 ← muls16u::i#1
Coalesced [396] muls16u::m#6 ← muls16u::m#1
Coalesced [414] mulf_init::sqr2_lo#6 ← mulf_init::sqr2_lo#1
Coalesced [415] mulf_init::x_255#6 ← mulf_init::x_255#1
Coalesced [416] mulf_init::sqr2_hi#6 ← mulf_init::sqr2_hi#1
Coalesced [417] mulf_init::dir#5 ← mulf_init::dir#4
Coalesced (already) [418] mulf_init::dir#6 ← mulf_init::dir#2
Coalesced [424] mulf_init::sqr#9 ← mulf_init::sqr#2
Coalesced [425] mulf_init::x_2#8 ← mulf_init::x_2#1
Coalesced [434] mulf_init::sqr1_lo#6 ← mulf_init::sqr1_lo#1
Coalesced [435] mulf_init::c#6 ← mulf_init::c#1
Coalesced [436] mulf_init::sqr#7 ← mulf_init::sqr#1
Coalesced [437] mulf_init::sqr1_hi#6 ← mulf_init::sqr1_hi#1
Coalesced [438] mulf_init::x_2#6 ← mulf_init::x_2#2
Coalesced [439] mulf_init::sqr#8 ← mulf_init::sqr#4
Coalesced (already) [440] mulf_init::x_2#7 ← mulf_init::x_2#3
Coalesced [453] memset::dst#4 ← memset::dst#1
Coalesced down to 42 phi equivalence classes
Culled Empty Block (label) @13
Culled Empty Block (label) @59
Culled Empty Block (label) main::@4
Culled Empty Block (label) mul16s_compare::@12
Culled Empty Block (label) mul16s_compare::@7
Culled Empty Block (label) mul16s_compare::@16
Culled Empty Block (label) mul16s_compare::@19
Culled Empty Block (label) mul16s_compare::@20
Culled Empty Block (label) mul16s_compare::@21
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) mul16s_error::@11
Culled Empty Block (label) print_sdword::@6
Culled Empty Block (label) print_sdword::@7
Culled Empty Block (label) print_dword::@2
Culled Empty Block (label) print_word::@2
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_sword::@6
Culled Empty Block (label) print_sword::@7
Culled Empty Block (label) mulf16s::@8
Culled Empty Block (label) mulf16s::@7
Culled Empty Block (label) mul16s::@8
Culled Empty Block (label) mul16s::@7
Culled Empty Block (label) mul16u::@3
Culled Empty Block (label) mul16u::@10
Culled Empty Block (label) muls16s::@5
Culled Empty Block (label) muls16s::@21
Culled Empty Block (label) muls16s::@1
Culled Empty Block (label) muls16s::@20
Culled Empty Block (label) mul16u_compare::@12
Culled Empty Block (label) mul16u_compare::@7
Culled Empty Block (label) mul16u_compare::@16
Culled Empty Block (label) mul16u_compare::@19
Culled Empty Block (label) mul16u_compare::@20
Culled Empty Block (label) mul16u_compare::@21
Culled Empty Block (label) mul16u_error::@11
Culled Empty Block (label) muls16u::@2
Culled Empty Block (label) muls16u::@10
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 @58 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_sdword::@5 to print_sdword::@4
Renumbering block mul16u::@4 to mul16u::@3
Renumbering block mul16u::@7 to mul16u::@4
Renumbering block mul16s::@6 to mul16s::@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 mulf16s::@6 to mulf16s::@5
Renumbering block muls16u::@4 to muls16u::@2
Renumbering block muls16u::@5 to muls16u::@3
Renumbering block muls16s::@3 to muls16s::@1
Renumbering block muls16s::@4 to muls16s::@2
Renumbering block muls16s::@8 to muls16s::@3
Renumbering block muls16s::@9 to muls16s::@4
Renumbering block muls16s::@14 to muls16s::@5
Renumbering block muls16s::@15 to muls16s::@6
Renumbering block mul16u_compare::@8 to mul16u_compare::@7
Renumbering block mul16u_compare::@10 to mul16u_compare::@8
Renumbering block mul16u_compare::@11 to mul16u_compare::@9
Renumbering block mul16u_compare::@13 to mul16u_compare::@10
Renumbering block mul16u_compare::@14 to mul16u_compare::@11
Renumbering block mul16u_compare::@15 to mul16u_compare::@12
Renumbering block mul16u_compare::@17 to mul16u_compare::@13
Renumbering block mul16u_compare::@18 to mul16u_compare::@14
Renumbering block mul16u_compare::@22 to mul16u_compare::@15
Renumbering block mul16s_compare::@8 to mul16s_compare::@7
Renumbering block mul16s_compare::@10 to mul16s_compare::@8
Renumbering block mul16s_compare::@11 to mul16s_compare::@9
Renumbering block mul16s_compare::@13 to mul16s_compare::@10
Renumbering block mul16s_compare::@14 to mul16s_compare::@11
Renumbering block mul16s_compare::@15 to mul16s_compare::@12
Renumbering block mul16s_compare::@17 to mul16s_compare::@13
Renumbering block mul16s_compare::@18 to mul16s_compare::@14
Renumbering block mul16s_compare::@22 to mul16s_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 mul16s_compare::@6
Adding NOP phi() at start of mul16s_compare::@15
Adding NOP phi() at start of mul16s_compare::@9
Adding NOP phi() at start of mul16s_compare::@14
Adding NOP phi() at start of mul16s_error
Adding NOP phi() at start of mul16s_error::@2
Adding NOP phi() at start of mul16s_error::@4
Adding NOP phi() at start of mul16s_error::@6
Adding NOP phi() at start of mul16s_error::@8
Adding NOP phi() at start of mul16s_error::@10
Adding NOP phi() at start of print_sdword::@3
Adding NOP phi() at start of print_sdword::@1
Adding NOP phi() at start of print_sword::@3
Adding NOP phi() at start of print_sword::@1
Adding NOP phi() at start of mul16u_compare
Adding NOP phi() at start of mul16u_compare::@6
Adding NOP phi() at start of mul16u_compare::@15
Adding NOP phi() at start of mul16u_compare::@9
Adding NOP phi() at start of mul16u_compare::@14
Adding NOP phi() at start of mul16u_error
Adding NOP phi() at start of mul16u_error::@2
Adding NOP phi() at start of mul16u_error::@4
Adding NOP phi() at start of mul16u_error::@6
Adding NOP phi() at start of mul16u_error::@8
Adding NOP phi() at start of mul16u_error::@10
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 mul16u_compare 
  to:main::@3
main::@3: scope:[main]  from main::@2
  [10] phi()
  [11] call mul16s_compare 
  to:main::@return
main::@return: scope:[main]  from main::@3
  [12] return 
  to:@return

(void()) mul16s_compare()
mul16s_compare: scope:[mul16s_compare]  from main::@3
  [13] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1
  to:mul16s_compare::@1
mul16s_compare::@1: scope:[mul16s_compare]  from mul16s_compare mul16s_compare::@8
  [14] (byte) mul16s_compare::i#12 ← phi( mul16s_compare/(byte) 0 mul16s_compare::@8/(byte) mul16s_compare::i#1 )
  [14] (signed word) mul16s_compare::b#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::b#1 )
  [14] (signed word) mul16s_compare::a#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::a#1 )
  [14] (byte*) print_char_cursor#149 ← phi( mul16s_compare/(byte*) print_char_cursor#219 mul16s_compare::@8/(byte*) print_char_cursor#132 )
  [15] call print_str 
  to:mul16s_compare::@2
mul16s_compare::@2: scope:[mul16s_compare]  from mul16s_compare::@1 mul16s_compare::@5
  [16] (byte) mul16s_compare::j#10 ← phi( mul16s_compare::@1/(byte) 0 mul16s_compare::@5/(byte) mul16s_compare::j#1 )
  [16] (signed word) mul16s_compare::b#2 ← phi( mul16s_compare::@1/(signed word) mul16s_compare::b#6 mul16s_compare::@5/(signed word) mul16s_compare::b#1 )
  [16] (signed word) mul16s_compare::a#2 ← phi( mul16s_compare::@1/(signed word) mul16s_compare::a#6 mul16s_compare::@5/(signed word) mul16s_compare::a#1 )
  [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b
  [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd
  [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1
  [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1
  [21] call muls16s 
  [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0
  to:mul16s_compare::@10
mul16s_compare::@10: scope:[mul16s_compare]  from mul16s_compare::@2
  [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2
  [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1
  [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1
  [26] call mul16s 
  [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
  to:mul16s_compare::@11
mul16s_compare::@11: scope:[mul16s_compare]  from mul16s_compare::@10
  [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2
  [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1
  [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1
  [31] call mulf16s 
  [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0
  to:mul16s_compare::@12
mul16s_compare::@12: scope:[mul16s_compare]  from mul16s_compare::@11
  [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2
  [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3
  to:mul16s_compare::@6
mul16s_compare::@6: scope:[mul16s_compare]  from mul16s_compare::@12
  [35] phi()
  to:mul16s_compare::@3
mul16s_compare::@3: scope:[mul16s_compare]  from mul16s_compare::@12 mul16s_compare::@6
  [36] (byte) mul16s_compare::ok#4 ← phi( mul16s_compare::@12/(byte) 1 mul16s_compare::@6/(byte) 0 )
  [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15
  to:mul16s_compare::@4
mul16s_compare::@15: scope:[mul16s_compare]  from mul16s_compare::@3
  [38] phi()
  to:mul16s_compare::@4
mul16s_compare::@4: scope:[mul16s_compare]  from mul16s_compare::@15 mul16s_compare::@3
  [39] (byte) mul16s_compare::ok#3 ← phi( mul16s_compare::@15/(byte) mul16s_compare::ok#4 mul16s_compare::@3/(byte) 0 )
  [40] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5
  to:mul16s_compare::@7
mul16s_compare::@7: scope:[mul16s_compare]  from mul16s_compare::@4
  [41] *((const byte*) BGCOL) ← (byte) 2
  [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1
  [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1
  [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0
  [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0
  [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0
  [47] call mul16s_error 
  to:mul16s_compare::@return
mul16s_compare::@return: scope:[mul16s_compare]  from mul16s_compare::@14 mul16s_compare::@7
  [48] return 
  to:@return
mul16s_compare::@5: scope:[mul16s_compare]  from mul16s_compare::@4
  [49] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10
  [50] if((byte) mul16s_compare::j#1!=(byte) $10) goto mul16s_compare::@2
  to:mul16s_compare::@8
mul16s_compare::@8: scope:[mul16s_compare]  from mul16s_compare::@5
  [51] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12
  [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1
  to:mul16s_compare::@9
mul16s_compare::@9: scope:[mul16s_compare]  from mul16s_compare::@8
  [53] phi()
  [54] call print_ln 
  to:mul16s_compare::@13
mul16s_compare::@13: scope:[mul16s_compare]  from mul16s_compare::@9
  [55] (byte*) print_char_cursor#180 ← (byte*) print_line_cursor#1
  [56] call print_str 
  to:mul16s_compare::@14
mul16s_compare::@14: scope:[mul16s_compare]  from mul16s_compare::@13
  [57] phi()
  [58] call print_ln 
  to:mul16s_compare::@return

(void()) print_ln()
print_ln: scope:[print_ln]  from mul16s_compare::@14 mul16s_compare::@9 mul16s_error::@10 mul16u_compare::@14 mul16u_compare::@9 mul16u_error::@10
  [59] (byte*) print_char_cursor#133 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#132 mul16s_compare::@14/(byte*) print_char_cursor#132 mul16s_error::@10/(byte*) print_char_cursor#22 mul16u_compare::@9/(byte*) print_char_cursor#132 mul16u_compare::@14/(byte*) print_char_cursor#132 mul16u_error::@10/(byte*) print_char_cursor#22 )
  [59] (byte*) print_line_cursor#43 ← phi( mul16s_compare::@9/(byte*) print_line_cursor#1 mul16s_compare::@14/(byte*) print_line_cursor#1 mul16s_error::@10/(byte*) print_line_cursor#1 mul16u_compare::@9/(byte*) 1024 mul16u_compare::@14/(byte*) print_line_cursor#1 mul16u_error::@10/(byte*) 1024 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [60] (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 )
  [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28
  [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [63] return 
  to:@return

(void()) print_str((byte*) print_str::str)
print_str: scope:[print_str]  from mul16s_compare::@1 mul16s_compare::@13 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@13 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8
  [64] (byte*) print_char_cursor#154 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#149 mul16s_compare::@13/(byte*) print_char_cursor#180 mul16s_error/(byte*) print_char_cursor#132 mul16s_error::@2/(byte*) print_char_cursor#22 mul16s_error::@4/(byte*) print_char_cursor#22 mul16s_error::@6/(byte*) print_char_cursor#22 mul16s_error::@8/(byte*) print_char_cursor#22 mul16u_compare::@1/(byte*) print_char_cursor#145 mul16u_compare::@13/(byte*) print_char_cursor#187 mul16u_error/(byte*) print_char_cursor#132 mul16u_error::@2/(byte*) print_char_cursor#22 mul16u_error::@4/(byte*) print_char_cursor#22 mul16u_error::@6/(byte*) print_char_cursor#22 mul16u_error::@8/(byte*) print_char_cursor#22 )
  [64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const byte*) str mul16s_compare::@13/(const byte*) mul16s_compare::str1 mul16s_error/(const byte*) mul16s_error::str mul16s_error::@2/(const byte*) str1 mul16s_error::@4/(const byte*) str2 mul16s_error::@6/(const byte*) str3 mul16s_error::@8/(const byte*) str4 mul16u_compare::@1/(const byte*) str mul16u_compare::@13/(const byte*) mul16u_compare::str1 mul16u_error/(const byte*) mul16u_error::str mul16u_error::@2/(const byte*) str1 mul16u_error::@4/(const byte*) str2 mul16u_error::@6/(const byte*) str3 mul16u_error::@8/(const byte*) str4 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [65] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#154 print_str::@2/(byte*) print_char_cursor#1 )
  [65] (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 )
  [66] if((byte) 0!=*((byte*) print_str::str#15)) goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [67] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15)
  [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132
  [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15
  to:print_str::@1

(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
mul16s_error: scope:[mul16s_error]  from mul16s_compare::@7
  [71] phi()
  [72] call print_str 
  to:mul16s_error::@1
mul16s_error::@1: scope:[mul16s_error]  from mul16s_error
  [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0
  [74] call print_sword 
  to:mul16s_error::@2
mul16s_error::@2: scope:[mul16s_error]  from mul16s_error::@1
  [75] phi()
  [76] call print_str 
  to:mul16s_error::@3
mul16s_error::@3: scope:[mul16s_error]  from mul16s_error::@2
  [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0
  [78] call print_sword 
  to:mul16s_error::@4
mul16s_error::@4: scope:[mul16s_error]  from mul16s_error::@3
  [79] phi()
  [80] call print_str 
  to:mul16s_error::@5
mul16s_error::@5: scope:[mul16s_error]  from mul16s_error::@4
  [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0
  [82] call print_sdword 
  to:mul16s_error::@6
mul16s_error::@6: scope:[mul16s_error]  from mul16s_error::@5
  [83] phi()
  [84] call print_str 
  to:mul16s_error::@7
mul16s_error::@7: scope:[mul16s_error]  from mul16s_error::@6
  [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0
  [86] call print_sdword 
  to:mul16s_error::@8
mul16s_error::@8: scope:[mul16s_error]  from mul16s_error::@7
  [87] phi()
  [88] call print_str 
  to:mul16s_error::@9
mul16s_error::@9: scope:[mul16s_error]  from mul16s_error::@8
  [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0
  [90] call print_sdword 
  to:mul16s_error::@10
mul16s_error::@10: scope:[mul16s_error]  from mul16s_error::@9
  [91] phi()
  [92] call print_ln 
  to:mul16s_error::@return
mul16s_error::@return: scope:[mul16s_error]  from mul16s_error::@10
  [93] return 
  to:@return

(void()) print_sdword((signed dword) print_sdword::dw)
print_sdword: scope:[print_sdword]  from mul16s_error::@5 mul16s_error::@7 mul16s_error::@9
  [94] (signed dword) print_sdword::dw#4 ← phi( mul16s_error::@5/(signed dword) print_sdword::dw#1 mul16s_error::@7/(signed dword) print_sdword::dw#2 mul16s_error::@9/(signed dword) print_sdword::dw#3 )
  [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1
  to:print_sdword::@3
print_sdword::@3: scope:[print_sdword]  from print_sdword
  [96] phi()
  [97] call print_char 
  to:print_sdword::@2
print_sdword::@2: scope:[print_sdword]  from print_sdword::@3 print_sdword::@4
  [98] (signed dword) print_sdword::dw#6 ← phi( print_sdword::@4/(signed dword) print_sdword::dw#0 print_sdword::@3/(signed dword) print_sdword::dw#4 )
  [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6
  [100] call print_dword 
  to:print_sdword::@return
print_sdword::@return: scope:[print_sdword]  from print_sdword::@2
  [101] return 
  to:@return
print_sdword::@1: scope:[print_sdword]  from print_sdword
  [102] phi()
  [103] call print_char 
  to:print_sdword::@4
print_sdword::@4: scope:[print_sdword]  from print_sdword::@1
  [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4
  to:print_sdword::@2

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3
  [105] (byte*) print_char_cursor#88 ← phi( print_byte/(byte*) print_char_cursor#142 print_byte::@1/(byte*) print_char_cursor#22 print_sdword::@1/(byte*) print_char_cursor#132 print_sdword::@3/(byte*) print_char_cursor#132 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#132 )
  [105] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sdword::@1/(byte) '-' print_sdword::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
  [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6
  [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [108] return 
  to:@return

(void()) print_dword((dword) print_dword::dw)
print_dword: scope:[print_dword]  from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@2
  [109] (byte*) print_char_cursor#138 ← phi( mul16u_error::@5/(byte*) print_char_cursor#132 mul16u_error::@7/(byte*) print_char_cursor#132 mul16u_error::@9/(byte*) print_char_cursor#132 print_sdword::@2/(byte*) print_char_cursor#22 )
  [109] (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@2/(dword) print_dword::dw#0 )
  [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4
  [111] call print_word 
  to:print_dword::@1
print_dword::@1: scope:[print_dword]  from print_dword
  [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4
  [113] call print_word 
  to:print_dword::@return
print_dword::@return: scope:[print_dword]  from print_dword::@1
  [114] return 
  to:@return

(void()) print_word((word) print_word::w)
print_word: scope:[print_word]  from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2
  [115] (byte*) print_char_cursor#137 ← phi( mul16u_error::@1/(byte*) print_char_cursor#132 mul16u_error::@3/(byte*) print_char_cursor#132 print_dword/(byte*) print_char_cursor#138 print_dword::@1/(byte*) print_char_cursor#22 print_sword::@2/(byte*) print_char_cursor#22 )
  [115] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 )
  [116] (byte) print_byte::b#0 ← > (word) print_word::w#5
  [117] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [118] (byte) print_byte::b#1 ← < (word) print_word::w#5
  [119] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [120] return 
  to:@return

(void()) print_byte((byte) print_byte::b)
print_byte: scope:[print_byte]  from print_word print_word::@1
  [121] (byte*) print_char_cursor#142 ← phi( print_word/(byte*) print_char_cursor#137 print_word::@1/(byte*) print_char_cursor#22 )
  [121] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
  [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
  [123] (byte) print_char::ch#4 ← *((const byte*) print_hextab + (byte~) print_byte::$0)
  [124] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
  [126] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2)
  [127] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [128] return 
  to:@return

(void()) print_sword((signed word) print_sword::w)
print_sword: scope:[print_sword]  from mul16s_error::@1 mul16s_error::@3
  [129] (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 )
  [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1
  to:print_sword::@3
print_sword::@3: scope:[print_sword]  from print_sword
  [131] phi()
  [132] call print_char 
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword::@3 print_sword::@4
  [133] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 )
  [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5
  [135] call print_word 
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@2
  [136] return 
  to:@return
print_sword::@1: scope:[print_sword]  from print_sword
  [137] phi()
  [138] call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@1
  [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3
  to:print_sword::@2

(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
mulf16s: scope:[mulf16s]  from mul16s_compare::@11
  [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0
  [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0
  [142] call mulf16u 
  [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0
  to:mulf16s::@5
mulf16s::@5: scope:[mulf16s]  from mulf16s
  [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2
  [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1
  to:mulf16s::@3
mulf16s::@3: scope:[mulf16s]  from mulf16s::@5
  [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0
  [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0
  [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16
  to:mulf16s::@1
mulf16s::@1: scope:[mulf16s]  from mulf16s::@3 mulf16s::@5
  [149] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 )
  [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2
  to:mulf16s::@4
mulf16s::@4: scope:[mulf16s]  from mulf16s::@1
  [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5
  [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0
  [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17
  to:mulf16s::@2
mulf16s::@2: scope:[mulf16s]  from mulf16s::@1 mulf16s::@4
  [154] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 )
  [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4
  to:mulf16s::@return
mulf16s::@return: scope:[mulf16s]  from mulf16s::@2
  [156] return 
  to:@return

(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
mulf16u: scope:[mulf16u]  from mul16u_compare::@11 mulf16s
  [157] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 )
  [157] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 )
  [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2
  [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2
  asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !:  }
  [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR)
  to:mulf16u::@return
mulf16u::@return: scope:[mulf16u]  from mulf16u
  [162] return 
  to:@return

(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
mul16s: scope:[mul16s]  from mul16s_compare::@10
  [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0
  [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0
  [165] call mul16u 
  [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2
  to:mul16s::@5
mul16s::@5: scope:[mul16s]  from mul16s
  [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2
  [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1
  to:mul16s::@3
mul16s::@3: scope:[mul16s]  from mul16s::@5
  [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0
  [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0
  [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
  to:mul16s::@1
mul16s::@1: scope:[mul16s]  from mul16s::@3 mul16s::@5
  [172] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
  [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2
  to:mul16s::@4
mul16s::@4: scope:[mul16s]  from mul16s::@1
  [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5
  [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0
  [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
  to:mul16s::@2
mul16s::@2: scope:[mul16s]  from mul16s::@1 mul16s::@4
  [177] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
  [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
  to:mul16s::@return
mul16s::@return: scope:[mul16s]  from mul16s::@2
  [179] return 
  to:@return

(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
mul16u: scope:[mul16u]  from mul16s mul16u_compare::@10
  [180] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 )
  [180] (word) mul16u::b#2 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 )
  [181] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2
  to:mul16u::@1
mul16u::@1: scope:[mul16u]  from mul16u mul16u::@3
  [182] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
  [182] (dword) mul16u::res#2 ← phi( mul16u/(dword) 0 mul16u::@3/(dword) mul16u::res#6 )
  [182] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
  [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
  to:mul16u::@return
mul16u::@return: scope:[mul16u]  from mul16u::@1
  [184] return 
  to:@return
mul16u::@2: scope:[mul16u]  from mul16u::@1
  [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
  [186] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
  to:mul16u::@4
mul16u::@4: scope:[mul16u]  from mul16u::@2
  [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
  to:mul16u::@3
mul16u::@3: scope:[mul16u]  from mul16u::@2 mul16u::@4
  [188] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
  [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
  [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
  to:mul16u::@1

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

(void()) mul16u_compare()
mul16u_compare: scope:[mul16u_compare]  from main::@2
  [203] phi()
  to:mul16u_compare::@1
mul16u_compare::@1: scope:[mul16u_compare]  from mul16u_compare mul16u_compare::@8
  [204] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 )
  [204] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(word) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 )
  [204] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(word) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 )
  [204] (byte*) print_char_cursor#145 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#132 )
  [205] call print_str 
  to:mul16u_compare::@2
mul16u_compare::@2: scope:[mul16u_compare]  from mul16u_compare::@1 mul16u_compare::@5
  [206] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 )
  [206] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 )
  [206] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 )
  [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b
  [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd
  [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1
  [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1
  [211] call muls16u 
  [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0
  to:mul16u_compare::@10
mul16u_compare::@10: scope:[mul16u_compare]  from mul16u_compare::@2
  [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2
  [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1
  [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1
  [216] call mul16u 
  [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2
  to:mul16u_compare::@11
mul16u_compare::@11: scope:[mul16u_compare]  from mul16u_compare::@10
  [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3
  [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1
  [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1
  [221] call mulf16u 
  [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0
  to:mul16u_compare::@12
mul16u_compare::@12: scope:[mul16u_compare]  from mul16u_compare::@11
  [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3
  [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3
  to:mul16u_compare::@6
mul16u_compare::@6: scope:[mul16u_compare]  from mul16u_compare::@12
  [225] phi()
  to:mul16u_compare::@3
mul16u_compare::@3: scope:[mul16u_compare]  from mul16u_compare::@12 mul16u_compare::@6
  [226] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 )
  [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15
  to:mul16u_compare::@4
mul16u_compare::@15: scope:[mul16u_compare]  from mul16u_compare::@3
  [228] phi()
  to:mul16u_compare::@4
mul16u_compare::@4: scope:[mul16u_compare]  from mul16u_compare::@15 mul16u_compare::@3
  [229] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 )
  [230] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5
  to:mul16u_compare::@7
mul16u_compare::@7: scope:[mul16u_compare]  from mul16u_compare::@4
  [231] *((const byte*) BGCOL) ← (byte) 2
  [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1
  [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1
  [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0
  [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0
  [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0
  [237] call mul16u_error 
  to:mul16u_compare::@return
mul16u_compare::@return: scope:[mul16u_compare]  from mul16u_compare::@14 mul16u_compare::@7
  [238] return 
  to:@return
mul16u_compare::@5: scope:[mul16u_compare]  from mul16u_compare::@4
  [239] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10
  [240] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2
  to:mul16u_compare::@8
mul16u_compare::@8: scope:[mul16u_compare]  from mul16u_compare::@5
  [241] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12
  [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1
  to:mul16u_compare::@9
mul16u_compare::@9: scope:[mul16u_compare]  from mul16u_compare::@8
  [243] phi()
  [244] call print_ln 
  to:mul16u_compare::@13
mul16u_compare::@13: scope:[mul16u_compare]  from mul16u_compare::@9
  [245] (byte*) print_char_cursor#187 ← (byte*) print_line_cursor#1
  [246] call print_str 
  to:mul16u_compare::@14
mul16u_compare::@14: scope:[mul16u_compare]  from mul16u_compare::@13
  [247] phi()
  [248] call print_ln 
  to:mul16u_compare::@return

(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
mul16u_error: scope:[mul16u_error]  from mul16u_compare::@7
  [249] phi()
  [250] call print_str 
  to:mul16u_error::@1
mul16u_error::@1: scope:[mul16u_error]  from mul16u_error
  [251] (word) print_word::w#3 ← (word) mul16u_error::a#0
  [252] call print_word 
  to:mul16u_error::@2
mul16u_error::@2: scope:[mul16u_error]  from mul16u_error::@1
  [253] phi()
  [254] call print_str 
  to:mul16u_error::@3
mul16u_error::@3: scope:[mul16u_error]  from mul16u_error::@2
  [255] (word) print_word::w#4 ← (word) mul16u_error::b#0
  [256] call print_word 
  to:mul16u_error::@4
mul16u_error::@4: scope:[mul16u_error]  from mul16u_error::@3
  [257] phi()
  [258] call print_str 
  to:mul16u_error::@5
mul16u_error::@5: scope:[mul16u_error]  from mul16u_error::@4
  [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0
  [260] call print_dword 
  to:mul16u_error::@6
mul16u_error::@6: scope:[mul16u_error]  from mul16u_error::@5
  [261] phi()
  [262] call print_str 
  to:mul16u_error::@7
mul16u_error::@7: scope:[mul16u_error]  from mul16u_error::@6
  [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0
  [264] call print_dword 
  to:mul16u_error::@8
mul16u_error::@8: scope:[mul16u_error]  from mul16u_error::@7
  [265] phi()
  [266] call print_str 
  to:mul16u_error::@9
mul16u_error::@9: scope:[mul16u_error]  from mul16u_error::@8
  [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0
  [268] call print_dword 
  to:mul16u_error::@10
mul16u_error::@10: scope:[mul16u_error]  from mul16u_error::@9
  [269] phi()
  [270] call print_ln 
  to:mul16u_error::@return
mul16u_error::@return: scope:[mul16u_error]  from mul16u_error::@10
  [271] return 
  to:@return

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

(void()) mulf_init()
mulf_init: scope:[mulf_init]  from main::@1
  [279] phi()
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@3
  [280] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
  [280] (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 )
  [280] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
  [280] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
  [280] (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 )
  [281] 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
  [282] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff )
  [282] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi )
  [282] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 )
  [282] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo )
  [283] 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
  [284] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100)
  [285] *((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
  [286] return 
  to:@return
mulf_init::@6: scope:[mulf_init]  from mulf_init::@5
  [287] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2)
  [288] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2)
  [289] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  [290] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  [291] 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
  [292] phi()
  to:mulf_init::@8
mulf_init::@8: scope:[mulf_init]  from mulf_init::@6 mulf_init::@9
  [293] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 )
  [294] (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
  [295] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  [296] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1
  [297] 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
  [298] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
  [299] (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
  [300] (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 )
  [300] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 )
  [301] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3
  [302] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4
  [303] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3
  [304] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5
  [305] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  [306] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  [307] (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
  [308] phi()
  [309] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [310] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  [311] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [312] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
  [313] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [314] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [316] (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 dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
(word~) mul16s::$13 4.0
(word~) mul16s::$16 4.0
(word~) mul16s::$17 4.0
(word~) mul16s::$9 4.0
(signed word) mul16s::a
(signed word) mul16s::a#0 7.357142857142858
(signed word) mul16s::b
(signed word) mul16s::b#0 9.363636363636363
(dword) mul16s::m
(dword) mul16s::m#0 2.0
(dword) mul16s::m#1 4.0
(dword) mul16s::m#2 4.0
(dword) mul16s::m#4 4.0
(dword) mul16s::m#5 2.5
(signed dword) mul16s::return
(signed dword) mul16s::return#0 34.33333333333333
(signed dword) mul16s::return#2 202.0
(void()) mul16s_compare()
(signed word) mul16s_compare::a
(signed word) mul16s_compare::a#1 17.862068965517242
(signed word) mul16s_compare::a#2 213.0
(signed word) mul16s_compare::a#6 11.0
(signed word) mul16s_compare::b
(signed word) mul16s_compare::b#1 17.862068965517242
(signed word) mul16s_compare::b#2 106.5
(signed word) mul16s_compare::b#6 11.0
(byte) mul16s_compare::i
(byte) mul16s_compare::i#1 16.5
(byte) mul16s_compare::i#12 0.7586206896551724
(byte) mul16s_compare::j
(byte) mul16s_compare::j#1 151.5
(byte) mul16s_compare::j#10 8.08
(signed dword) mul16s_compare::mf
(signed dword) mul16s_compare::mf#0 15.692307692307692
(signed dword) mul16s_compare::mn
(signed dword) mul16s_compare::mn#0 12.0
(signed dword) mul16s_compare::ms
(signed dword) mul16s_compare::ms#0 14.523809523809522
(byte) mul16s_compare::ok
(byte) mul16s_compare::ok#3 202.0
(byte) mul16s_compare::ok#4 33.666666666666664
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
(signed word) mul16s_error::a
(signed word) mul16s_error::a#0 0.5714285714285714
(signed word) mul16s_error::b
(signed word) mul16s_error::b#0 0.4
(signed dword) mul16s_error::mf
(signed dword) mul16s_error::mf#0 0.21052631578947367
(signed dword) mul16s_error::mn
(signed dword) mul16s_error::mn#0 0.25
(signed dword) mul16s_error::ms
(signed dword) mul16s_error::ms#0 0.3076923076923077
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 2002.0
(word) mul16u::a
(word) mul16u::a#0 1001.0
(word) mul16u::a#1 2.0
(word) mul16u::a#2 101.0
(word) mul16u::a#3 667.6666666666667
(word) mul16u::a#6 52.5
(word) mul16u::b
(word) mul16u::b#0 4.0
(word) mul16u::b#1 202.0
(word) mul16u::b#2 103.0
(dword) mul16u::mb
(dword) mul16u::mb#0 4.0
(dword) mul16u::mb#1 2002.0
(dword) mul16u::mb#2 429.2857142857143
(dword) mul16u::res
(dword) mul16u::res#1 2002.0
(dword) mul16u::res#2 443.7142857142857
(dword) mul16u::res#6 1001.0
(dword) mul16u::return
(dword) mul16u::return#2 4.0
(dword) mul16u::return#3 202.0
(void()) mul16u_compare()
(word) mul16u_compare::a
(word) mul16u_compare::a#1 17.862068965517242
(word) mul16u_compare::a#2 213.0
(word) mul16u_compare::a#6 11.0
(word) mul16u_compare::b
(word) mul16u_compare::b#1 17.862068965517242
(word) mul16u_compare::b#2 106.5
(word) mul16u_compare::b#6 11.0
(byte) mul16u_compare::i
(byte) mul16u_compare::i#1 16.5
(byte) mul16u_compare::i#12 0.7586206896551724
(byte) mul16u_compare::j
(byte) mul16u_compare::j#1 151.5
(byte) mul16u_compare::j#10 8.08
(dword) mul16u_compare::mf
(dword) mul16u_compare::mf#0 15.692307692307692
(dword) mul16u_compare::mn
(dword) mul16u_compare::mn#0 12.0
(dword) mul16u_compare::ms
(dword) mul16u_compare::ms#0 14.523809523809522
(byte) mul16u_compare::ok
(byte) mul16u_compare::ok#3 202.0
(byte) mul16u_compare::ok#4 33.666666666666664
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
(word) mul16u_error::a
(word) mul16u_error::a#0 0.5714285714285714
(word) mul16u_error::b
(word) mul16u_error::b#0 0.4
(dword) mul16u_error::mf
(dword) mul16u_error::mf#0 0.21052631578947367
(dword) mul16u_error::mn
(dword) mul16u_error::mn#0 0.25
(dword) mul16u_error::ms
(dword) mul16u_error::ms#0 0.3076923076923077
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
(word~) mulf16s::$13 4.0
(word~) mulf16s::$16 4.0
(word~) mulf16s::$17 4.0
(word~) mulf16s::$9 4.0
(signed word) mulf16s::a
(signed word) mulf16s::a#0 7.357142857142858
(signed word) mulf16s::b
(signed word) mulf16s::b#0 9.363636363636363
(dword) mulf16s::m
(dword) mulf16s::m#0 2.0
(dword) mulf16s::m#1 4.0
(dword) mulf16s::m#2 4.0
(dword) mulf16s::m#4 4.0
(dword) mulf16s::m#5 2.5
(signed dword) mulf16s::return
(signed dword) mulf16s::return#0 34.33333333333333
(signed dword) mulf16s::return#2 202.0
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
(word) mulf16u::a
(word) mulf16u::a#0 2.0
(word) mulf16u::a#1 101.0
(word) mulf16u::a#2 105.0
(word) mulf16u::b
(word) mulf16u::b#0 4.0
(word) mulf16u::b#1 202.0
(word) mulf16u::b#2 52.5
(dword) mulf16u::return
(dword) mulf16u::return#0 26.25
(dword) mulf16u::return#2 4.0
(dword) mulf16u::return#3 202.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
(signed dword()) muls16s((signed word) muls16s::a , (signed word) muls16s::b)
(signed word) muls16s::a
(signed word) muls16s::a#0 175.58333333333334
(signed word) muls16s::b
(signed word) muls16s::b#0 191.1818181818182
(signed word) muls16s::i
(signed word) muls16s::i#1 2002.0
(signed word) muls16s::i#2 1001.0
(signed word) muls16s::j
(signed word) muls16s::j#1 2002.0
(signed word) muls16s::j#2 1001.0
(signed dword) muls16s::m
(signed dword) muls16s::m#1 1001.0
(signed dword) muls16s::m#2 1001.0
(signed dword) muls16s::m#3 1501.5
(signed dword) muls16s::m#5 1501.5
(signed dword) muls16s::return
(signed dword) muls16s::return#0 701.0
(signed dword) muls16s::return#2 202.0
(dword()) muls16u((word) muls16u::a , (word) muls16u::b)
(word) muls16u::a
(word) muls16u::a#0 157.71428571428572
(word) muls16u::b
(word) muls16u::b#0 183.66666666666669
(word) muls16u::i
(word) muls16u::i#1 2002.0
(word) muls16u::i#2 1001.0
(dword) muls16u::m
(dword) muls16u::m#1 1001.0
(dword) muls16u::m#3 1501.5
(dword) muls16u::return
(dword) muls16u::return#0 367.33333333333337
(dword) muls16u::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 2.0
(void()) print_char((byte) print_char::ch)
(byte) print_char::ch
(byte) print_char::ch#4 4.0
(byte) print_char::ch#5 4.0
(byte) print_char::ch#6 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 101.0
(byte*) print_char_cursor#132 3.1874999999999996
(byte*) print_char_cursor#133 5.75
(byte*) print_char_cursor#137 6.0
(byte*) print_char_cursor#138 5.0
(byte*) print_char_cursor#142 2.0
(byte*) print_char_cursor#145 22.0
(byte*) print_char_cursor#149 24.0
(byte*) print_char_cursor#154 48.0
(byte*) print_char_cursor#180 4.0
(byte*) print_char_cursor#187 4.0
(byte*) print_char_cursor#219 4.0
(byte*) print_char_cursor#22 0.653061224489796
(byte*) print_char_cursor#88 8.0
(void()) print_cls()
(void()) print_dword((dword) print_dword::dw)
(dword) print_dword::dw
(dword) print_dword::dw#0 4.0
(dword) print_dword::dw#1 4.0
(dword) print_dword::dw#2 4.0
(dword) print_dword::dw#3 4.0
(dword) print_dword::dw#4 3.9999999999999996
(byte*) print_line_cursor
(byte*) print_line_cursor#1 0.6025641025641025
(byte*) print_line_cursor#22 24.0
(byte*) print_line_cursor#43 10.0
(void()) print_ln()
(byte*) print_screen
(void()) print_sdword((signed dword) print_sdword::dw)
(signed dword) print_sdword::dw
(signed dword) print_sdword::dw#0 4.0
(signed dword) print_sdword::dw#1 4.0
(signed dword) print_sdword::dw#2 4.0
(signed dword) print_sdword::dw#3 4.0
(signed dword) print_sdword::dw#4 1.9999999999999998
(signed dword) print_sdword::dw#6 4.0
(void()) print_str((byte*) print_str::str)
(byte*) print_str::str
(byte*) print_str::str#0 202.0
(byte*) print_str::str#15 101.5
(byte*) print_str::str#17 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 1.6666666666666665
(signed word) print_sword::w#5 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.666666666666666

Initial phi equivalence classes
[ mul16s_compare::i#12 mul16s_compare::i#1 ]
[ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ]
[ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ]
[ mul16s_compare::j#10 mul16s_compare::j#1 ]
[ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
[ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ]
[ print_str::str#15 print_str::str#17 print_str::str#0 ]
[ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ]
[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
[ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ]
[ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ]
[ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ]
[ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
[ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ]
[ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ]
[ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ]
[ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ]
[ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ]
[ mul16u::b#2 mul16u::b#0 mul16u::b#1 ]
[ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
[ mul16u::res#2 mul16u::res#6 mul16u::res#1 ]
[ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
[ muls16s::j#2 muls16s::j#1 ]
[ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ]
[ muls16s::i#2 muls16s::i#1 ]
[ mul16u_compare::i#12 mul16u_compare::i#1 ]
[ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ]
[ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ]
[ mul16u_compare::j#10 mul16u_compare::j#1 ]
[ mul16u_compare::ok#3 mul16u_compare::ok#4 ]
[ muls16u::i#2 muls16u::i#1 ]
[ muls16u::return#0 muls16u::m#3 muls16u::m#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 muls16s::a#0 to live range equivalence class [ muls16s::a#0 ]
Added variable muls16s::b#0 to live range equivalence class [ muls16s::b#0 ]
Added variable muls16s::return#2 to live range equivalence class [ muls16s::return#2 ]
Added variable mul16s_compare::ms#0 to live range equivalence class [ mul16s_compare::ms#0 ]
Added variable mul16s::a#0 to live range equivalence class [ mul16s::a#0 ]
Added variable mul16s::b#0 to live range equivalence class [ mul16s::b#0 ]
Added variable mul16s::return#2 to live range equivalence class [ mul16s::return#2 ]
Added variable mul16s_compare::mn#0 to live range equivalence class [ mul16s_compare::mn#0 ]
Added variable mulf16s::a#0 to live range equivalence class [ mulf16s::a#0 ]
Added variable mulf16s::b#0 to live range equivalence class [ mulf16s::b#0 ]
Added variable mulf16s::return#2 to live range equivalence class [ mulf16s::return#2 ]
Added variable mul16s_compare::mf#0 to live range equivalence class [ mul16s_compare::mf#0 ]
Added variable mul16s_error::a#0 to live range equivalence class [ mul16s_error::a#0 ]
Added variable mul16s_error::b#0 to live range equivalence class [ mul16s_error::b#0 ]
Added variable mul16s_error::ms#0 to live range equivalence class [ mul16s_error::ms#0 ]
Added variable mul16s_error::mn#0 to live range equivalence class [ mul16s_error::mn#0 ]
Added variable mul16s_error::mf#0 to live range equivalence class [ mul16s_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 mulf16u::return#2 to live range equivalence class [ mulf16u::return#2 ]
Added variable mulf16s::$9 to live range equivalence class [ mulf16s::$9 ]
Added variable mulf16s::$16 to live range equivalence class [ mulf16s::$16 ]
Added variable mulf16s::$13 to live range equivalence class [ mulf16s::$13 ]
Added variable mulf16s::$17 to live range equivalence class [ mulf16s::$17 ]
Added variable mulf16s::return#0 to live range equivalence class [ mulf16s::return#0 ]
Added variable mulf16u::return#0 to live range equivalence class [ mulf16u::return#0 ]
Added variable mul16u::return#2 to live range equivalence class [ mul16u::return#2 ]
Added variable mul16s::$9 to live range equivalence class [ mul16s::$9 ]
Added variable mul16s::$16 to live range equivalence class [ mul16s::$16 ]
Added variable mul16s::$13 to live range equivalence class [ mul16s::$13 ]
Added variable mul16s::$17 to live range equivalence class [ mul16s::$17 ]
Added variable mul16s::return#0 to live range equivalence class [ mul16s::return#0 ]
Added variable mul16u::$1 to live range equivalence class [ mul16u::$1 ]
Added variable muls16u::a#0 to live range equivalence class [ muls16u::a#0 ]
Added variable muls16u::b#0 to live range equivalence class [ muls16u::b#0 ]
Added variable muls16u::return#2 to live range equivalence class [ muls16u::return#2 ]
Added variable mul16u_compare::ms#0 to live range equivalence class [ mul16u_compare::ms#0 ]
Added variable mul16u::return#3 to live range equivalence class [ mul16u::return#3 ]
Added variable mul16u_compare::mn#0 to live range equivalence class [ mul16u_compare::mn#0 ]
Added variable mulf16u::return#3 to live range equivalence class [ mulf16u::return#3 ]
Added variable mul16u_compare::mf#0 to live range equivalence class [ mul16u_compare::mf#0 ]
Added variable mul16u_error::a#0 to live range equivalence class [ mul16u_error::a#0 ]
Added variable mul16u_error::b#0 to live range equivalence class [ mul16u_error::b#0 ]
Added variable mul16u_error::ms#0 to live range equivalence class [ mul16u_error::ms#0 ]
Added variable mul16u_error::mn#0 to live range equivalence class [ mul16u_error::mn#0 ]
Added variable mul16u_error::mf#0 to live range equivalence class [ mul16u_error::mf#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
[ mul16s_compare::i#12 mul16s_compare::i#1 ]
[ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ]
[ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ]
[ mul16s_compare::j#10 mul16s_compare::j#1 ]
[ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
[ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ]
[ print_str::str#15 print_str::str#17 print_str::str#0 ]
[ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ]
[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
[ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ]
[ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ]
[ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ]
[ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
[ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ]
[ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ]
[ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ]
[ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ]
[ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ]
[ mul16u::b#2 mul16u::b#0 mul16u::b#1 ]
[ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
[ mul16u::res#2 mul16u::res#6 mul16u::res#1 ]
[ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
[ muls16s::j#2 muls16s::j#1 ]
[ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ]
[ muls16s::i#2 muls16s::i#1 ]
[ mul16u_compare::i#12 mul16u_compare::i#1 ]
[ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ]
[ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ]
[ mul16u_compare::j#10 mul16u_compare::j#1 ]
[ mul16u_compare::ok#3 mul16u_compare::ok#4 ]
[ muls16u::i#2 muls16u::i#1 ]
[ muls16u::return#0 muls16u::m#3 muls16u::m#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 ]
[ muls16s::a#0 ]
[ muls16s::b#0 ]
[ muls16s::return#2 ]
[ mul16s_compare::ms#0 ]
[ mul16s::a#0 ]
[ mul16s::b#0 ]
[ mul16s::return#2 ]
[ mul16s_compare::mn#0 ]
[ mulf16s::a#0 ]
[ mulf16s::b#0 ]
[ mulf16s::return#2 ]
[ mul16s_compare::mf#0 ]
[ mul16s_error::a#0 ]
[ mul16s_error::b#0 ]
[ mul16s_error::ms#0 ]
[ mul16s_error::mn#0 ]
[ mul16s_error::mf#0 ]
[ print_byte::$0 ]
[ print_byte::$2 ]
[ mulf16u::return#2 ]
[ mulf16s::$9 ]
[ mulf16s::$16 ]
[ mulf16s::$13 ]
[ mulf16s::$17 ]
[ mulf16s::return#0 ]
[ mulf16u::return#0 ]
[ mul16u::return#2 ]
[ mul16s::$9 ]
[ mul16s::$16 ]
[ mul16s::$13 ]
[ mul16s::$17 ]
[ mul16s::return#0 ]
[ mul16u::$1 ]
[ muls16u::a#0 ]
[ muls16u::b#0 ]
[ muls16u::return#2 ]
[ mul16u_compare::ms#0 ]
[ mul16u::return#3 ]
[ mul16u_compare::mn#0 ]
[ mulf16u::return#3 ]
[ mul16u_compare::mf#0 ]
[ mul16u_error::a#0 ]
[ mul16u_error::b#0 ]
[ mul16u_error::ms#0 ]
[ mul16u_error::mn#0 ]
[ mul16u_error::mf#0 ]
[ mulf_init::$1 ]
[ mulf_init::$4 ]
[ mulf_init::$5 ]
Allocated zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ]
Allocated zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ]
Allocated zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ]
Allocated zp[1]:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ]
Allocated zp[1]:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
Allocated zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ]
Allocated zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ]
Allocated zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ]
Allocated zp[1]:17 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
Allocated zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ]
Allocated zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ]
Allocated zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ]
Allocated zp[1]:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
Allocated zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ]
Allocated zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ]
Allocated zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ]
Allocated zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ]
Allocated zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ]
Allocated zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ]
Allocated zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
Allocated zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ]
Allocated zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
Allocated zp[2]:53 [ muls16s::j#2 muls16s::j#1 ]
Allocated zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ]
Allocated zp[2]:59 [ muls16s::i#2 muls16s::i#1 ]
Allocated zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ]
Allocated zp[2]:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ]
Allocated zp[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ]
Allocated zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ]
Allocated zp[1]:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ]
Allocated zp[2]:68 [ muls16u::i#2 muls16u::i#1 ]
Allocated zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ]
Allocated zp[2]:74 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ]
Allocated zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ]
Allocated zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ]
Allocated zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Allocated zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ]
Allocated zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Allocated zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
Allocated zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ]
Allocated zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
Allocated zp[2]:88 [ memset::dst#2 memset::dst#1 ]
Allocated zp[2]:90 [ muls16s::a#0 ]
Allocated zp[2]:92 [ muls16s::b#0 ]
Allocated zp[4]:94 [ muls16s::return#2 ]
Allocated zp[4]:98 [ mul16s_compare::ms#0 ]
Allocated zp[2]:102 [ mul16s::a#0 ]
Allocated zp[2]:104 [ mul16s::b#0 ]
Allocated zp[4]:106 [ mul16s::return#2 ]
Allocated zp[4]:110 [ mul16s_compare::mn#0 ]
Allocated zp[2]:114 [ mulf16s::a#0 ]
Allocated zp[2]:116 [ mulf16s::b#0 ]
Allocated zp[4]:118 [ mulf16s::return#2 ]
Allocated zp[4]:122 [ mul16s_compare::mf#0 ]
Allocated zp[2]:126 [ mul16s_error::a#0 ]
Allocated zp[2]:128 [ mul16s_error::b#0 ]
Allocated zp[4]:130 [ mul16s_error::ms#0 ]
Allocated zp[4]:134 [ mul16s_error::mn#0 ]
Allocated zp[4]:138 [ mul16s_error::mf#0 ]
Allocated zp[1]:142 [ print_byte::$0 ]
Allocated zp[1]:143 [ print_byte::$2 ]
Allocated zp[4]:144 [ mulf16u::return#2 ]
Allocated zp[2]:148 [ mulf16s::$9 ]
Allocated zp[2]:150 [ mulf16s::$16 ]
Allocated zp[2]:152 [ mulf16s::$13 ]
Allocated zp[2]:154 [ mulf16s::$17 ]
Allocated zp[4]:156 [ mulf16s::return#0 ]
Allocated zp[4]:160 [ mulf16u::return#0 ]
Allocated zp[4]:164 [ mul16u::return#2 ]
Allocated zp[2]:168 [ mul16s::$9 ]
Allocated zp[2]:170 [ mul16s::$16 ]
Allocated zp[2]:172 [ mul16s::$13 ]
Allocated zp[2]:174 [ mul16s::$17 ]
Allocated zp[4]:176 [ mul16s::return#0 ]
Allocated zp[1]:180 [ mul16u::$1 ]
Allocated zp[2]:181 [ muls16u::a#0 ]
Allocated zp[2]:183 [ muls16u::b#0 ]
Allocated zp[4]:185 [ muls16u::return#2 ]
Allocated zp[4]:189 [ mul16u_compare::ms#0 ]
Allocated zp[4]:193 [ mul16u::return#3 ]
Allocated zp[4]:197 [ mul16u_compare::mn#0 ]
Allocated zp[4]:201 [ mulf16u::return#3 ]
Allocated zp[4]:205 [ mul16u_compare::mf#0 ]
Allocated zp[2]:209 [ mul16u_error::a#0 ]
Allocated zp[2]:211 [ mul16u_error::b#0 ]
Allocated zp[4]:213 [ mul16u_error::ms#0 ]
Allocated zp[4]:217 [ mul16u_error::mn#0 ]
Allocated zp[4]:221 [ mul16u_error::mf#0 ]
Allocated zp[1]:225 [ mulf_init::$1 ]
Allocated zp[1]:226 [ mulf_init::$4 ]
Allocated zp[1]:227 [ 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 = $18
  .label print_line_cursor = 9
  // @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 
    // [308] 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 
    // [279] 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 mul16u_compare 
    // [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare]
  mul16u_compare_from___b2:
    jsr mul16u_compare
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  __b3_from___b2:
    jmp __b3
    // main::@3
  __b3:
    // [11] call mul16s_compare 
    jsr mul16s_compare
    jmp __breturn
    // main::@return
  __breturn:
    // [12] return 
    rts
}
  // mul16s_compare
// Perform many possible word multiplications (slow and fast) and compare the results
mul16s_compare: {
    .label a = 3
    .label b = 5
    .label ms = $62
    .label mn = $6e
    .label mf = $7a
    .label j = 7
    .label i = 2
    .label ok = 8
    // [13] (byte*) print_char_cursor#219 ← (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
    // [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1]
  __b1_from_mul16s_compare:
    // [14] phi (byte) mul16s_compare::i#12 = (byte) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [14] phi (signed word) mul16s_compare::b#6 = (signed word) -$7fff [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 
    lda #<-$7fff
    sta.z b
    lda #>-$7fff
    sta.z b+1
    // [14] phi (signed word) mul16s_compare::a#6 = (signed word) -$7fff [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 
    lda #<-$7fff
    sta.z a
    lda #>-$7fff
    sta.z a+1
    // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#219 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy 
    jmp __b1
    // [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1]
  __b1_from___b8:
    // [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy 
    // [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy 
    // [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy 
    // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy 
    jmp __b1
    // mul16s_compare::@1
  __b1:
    // [15] call print_str 
    // [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str]
  print_str_from___b1:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#149 [phi:mul16s_compare::@1->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2]
  __b2_from___b1:
    // [16] phi (byte) mul16s_compare::j#10 = (byte) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy 
    // [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy 
    jmp __b2
    // [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2]
  __b2_from___b5:
    // [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy 
    // [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy 
    // [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy 
    jmp __b2
    // mul16s_compare::@2
  __b2:
    // [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b -- vwsz1=vwsz1_plus_vwsc1 
    clc
    lda.z a
    adc #<$d2b
    sta.z a
    lda.z a+1
    adc #>$d2b
    sta.z a+1
    // [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd -- vwsz1=vwsz1_plus_vwsc1 
    clc
    lda.z b
    adc #<$ffd
    sta.z b
    lda.z b+1
    adc #>$ffd
    sta.z b+1
    // [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 
    lda.z a
    sta.z muls16s.a
    lda.z a+1
    sta.z muls16s.a+1
    // [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 
    lda.z b
    sta.z muls16s.b
    lda.z b+1
    sta.z muls16s.b+1
    // [21] call muls16s 
    jsr muls16s
    // [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 -- vdsz1=vdsz2 
    lda.z muls16s.return
    sta.z muls16s.return_1
    lda.z muls16s.return+1
    sta.z muls16s.return_1+1
    lda.z muls16s.return+2
    sta.z muls16s.return_1+2
    lda.z muls16s.return+3
    sta.z muls16s.return_1+3
    jmp __b10
    // mul16s_compare::@10
  __b10:
    // [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 -- vdsz1=vdsz2 
    lda.z muls16s.return_1
    sta.z ms
    lda.z muls16s.return_1+1
    sta.z ms+1
    lda.z muls16s.return_1+2
    sta.z ms+2
    lda.z muls16s.return_1+3
    sta.z ms+3
    // [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 
    lda.z a
    sta.z mul16s.a
    lda.z a+1
    sta.z mul16s.a+1
    // [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 
    lda.z b
    sta.z mul16s.b
    lda.z b+1
    sta.z mul16s.b+1
    // [26] call mul16s 
    jsr mul16s
    // [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 
    lda.z mul16s.return
    sta.z mul16s.return_1
    lda.z mul16s.return+1
    sta.z mul16s.return_1+1
    lda.z mul16s.return+2
    sta.z mul16s.return_1+2
    lda.z mul16s.return+3
    sta.z mul16s.return_1+3
    jmp __b11
    // mul16s_compare::@11
  __b11:
    // [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 
    lda.z mul16s.return_1
    sta.z mn
    lda.z mul16s.return_1+1
    sta.z mn+1
    lda.z mul16s.return_1+2
    sta.z mn+2
    lda.z mul16s.return_1+3
    sta.z mn+3
    // [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 
    lda.z a
    sta.z mulf16s.a
    lda.z a+1
    sta.z mulf16s.a+1
    // [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 
    lda.z b
    sta.z mulf16s.b
    lda.z b+1
    sta.z mulf16s.b+1
    // [31] call mulf16s 
    jsr mulf16s
    // [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 -- vdsz1=vdsz2 
    lda.z mulf16s.return
    sta.z mulf16s.return_1
    lda.z mulf16s.return+1
    sta.z mulf16s.return_1+1
    lda.z mulf16s.return+2
    sta.z mulf16s.return_1+2
    lda.z mulf16s.return+3
    sta.z mulf16s.return_1+3
    jmp __b12
    // mul16s_compare::@12
  __b12:
    // [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 -- vdsz1=vdsz2 
    lda.z mulf16s.return_1
    sta.z mf
    lda.z mulf16s.return_1+1
    sta.z mf+1
    lda.z mulf16s.return_1+2
    sta.z mf+2
    lda.z mulf16s.return_1+3
    sta.z mf+3
    // [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    bne !+
    lda.z ms+2
    cmp.z mf+2
    bne !+
    lda.z ms+3
    cmp.z mf+3
    beq __b3_from___b12
  !:
    // [35] phi from mul16s_compare::@12 to mul16s_compare::@6 [phi:mul16s_compare::@12->mul16s_compare::@6]
  __b6_from___b12:
    jmp __b6
    // mul16s_compare::@6
  __b6:
    // [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3]
  __b3_from___b6:
    // [36] phi (byte) mul16s_compare::ok#4 = (byte) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z ok
    jmp __b3
    // [36] phi from mul16s_compare::@12 to mul16s_compare::@3 [phi:mul16s_compare::@12->mul16s_compare::@3]
  __b3_from___b12:
    // [36] phi (byte) mul16s_compare::ok#4 = (byte) 1 [phi:mul16s_compare::@12->mul16s_compare::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z ok
    jmp __b3
    // mul16s_compare::@3
  __b3:
    // [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 -- vdsz1_eq_vdsz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    bne !+
    lda.z ms+2
    cmp.z mn+2
    bne !+
    lda.z ms+3
    cmp.z mn+3
    beq __b15_from___b3
  !:
    // [39] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4]
  __b4_from___b3:
    // [39] phi (byte) mul16s_compare::ok#3 = (byte) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuz1=vbuc1 
    lda #0
    sta.z ok
    jmp __b4
    // [38] phi from mul16s_compare::@3 to mul16s_compare::@15 [phi:mul16s_compare::@3->mul16s_compare::@15]
  __b15_from___b3:
    jmp __b15
    // mul16s_compare::@15
  __b15:
    // [39] phi from mul16s_compare::@15 to mul16s_compare::@4 [phi:mul16s_compare::@15->mul16s_compare::@4]
  __b4_from___b15:
    // [39] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@15->mul16s_compare::@4#0] -- register_copy 
    jmp __b4
    // mul16s_compare::@4
  __b4:
    // [40] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5 -- vbuz1_neq_0_then_la1 
    lda.z ok
    cmp #0
    bne __b5
    jmp __b7
    // mul16s_compare::@7
  __b7:
    // [41] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 -- vwsz1=vwsz2 
    lda.z a
    sta.z mul16s_error.a
    lda.z a+1
    sta.z mul16s_error.a+1
    // [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 -- vwsz1=vwsz2 
    lda.z b
    sta.z mul16s_error.b
    lda.z b+1
    sta.z mul16s_error.b+1
    // [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 -- vdsz1=vdsz2 
    lda.z ms
    sta.z mul16s_error.ms
    lda.z ms+1
    sta.z mul16s_error.ms+1
    lda.z ms+2
    sta.z mul16s_error.ms+2
    lda.z ms+3
    sta.z mul16s_error.ms+3
    // [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 -- vdsz1=vdsz2 
    lda.z mn
    sta.z mul16s_error.mn
    lda.z mn+1
    sta.z mul16s_error.mn+1
    lda.z mn+2
    sta.z mul16s_error.mn+2
    lda.z mn+3
    sta.z mul16s_error.mn+3
    // [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 -- vdsz1=vdsz2 
    lda.z mf
    sta.z mul16s_error.mf
    lda.z mf+1
    sta.z mul16s_error.mf+1
    lda.z mf+2
    sta.z mul16s_error.mf+2
    lda.z mf+3
    sta.z mul16s_error.mf+3
    // [47] call mul16s_error 
    // [71] phi from mul16s_compare::@7 to mul16s_error [phi:mul16s_compare::@7->mul16s_error]
  mul16s_error_from___b7:
    jsr mul16s_error
    jmp __breturn
    // mul16s_compare::@return
  __breturn:
    // [48] return 
    rts
    // mul16s_compare::@5
  __b5:
    // [49] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [50] if((byte) mul16s_compare::j#1!=(byte) $10) goto mul16s_compare::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z j
    bne __b2_from___b5
    jmp __b8
    // mul16s_compare::@8
  __b8:
    // [51] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z i
    bne __b1_from___b8
    // [53] phi from mul16s_compare::@8 to mul16s_compare::@9 [phi:mul16s_compare::@8->mul16s_compare::@9]
  __b9_from___b8:
    jmp __b9
    // mul16s_compare::@9
  __b9:
    // [54] call print_ln 
    // [59] phi from mul16s_compare::@9 to print_ln [phi:mul16s_compare::@9->print_ln]
  print_ln_from___b9:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@9->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __b13
    // mul16s_compare::@13
  __b13:
    // [55] (byte*) print_char_cursor#180 ← (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
    // [56] call print_str 
    // [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str]
  print_str_from___b13:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    // [57] phi from mul16s_compare::@13 to mul16s_compare::@14 [phi:mul16s_compare::@13->mul16s_compare::@14]
  __b14_from___b13:
    jmp __b14
    // mul16s_compare::@14
  __b14:
    // [58] call print_ln 
    // [59] phi from mul16s_compare::@14 to print_ln [phi:mul16s_compare::@14->print_ln]
  print_ln_from___b14:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@14->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    str1: .text "signed word multiply results match!"
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [60] 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:
    // [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    jmp __b1
    // print_ln::@1
  __b1:
    // [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (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
  !:
    // [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) 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:
    // [63] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp($b) str)
print_str: {
    .label str = $b
    // [65] 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:
    // [65] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#154 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp __b1
    // print_str::@1
  __b1:
    // [66] if((byte) 0!=*((byte*) print_str::str#15)) 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:
    // [67] return 
    rts
    // print_str::@2
  __b2:
    // [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
    // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp __b1_from___b2
}
  // mul16s_error
// mul16s_error(signed word zp($7e) a, signed word zp($80) b, signed dword zp($82) ms, signed dword zp($86) mn, signed dword zp($8a) mf)
mul16s_error: {
    .label a = $7e
    .label b = $80
    .label ms = $82
    .label mn = $86
    .label mf = $8a
    // [72] call print_str 
    // [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str]
  print_str_from_mul16s_error:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16s_error->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16s_error::str [phi:mul16s_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
    // mul16s_error::@1
  __b1:
    // [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 -- vwsz1=vwsz2 
    lda.z a
    sta.z print_sword.w
    lda.z a+1
    sta.z print_sword.w+1
    // [74] call print_sword 
    // [129] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword]
  print_sword_from___b1:
    // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy 
    jsr print_sword
    // [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2]
  __b2_from___b1:
    jmp __b2
    // mul16s_error::@2
  __b2:
    // [76] call print_str 
    // [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str]
  print_str_from___b2:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@2->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str1 [phi:mul16s_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
    // mul16s_error::@3
  __b3:
    // [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 
    lda.z b
    sta.z print_sword.w
    lda.z b+1
    sta.z print_sword.w+1
    // [78] call print_sword 
    // [129] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword]
  print_sword_from___b3:
    // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy 
    jsr print_sword
    // [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4]
  __b4_from___b3:
    jmp __b4
    // mul16s_error::@4
  __b4:
    // [80] call print_str 
    // [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str]
  print_str_from___b4:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@4->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str2 [phi:mul16s_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
    // mul16s_error::@5
  __b5:
    // [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 -- vdsz1=vdsz2 
    lda.z ms
    sta.z print_sdword.dw
    lda.z ms+1
    sta.z print_sdword.dw+1
    lda.z ms+2
    sta.z print_sdword.dw+2
    lda.z ms+3
    sta.z print_sdword.dw+3
    // [82] call print_sdword 
    // [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword]
  print_sdword_from___b5:
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6]
  __b6_from___b5:
    jmp __b6
    // mul16s_error::@6
  __b6:
    // [84] call print_str 
    // [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str]
  print_str_from___b6:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@6->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str3 [phi:mul16s_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
    // mul16s_error::@7
  __b7:
    // [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 
    lda.z mn
    sta.z print_sdword.dw
    lda.z mn+1
    sta.z print_sdword.dw+1
    lda.z mn+2
    sta.z print_sdword.dw+2
    lda.z mn+3
    sta.z print_sdword.dw+3
    // [86] call print_sdword 
    // [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword]
  print_sdword_from___b7:
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8]
  __b8_from___b7:
    jmp __b8
    // mul16s_error::@8
  __b8:
    // [88] call print_str 
    // [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str]
  print_str_from___b8:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@8->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str4 [phi:mul16s_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
    // mul16s_error::@9
  __b9:
    // [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 
    lda.z mf
    sta.z print_sdword.dw
    lda.z mf+1
    sta.z print_sdword.dw+1
    lda.z mf+2
    sta.z print_sdword.dw+2
    lda.z mf+3
    sta.z print_sdword.dw+3
    // [90] call print_sdword 
    // [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword]
  print_sdword_from___b9:
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10]
  __b10_from___b9:
    jmp __b10
    // mul16s_error::@10
  __b10:
    // [92] call print_ln 
    // [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln]
  print_ln_from___b10:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16s_error::@10->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    // mul16s_error::@return
  __breturn:
    // [93] return 
    rts
    str: .text "signed word multiply mismatch "
    .byte 0
}
  // print_sdword
// Print a signed dword as HEX
// print_sdword(signed dword zp($d) dw)
print_sdword: {
    .label dw = $d
    // [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 
    lda.z dw+3
    bmi __b1_from_print_sdword
    // [96] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3]
  __b3_from_print_sdword:
    jmp __b3
    // print_sdword::@3
  __b3:
    // [97] call print_char 
    // [105] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char]
  print_char_from___b3:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@3->print_char#0] -- register_copy 
    // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [98] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [98] phi (signed dword) print_sdword::dw#6 = (signed dword) print_sdword::dw#4 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy 
    jmp __b2
    // print_sdword::@2
  __b2:
    // [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 -- vduz1=vduz2 
    lda.z dw
    sta.z print_dword.dw
    lda.z dw+1
    sta.z print_dword.dw+1
    lda.z dw+2
    sta.z print_dword.dw+2
    lda.z dw+3
    sta.z print_dword.dw+3
    // [100] call print_dword 
    // [109] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword]
  print_dword_from___b2:
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#22 [phi:print_sdword::@2->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy 
    jsr print_dword
    jmp __breturn
    // print_sdword::@return
  __breturn:
    // [101] return 
    rts
    // [102] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1]
  __b1_from_print_sdword:
    jmp __b1
    // print_sdword::@1
  __b1:
    // [103] call print_char 
    // [105] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char]
  print_char_from___b1:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@1->print_char#0] -- register_copy 
    // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta.z print_char.ch
    jsr print_char
    jmp __b4
    // print_sdword::@4
  __b4:
    // [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 
    sec
    lda.z dw
    eor #$ff
    adc #0
    sta.z dw
    lda.z dw+1
    eor #$ff
    adc #0
    sta.z dw+1
    lda.z dw+2
    eor #$ff
    adc #0
    sta.z dw+2
    lda.z dw+3
    eor #$ff
    adc #0
    sta.z dw+3
    jmp __b2_from___b4
}
  // print_char
// Print a single char
// print_char(byte zp($11) ch)
print_char: {
    .label ch = $11
    // [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuz2 
    lda.z ch
    ldy #0
    sta (print_char_cursor),y
    // [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp __breturn
    // print_char::@return
  __breturn:
    // [108] return 
    rts
}
  // print_dword
// Print a dword as HEX
// print_dword(dword zp($12) dw)
print_dword: {
    .label dw = $12
    // [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 
    lda.z dw+2
    sta.z print_word.w
    lda.z dw+3
    sta.z print_word.w+1
    // [111] call print_word 
    // [115] phi from print_dword to print_word [phi:print_dword->print_word]
  print_word_from_print_dword:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#138 [phi:print_dword->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy 
    jsr print_word
    jmp __b1
    // print_dword::@1
  __b1:
    // [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 
    lda.z dw
    sta.z print_word.w
    lda.z dw+1
    sta.z print_word.w+1
    // [113] call print_word 
    // [115] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word]
  print_word_from___b1:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_dword::@1->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_dword::@return
  __breturn:
    // [114] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp($16) w)
print_word: {
    .label w = $16
    // [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 
    lda.z w+1
    sta.z print_byte.b
    // [117] call print_byte 
    // [121] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
    // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#137 [phi:print_word->print_byte#0] -- register_copy 
    // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __b1
    // print_word::@1
  __b1:
    // [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 
    lda.z w
    sta.z print_byte.b
    // [119] call print_byte 
    // [121] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from___b1:
    // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __breturn
    // print_word::@return
  __breturn:
    // [120] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte zp($1a) b)
print_byte: {
    .label __0 = $8e
    .label __2 = $8f
    .label b = $1a
    // [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 
    lda.z b
    lsr
    lsr
    lsr
    lsr
    sta.z __0
    // [123] (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
    // [124] call print_char 
    // [105] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#142 [phi:print_byte->print_char#0] -- register_copy 
    // [105] 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:
    // [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 
    lda #$f
    and.z b
    sta.z __2
    // [126] (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
    // [127] call print_char 
    // [105] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from___b1:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#22 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [105] 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:
    // [128] return 
    rts
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp($1b) w)
print_sword: {
    .label w = $1b
    // [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1_from_print_sword
    // [131] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
  __b3_from_print_sword:
    jmp __b3
    // print_sword::@3
  __b3:
    // [132] call print_char 
    // [105] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
  print_char_from___b3:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [105] 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
    // [133] 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:
    // [133] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    jmp __b2
    // print_sword::@2
  __b2:
    // [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 
    lda.z w
    sta.z print_word.w
    lda.z w+1
    sta.z print_word.w+1
    // [135] call print_word 
    // [115] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
  print_word_from___b2:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_sword::@return
  __breturn:
    // [136] return 
    rts
    // [137] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
  __b1_from_print_sword:
    jmp __b1
    // print_sword::@1
  __b1:
    // [138] call print_char 
    // [105] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
  print_char_from___b1:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [105] 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:
    // [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- 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
}
  // mulf16s
// Fast multiply two signed words to a signed double word result
// Fixes offsets introduced by using unsigned multiplication
// mulf16s(signed word zp($72) a, signed word zp($74) b)
mulf16s: {
    .label __9 = $94
    .label __13 = $98
    .label __16 = $96
    .label __17 = $9a
    .label m = $1d
    .label return = $9c
    .label a = $72
    .label b = $74
    .label return_1 = $76
    // [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 
    lda.z a
    sta.z mulf16u.a
    lda.z a+1
    sta.z mulf16u.a+1
    // [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z mulf16u.b
    lda.z b+1
    sta.z mulf16u.b+1
    // [142] call mulf16u 
    // [157] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u]
  mulf16u_from_mulf16s:
    // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy 
    // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy 
    jsr mulf16u
    // [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 
    lda.z mulf16u.return
    sta.z mulf16u.return_1
    lda.z mulf16u.return+1
    sta.z mulf16u.return_1+1
    lda.z mulf16u.return+2
    sta.z mulf16u.return_1+2
    lda.z mulf16u.return+3
    sta.z mulf16u.return_1+3
    jmp __b5
    // mulf16s::@5
  __b5:
    // [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 
    lda.z mulf16u.return_1
    sta.z m
    lda.z mulf16u.return_1+1
    sta.z m+1
    lda.z mulf16u.return_1+2
    sta.z m+2
    lda.z mulf16u.return_1+3
    sta.z m+3
    // [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 
    lda.z a+1
    bpl __b1_from___b5
    jmp __b3
    // mulf16s::@3
  __b3:
    // [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __9
    lda.z m+3
    sta.z __9+1
    // [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z __9
    sec
    sbc.z b
    sta.z __16
    lda.z __9+1
    sbc.z b+1
    sta.z __16+1
    // [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __16
    sta.z m+2
    lda.z __16+1
    sta.z m+3
    // [149] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [149] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy 
    jmp __b1
    // mulf16s::@1
  __b1:
    // [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 
    lda.z b+1
    bpl __b2_from___b1
    jmp __b4
    // mulf16s::@4
  __b4:
    // [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __13
    lda.z m+3
    sta.z __13+1
    // [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z __13
    sec
    sbc.z a
    sta.z __17
    lda.z __13+1
    sbc.z a+1
    sta.z __17+1
    // [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __17
    sta.z m+2
    lda.z __17+1
    sta.z m+3
    // [154] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2]
  __b2_from___b1:
  __b2_from___b4:
    // [154] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy 
    jmp __b2
    // mulf16s::@2
  __b2:
    // [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 -- vdsz1=vdsz2 
    lda.z m
    sta.z return
    lda.z m+1
    sta.z return+1
    lda.z m+2
    sta.z return+2
    lda.z m+3
    sta.z return+3
    jmp __breturn
    // mulf16s::@return
  __breturn:
    // [156] return 
    rts
}
  // mulf16u
// Fast multiply two unsigned words to a double word result
// Done in assembler to utilize fast addition A+X
// mulf16u(word zp($21) a, word zp($23) b)
mulf16u: {
    .label memA = $f8
    .label memB = $fa
    .label memR = $fc
    .label return = $a0
    .label a = $21
    .label b = $23
    .label return_1 = $90
    .label return_2 = $c9
    // [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 
    lda.z a
    sta memA
    lda.z a+1
    sta memA+1
    // [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 
    lda.z b
    sta memB
    lda.z b+1
    sta memB+1
    // asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !:  }
    lda memA
    sta sm1a+1
    sta sm3a+1
    sta sm5a+1
    sta sm7a+1
    eor #$ff
    sta sm2a+1
    sta sm4a+1
    sta sm6a+1
    sta sm8a+1
    lda memA+1
    sta sm1b+1
    sta sm3b+1
    sta sm5b+1
    sta sm7b+1
    eor #$ff
    sta sm2b+1
    sta sm4b+1
    sta sm6b+1
    sta sm8b+1
    ldx memB
    sec
  sm1a:
    lda mulf_sqr1_lo,x
  sm2a:
    sbc mulf_sqr2_lo,x
    sta memR+0
  sm3a:
    lda mulf_sqr1_hi,x
  sm4a:
    sbc mulf_sqr2_hi,x
    sta _AA+1
    sec
  sm1b:
    lda mulf_sqr1_lo,x
  sm2b:
    sbc mulf_sqr2_lo,x
    sta _cc+1
  sm3b:
    lda mulf_sqr1_hi,x
  sm4b:
    sbc mulf_sqr2_hi,x
    sta _CC+1
    ldx memB+1
    sec
  sm5a:
    lda mulf_sqr1_lo,x
  sm6a:
    sbc mulf_sqr2_lo,x
    sta _bb+1
  sm7a:
    lda mulf_sqr1_hi,x
  sm8a:
    sbc mulf_sqr2_hi,x
    sta _BB+1
    sec
  sm5b:
    lda mulf_sqr1_lo,x
  sm6b:
    sbc mulf_sqr2_lo,x
    sta _dd+1
  sm7b:
    lda mulf_sqr1_hi,x
  sm8b:
    sbc mulf_sqr2_hi,x
    sta memR+3
    clc
  _AA:
    lda #0
  _bb:
    adc #0
    sta memR+1
  _BB:
    lda #0
  _CC:
    adc #0
    sta memR+2
    bcc !+
    inc memR+3
    clc
  !:
  _cc:
    lda #0
    adc memR+1
    sta memR+1
  _dd:
    lda #0
    adc memR+2
    sta memR+2
    bcc !+
    inc memR+3
  !:
    // [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) -- vduz1=_deref_pduc1 
    lda memR
    sta.z return
    lda memR+1
    sta.z return+1
    lda memR+2
    sta.z return+2
    lda memR+3
    sta.z return+3
    jmp __breturn
    // mulf16u::@return
  __breturn:
    // [162] return 
    rts
}
  // mul16s
// Multiply of two signed words to a signed double word
// Fixes offsets introduced by using unsigned multiplication
// mul16s(signed word zp($66) a, signed word zp($68) b)
mul16s: {
    .label __9 = $a8
    .label __13 = $ac
    .label __16 = $aa
    .label __17 = $ae
    .label m = $25
    .label return = $b0
    .label a = $66
    .label b = $68
    .label return_1 = $6a
    // [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u.a
    lda.z a+1
    sta.z mul16u.a+1
    // [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z mul16u.b
    lda.z b+1
    sta.z mul16u.b+1
    // [165] call mul16u 
    // [180] phi from mul16s to mul16u [phi:mul16s->mul16u]
  mul16u_from_mul16s:
    // [180] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy 
    // [180] phi (word) mul16u::b#2 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- register_copy 
    jsr mul16u
    // [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 
    lda.z mul16u.res
    sta.z mul16u.return
    lda.z mul16u.res+1
    sta.z mul16u.return+1
    lda.z mul16u.res+2
    sta.z mul16u.return+2
    lda.z mul16u.res+3
    sta.z mul16u.return+3
    jmp __b5
    // mul16s::@5
  __b5:
    // [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 
    lda.z mul16u.return
    sta.z m
    lda.z mul16u.return+1
    sta.z m+1
    lda.z mul16u.return+2
    sta.z m+2
    lda.z mul16u.return+3
    sta.z m+3
    // [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 
    lda.z a+1
    bpl __b1_from___b5
    jmp __b3
    // mul16s::@3
  __b3:
    // [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __9
    lda.z m+3
    sta.z __9+1
    // [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z __9
    sec
    sbc.z b
    sta.z __16
    lda.z __9+1
    sbc.z b+1
    sta.z __16+1
    // [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __16
    sta.z m+2
    lda.z __16+1
    sta.z m+3
    // [172] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [172] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy 
    jmp __b1
    // mul16s::@1
  __b1:
    // [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 
    lda.z b+1
    bpl __b2_from___b1
    jmp __b4
    // mul16s::@4
  __b4:
    // [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __13
    lda.z m+3
    sta.z __13+1
    // [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z __13
    sec
    sbc.z a
    sta.z __17
    lda.z __13+1
    sbc.z a+1
    sta.z __17+1
    // [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __17
    sta.z m+2
    lda.z __17+1
    sta.z m+3
    // [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2]
  __b2_from___b1:
  __b2_from___b4:
    // [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy 
    jmp __b2
    // mul16s::@2
  __b2:
    // [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 
    lda.z m
    sta.z return
    lda.z m+1
    sta.z return+1
    lda.z m+2
    sta.z return+2
    lda.z m+3
    sta.z return+3
    jmp __breturn
    // mul16s::@return
  __breturn:
    // [179] return 
    rts
}
  // mul16u
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
// mul16u(word zp($2b) a, word zp($29) b)
mul16u: {
    .label __1 = $b4
    .label mb = $31
    .label a = $2b
    .label res = $2d
    .label b = $29
    .label return = $a4
    .label return_1 = $c1
    // [181] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 
    lda.z b
    sta.z mb
    lda.z b+1
    sta.z mb+1
    lda #0
    sta.z mb+2
    sta.z mb+3
    // [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1]
  __b1_from_mul16u:
    // [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy 
    // [182] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 
    lda #<0
    sta.z res
    lda #>0
    sta.z res+1
    lda #<0>>$10
    sta.z res+2
    lda #>0>>$10
    sta.z res+3
    // [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy 
    jmp __b1
    // mul16u::@1
  __b1:
    // [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 
    lda.z a
    bne __b2
    lda.z a+1
    bne __b2
    jmp __breturn
    // mul16u::@return
  __breturn:
    // [184] return 
    rts
    // mul16u::@2
  __b2:
    // [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 
    lda #1
    and.z a
    sta.z __1
    // [186] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 
    lda.z __1
    cmp #0
    beq __b3_from___b2
    jmp __b4
    // mul16u::@4
  __b4:
    // [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 
    lda.z res
    clc
    adc.z mb
    sta.z res
    lda.z res+1
    adc.z mb+1
    sta.z res+1
    lda.z res+2
    adc.z mb+2
    sta.z res+2
    lda.z res+3
    adc.z mb+3
    sta.z res+3
    // [188] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3]
  __b3_from___b2:
  __b3_from___b4:
    // [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy 
    jmp __b3
    // mul16u::@3
  __b3:
    // [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 
    lsr.z a+1
    ror.z a
    // [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 
    asl.z mb
    rol.z mb+1
    rol.z mb+2
    rol.z mb+3
    // [182] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1]
  __b1_from___b3:
    // [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy 
    // [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy 
    // [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy 
    jmp __b1
}
  // muls16s
// Slow multiplication of signed words
// Perform a signed multiplication by repeated addition/subtraction
// muls16s(signed word zp($5a) a, signed word zp($5c) b)
muls16s: {
    .label m = $37
    .label j = $35
    .label return = $37
    .label i = $3b
    .label a = $5a
    .label b = $5c
    .label return_1 = $5e
    // [191] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 
    lda.z a+1
    bmi __b5_from_muls16s
    jmp __b2
    // muls16s::@2
  __b2:
    // [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 
    lda.z a+1
    bmi __b1_from___b2
    bne !+
    lda.z a
    beq __b1_from___b2
  !:
    // [193] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3]
  __b3_from___b2:
    // [193] phi (signed dword) muls16s::m#3 = (signed dword) 0 [phi:muls16s::@2->muls16s::@3#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [193] phi (signed word) muls16s::j#2 = (signed word) 0 [phi:muls16s::@2->muls16s::@3#1] -- vwsz1=vwsc1 
    lda #<0
    sta.z j
    lda #>0
    sta.z j+1
    jmp __b3
    // muls16s::@3
  __b3:
    // [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 
    lda.z j+1
    cmp.z a+1
    bne __b4
    lda.z j
    cmp.z a
    bne __b4
    // [195] phi from muls16s::@3 muls16s::@5 to muls16s::@1 [phi:muls16s::@3/muls16s::@5->muls16s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [195] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#3 [phi:muls16s::@3/muls16s::@5->muls16s::@1#0] -- register_copy 
    jmp __b1
    // [195] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1]
  __b1_from___b2:
    // [195] phi (signed dword) muls16s::return#0 = (signed dword) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    lda #<0>>$10
    sta.z return+2
    lda #>0>>$10
    sta.z return+3
    jmp __b1
    // muls16s::@1
  __b1:
    jmp __breturn
    // muls16s::@return
  __breturn:
    // [196] return 
    rts
    // muls16s::@4
  __b4:
    // [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 
    lda.z b+1
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    lda.z m
    clc
    adc.z b
    sta.z m
    lda.z m+1
    adc.z b+1
    sta.z m+1
    lda.z m+2
    adc.z $ff
    sta.z m+2
    lda.z m+3
    adc.z $ff
    sta.z m+3
    // [198] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 
    inc.z j
    bne !+
    inc.z j+1
  !:
    // [193] phi from muls16s::@4 to muls16s::@3 [phi:muls16s::@4->muls16s::@3]
  __b3_from___b4:
    // [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@4->muls16s::@3#0] -- register_copy 
    // [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@4->muls16s::@3#1] -- register_copy 
    jmp __b3
    // [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5]
  __b5_from_muls16s:
    // [199] phi (signed dword) muls16s::m#5 = (signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [199] phi (signed word) muls16s::i#2 = (signed word) 0 [phi:muls16s->muls16s::@5#1] -- vwsz1=vwsc1 
    lda #<0
    sta.z i
    lda #>0
    sta.z i+1
    jmp __b5
    // muls16s::@5
  __b5:
    // [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 -- vwsz1_neq_vwsz2_then_la1 
    lda.z i+1
    cmp.z a+1
    bne __b6
    lda.z i
    cmp.z a
    bne __b6
    jmp __b1_from___b5
    // muls16s::@6
  __b6:
    // [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 
    lda.z b+1
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    sec
    lda.z m
    sbc.z b
    sta.z m
    lda.z m+1
    sbc.z b+1
    sta.z m+1
    lda.z m+2
    sbc.z $ff
    sta.z m+2
    lda.z m+3
    sbc.z $ff
    sta.z m+3
    // [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 
    lda.z i
    bne !+
    dec.z i+1
  !:
    dec.z i
    // [199] phi from muls16s::@6 to muls16s::@5 [phi:muls16s::@6->muls16s::@5]
  __b5_from___b6:
    // [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@6->muls16s::@5#0] -- register_copy 
    // [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@6->muls16s::@5#1] -- register_copy 
    jmp __b5
}
  // mul16u_compare
// Perform many possible word multiplications (slow and fast) and compare the results
mul16u_compare: {
    .label a = $3e
    .label b = $40
    .label ms = $bd
    .label mn = $c5
    .label mf = $cd
    .label j = $42
    .label i = $3d
    .label ok = $43
    // [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1]
  __b1_from_mul16u_compare:
    // [204] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [204] phi (word) mul16u_compare::b#6 = (word) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z b
    lda #>0
    sta.z b+1
    // [204] phi (word) mul16u_compare::a#6 = (word) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vwuc1 
    lda #<0
    sta.z a
    lda #>0
    sta.z a+1
    // [204] phi (byte*) print_char_cursor#145 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    jmp __b1
    // [204] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1]
  __b1_from___b8:
    // [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy 
    // [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy 
    // [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy 
    // [204] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy 
    jmp __b1
    // mul16u_compare::@1
  __b1:
    // [205] call print_str 
    // [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str]
  print_str_from___b1:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#145 [phi:mul16u_compare::@1->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2]
  __b2_from___b1:
    // [206] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy 
    // [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy 
    jmp __b2
    // [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2]
  __b2_from___b5:
    // [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy 
    // [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy 
    // [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy 
    jmp __b2
    // mul16u_compare::@2
  __b2:
    // [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 
    clc
    lda.z a
    adc #<$d2b
    sta.z a
    lda.z a+1
    adc #>$d2b
    sta.z a+1
    // [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 
    clc
    lda.z b
    adc #<$ffd
    sta.z b
    lda.z b+1
    adc #>$ffd
    sta.z b+1
    // [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 
    lda.z a
    sta.z muls16u.a
    lda.z a+1
    sta.z muls16u.a+1
    // [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 
    lda.z b
    sta.z muls16u.b
    lda.z b+1
    sta.z muls16u.b+1
    // [211] call muls16u 
    jsr muls16u
    // [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 
    lda.z muls16u.return
    sta.z muls16u.return_1
    lda.z muls16u.return+1
    sta.z muls16u.return_1+1
    lda.z muls16u.return+2
    sta.z muls16u.return_1+2
    lda.z muls16u.return+3
    sta.z muls16u.return_1+3
    jmp __b10
    // mul16u_compare::@10
  __b10:
    // [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 
    lda.z muls16u.return_1
    sta.z ms
    lda.z muls16u.return_1+1
    sta.z ms+1
    lda.z muls16u.return_1+2
    sta.z ms+2
    lda.z muls16u.return_1+3
    sta.z ms+3
    // [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u.a
    lda.z a+1
    sta.z mul16u.a+1
    // [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 
    lda.z b
    sta.z mul16u.b
    lda.z b+1
    sta.z mul16u.b+1
    // [216] call mul16u 
    // [180] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u]
  mul16u_from___b10:
    // [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy 
    // [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- register_copy 
    jsr mul16u
    // [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 
    lda.z mul16u.res
    sta.z mul16u.return_1
    lda.z mul16u.res+1
    sta.z mul16u.return_1+1
    lda.z mul16u.res+2
    sta.z mul16u.return_1+2
    lda.z mul16u.res+3
    sta.z mul16u.return_1+3
    jmp __b11
    // mul16u_compare::@11
  __b11:
    // [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 
    lda.z mul16u.return_1
    sta.z mn
    lda.z mul16u.return_1+1
    sta.z mn+1
    lda.z mul16u.return_1+2
    sta.z mn+2
    lda.z mul16u.return_1+3
    sta.z mn+3
    // [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 
    lda.z a
    sta.z mulf16u.a
    lda.z a+1
    sta.z mulf16u.a+1
    // [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 
    lda.z b
    sta.z mulf16u.b
    lda.z b+1
    sta.z mulf16u.b+1
    // [221] call mulf16u 
    // [157] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u]
  mulf16u_from___b11:
    // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy 
    // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy 
    jsr mulf16u
    // [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 
    lda.z mulf16u.return
    sta.z mulf16u.return_2
    lda.z mulf16u.return+1
    sta.z mulf16u.return_2+1
    lda.z mulf16u.return+2
    sta.z mulf16u.return_2+2
    lda.z mulf16u.return+3
    sta.z mulf16u.return_2+3
    jmp __b12
    // mul16u_compare::@12
  __b12:
    // [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 
    lda.z mulf16u.return_2
    sta.z mf
    lda.z mulf16u.return_2+1
    sta.z mf+1
    lda.z mulf16u.return_2+2
    sta.z mf+2
    lda.z mulf16u.return_2+3
    sta.z mf+3
    // [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    bne !+
    lda.z ms+2
    cmp.z mf+2
    bne !+
    lda.z ms+3
    cmp.z mf+3
    beq __b3_from___b12
  !:
    // [225] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6]
  __b6_from___b12:
    jmp __b6
    // mul16u_compare::@6
  __b6:
    // [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3]
  __b3_from___b6:
    // [226] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z ok
    jmp __b3
    // [226] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3]
  __b3_from___b12:
    // [226] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z ok
    jmp __b3
    // mul16u_compare::@3
  __b3:
    // [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    bne !+
    lda.z ms+2
    cmp.z mn+2
    bne !+
    lda.z ms+3
    cmp.z mn+3
    beq __b15_from___b3
  !:
    // [229] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4]
  __b4_from___b3:
    // [229] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 
    lda #0
    sta.z ok
    jmp __b4
    // [228] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15]
  __b15_from___b3:
    jmp __b15
    // mul16u_compare::@15
  __b15:
    // [229] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4]
  __b4_from___b15:
    // [229] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy 
    jmp __b4
    // mul16u_compare::@4
  __b4:
    // [230] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 
    lda.z ok
    cmp #0
    bne __b5
    jmp __b7
    // mul16u_compare::@7
  __b7:
    // [231] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u_error.a
    lda.z a+1
    sta.z mul16u_error.a+1
    // [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 
    lda.z b
    sta.z mul16u_error.b
    lda.z b+1
    sta.z mul16u_error.b+1
    // [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 
    lda.z ms
    sta.z mul16u_error.ms
    lda.z ms+1
    sta.z mul16u_error.ms+1
    lda.z ms+2
    sta.z mul16u_error.ms+2
    lda.z ms+3
    sta.z mul16u_error.ms+3
    // [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 
    lda.z mn
    sta.z mul16u_error.mn
    lda.z mn+1
    sta.z mul16u_error.mn+1
    lda.z mn+2
    sta.z mul16u_error.mn+2
    lda.z mn+3
    sta.z mul16u_error.mn+3
    // [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 
    lda.z mf
    sta.z mul16u_error.mf
    lda.z mf+1
    sta.z mul16u_error.mf+1
    lda.z mf+2
    sta.z mul16u_error.mf+2
    lda.z mf+3
    sta.z mul16u_error.mf+3
    // [237] call mul16u_error 
    // [249] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error]
  mul16u_error_from___b7:
    jsr mul16u_error
    jmp __breturn
    // mul16u_compare::@return
  __breturn:
    // [238] return 
    rts
    // mul16u_compare::@5
  __b5:
    // [239] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [240] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z j
    bne __b2_from___b5
    jmp __b8
    // mul16u_compare::@8
  __b8:
    // [241] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z i
    bne __b1_from___b8
    // [243] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9]
  __b9_from___b8:
    jmp __b9
    // mul16u_compare::@9
  __b9:
    // [244] call print_ln 
    // [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln]
  print_ln_from___b9:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@9->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    jmp __b13
    // mul16u_compare::@13
  __b13:
    // [245] (byte*) print_char_cursor#187 ← (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
    // [246] call print_str 
    // [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str]
  print_str_from___b13:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    // [247] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14]
  __b14_from___b13:
    jmp __b14
    // mul16u_compare::@14
  __b14:
    // [248] call print_ln 
    // [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln]
  print_ln_from___b14:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@14->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    str1: .text "word multiply results match!"
    .byte 0
}
  // mul16u_error
// mul16u_error(word zp($d1) a, word zp($d3) b, dword zp($d5) ms, dword zp($d9) mn, dword zp($dd) mf)
mul16u_error: {
    .label a = $d1
    .label b = $d3
    .label ms = $d5
    .label mn = $d9
    .label mf = $dd
    // [250] call print_str 
    // [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str]
  print_str_from_mul16u_error:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16u_error->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16u_error::str [phi:mul16u_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
    // mul16u_error::@1
  __b1:
    // [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 -- vwuz1=vwuz2 
    lda.z a
    sta.z print_word.w
    lda.z a+1
    sta.z print_word.w+1
    // [252] call print_word 
    // [115] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word]
  print_word_from___b1:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@1->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy 
    jsr print_word
    // [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2]
  __b2_from___b1:
    jmp __b2
    // mul16u_error::@2
  __b2:
    // [254] call print_str 
    // [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str]
  print_str_from___b2:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@2->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str1 [phi:mul16u_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
    // mul16u_error::@3
  __b3:
    // [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z print_word.w
    lda.z b+1
    sta.z print_word.w+1
    // [256] call print_word 
    // [115] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word]
  print_word_from___b3:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@3->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy 
    jsr print_word
    // [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4]
  __b4_from___b3:
    jmp __b4
    // mul16u_error::@4
  __b4:
    // [258] call print_str 
    // [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str]
  print_str_from___b4:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@4->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str2 [phi:mul16u_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
    // mul16u_error::@5
  __b5:
    // [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 
    lda.z ms
    sta.z print_dword.dw
    lda.z ms+1
    sta.z print_dword.dw+1
    lda.z ms+2
    sta.z print_dword.dw+2
    lda.z ms+3
    sta.z print_dword.dw+3
    // [260] call print_dword 
    // [109] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword]
  print_dword_from___b5:
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@5->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy 
    jsr print_dword
    // [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6]
  __b6_from___b5:
    jmp __b6
    // mul16u_error::@6
  __b6:
    // [262] call print_str 
    // [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str]
  print_str_from___b6:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@6->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str3 [phi:mul16u_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
    // mul16u_error::@7
  __b7:
    // [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 
    lda.z mn
    sta.z print_dword.dw
    lda.z mn+1
    sta.z print_dword.dw+1
    lda.z mn+2
    sta.z print_dword.dw+2
    lda.z mn+3
    sta.z print_dword.dw+3
    // [264] call print_dword 
    // [109] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword]
  print_dword_from___b7:
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@7->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy 
    jsr print_dword
    // [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8]
  __b8_from___b7:
    jmp __b8
    // mul16u_error::@8
  __b8:
    // [266] call print_str 
    // [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str]
  print_str_from___b8:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@8->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str4 [phi:mul16u_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
    // mul16u_error::@9
  __b9:
    // [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 
    lda.z mf
    sta.z print_dword.dw
    lda.z mf+1
    sta.z print_dword.dw+1
    lda.z mf+2
    sta.z print_dword.dw+2
    lda.z mf+3
    sta.z print_dword.dw+3
    // [268] call print_dword 
    // [109] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword]
  print_dword_from___b9:
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@9->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy 
    jsr print_dword
    // [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10]
  __b10_from___b9:
    jmp __b10
    // mul16u_error::@10
  __b10:
    // [270] call print_ln 
    // [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln]
  print_ln_from___b10:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16u_error::@10->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    jmp __breturn
    // mul16u_error::@return
  __breturn:
    // [271] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // muls16u
// Slow multiplication of unsigned words
// Calculate an unsigned multiplication by repeated addition
// muls16u(word zp($b5) a, word zp($b7) b)
muls16u: {
    .label return = $46
    .label m = $46
    .label i = $44
    .label a = $b5
    .label b = $b7
    .label return_1 = $b9
    // [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 
    lda.z a
    bne !+
    lda.z a+1
    beq __b1_from_muls16u
  !:
    // [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2]
  __b2_from_muls16u:
    // [273] phi (dword) muls16u::m#3 = (dword) 0 [phi:muls16u->muls16u::@2#0] -- vduz1=vduc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [273] phi (word) muls16u::i#2 = (word) 0 [phi:muls16u->muls16u::@2#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    lda #>0
    sta.z i+1
    jmp __b2
    // muls16u::@2
  __b2:
    // [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 -- vwuz1_neq_vwuz2_then_la1 
    lda.z i+1
    cmp.z a+1
    bne __b3
    lda.z i
    cmp.z a
    bne __b3
    // [275] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1]
  __b1_from___b2:
    // [275] phi (dword) muls16u::return#0 = (dword) muls16u::m#3 [phi:muls16u::@2->muls16u::@1#0] -- register_copy 
    jmp __b1
    // [275] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1]
  __b1_from_muls16u:
    // [275] phi (dword) muls16u::return#0 = (dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vduc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    lda #<0>>$10
    sta.z return+2
    lda #>0>>$10
    sta.z return+3
    jmp __b1
    // muls16u::@1
  __b1:
    jmp __breturn
    // muls16u::@return
  __breturn:
    // [276] return 
    rts
    // muls16u::@3
  __b3:
    // [277] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 
    lda.z m
    clc
    adc.z b
    sta.z m
    lda.z m+1
    adc.z b+1
    sta.z m+1
    lda.z m+2
    adc #0
    sta.z m+2
    lda.z m+3
    adc #0
    sta.z m+3
    // [278] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [273] phi from muls16u::@3 to muls16u::@2 [phi:muls16u::@3->muls16u::@2]
  __b2_from___b3:
    // [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@3->muls16u::@2#0] -- register_copy 
    // [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@3->muls16u::@2#1] -- register_copy 
    jmp __b2
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    .label __1 = $e1
    .label __4 = $e2
    .label __5 = $e3
    // x/2
    .label c = $4c
    // Counter used for determining x%2==0
    .label sqr1_hi = $4d
    // 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 = $56
    .label sqr1_lo = $4a
    // sqr = (x*x)/4
    .label x_2 = $4f
    // Decrease or increase x_255 - initially we decrease
    .label sqr2_hi = $53
    // 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 = $52
    .label sqr2_lo = $50
    //Start with g(0)=f(255)
    .label dir = $55
    // [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  __b1_from_mulf_init:
    // [280] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x_2
    // [280] 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
    // [280] 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
    // [280] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // [280] 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:
    // [281] 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
    // [282] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
  __b5_from___b1:
    // [282] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [282] 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
    // [282] 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
    // [282] 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:
    // [283] 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:
    // [284] *((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
    // [285] *((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:
    // [286] return 
    rts
    // mulf_init::@6
  __b6:
    // [287] *((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
    // [288] *((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
    // [289] (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
  !:
    // [290] (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
    // [291] 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
    // [293] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
  __b8_from___b6:
    // [293] 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
    // [292] 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:
    // [293] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
  __b8_from___b9:
    // [293] 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:
    // [294] (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
  !:
    // [282] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
  __b5_from___b8:
    // [282] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [282] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [282] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [282] 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:
    // [295] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // [296] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 
    lda #1
    and.z c
    sta.z __1
    // [297] 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:
    // [298] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 
    inc.z x_2
    // [299] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [300] 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:
    // [300] 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 
    // [300] 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:
    // [301] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 
    lda.z sqr
    sta.z __4
    // [302] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuz2 
    lda.z __4
    ldy #0
    sta (sqr1_lo),y
    // [303] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 
    lda.z sqr+1
    sta.z __5
    // [304] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 
    lda.z __5
    ldy #0
    sta (sqr1_hi),y
    // [305] (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
  !:
    // [306] (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
  !:
    // [307] (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
  !:
    // [280] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
  __b1_from___b3:
    // [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [280] 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: {
    // [309] call memset 
    // [311] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [310] 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 = $58
    // [312] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [312] 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:
    // [313] 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:
    // [314] return 
    rts
    // memset::@2
  __b2:
    // [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [316] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [312] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [312] 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
  str: .text "."
  .byte 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 [13] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_char_cursor#219 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#219 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ]
Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a 
Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a 
Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a 
Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a 
Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a 
Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a 
Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a 
Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a 
Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a 
Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a 
Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a 
Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a 
Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a 
Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a 
Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
Statement [41] *((const byte*) BGCOL) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a 
Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a 
Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a 
Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a 
Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a 
Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a 
Statement [55] (byte*) print_char_cursor#180 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#180 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#180 ] ) always clobbers reg byte a 
Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:244 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:248 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:237::print_ln:270 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a 
Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:244 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:248 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:237::print_ln:270 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a 
Statement [66] if((byte) 0!=*((byte*) print_str::str#15)) goto print_str::@2 [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:246 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:266 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ]
Statement [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:246 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:266 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y 
Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a 
Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a 
Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a 
Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a 
Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ) always clobbers reg byte a 
Statement [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#132 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#4 ] ) always clobbers reg byte a 
Statement [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 [ print_char_cursor#22 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_dword::dw#0 ] ) always clobbers reg byte a 
Statement [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#22 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_sdword::dw#0 ] ) always clobbers reg byte a 
Statement [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 [ print_char_cursor#88 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:103 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:103 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:103 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117::print_char:124 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117::print_char:124 [ print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119::print_char:124 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119::print_char:124 [ print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117::print_char:127 [ print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117::print_char:127 [ print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119::print_char:127 [ print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119::print_char:127 [ print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:132 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:132 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:138 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:138 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
Statement [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ) always clobbers reg byte a 
Statement [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#22 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_char_cursor#22 print_word::w#2 ] ) always clobbers reg byte a 
Statement [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ) always clobbers reg byte a 
Statement [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#22 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111 [ print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113 [ print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
Statement [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#22 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] ) always clobbers reg byte a 
Statement [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a 
Statement [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#22 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] ) always clobbers reg byte a 
Statement [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#22 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a 
Statement [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a 
Statement [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a 
Statement [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a 
Statement [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a 
Statement [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a 
Statement [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a 
Statement [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a 
Statement [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a 
Statement [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a 
Statement [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a 
Statement [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a 
Statement [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a 
Statement [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ]
Statement [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a 
Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !:  } always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ]
Statement [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a 
Statement [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a 
Statement [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a 
Statement [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a 
Statement [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a 
Statement [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a 
Statement [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a 
Statement [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a 
Statement [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a 
Statement [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a 
Statement [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a 
Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a 
Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a 
Statement [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a 
Statement [181] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a 
Statement [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a 
Statement [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a 
Statement [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a 
Statement [191] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a 
Statement [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a 
Statement [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ) always clobbers reg byte a 
Statement [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a 
Statement [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 [ muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ) always clobbers reg byte a 
Statement [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ) always clobbers reg byte a 
Statement [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ) always clobbers reg byte a 
Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a 
Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a 
Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a 
Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a 
Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a 
Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a 
Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a 
Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ]
Statement [231] *((const byte*) BGCOL) ← (byte) 2 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a 
Statement [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a 
Statement [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a 
Statement [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a 
Statement [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a 
Statement [245] (byte*) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] ) always clobbers reg byte a 
Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#132 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#3 ] ) always clobbers reg byte a 
Statement [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a 
Statement [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ) always clobbers reg byte a 
Statement [277] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a 
Statement [281] 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]:76 [ mulf_init::c#2 mulf_init::c#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Statement [283] 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]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ]
Statement [284] *((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 [285] *((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 [287] *((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]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ]
Statement [288] *((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 [290] (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 [296] (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 [301] (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 [302] *((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]:76 [ mulf_init::c#2 mulf_init::c#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
Statement [303] (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 [304] *((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 [306] (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 [313] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ 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 [13] (byte*) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_char_cursor#219 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#219 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a 
Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a 
Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a 
Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a 
Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a 
Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a 
Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a 
Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a 
Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a 
Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a 
Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a 
Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a 
Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a 
Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a 
Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a 
Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a 
Statement [41] *((const byte*) BGCOL) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a 
Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a 
Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a 
Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a 
Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a 
Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a 
Statement [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ) always clobbers reg byte a 
Statement [55] (byte*) print_char_cursor#180 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#180 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#180 ] ) always clobbers reg byte a 
Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:244 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:248 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:237::print_ln:270 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a 
Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:244 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:248 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:237::print_ln:270 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a 
Statement [66] if((byte) 0!=*((byte*) print_str::str#15)) goto print_str::@2 [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:246 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:266 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y 
Statement [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:246 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:237::print_str:266 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y 
Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a 
Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a 
Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a 
Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a 
Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ) always clobbers reg byte a 
Statement [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#132 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#4 ] ) always clobbers reg byte a 
Statement [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 [ print_char_cursor#22 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_dword::dw#0 ] ) always clobbers reg byte a 
Statement [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#22 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_sdword::dw#0 ] ) always clobbers reg byte a 
Statement [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 [ print_char_cursor#88 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:103 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:103 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:103 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117::print_char:124 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117::print_char:124 [ print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119::print_char:124 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119::print_char:124 [ print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117::print_char:127 [ print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117::print_char:127 [ print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119::print_char:127 [ print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119::print_char:127 [ print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:132 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:132 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:138 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:138 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] ) always clobbers reg byte y 
Statement [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ) always clobbers reg byte a 
Statement [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#22 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268 [ print_char_cursor#22 print_word::w#2 ] ) always clobbers reg byte a 
Statement [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ) always clobbers reg byte a 
Statement [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#22 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111 [ print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113 [ print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a 
Statement [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#22 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:260::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:264::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_dword:268::print_word:113::print_byte:119 [ print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:252::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:237::print_word:256::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] ) always clobbers reg byte a 
Statement [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a 
Statement [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#22 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] ) always clobbers reg byte a 
Statement [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#22 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a 
Statement [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a 
Statement [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a 
Statement [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a 
Statement [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a 
Statement [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a 
Statement [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a 
Statement [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a 
Statement [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a 
Statement [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a 
Statement [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a 
Statement [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a 
Statement [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a 
Statement [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a 
Statement [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a 
Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !:  } always clobbers reg byte a reg byte x 
Statement [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a 
Statement [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a 
Statement [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a 
Statement [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a 
Statement [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a 
Statement [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a 
Statement [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a 
Statement [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a 
Statement [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a 
Statement [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a 
Statement [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a 
Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a 
Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a 
Statement [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a 
Statement [181] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a 
Statement [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a 
Statement [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a 
Statement [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a 
Statement [191] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a 
Statement [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a 
Statement [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#3 ] ) always clobbers reg byte a 
Statement [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a 
Statement [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 [ muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#5 muls16s::i#2 ] ) always clobbers reg byte a 
Statement [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#2 muls16s::m#2 ] ) always clobbers reg byte a 
Statement [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::i#1 muls16s::m#2 ] ) always clobbers reg byte a 
Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a 
Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a 
Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a 
Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a 
Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a 
Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a 
Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a 
Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a 
Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a 
Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a 
Statement [231] *((const byte*) BGCOL) ← (byte) 2 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a 
Statement [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a 
Statement [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a 
Statement [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a 
Statement [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a 
Statement [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a 
Statement [245] (byte*) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] ) always clobbers reg byte a 
Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a 
Statement [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#132 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:237 [ print_char_cursor#132 print_dword::dw#3 ] ) always clobbers reg byte a 
Statement [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a 
Statement [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#3 ] ) always clobbers reg byte a 
Statement [277] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a 
Statement [281] 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 [283] 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 [284] *((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 [285] *((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 [287] *((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 [288] *((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 [290] (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 [296] (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 [301] (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 [302] *((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 [303] (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 [304] *((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 [306] (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 [313] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:309 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Potential registers zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] : zp[1]:2 , 
Potential registers zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] : zp[2]:3 , 
Potential registers zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] : zp[2]:5 , 
Potential registers zp[1]:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] : zp[1]:7 , reg byte y , 
Potential registers zp[1]:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] : zp[1]:8 , reg byte x , reg byte y , 
Potential registers zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] : zp[2]:9 , 
Potential registers zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] : zp[2]:11 , 
Potential registers zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] : zp[4]:13 , 
Potential registers zp[1]:17 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] : zp[4]:18 , 
Potential registers zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp[2]:22 , 
Potential registers zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ] : zp[2]:24 , 
Potential registers zp[1]:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:26 , reg byte x , 
Potential registers zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] : zp[2]:27 , 
Potential registers zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] : zp[4]:29 , 
Potential registers zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] : zp[2]:33 , 
Potential registers zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] : zp[2]:35 , 
Potential registers zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] : zp[4]:37 , 
Potential registers zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] : zp[2]:41 , 
Potential registers zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] : zp[2]:43 , 
Potential registers zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] : zp[4]:45 , 
Potential registers zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] : zp[4]:49 , 
Potential registers zp[2]:53 [ muls16s::j#2 muls16s::j#1 ] : zp[2]:53 , 
Potential registers zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] : zp[4]:55 , 
Potential registers zp[2]:59 [ muls16s::i#2 muls16s::i#1 ] : zp[2]:59 , 
Potential registers zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] : zp[1]:61 , 
Potential registers zp[2]:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] : zp[2]:62 , 
Potential registers zp[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] : zp[2]:64 , 
Potential registers zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] : zp[1]:66 , reg byte y , 
Potential registers zp[1]:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] : zp[1]:67 , reg byte x , reg byte y , 
Potential registers zp[2]:68 [ muls16u::i#2 muls16u::i#1 ] : zp[2]:68 , 
Potential registers zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] : zp[4]:70 , 
Potential registers zp[2]:74 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] : zp[2]:74 , 
Potential registers zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] : zp[1]:76 , reg byte x , 
Potential registers zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] : zp[2]:77 , 
Potential registers zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] : zp[1]:79 , reg byte x , 
Potential registers zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] : zp[2]:80 , 
Potential registers zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] : zp[1]:82 , reg byte x , 
Potential registers zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] : zp[2]:83 , 
Potential registers zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] : zp[1]:85 , reg byte x , 
Potential registers zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] : zp[2]:86 , 
Potential registers zp[2]:88 [ memset::dst#2 memset::dst#1 ] : zp[2]:88 , 
Potential registers zp[2]:90 [ muls16s::a#0 ] : zp[2]:90 , 
Potential registers zp[2]:92 [ muls16s::b#0 ] : zp[2]:92 , 
Potential registers zp[4]:94 [ muls16s::return#2 ] : zp[4]:94 , 
Potential registers zp[4]:98 [ mul16s_compare::ms#0 ] : zp[4]:98 , 
Potential registers zp[2]:102 [ mul16s::a#0 ] : zp[2]:102 , 
Potential registers zp[2]:104 [ mul16s::b#0 ] : zp[2]:104 , 
Potential registers zp[4]:106 [ mul16s::return#2 ] : zp[4]:106 , 
Potential registers zp[4]:110 [ mul16s_compare::mn#0 ] : zp[4]:110 , 
Potential registers zp[2]:114 [ mulf16s::a#0 ] : zp[2]:114 , 
Potential registers zp[2]:116 [ mulf16s::b#0 ] : zp[2]:116 , 
Potential registers zp[4]:118 [ mulf16s::return#2 ] : zp[4]:118 , 
Potential registers zp[4]:122 [ mul16s_compare::mf#0 ] : zp[4]:122 , 
Potential registers zp[2]:126 [ mul16s_error::a#0 ] : zp[2]:126 , 
Potential registers zp[2]:128 [ mul16s_error::b#0 ] : zp[2]:128 , 
Potential registers zp[4]:130 [ mul16s_error::ms#0 ] : zp[4]:130 , 
Potential registers zp[4]:134 [ mul16s_error::mn#0 ] : zp[4]:134 , 
Potential registers zp[4]:138 [ mul16s_error::mf#0 ] : zp[4]:138 , 
Potential registers zp[1]:142 [ print_byte::$0 ] : zp[1]:142 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:143 [ print_byte::$2 ] : zp[1]:143 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[4]:144 [ mulf16u::return#2 ] : zp[4]:144 , 
Potential registers zp[2]:148 [ mulf16s::$9 ] : zp[2]:148 , 
Potential registers zp[2]:150 [ mulf16s::$16 ] : zp[2]:150 , 
Potential registers zp[2]:152 [ mulf16s::$13 ] : zp[2]:152 , 
Potential registers zp[2]:154 [ mulf16s::$17 ] : zp[2]:154 , 
Potential registers zp[4]:156 [ mulf16s::return#0 ] : zp[4]:156 , 
Potential registers zp[4]:160 [ mulf16u::return#0 ] : zp[4]:160 , 
Potential registers zp[4]:164 [ mul16u::return#2 ] : zp[4]:164 , 
Potential registers zp[2]:168 [ mul16s::$9 ] : zp[2]:168 , 
Potential registers zp[2]:170 [ mul16s::$16 ] : zp[2]:170 , 
Potential registers zp[2]:172 [ mul16s::$13 ] : zp[2]:172 , 
Potential registers zp[2]:174 [ mul16s::$17 ] : zp[2]:174 , 
Potential registers zp[4]:176 [ mul16s::return#0 ] : zp[4]:176 , 
Potential registers zp[1]:180 [ mul16u::$1 ] : zp[1]:180 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:181 [ muls16u::a#0 ] : zp[2]:181 , 
Potential registers zp[2]:183 [ muls16u::b#0 ] : zp[2]:183 , 
Potential registers zp[4]:185 [ muls16u::return#2 ] : zp[4]:185 , 
Potential registers zp[4]:189 [ mul16u_compare::ms#0 ] : zp[4]:189 , 
Potential registers zp[4]:193 [ mul16u::return#3 ] : zp[4]:193 , 
Potential registers zp[4]:197 [ mul16u_compare::mn#0 ] : zp[4]:197 , 
Potential registers zp[4]:201 [ mulf16u::return#3 ] : zp[4]:201 , 
Potential registers zp[4]:205 [ mul16u_compare::mf#0 ] : zp[4]:205 , 
Potential registers zp[2]:209 [ mul16u_error::a#0 ] : zp[2]:209 , 
Potential registers zp[2]:211 [ mul16u_error::b#0 ] : zp[2]:211 , 
Potential registers zp[4]:213 [ mul16u_error::ms#0 ] : zp[4]:213 , 
Potential registers zp[4]:217 [ mul16u_error::mn#0 ] : zp[4]:217 , 
Potential registers zp[4]:221 [ mul16u_error::mf#0 ] : zp[4]:221 , 
Potential registers zp[1]:225 [ mulf_init::$1 ] : zp[1]:225 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:226 [ mulf_init::$4 ] : zp[1]:226 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:227 [ mulf_init::$5 ] : zp[1]:227 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [muls16s] 5,706: zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] 3,003: zp[2]:53 [ muls16s::j#2 muls16s::j#1 ] 3,003: zp[2]:59 [ muls16s::i#2 muls16s::i#1 ] 202: zp[4]:94 [ muls16s::return#2 ] 191.18: zp[2]:92 [ muls16s::b#0 ] 175.58: zp[2]:90 [ muls16s::a#0 ] 
Uplift Scope [mul16u] 3,446.71: zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 2,435.29: zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 2,002: zp[1]:180 [ mul16u::$1 ] 1,824.17: zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 309: zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] 202: zp[4]:193 [ mul16u::return#3 ] 4: zp[4]:164 [ mul16u::return#2 ] 
Uplift Scope [muls16u] 3,003: zp[2]:68 [ muls16u::i#2 muls16u::i#1 ] 2,869.83: zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] 202: zp[4]:185 [ muls16u::return#2 ] 183.67: zp[2]:183 [ muls16u::b#0 ] 157.71: zp[2]:181 [ muls16u::a#0 ] 
Uplift Scope [mul16u_compare] 241.86: zp[2]:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] 235.67: zp[1]:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] 159.58: zp[1]:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] 135.36: zp[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] 17.26: zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] 15.69: zp[4]:205 [ mul16u_compare::mf#0 ] 14.52: zp[4]:189 [ mul16u_compare::ms#0 ] 12: zp[4]:197 [ mul16u_compare::mn#0 ] 
Uplift Scope [mul16s_compare] 241.86: zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] 235.67: zp[1]:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] 159.58: zp[1]:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] 135.36: zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] 17.26: zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] 15.69: zp[4]:122 [ mul16s_compare::mf#0 ] 14.52: zp[4]:98 [ mul16s_compare::ms#0 ] 12: zp[4]:110 [ mul16s_compare::mn#0 ] 
Uplift Scope [mulf16u] 258.5: zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] 208: zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] 202: zp[4]:201 [ mulf16u::return#3 ] 26.25: zp[4]:160 [ mulf16u::return#0 ] 4: zp[4]:144 [ mulf16u::return#2 ] 
Uplift Scope [print_str] 305.5: zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] 
Uplift Scope [mul16s] 202: zp[4]:106 [ mul16s::return#2 ] 34.33: zp[4]:176 [ mul16s::return#0 ] 16.5: zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 9.36: zp[2]:104 [ mul16s::b#0 ] 7.36: zp[2]:102 [ mul16s::a#0 ] 4: zp[2]:168 [ mul16s::$9 ] 4: zp[2]:170 [ mul16s::$16 ] 4: zp[2]:172 [ mul16s::$13 ] 4: zp[2]:174 [ mul16s::$17 ] 
Uplift Scope [mulf16s] 202: zp[4]:118 [ mulf16s::return#2 ] 34.33: zp[4]:156 [ mulf16s::return#0 ] 16.5: zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 9.36: zp[2]:116 [ mulf16s::b#0 ] 7.36: zp[2]:114 [ mulf16s::a#0 ] 4: zp[2]:148 [ mulf16s::$9 ] 4: zp[2]:150 [ mulf16s::$16 ] 4: zp[2]:152 [ mulf16s::$13 ] 4: zp[2]:154 [ mulf16s::$17 ] 
Uplift Scope [] 237.59: zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ] 34.6: zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] 
Uplift Scope [mulf_init] 47.67: zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 26.89: zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 25.14: zp[2]:74 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 23.1: zp[1]:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp[1]:225 [ mulf_init::$1 ] 22: zp[1]:226 [ mulf_init::$4 ] 22: zp[1]:227 [ mulf_init::$5 ] 15.4: zp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 15.12: zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] 13.54: zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] 11.92: zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 10.08: zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] 
Uplift Scope [memset] 36.67: zp[2]:88 [ memset::dst#2 memset::dst#1 ] 
Uplift Scope [print_word] 24.67: zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] 
Uplift Scope [print_sdword] 22: zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] 
Uplift Scope [print_dword] 20: zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] 
Uplift Scope [print_byte] 10: zp[1]:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:142 [ print_byte::$0 ] 4: zp[1]:143 [ print_byte::$2 ] 
Uplift Scope [print_sword] 17.67: zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] 
Uplift Scope [print_char] 14: zp[1]:17 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] 
Uplift Scope [mul16u_error] 0.57: zp[2]:209 [ mul16u_error::a#0 ] 0.4: zp[2]:211 [ mul16u_error::b#0 ] 0.31: zp[4]:213 [ mul16u_error::ms#0 ] 0.25: zp[4]:217 [ mul16u_error::mn#0 ] 0.21: zp[4]:221 [ mul16u_error::mf#0 ] 
Uplift Scope [mul16s_error] 0.57: zp[2]:126 [ mul16s_error::a#0 ] 0.4: zp[2]:128 [ mul16s_error::b#0 ] 0.31: zp[4]:130 [ mul16s_error::ms#0 ] 0.25: zp[4]:134 [ mul16s_error::mn#0 ] 0.21: zp[4]:138 [ mul16s_error::mf#0 ] 
Uplift Scope [RADIX] 
Uplift Scope [print_ln] 
Uplift Scope [print_cls] 
Uplift Scope [main] 

Uplifting [muls16s] best 564939 combination zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] zp[2]:53 [ muls16s::j#2 muls16s::j#1 ] zp[2]:59 [ muls16s::i#2 muls16s::i#1 ] zp[4]:94 [ muls16s::return#2 ] zp[2]:92 [ muls16s::b#0 ] zp[2]:90 [ muls16s::a#0 ] 
Uplifting [mul16u] best 558939 combination zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] zp[4]:193 [ mul16u::return#3 ] zp[4]:164 [ mul16u::return#2 ] 
Uplifting [muls16u] best 558939 combination zp[2]:68 [ muls16u::i#2 muls16u::i#1 ] zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp[4]:185 [ muls16u::return#2 ] zp[2]:183 [ muls16u::b#0 ] zp[2]:181 [ muls16u::a#0 ] 
Uplifting [mul16u_compare] best 556839 combination zp[2]:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp[4]:205 [ mul16u_compare::mf#0 ] zp[4]:189 [ mul16u_compare::ms#0 ] zp[4]:197 [ mul16u_compare::mn#0 ] 
Uplifting [mul16s_compare] best 554739 combination zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp[4]:122 [ mul16s_compare::mf#0 ] zp[4]:98 [ mul16s_compare::ms#0 ] zp[4]:110 [ mul16s_compare::mn#0 ] 
Uplifting [mulf16u] best 554739 combination zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] zp[4]:201 [ mulf16u::return#3 ] zp[4]:160 [ mulf16u::return#0 ] zp[4]:144 [ mulf16u::return#2 ] 
Uplifting [print_str] best 554739 combination zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] 
Uplifting [mul16s] best 554739 combination zp[4]:106 [ mul16s::return#2 ] zp[4]:176 [ mul16s::return#0 ] zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[2]:104 [ mul16s::b#0 ] zp[2]:102 [ mul16s::a#0 ] zp[2]:168 [ mul16s::$9 ] zp[2]:170 [ mul16s::$16 ] zp[2]:172 [ mul16s::$13 ] zp[2]:174 [ mul16s::$17 ] 
Uplifting [mulf16s] best 554739 combination zp[4]:118 [ mulf16s::return#2 ] zp[4]:156 [ mulf16s::return#0 ] zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp[2]:116 [ mulf16s::b#0 ] zp[2]:114 [ mulf16s::a#0 ] zp[2]:148 [ mulf16s::$9 ] zp[2]:150 [ mulf16s::$16 ] zp[2]:152 [ mulf16s::$13 ] zp[2]:154 [ mulf16s::$17 ] 
Uplifting [] best 554739 combination zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ] zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] 
Uplifting [mulf_init] best 554489 combination zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp[2]:74 [ 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]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] 
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [memset] best 554489 combination zp[2]:88 [ memset::dst#2 memset::dst#1 ] 
Uplifting [print_word] best 554489 combination zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] 
Uplifting [print_sdword] best 554489 combination zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] 
Uplifting [print_dword] best 554489 combination zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] 
Uplifting [print_byte] best 554475 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] 
Uplifting [print_sword] best 554475 combination zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] 
Uplifting [print_char] best 554454 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] 
Uplifting [mul16u_error] best 554454 combination zp[2]:209 [ mul16u_error::a#0 ] zp[2]:211 [ mul16u_error::b#0 ] zp[4]:213 [ mul16u_error::ms#0 ] zp[4]:217 [ mul16u_error::mn#0 ] zp[4]:221 [ mul16u_error::mf#0 ] 
Uplifting [mul16s_error] best 554454 combination zp[2]:126 [ mul16s_error::a#0 ] zp[2]:128 [ mul16s_error::b#0 ] zp[4]:130 [ mul16s_error::ms#0 ] zp[4]:134 [ mul16s_error::mn#0 ] zp[4]:138 [ mul16s_error::mf#0 ] 
Uplifting [RADIX] best 554454 combination 
Uplifting [print_ln] best 554454 combination 
Uplifting [print_cls] best 554454 combination 
Uplifting [main] best 554454 combination 
Attempting to uplift remaining variables inzp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ]
Uplifting [mul16s_compare] best 554454 combination zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] 
Attempting to uplift remaining variables inzp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ]
Uplifting [mul16u_compare] best 554454 combination zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] 
Attempting to uplift remaining variables inzp[1]:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ]
Uplifting [mulf_init] best 554314 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] 
Attempting to uplift remaining variables inzp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ]
Uplifting [mulf_init] best 554314 combination zp[1]:85 [ mulf_init::dir#2 mulf_init::dir#4 ] 
Attempting to uplift remaining variables inzp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ]
Uplifting [mulf_init] best 554314 combination zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] 
Coalescing zero page register [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] ] with [ zp[2]:90 [ muls16s::a#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 ] ] with [ zp[2]:102 [ mul16s::a#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 ] ] with [ zp[2]:114 [ mulf16s::a#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 ] ] with [ zp[2]:126 [ mul16s_error::a#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] ] with [ zp[2]:92 [ muls16s::b#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 ] ] with [ zp[2]:104 [ mul16s::b#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 ] ] with [ zp[2]:116 [ mulf16s::b#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 ] ] with [ zp[2]:128 [ mul16s_error::b#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] ] with [ zp[4]:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] with [ zp[4]:130 [ mul16s_error::ms#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp[2]:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] - score: 1
Coalescing zero page register [ zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp[2]:209 [ mul16u_error::a#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] ] with [ zp[4]:144 [ mulf16u::return#2 ] ] - score: 1
Coalescing zero page register [ zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp[4]:156 [ mulf16s::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] ] with [ zp[2]:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] ] with [ zp[2]:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] ] - score: 1
Coalescing zero page register [ zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] ] with [ zp[4]:164 [ mul16u::return#2 ] ] - score: 1
Coalescing zero page register [ zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 ] ] with [ zp[4]:176 [ mul16s::return#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp[4]:193 [ mul16u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] ] with [ zp[4]:94 [ muls16s::return#2 ] ] - score: 1
Coalescing zero page register [ zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] ] with [ zp[4]:185 [ muls16u::return#2 ] ] - score: 1
Coalescing zero page register [ zp[4]:106 [ mul16s::return#2 ] ] with [ zp[4]:110 [ mul16s_compare::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:118 [ mulf16s::return#2 ] ] with [ zp[4]:122 [ mul16s_compare::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:148 [ mulf16s::$9 ] ] with [ zp[2]:150 [ mulf16s::$16 ] ] - score: 1
Coalescing zero page register [ zp[2]:152 [ mulf16s::$13 ] ] with [ zp[2]:154 [ mulf16s::$17 ] ] - score: 1
Coalescing zero page register [ zp[4]:160 [ mulf16u::return#0 ] ] with [ zp[4]:201 [ mulf16u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:168 [ mul16s::$9 ] ] with [ zp[2]:170 [ mul16s::$16 ] ] - score: 1
Coalescing zero page register [ zp[2]:172 [ mul16s::$13 ] ] with [ zp[2]:174 [ mul16s::$17 ] ] - score: 1
Coalescing zero page register [ zp[4]:189 [ mul16u_compare::ms#0 ] ] with [ zp[4]:213 [ mul16u_error::ms#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:197 [ mul16u_compare::mn#0 ] ] with [ zp[4]:217 [ mul16u_error::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:205 [ mul16u_compare::mf#0 ] ] with [ zp[4]:221 [ mul16u_error::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 ] ] with [ zp[2]:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 mul16u_error::a#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 ] ] with [ zp[4]:98 [ mul16s_compare::ms#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 ] ] with [ zp[4]:189 [ mul16u_compare::ms#0 mul16u_error::ms#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 ] ] with [ zp[4]:118 [ mulf16s::return#2 mul16s_compare::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 ] ] with [ zp[4]:160 [ mulf16u::return#0 mulf16u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] with [ zp[2]:181 [ muls16u::a#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] ] with [ zp[2]:41 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 ] ] with [ zp[2]:183 [ muls16u::b#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 muls16u::b#0 ] ] with [ zp[2]:211 [ mul16u_error::b#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 ] ] with [ zp[4]:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp[4]:106 [ mul16s::return#2 mul16s_compare::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 ] ] with [ zp[4]:55 [ muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 ] ] - score: 1
Coalescing zero page register [ zp[4]:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 ] ] with [ zp[4]:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] ] - score: 1
Coalescing zero page register [ zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 ] ] with [ zp[4]:138 [ mul16s_error::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 ] ] with [ zp[4]:205 [ mul16u_compare::mf#0 mul16u_error::mf#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 ] ] with [ zp[4]:134 [ mul16s_error::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 ] ] with [ zp[4]:197 [ mul16u_compare::mn#0 mul16u_error::mn#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] ] with [ zp[2]:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] ]
Coalescing zero page register [ zp[4]:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] ] with [ zp[4]:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ] ]
Coalescing zero page register [ zp[2]:53 [ muls16s::j#2 muls16s::j#1 ] ] with [ zp[2]:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ] ]
Coalescing zero page register [ zp[2]:59 [ muls16s::i#2 muls16s::i#1 ] ] with [ zp[2]:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ] ]
Coalescing zero page register [ zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] ] with [ zp[1]:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] ]
Coalescing zero page register [ zp[2]:68 [ muls16u::i#2 muls16u::i#1 ] ] with [ zp[2]:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 mul16u_error::a#0 ] ]
Coalescing zero page register [ zp[2]:74 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp[2]:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 ] ]
Coalescing zero page register [ zp[2]:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp[2]:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] ]
Coalescing zero page register [ zp[2]:80 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] with [ zp[2]:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ] ]
Coalescing zero page register [ zp[2]:88 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:83 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ]
Coalescing zero page register [ zp[2]:148 [ mulf16s::$9 mulf16s::$16 ] ] with [ zp[2]:86 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ]
Coalescing zero page register [ zp[2]:168 [ mul16s::$9 mul16s::$16 ] ] with [ zp[2]:152 [ mulf16s::$13 mulf16s::$17 ] ]
Coalescing zero page register [ zp[1]:76 [ mulf_init::c#2 mulf_init::c#1 ] ] with [ zp[1]:61 [ mul16u_compare::i#12 mul16u_compare::i#1 mul16s_compare::i#12 mul16s_compare::i#1 ] ]
Coalescing zero page register [ zp[2]:88 [ memset::dst#2 memset::dst#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] with [ zp[2]:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 print_str::str#15 print_str::str#17 print_str::str#0 ] ]
Coalescing zero page register [ zp[2]:148 [ mulf16s::$9 mulf16s::$16 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] with [ zp[2]:53 [ muls16s::j#2 muls16s::j#1 mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ] ]
Coalescing zero page register [ zp[2]:168 [ mul16s::$9 mul16s::$16 mulf16s::$13 mulf16s::$17 ] ] with [ zp[2]:59 [ muls16s::i#2 muls16s::i#1 mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ] ]
Coalescing zero page register [ zp[2]:172 [ mul16s::$13 mul16s::$17 ] ] with [ zp[2]:88 [ memset::dst#2 memset::dst#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 print_str::str#15 print_str::str#17 print_str::str#0 ] ]
Allocated (was zp[4]:13) zp[4]:2 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ]
Allocated (was zp[4]:37) zp[4]:6 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 mul16u_compare::mn#0 mul16u_error::mn#0 ]
Allocated (was zp[4]:49) zp[4]:10 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ]
Allocated (was zp[2]:68) zp[2]:14 [ muls16u::i#2 muls16u::i#1 mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 mul16u_error::a#0 ]
Allocated (was zp[2]:74) zp[2]:16 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 ]
Allocated (was zp[1]:76) zp[1]:18 [ mulf_init::c#2 mulf_init::c#1 mul16u_compare::i#12 mul16u_compare::i#1 mul16s_compare::i#12 mul16s_compare::i#1 ]
Allocated (was zp[2]:77) zp[2]:19 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ]
Allocated (was zp[2]:80) zp[2]:21 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ]
Allocated (was zp[1]:85) zp[1]:23 [ mulf_init::dir#2 mulf_init::dir#4 ]
Allocated (was zp[2]:148) zp[2]:24 [ mulf16s::$9 mulf16s::$16 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 muls16s::j#2 muls16s::j#1 mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ]
Allocated (was zp[2]:168) zp[2]:26 [ mul16s::$9 mul16s::$16 mulf16s::$13 mulf16s::$17 muls16s::i#2 muls16s::i#1 mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ]
Allocated (was zp[2]:172) zp[2]:28 [ mul16s::$13 mul16s::$17 memset::dst#2 memset::dst#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 print_str::str#15 print_str::str#17 print_str::str#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 = $15
  .label print_line_cursor = $13
  // @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 
    // [308] 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 
    // [279] 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 mul16u_compare 
    // [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare]
  mul16u_compare_from___b2:
    jsr mul16u_compare
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  __b3_from___b2:
    jmp __b3
    // main::@3
  __b3:
    // [11] call mul16s_compare 
    jsr mul16s_compare
    jmp __breturn
    // main::@return
  __breturn:
    // [12] return 
    rts
}
  // mul16s_compare
// Perform many possible word multiplications (slow and fast) and compare the results
mul16s_compare: {
    .label a = $e
    .label b = $10
    .label ms = 2
    .label mn = 6
    .label mf = $a
    .label i = $12
    // [13] (byte*) print_char_cursor#219 ← (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
    // [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1]
  __b1_from_mul16s_compare:
    // [14] phi (byte) mul16s_compare::i#12 = (byte) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [14] phi (signed word) mul16s_compare::b#6 = (signed word) -$7fff [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 
    lda #<-$7fff
    sta.z b
    lda #>-$7fff
    sta.z b+1
    // [14] phi (signed word) mul16s_compare::a#6 = (signed word) -$7fff [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 
    lda #<-$7fff
    sta.z a
    lda #>-$7fff
    sta.z a+1
    // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#219 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy 
    jmp __b1
    // [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1]
  __b1_from___b8:
    // [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy 
    // [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy 
    // [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy 
    // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy 
    jmp __b1
    // mul16s_compare::@1
  __b1:
    // [15] call print_str 
    // [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str]
  print_str_from___b1:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#149 [phi:mul16s_compare::@1->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2]
  __b2_from___b1:
    // [16] phi (byte) mul16s_compare::j#10 = (byte) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuyy=vbuc1 
    ldy #0
    // [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy 
    // [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy 
    jmp __b2
    // [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2]
  __b2_from___b5:
    // [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy 
    // [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy 
    // [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy 
    jmp __b2
    // mul16s_compare::@2
  __b2:
    // [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b -- vwsz1=vwsz1_plus_vwsc1 
    clc
    lda.z a
    adc #<$d2b
    sta.z a
    lda.z a+1
    adc #>$d2b
    sta.z a+1
    // [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd -- vwsz1=vwsz1_plus_vwsc1 
    clc
    lda.z b
    adc #<$ffd
    sta.z b
    lda.z b+1
    adc #>$ffd
    sta.z b+1
    // [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1
    // [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1
    // [21] call muls16s 
    jsr muls16s
    // [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0
    jmp __b10
    // mul16s_compare::@10
  __b10:
    // [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2
    // [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1
    // [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1
    // [26] call mul16s 
    jsr mul16s
    // [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
    jmp __b11
    // mul16s_compare::@11
  __b11:
    // [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2
    // [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1
    // [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1
    // [31] call mulf16s 
    jsr mulf16s
    // [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0
    jmp __b12
    // mul16s_compare::@12
  __b12:
    // [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2
    // [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    bne !+
    lda.z ms+2
    cmp.z mf+2
    bne !+
    lda.z ms+3
    cmp.z mf+3
    beq __b3_from___b12
  !:
    // [35] phi from mul16s_compare::@12 to mul16s_compare::@6 [phi:mul16s_compare::@12->mul16s_compare::@6]
  __b6_from___b12:
    jmp __b6
    // mul16s_compare::@6
  __b6:
    // [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3]
  __b3_from___b6:
    // [36] phi (byte) mul16s_compare::ok#4 = (byte) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b3
    // [36] phi from mul16s_compare::@12 to mul16s_compare::@3 [phi:mul16s_compare::@12->mul16s_compare::@3]
  __b3_from___b12:
    // [36] phi (byte) mul16s_compare::ok#4 = (byte) 1 [phi:mul16s_compare::@12->mul16s_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
    jmp __b3
    // mul16s_compare::@3
  __b3:
    // [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 -- vdsz1_eq_vdsz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    bne !+
    lda.z ms+2
    cmp.z mn+2
    bne !+
    lda.z ms+3
    cmp.z mn+3
    beq __b15_from___b3
  !:
    // [39] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4]
  __b4_from___b3:
    // [39] phi (byte) mul16s_compare::ok#3 = (byte) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b4
    // [38] phi from mul16s_compare::@3 to mul16s_compare::@15 [phi:mul16s_compare::@3->mul16s_compare::@15]
  __b15_from___b3:
    jmp __b15
    // mul16s_compare::@15
  __b15:
    // [39] phi from mul16s_compare::@15 to mul16s_compare::@4 [phi:mul16s_compare::@15->mul16s_compare::@4]
  __b4_from___b15:
    // [39] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@15->mul16s_compare::@4#0] -- register_copy 
    jmp __b4
    // mul16s_compare::@4
  __b4:
    // [40] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b5
    jmp __b7
    // mul16s_compare::@7
  __b7:
    // [41] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1
    // [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1
    // [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0
    // [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0
    // [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0
    // [47] call mul16s_error 
    // [71] phi from mul16s_compare::@7 to mul16s_error [phi:mul16s_compare::@7->mul16s_error]
  mul16s_error_from___b7:
    jsr mul16s_error
    jmp __breturn
    // mul16s_compare::@return
  __breturn:
    // [48] return 
    rts
    // mul16s_compare::@5
  __b5:
    // [49] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuyy=_inc_vbuyy 
    iny
    // [50] if((byte) mul16s_compare::j#1!=(byte) $10) goto mul16s_compare::@2 -- vbuyy_neq_vbuc1_then_la1 
    cpy #$10
    bne __b2_from___b5
    jmp __b8
    // mul16s_compare::@8
  __b8:
    // [51] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z i
    bne __b1_from___b8
    // [53] phi from mul16s_compare::@8 to mul16s_compare::@9 [phi:mul16s_compare::@8->mul16s_compare::@9]
  __b9_from___b8:
    jmp __b9
    // mul16s_compare::@9
  __b9:
    // [54] call print_ln 
    // [59] phi from mul16s_compare::@9 to print_ln [phi:mul16s_compare::@9->print_ln]
  print_ln_from___b9:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@9->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __b13
    // mul16s_compare::@13
  __b13:
    // [55] (byte*) print_char_cursor#180 ← (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
    // [56] call print_str 
    // [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str]
  print_str_from___b13:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    // [57] phi from mul16s_compare::@13 to mul16s_compare::@14 [phi:mul16s_compare::@13->mul16s_compare::@14]
  __b14_from___b13:
    jmp __b14
    // mul16s_compare::@14
  __b14:
    // [58] call print_ln 
    // [59] phi from mul16s_compare::@14 to print_ln [phi:mul16s_compare::@14->print_ln]
  print_ln_from___b14:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@14->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    str1: .text "signed word multiply results match!"
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [60] 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:
    // [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    jmp __b1
    // print_ln::@1
  __b1:
    // [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (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
  !:
    // [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) 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:
    // [63] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp($1c) str)
print_str: {
    .label str = $1c
    // [65] 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:
    // [65] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#154 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp __b1
    // print_str::@1
  __b1:
    // [66] if((byte) 0!=*((byte*) print_str::str#15)) 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:
    // [67] return 
    rts
    // print_str::@2
  __b2:
    // [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
    // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp __b1_from___b2
}
  // mul16s_error
// mul16s_error(signed word zp($e) a, signed word zp($10) b, signed dword zp(2) ms, signed dword zp(6) mn, signed dword zp($a) mf)
mul16s_error: {
    .label a = $e
    .label b = $10
    .label ms = 2
    .label mn = 6
    .label mf = $a
    // [72] call print_str 
    // [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str]
  print_str_from_mul16s_error:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16s_error->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16s_error::str [phi:mul16s_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
    // mul16s_error::@1
  __b1:
    // [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0
    // [74] call print_sword 
    // [129] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword]
  print_sword_from___b1:
    // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy 
    jsr print_sword
    // [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2]
  __b2_from___b1:
    jmp __b2
    // mul16s_error::@2
  __b2:
    // [76] call print_str 
    // [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str]
  print_str_from___b2:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@2->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str1 [phi:mul16s_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
    // mul16s_error::@3
  __b3:
    // [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 
    lda.z b
    sta.z print_sword.w
    lda.z b+1
    sta.z print_sword.w+1
    // [78] call print_sword 
    // [129] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword]
  print_sword_from___b3:
    // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy 
    jsr print_sword
    // [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4]
  __b4_from___b3:
    jmp __b4
    // mul16s_error::@4
  __b4:
    // [80] call print_str 
    // [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str]
  print_str_from___b4:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@4->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str2 [phi:mul16s_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
    // mul16s_error::@5
  __b5:
    // [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0
    // [82] call print_sdword 
    // [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword]
  print_sdword_from___b5:
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6]
  __b6_from___b5:
    jmp __b6
    // mul16s_error::@6
  __b6:
    // [84] call print_str 
    // [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str]
  print_str_from___b6:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@6->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str3 [phi:mul16s_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
    // mul16s_error::@7
  __b7:
    // [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 
    lda.z mn
    sta.z print_sdword.dw
    lda.z mn+1
    sta.z print_sdword.dw+1
    lda.z mn+2
    sta.z print_sdword.dw+2
    lda.z mn+3
    sta.z print_sdword.dw+3
    // [86] call print_sdword 
    // [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword]
  print_sdword_from___b7:
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8]
  __b8_from___b7:
    jmp __b8
    // mul16s_error::@8
  __b8:
    // [88] call print_str 
    // [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str]
  print_str_from___b8:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@8->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str4 [phi:mul16s_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
    // mul16s_error::@9
  __b9:
    // [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 
    lda.z mf
    sta.z print_sdword.dw
    lda.z mf+1
    sta.z print_sdword.dw+1
    lda.z mf+2
    sta.z print_sdword.dw+2
    lda.z mf+3
    sta.z print_sdword.dw+3
    // [90] call print_sdword 
    // [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword]
  print_sdword_from___b9:
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10]
  __b10_from___b9:
    jmp __b10
    // mul16s_error::@10
  __b10:
    // [92] call print_ln 
    // [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln]
  print_ln_from___b10:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16s_error::@10->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    // mul16s_error::@return
  __breturn:
    // [93] return 
    rts
    str: .text "signed word multiply mismatch "
    .byte 0
}
  // print_sdword
// Print a signed dword as HEX
// print_sdword(signed dword zp(2) dw)
print_sdword: {
    .label dw = 2
    // [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 
    lda.z dw+3
    bmi __b1_from_print_sdword
    // [96] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3]
  __b3_from_print_sdword:
    jmp __b3
    // print_sdword::@3
  __b3:
    // [97] call print_char 
    // [105] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char]
  print_char_from___b3:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@3->print_char#0] -- register_copy 
    // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [98] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [98] phi (signed dword) print_sdword::dw#6 = (signed dword) print_sdword::dw#4 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy 
    jmp __b2
    // print_sdword::@2
  __b2:
    // [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6
    // [100] call print_dword 
    // [109] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword]
  print_dword_from___b2:
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#22 [phi:print_sdword::@2->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy 
    jsr print_dword
    jmp __breturn
    // print_sdword::@return
  __breturn:
    // [101] return 
    rts
    // [102] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1]
  __b1_from_print_sdword:
    jmp __b1
    // print_sdword::@1
  __b1:
    // [103] call print_char 
    // [105] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char]
  print_char_from___b1:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@1->print_char#0] -- register_copy 
    // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp __b4
    // print_sdword::@4
  __b4:
    // [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 
    sec
    lda.z dw
    eor #$ff
    adc #0
    sta.z dw
    lda.z dw+1
    eor #$ff
    adc #0
    sta.z dw+1
    lda.z dw+2
    eor #$ff
    adc #0
    sta.z dw+2
    lda.z dw+3
    eor #$ff
    adc #0
    sta.z dw+3
    jmp __b2_from___b4
}
  // print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
    // [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
    // [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp __breturn
    // print_char::@return
  __breturn:
    // [108] return 
    rts
}
  // print_dword
// Print a dword as HEX
// print_dword(dword zp(2) dw)
print_dword: {
    .label dw = 2
    // [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 
    lda.z dw+2
    sta.z print_word.w
    lda.z dw+3
    sta.z print_word.w+1
    // [111] call print_word 
    // [115] phi from print_dword to print_word [phi:print_dword->print_word]
  print_word_from_print_dword:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#138 [phi:print_dword->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy 
    jsr print_word
    jmp __b1
    // print_dword::@1
  __b1:
    // [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 
    lda.z dw
    sta.z print_word.w
    lda.z dw+1
    sta.z print_word.w+1
    // [113] call print_word 
    // [115] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word]
  print_word_from___b1:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_dword::@1->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_dword::@return
  __breturn:
    // [114] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp($e) w)
print_word: {
    .label w = $e
    // [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 
    lda.z w+1
    tax
    // [117] call print_byte 
    // [121] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
    // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#137 [phi:print_word->print_byte#0] -- register_copy 
    // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __b1
    // print_word::@1
  __b1:
    // [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 
    lda.z w
    tax
    // [119] call print_byte 
    // [121] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from___b1:
    // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __breturn
    // print_word::@return
  __breturn:
    // [120] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
    // [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    // [123] (byte) print_char::ch#4 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    // [124] call print_char 
    // [105] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#142 [phi:print_byte->print_char#0] -- register_copy 
    // [105] 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:
    // [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // [126] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    // [127] call print_char 
    // [105] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from___b1:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#22 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [105] 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:
    // [128] return 
    rts
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp($e) w)
print_sword: {
    .label w = $e
    // [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1_from_print_sword
    // [131] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
  __b3_from_print_sword:
    jmp __b3
    // print_sword::@3
  __b3:
    // [132] call print_char 
    // [105] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
  print_char_from___b3:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [133] 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:
    // [133] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    jmp __b2
    // print_sword::@2
  __b2:
    // [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5
    // [135] call print_word 
    // [115] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
  print_word_from___b2:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_sword::@return
  __breturn:
    // [136] return 
    rts
    // [137] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
  __b1_from_print_sword:
    jmp __b1
    // print_sword::@1
  __b1:
    // [138] call print_char 
    // [105] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
  print_char_from___b1:
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [105] 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:
    // [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- 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
}
  // mulf16s
// Fast multiply two signed words to a signed double word result
// Fixes offsets introduced by using unsigned multiplication
// mulf16s(signed word zp($e) a, signed word zp($10) b)
mulf16s: {
    .label __9 = $18
    .label __13 = $1a
    .label __16 = $18
    .label __17 = $1a
    .label m = $a
    .label return = $a
    .label a = $e
    .label b = $10
    // [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 
    lda.z a
    sta.z mulf16u.a
    lda.z a+1
    sta.z mulf16u.a+1
    // [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z mulf16u.b
    lda.z b+1
    sta.z mulf16u.b+1
    // [142] call mulf16u 
    // [157] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u]
  mulf16u_from_mulf16s:
    // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy 
    // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy 
    jsr mulf16u
    // [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0
    jmp __b5
    // mulf16s::@5
  __b5:
    // [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2
    // [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 
    lda.z a+1
    bpl __b1_from___b5
    jmp __b3
    // mulf16s::@3
  __b3:
    // [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __9
    lda.z m+3
    sta.z __9+1
    // [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z __16
    sec
    sbc.z b
    sta.z __16
    lda.z __16+1
    sbc.z b+1
    sta.z __16+1
    // [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __16
    sta.z m+2
    lda.z __16+1
    sta.z m+3
    // [149] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [149] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy 
    jmp __b1
    // mulf16s::@1
  __b1:
    // [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 
    lda.z b+1
    bpl __b2_from___b1
    jmp __b4
    // mulf16s::@4
  __b4:
    // [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __13
    lda.z m+3
    sta.z __13+1
    // [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z __17
    sec
    sbc.z a
    sta.z __17
    lda.z __17+1
    sbc.z a+1
    sta.z __17+1
    // [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __17
    sta.z m+2
    lda.z __17+1
    sta.z m+3
    // [154] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2]
  __b2_from___b1:
  __b2_from___b4:
    // [154] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy 
    jmp __b2
    // mulf16s::@2
  __b2:
    // [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4
    jmp __breturn
    // mulf16s::@return
  __breturn:
    // [156] return 
    rts
}
  // mulf16u
// Fast multiply two unsigned words to a double word result
// Done in assembler to utilize fast addition A+X
// mulf16u(word zp($18) a, word zp($1a) b)
mulf16u: {
    .label memA = $f8
    .label memB = $fa
    .label memR = $fc
    .label return = $a
    .label a = $18
    .label b = $1a
    // [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 
    lda.z a
    sta memA
    lda.z a+1
    sta memA+1
    // [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 
    lda.z b
    sta memB
    lda.z b+1
    sta memB+1
    // asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !:  }
    lda memA
    sta sm1a+1
    sta sm3a+1
    sta sm5a+1
    sta sm7a+1
    eor #$ff
    sta sm2a+1
    sta sm4a+1
    sta sm6a+1
    sta sm8a+1
    lda memA+1
    sta sm1b+1
    sta sm3b+1
    sta sm5b+1
    sta sm7b+1
    eor #$ff
    sta sm2b+1
    sta sm4b+1
    sta sm6b+1
    sta sm8b+1
    ldx memB
    sec
  sm1a:
    lda mulf_sqr1_lo,x
  sm2a:
    sbc mulf_sqr2_lo,x
    sta memR+0
  sm3a:
    lda mulf_sqr1_hi,x
  sm4a:
    sbc mulf_sqr2_hi,x
    sta _AA+1
    sec
  sm1b:
    lda mulf_sqr1_lo,x
  sm2b:
    sbc mulf_sqr2_lo,x
    sta _cc+1
  sm3b:
    lda mulf_sqr1_hi,x
  sm4b:
    sbc mulf_sqr2_hi,x
    sta _CC+1
    ldx memB+1
    sec
  sm5a:
    lda mulf_sqr1_lo,x
  sm6a:
    sbc mulf_sqr2_lo,x
    sta _bb+1
  sm7a:
    lda mulf_sqr1_hi,x
  sm8a:
    sbc mulf_sqr2_hi,x
    sta _BB+1
    sec
  sm5b:
    lda mulf_sqr1_lo,x
  sm6b:
    sbc mulf_sqr2_lo,x
    sta _dd+1
  sm7b:
    lda mulf_sqr1_hi,x
  sm8b:
    sbc mulf_sqr2_hi,x
    sta memR+3
    clc
  _AA:
    lda #0
  _bb:
    adc #0
    sta memR+1
  _BB:
    lda #0
  _CC:
    adc #0
    sta memR+2
    bcc !+
    inc memR+3
    clc
  !:
  _cc:
    lda #0
    adc memR+1
    sta memR+1
  _dd:
    lda #0
    adc memR+2
    sta memR+2
    bcc !+
    inc memR+3
  !:
    // [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) -- vduz1=_deref_pduc1 
    lda memR
    sta.z return
    lda memR+1
    sta.z return+1
    lda memR+2
    sta.z return+2
    lda memR+3
    sta.z return+3
    jmp __breturn
    // mulf16u::@return
  __breturn:
    // [162] return 
    rts
}
  // mul16s
// Multiply of two signed words to a signed double word
// Fixes offsets introduced by using unsigned multiplication
// mul16s(signed word zp($e) a, signed word zp($10) b)
mul16s: {
    .label __9 = $1a
    .label __13 = $1c
    .label __16 = $1a
    .label __17 = $1c
    .label m = 6
    .label return = 6
    .label a = $e
    .label b = $10
    // [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u.a
    lda.z a+1
    sta.z mul16u.a+1
    // [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z mul16u.b
    lda.z b+1
    sta.z mul16u.b+1
    // [165] call mul16u 
    // [180] phi from mul16s to mul16u [phi:mul16s->mul16u]
  mul16u_from_mul16s:
    // [180] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy 
    // [180] phi (word) mul16u::b#2 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- register_copy 
    jsr mul16u
    // [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2
    jmp __b5
    // mul16s::@5
  __b5:
    // [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2
    // [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 
    lda.z a+1
    bpl __b1_from___b5
    jmp __b3
    // mul16s::@3
  __b3:
    // [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __9
    lda.z m+3
    sta.z __9+1
    // [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z __16
    sec
    sbc.z b
    sta.z __16
    lda.z __16+1
    sbc.z b+1
    sta.z __16+1
    // [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __16
    sta.z m+2
    lda.z __16+1
    sta.z m+3
    // [172] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [172] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy 
    jmp __b1
    // mul16s::@1
  __b1:
    // [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 
    lda.z b+1
    bpl __b2_from___b1
    jmp __b4
    // mul16s::@4
  __b4:
    // [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __13
    lda.z m+3
    sta.z __13+1
    // [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z __17
    sec
    sbc.z a
    sta.z __17
    lda.z __17+1
    sbc.z a+1
    sta.z __17+1
    // [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __17
    sta.z m+2
    lda.z __17+1
    sta.z m+3
    // [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2]
  __b2_from___b1:
  __b2_from___b4:
    // [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy 
    jmp __b2
    // mul16s::@2
  __b2:
    // [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
    jmp __breturn
    // mul16s::@return
  __breturn:
    // [179] return 
    rts
}
  // mul16u
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
// mul16u(word zp($1c) a, word zp($1a) b)
mul16u: {
    .label mb = $a
    .label a = $1c
    .label res = 6
    .label b = $1a
    .label return = 6
    // [181] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 
    lda.z b
    sta.z mb
    lda.z b+1
    sta.z mb+1
    lda #0
    sta.z mb+2
    sta.z mb+3
    // [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1]
  __b1_from_mul16u:
    // [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy 
    // [182] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 
    lda #<0
    sta.z res
    lda #>0
    sta.z res+1
    lda #<0>>$10
    sta.z res+2
    lda #>0>>$10
    sta.z res+3
    // [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy 
    jmp __b1
    // mul16u::@1
  __b1:
    // [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 
    lda.z a
    bne __b2
    lda.z a+1
    bne __b2
    jmp __breturn
    // mul16u::@return
  __breturn:
    // [184] return 
    rts
    // mul16u::@2
  __b2:
    // [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 
    lda #1
    and.z a
    // [186] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq __b3_from___b2
    jmp __b4
    // mul16u::@4
  __b4:
    // [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 
    lda.z res
    clc
    adc.z mb
    sta.z res
    lda.z res+1
    adc.z mb+1
    sta.z res+1
    lda.z res+2
    adc.z mb+2
    sta.z res+2
    lda.z res+3
    adc.z mb+3
    sta.z res+3
    // [188] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3]
  __b3_from___b2:
  __b3_from___b4:
    // [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy 
    jmp __b3
    // mul16u::@3
  __b3:
    // [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 
    lsr.z a+1
    ror.z a
    // [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 
    asl.z mb
    rol.z mb+1
    rol.z mb+2
    rol.z mb+3
    // [182] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1]
  __b1_from___b3:
    // [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy 
    // [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy 
    // [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy 
    jmp __b1
}
  // muls16s
// Slow multiplication of signed words
// Perform a signed multiplication by repeated addition/subtraction
// muls16s(signed word zp($e) a, signed word zp($10) b)
muls16s: {
    .label m = 2
    .label j = $18
    .label return = 2
    .label i = $1a
    .label a = $e
    .label b = $10
    // [191] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 
    lda.z a+1
    bmi __b5_from_muls16s
    jmp __b2
    // muls16s::@2
  __b2:
    // [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 
    lda.z a+1
    bmi __b1_from___b2
    bne !+
    lda.z a
    beq __b1_from___b2
  !:
    // [193] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3]
  __b3_from___b2:
    // [193] phi (signed dword) muls16s::m#3 = (signed dword) 0 [phi:muls16s::@2->muls16s::@3#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [193] phi (signed word) muls16s::j#2 = (signed word) 0 [phi:muls16s::@2->muls16s::@3#1] -- vwsz1=vwsc1 
    lda #<0
    sta.z j
    lda #>0
    sta.z j+1
    jmp __b3
    // muls16s::@3
  __b3:
    // [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 
    lda.z j+1
    cmp.z a+1
    bne __b4
    lda.z j
    cmp.z a
    bne __b4
    // [195] phi from muls16s::@3 muls16s::@5 to muls16s::@1 [phi:muls16s::@3/muls16s::@5->muls16s::@1]
  __b1_from___b3:
  __b1_from___b5:
    // [195] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#3 [phi:muls16s::@3/muls16s::@5->muls16s::@1#0] -- register_copy 
    jmp __b1
    // [195] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1]
  __b1_from___b2:
    // [195] phi (signed dword) muls16s::return#0 = (signed dword) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    lda #<0>>$10
    sta.z return+2
    lda #>0>>$10
    sta.z return+3
    jmp __b1
    // muls16s::@1
  __b1:
    jmp __breturn
    // muls16s::@return
  __breturn:
    // [196] return 
    rts
    // muls16s::@4
  __b4:
    // [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 
    lda.z b+1
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    lda.z m
    clc
    adc.z b
    sta.z m
    lda.z m+1
    adc.z b+1
    sta.z m+1
    lda.z m+2
    adc.z $ff
    sta.z m+2
    lda.z m+3
    adc.z $ff
    sta.z m+3
    // [198] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 
    inc.z j
    bne !+
    inc.z j+1
  !:
    // [193] phi from muls16s::@4 to muls16s::@3 [phi:muls16s::@4->muls16s::@3]
  __b3_from___b4:
    // [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@4->muls16s::@3#0] -- register_copy 
    // [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@4->muls16s::@3#1] -- register_copy 
    jmp __b3
    // [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5]
  __b5_from_muls16s:
    // [199] phi (signed dword) muls16s::m#5 = (signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [199] phi (signed word) muls16s::i#2 = (signed word) 0 [phi:muls16s->muls16s::@5#1] -- vwsz1=vwsc1 
    lda #<0
    sta.z i
    lda #>0
    sta.z i+1
    jmp __b5
    // muls16s::@5
  __b5:
    // [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 -- vwsz1_neq_vwsz2_then_la1 
    lda.z i+1
    cmp.z a+1
    bne __b6
    lda.z i
    cmp.z a
    bne __b6
    jmp __b1_from___b5
    // muls16s::@6
  __b6:
    // [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 
    lda.z b+1
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    sec
    lda.z m
    sbc.z b
    sta.z m
    lda.z m+1
    sbc.z b+1
    sta.z m+1
    lda.z m+2
    sbc.z $ff
    sta.z m+2
    lda.z m+3
    sbc.z $ff
    sta.z m+3
    // [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 
    lda.z i
    bne !+
    dec.z i+1
  !:
    dec.z i
    // [199] phi from muls16s::@6 to muls16s::@5 [phi:muls16s::@6->muls16s::@5]
  __b5_from___b6:
    // [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@6->muls16s::@5#0] -- register_copy 
    // [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@6->muls16s::@5#1] -- register_copy 
    jmp __b5
}
  // mul16u_compare
// Perform many possible word multiplications (slow and fast) and compare the results
mul16u_compare: {
    .label a = $18
    .label b = $1a
    .label ms = 2
    .label mn = 6
    .label mf = $a
    .label i = $12
    // [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1]
  __b1_from_mul16u_compare:
    // [204] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [204] phi (word) mul16u_compare::b#6 = (word) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z b
    lda #>0
    sta.z b+1
    // [204] phi (word) mul16u_compare::a#6 = (word) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vwuc1 
    lda #<0
    sta.z a
    lda #>0
    sta.z a+1
    // [204] phi (byte*) print_char_cursor#145 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    jmp __b1
    // [204] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1]
  __b1_from___b8:
    // [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy 
    // [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy 
    // [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy 
    // [204] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy 
    jmp __b1
    // mul16u_compare::@1
  __b1:
    // [205] call print_str 
    // [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str]
  print_str_from___b1:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#145 [phi:mul16u_compare::@1->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2]
  __b2_from___b1:
    // [206] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 
    ldy #0
    // [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy 
    // [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy 
    jmp __b2
    // [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2]
  __b2_from___b5:
    // [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy 
    // [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy 
    // [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy 
    jmp __b2
    // mul16u_compare::@2
  __b2:
    // [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 
    clc
    lda.z a
    adc #<$d2b
    sta.z a
    lda.z a+1
    adc #>$d2b
    sta.z a+1
    // [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 
    clc
    lda.z b
    adc #<$ffd
    sta.z b
    lda.z b+1
    adc #>$ffd
    sta.z b+1
    // [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1
    // [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1
    // [211] call muls16u 
    jsr muls16u
    // [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0
    jmp __b10
    // mul16u_compare::@10
  __b10:
    // [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2
    // [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u.a
    lda.z a+1
    sta.z mul16u.a+1
    // [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1
    // [216] call mul16u 
    // [180] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u]
  mul16u_from___b10:
    // [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy 
    // [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- register_copy 
    jsr mul16u
    // [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2
    jmp __b11
    // mul16u_compare::@11
  __b11:
    // [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3
    // [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1
    // [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1
    // [221] call mulf16u 
    // [157] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u]
  mulf16u_from___b11:
    // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy 
    // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy 
    jsr mulf16u
    // [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0
    jmp __b12
    // mul16u_compare::@12
  __b12:
    // [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3
    // [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    bne !+
    lda.z ms+2
    cmp.z mf+2
    bne !+
    lda.z ms+3
    cmp.z mf+3
    beq __b3_from___b12
  !:
    // [225] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6]
  __b6_from___b12:
    jmp __b6
    // mul16u_compare::@6
  __b6:
    // [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3]
  __b3_from___b6:
    // [226] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b3
    // [226] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3]
  __b3_from___b12:
    // [226] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
    jmp __b3
    // mul16u_compare::@3
  __b3:
    // [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    bne !+
    lda.z ms+2
    cmp.z mn+2
    bne !+
    lda.z ms+3
    cmp.z mn+3
    beq __b15_from___b3
  !:
    // [229] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4]
  __b4_from___b3:
    // [229] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b4
    // [228] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15]
  __b15_from___b3:
    jmp __b15
    // mul16u_compare::@15
  __b15:
    // [229] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4]
  __b4_from___b15:
    // [229] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy 
    jmp __b4
    // mul16u_compare::@4
  __b4:
    // [230] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b5
    jmp __b7
    // mul16u_compare::@7
  __b7:
    // [231] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u_error.a
    lda.z a+1
    sta.z mul16u_error.a+1
    // [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1
    // [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0
    // [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0
    // [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0
    // [237] call mul16u_error 
    // [249] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error]
  mul16u_error_from___b7:
    jsr mul16u_error
    jmp __breturn
    // mul16u_compare::@return
  __breturn:
    // [238] return 
    rts
    // mul16u_compare::@5
  __b5:
    // [239] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy 
    iny
    // [240] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 
    cpy #$10
    bne __b2_from___b5
    jmp __b8
    // mul16u_compare::@8
  __b8:
    // [241] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z i
    bne __b1_from___b8
    // [243] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9]
  __b9_from___b8:
    jmp __b9
    // mul16u_compare::@9
  __b9:
    // [244] call print_ln 
    // [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln]
  print_ln_from___b9:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@9->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    jmp __b13
    // mul16u_compare::@13
  __b13:
    // [245] (byte*) print_char_cursor#187 ← (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
    // [246] call print_str 
    // [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str]
  print_str_from___b13:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    // [247] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14]
  __b14_from___b13:
    jmp __b14
    // mul16u_compare::@14
  __b14:
    // [248] call print_ln 
    // [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln]
  print_ln_from___b14:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@14->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy 
    jsr print_ln
    jmp __breturn
    str1: .text "word multiply results match!"
    .byte 0
}
  // mul16u_error
// mul16u_error(word zp($e) a, word zp($1a) b, dword zp(2) ms, dword zp(6) mn, dword zp($a) mf)
mul16u_error: {
    .label a = $e
    .label b = $1a
    .label ms = 2
    .label mn = 6
    .label mf = $a
    // [250] call print_str 
    // [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str]
  print_str_from_mul16u_error:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16u_error->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16u_error::str [phi:mul16u_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
    // mul16u_error::@1
  __b1:
    // [251] (word) print_word::w#3 ← (word) mul16u_error::a#0
    // [252] call print_word 
    // [115] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word]
  print_word_from___b1:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@1->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy 
    jsr print_word
    // [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2]
  __b2_from___b1:
    jmp __b2
    // mul16u_error::@2
  __b2:
    // [254] call print_str 
    // [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str]
  print_str_from___b2:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@2->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str1 [phi:mul16u_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
    // mul16u_error::@3
  __b3:
    // [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z print_word.w
    lda.z b+1
    sta.z print_word.w+1
    // [256] call print_word 
    // [115] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word]
  print_word_from___b3:
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@3->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy 
    jsr print_word
    // [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4]
  __b4_from___b3:
    jmp __b4
    // mul16u_error::@4
  __b4:
    // [258] call print_str 
    // [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str]
  print_str_from___b4:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@4->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str2 [phi:mul16u_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
    // mul16u_error::@5
  __b5:
    // [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0
    // [260] call print_dword 
    // [109] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword]
  print_dword_from___b5:
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@5->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy 
    jsr print_dword
    // [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6]
  __b6_from___b5:
    jmp __b6
    // mul16u_error::@6
  __b6:
    // [262] call print_str 
    // [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str]
  print_str_from___b6:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@6->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str3 [phi:mul16u_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
    // mul16u_error::@7
  __b7:
    // [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 
    lda.z mn
    sta.z print_dword.dw
    lda.z mn+1
    sta.z print_dword.dw+1
    lda.z mn+2
    sta.z print_dword.dw+2
    lda.z mn+3
    sta.z print_dword.dw+3
    // [264] call print_dword 
    // [109] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword]
  print_dword_from___b7:
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@7->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy 
    jsr print_dword
    // [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8]
  __b8_from___b7:
    jmp __b8
    // mul16u_error::@8
  __b8:
    // [266] call print_str 
    // [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str]
  print_str_from___b8:
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@8->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str4 [phi:mul16u_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
    // mul16u_error::@9
  __b9:
    // [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 
    lda.z mf
    sta.z print_dword.dw
    lda.z mf+1
    sta.z print_dword.dw+1
    lda.z mf+2
    sta.z print_dword.dw+2
    lda.z mf+3
    sta.z print_dword.dw+3
    // [268] call print_dword 
    // [109] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword]
  print_dword_from___b9:
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@9->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy 
    jsr print_dword
    // [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10]
  __b10_from___b9:
    jmp __b10
    // mul16u_error::@10
  __b10:
    // [270] call print_ln 
    // [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln]
  print_ln_from___b10:
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16u_error::@10->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    jmp __breturn
    // mul16u_error::@return
  __breturn:
    // [271] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // muls16u
// Slow multiplication of unsigned words
// Calculate an unsigned multiplication by repeated addition
// muls16u(word zp($18) a, word zp($1a) b)
muls16u: {
    .label return = 2
    .label m = 2
    .label i = $e
    .label a = $18
    .label b = $1a
    // [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 
    lda.z a
    bne !+
    lda.z a+1
    beq __b1_from_muls16u
  !:
    // [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2]
  __b2_from_muls16u:
    // [273] phi (dword) muls16u::m#3 = (dword) 0 [phi:muls16u->muls16u::@2#0] -- vduz1=vduc1 
    lda #<0
    sta.z m
    lda #>0
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [273] phi (word) muls16u::i#2 = (word) 0 [phi:muls16u->muls16u::@2#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    lda #>0
    sta.z i+1
    jmp __b2
    // muls16u::@2
  __b2:
    // [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 -- vwuz1_neq_vwuz2_then_la1 
    lda.z i+1
    cmp.z a+1
    bne __b3
    lda.z i
    cmp.z a
    bne __b3
    // [275] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1]
  __b1_from___b2:
    // [275] phi (dword) muls16u::return#0 = (dword) muls16u::m#3 [phi:muls16u::@2->muls16u::@1#0] -- register_copy 
    jmp __b1
    // [275] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1]
  __b1_from_muls16u:
    // [275] phi (dword) muls16u::return#0 = (dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vduc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    lda #<0>>$10
    sta.z return+2
    lda #>0>>$10
    sta.z return+3
    jmp __b1
    // muls16u::@1
  __b1:
    jmp __breturn
    // muls16u::@return
  __breturn:
    // [276] return 
    rts
    // muls16u::@3
  __b3:
    // [277] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 
    lda.z m
    clc
    adc.z b
    sta.z m
    lda.z m+1
    adc.z b+1
    sta.z m+1
    lda.z m+2
    adc #0
    sta.z m+2
    lda.z m+3
    adc #0
    sta.z m+3
    // [278] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [273] phi from muls16u::@3 to muls16u::@2 [phi:muls16u::@3->muls16u::@2]
  __b2_from___b3:
    // [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@3->muls16u::@2#0] -- register_copy 
    // [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@3->muls16u::@2#1] -- register_copy 
    jmp __b2
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    // x/2
    .label c = $12
    // Counter used for determining x%2==0
    .label sqr1_hi = $13
    // 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 = $18
    .label sqr1_lo = $10
    // Decrease or increase x_255 - initially we decrease
    .label sqr2_hi = $1c
    .label sqr2_lo = $15
    //Start with g(0)=f(255)
    .label dir = $17
    // [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
  __b1_from_mulf_init:
    // [280] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [280] 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
    // [280] 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
    // [280] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // [280] 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:
    // [281] 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
    // [282] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
  __b5_from___b1:
    // [282] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [282] 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
    // [282] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 
    ldx #-1
    // [282] 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:
    // [283] 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:
    // [284] *((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
    // [285] *((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:
    // [286] return 
    rts
    // mulf_init::@6
  __b6:
    // [287] *((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
    // [288] *((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
    // [289] (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
  !:
    // [290] (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
    // [291] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b9_from___b6
    // [293] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
  __b8_from___b6:
    // [293] 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
    // [292] 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:
    // [293] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
  __b8_from___b9:
    // [293] 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:
    // [294] (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
  !:
    // [282] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
  __b5_from___b8:
    // [282] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [282] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [282] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [282] 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:
    // [295] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // [296] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 
    lda #1
    and.z c
    // [297] 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:
    // [298] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx 
    inx
    // [299] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [300] 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:
    // [300] 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 
    // [300] 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:
    // [301] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 
    lda.z sqr
    // [302] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_lo),y
    // [303] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 
    lda.z sqr+1
    // [304] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_hi),y
    // [305] (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
  !:
    // [306] (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
  !:
    // [307] (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
  !:
    // [280] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
  __b1_from___b3:
    // [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [280] 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: {
    // [309] call memset 
    // [311] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [310] 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 = $1c
    // [312] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [312] 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:
    // [313] 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:
    // [314] return 
    rts
    // memset::@2
  __b2:
    // [315] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [316] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [312] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [312] 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
  str: .text "."
  .byte 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 __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b12
Removing instruction jmp __b6
Removing instruction jmp __b3
Removing instruction jmp __b15
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 __b14
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __breturn
Removing instruction jmp __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 __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 __b1
Removing instruction jmp __breturn
Removing instruction jmp __b4
Removing instruction jmp __b3
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 __b15
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 __b14
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b1
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 lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Replacing instruction lda #<0 with 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___b3 with __b4
Replacing label __b2_from___b5 with __b2
Replacing label __b1_from___b8 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b2 with __b1
Replacing label __b1_from_print_sdword with __b1
Replacing label __b2_from___b4 with __b2
Replacing label __b1_from_print_sword 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 __b1_from___b5 with __b1
Replacing label __b2_from___b1 with __b2
Replacing label __b3_from___b2 with __b3
Replacing label __b15_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 mul16u_compare_from___b2:
Removing instruction __b3_from___b2:
Removing instruction __b1_from___b8:
Removing instruction print_str_from___b1:
Removing instruction __b2_from___b5:
Removing instruction __b6_from___b12:
Removing instruction __b3_from___b6:
Removing instruction __b15_from___b3:
Removing instruction __b15:
Removing instruction __b4_from___b15:
Removing instruction __b9_from___b8:
Removing instruction print_ln_from___b9:
Removing instruction __b14_from___b13:
Removing instruction print_ln_from___b14:
Removing instruction __b1_from_print_ln:
Removing instruction __b1_from___b1:
Removing instruction __b1_from_print_str:
Removing instruction __b1_from___b2:
Removing instruction print_sword_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_sdword_from___b5:
Removing instruction __b6_from___b5:
Removing instruction print_str_from___b6:
Removing instruction __b8_from___b7:
Removing instruction print_str_from___b8:
Removing instruction __b10_from___b9:
Removing instruction print_ln_from___b10:
Removing instruction __b3_from_print_sdword:
Removing instruction print_char_from___b3:
Removing instruction __b2_from___b3:
Removing instruction __b2_from___b4:
Removing instruction print_dword_from___b2:
Removing instruction __b1_from_print_sdword:
Removing instruction print_char_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___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 __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 __b1_from___b3:
Removing instruction __breturn:
Removing instruction __b1_from___b8:
Removing instruction print_str_from___b1:
Removing instruction __b2_from___b5:
Removing instruction mulf16u_from___b11:
Removing instruction __b6_from___b12:
Removing instruction __b3_from___b6:
Removing instruction __b15_from___b3:
Removing instruction __b15:
Removing instruction __b4_from___b15:
Removing instruction __b9_from___b8:
Removing instruction print_ln_from___b9:
Removing instruction __b14_from___b13:
Removing instruction print_ln_from___b14:
Removing instruction print_word_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_dword_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 __breturn:
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 __breturn:
Removing instruction __b1_from_mul16s_compare:
Removing instruction __b2_from___b1:
Removing instruction __b10:
Removing instruction __b11:
Removing instruction __b12:
Removing instruction __b6:
Removing instruction __b4_from___b3:
Removing instruction __b7:
Removing instruction mul16s_error_from___b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b13:
Removing instruction print_str_from___b13:
Removing instruction __b14:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction print_str_from_mul16s_error:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction print_sword_from___b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction print_sdword_from___b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction print_sdword_from___b9:
Removing instruction __b10:
Removing instruction __breturn:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction print_word_from_print_dword:
Removing instruction __b1:
Removing instruction print_word_from___b1:
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 __b3:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction mulf16u_from_mulf16s:
Removing instruction __b5:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction mul16u_from_mul16s:
Removing instruction __b5:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b1_from_mul16u:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __b1_from___b3:
Removing instruction __b2:
Removing instruction __b3_from___b2:
Removing instruction __b3_from___b4:
Removing instruction __b5_from___b6:
Removing instruction __b1_from_mul16u_compare:
Removing instruction __b2_from___b1:
Removing instruction __b10:
Removing instruction mul16u_from___b10:
Removing instruction __b11:
Removing instruction __b12:
Removing instruction __b6:
Removing instruction __b4_from___b3:
Removing instruction __b7:
Removing instruction mul16u_error_from___b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b13:
Removing instruction print_str_from___b13:
Removing instruction __b14:
Removing instruction print_str_from_mul16u_error:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction print_word_from___b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction print_dword_from___b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction print_dword_from___b9:
Removing instruction __b10:
Removing instruction __breturn:
Removing instruction __b2_from_muls16u:
Removing instruction __b1_from___b2:
Removing instruction __b2_from___b3:
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
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label __b3_from___b12 to b1
Relabelling long label __b1_from___b5 to b1
Relabelling long label __b1_from___b2 to b2
Relabelling long label __b5_from_muls16s to b3
Relabelling long label __b3_from___b12 to b1
Relabelling long label __b1_from_muls16u to b1
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b4
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+1
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction b1:
Removing instruction __breturn:
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination
Replacing jump to rts with rts in jmp __b1
Succesful ASM optimization Pass5DoubleJumpElimination
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [109] bne __b1 to beq
Fixing long branch [849] bne __b1 to beq

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::@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]:28 22.0
(byte*) memset::dst#2 dst zp[2]:28 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 dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
(word~) mul16s::$13 zp[2]:28 4.0
(word~) mul16s::$16 zp[2]:26 4.0
(word~) mul16s::$17 zp[2]:28 4.0
(word~) mul16s::$9 zp[2]:26 4.0
(label) mul16s::@1
(label) mul16s::@2
(label) mul16s::@3
(label) mul16s::@4
(label) mul16s::@5
(label) mul16s::@return
(signed word) mul16s::a
(signed word) mul16s::a#0 a zp[2]:14 7.357142857142858
(signed word) mul16s::b
(signed word) mul16s::b#0 b zp[2]:16 9.363636363636363
(dword) mul16s::m
(dword) mul16s::m#0 m zp[4]:6 2.0
(dword) mul16s::m#1 m zp[4]:6 4.0
(dword) mul16s::m#2 m zp[4]:6 4.0
(dword) mul16s::m#4 m zp[4]:6 4.0
(dword) mul16s::m#5 m zp[4]:6 2.5
(signed dword) mul16s::return
(signed dword) mul16s::return#0 return zp[4]:6 34.33333333333333
(signed dword) mul16s::return#2 return zp[4]:6 202.0
(void()) mul16s_compare()
(label) mul16s_compare::@1
(label) mul16s_compare::@10
(label) mul16s_compare::@11
(label) mul16s_compare::@12
(label) mul16s_compare::@13
(label) mul16s_compare::@14
(label) mul16s_compare::@15
(label) mul16s_compare::@2
(label) mul16s_compare::@3
(label) mul16s_compare::@4
(label) mul16s_compare::@5
(label) mul16s_compare::@6
(label) mul16s_compare::@7
(label) mul16s_compare::@8
(label) mul16s_compare::@9
(label) mul16s_compare::@return
(signed word) mul16s_compare::a
(signed word) mul16s_compare::a#1 a zp[2]:14 17.862068965517242
(signed word) mul16s_compare::a#2 a zp[2]:14 213.0
(signed word) mul16s_compare::a#6 a zp[2]:14 11.0
(signed word) mul16s_compare::b
(signed word) mul16s_compare::b#1 b zp[2]:16 17.862068965517242
(signed word) mul16s_compare::b#2 b zp[2]:16 106.5
(signed word) mul16s_compare::b#6 b zp[2]:16 11.0
(byte) mul16s_compare::i
(byte) mul16s_compare::i#1 i zp[1]:18 16.5
(byte) mul16s_compare::i#12 i zp[1]:18 0.7586206896551724
(byte) mul16s_compare::j
(byte) mul16s_compare::j#1 reg byte y 151.5
(byte) mul16s_compare::j#10 reg byte y 8.08
(signed dword) mul16s_compare::mf
(signed dword) mul16s_compare::mf#0 mf zp[4]:10 15.692307692307692
(signed dword) mul16s_compare::mn
(signed dword) mul16s_compare::mn#0 mn zp[4]:6 12.0
(signed dword) mul16s_compare::ms
(signed dword) mul16s_compare::ms#0 ms zp[4]:2 14.523809523809522
(byte) mul16s_compare::ok
(byte) mul16s_compare::ok#3 reg byte x 202.0
(byte) mul16s_compare::ok#4 reg byte x 33.666666666666664
(const byte*) mul16s_compare::str1[(byte) $24]  = (byte*) "signed word multiply results match!"
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
(label) mul16s_error::@1
(label) mul16s_error::@10
(label) mul16s_error::@2
(label) mul16s_error::@3
(label) mul16s_error::@4
(label) mul16s_error::@5
(label) mul16s_error::@6
(label) mul16s_error::@7
(label) mul16s_error::@8
(label) mul16s_error::@9
(label) mul16s_error::@return
(signed word) mul16s_error::a
(signed word) mul16s_error::a#0 a zp[2]:14 0.5714285714285714
(signed word) mul16s_error::b
(signed word) mul16s_error::b#0 b zp[2]:16 0.4
(signed dword) mul16s_error::mf
(signed dword) mul16s_error::mf#0 mf zp[4]:10 0.21052631578947367
(signed dword) mul16s_error::mn
(signed dword) mul16s_error::mn#0 mn zp[4]:6 0.25
(signed dword) mul16s_error::ms
(signed dword) mul16s_error::ms#0 ms zp[4]:2 0.3076923076923077
(const byte*) mul16s_error::str[(byte) $1f]  = (byte*) "signed word multiply mismatch "
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 2002.0
(label) mul16u::@1
(label) mul16u::@2
(label) mul16u::@3
(label) mul16u::@4
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp[2]:28 1001.0
(word) mul16u::a#1 a zp[2]:28 2.0
(word) mul16u::a#2 a zp[2]:28 101.0
(word) mul16u::a#3 a zp[2]:28 667.6666666666667
(word) mul16u::a#6 a zp[2]:28 52.5
(word) mul16u::b
(word) mul16u::b#0 b zp[2]:26 4.0
(word) mul16u::b#1 b zp[2]:26 202.0
(word) mul16u::b#2 b zp[2]:26 103.0
(dword) mul16u::mb
(dword) mul16u::mb#0 mb zp[4]:10 4.0
(dword) mul16u::mb#1 mb zp[4]:10 2002.0
(dword) mul16u::mb#2 mb zp[4]:10 429.2857142857143
(dword) mul16u::res
(dword) mul16u::res#1 res zp[4]:6 2002.0
(dword) mul16u::res#2 res zp[4]:6 443.7142857142857
(dword) mul16u::res#6 res zp[4]:6 1001.0
(dword) mul16u::return
(dword) mul16u::return#2 return zp[4]:6 4.0
(dword) mul16u::return#3 return zp[4]:6 202.0
(void()) mul16u_compare()
(label) mul16u_compare::@1
(label) mul16u_compare::@10
(label) mul16u_compare::@11
(label) mul16u_compare::@12
(label) mul16u_compare::@13
(label) mul16u_compare::@14
(label) mul16u_compare::@15
(label) mul16u_compare::@2
(label) mul16u_compare::@3
(label) mul16u_compare::@4
(label) mul16u_compare::@5
(label) mul16u_compare::@6
(label) mul16u_compare::@7
(label) mul16u_compare::@8
(label) mul16u_compare::@9
(label) mul16u_compare::@return
(word) mul16u_compare::a
(word) mul16u_compare::a#1 a zp[2]:24 17.862068965517242
(word) mul16u_compare::a#2 a zp[2]:24 213.0
(word) mul16u_compare::a#6 a zp[2]:24 11.0
(word) mul16u_compare::b
(word) mul16u_compare::b#1 b zp[2]:26 17.862068965517242
(word) mul16u_compare::b#2 b zp[2]:26 106.5
(word) mul16u_compare::b#6 b zp[2]:26 11.0
(byte) mul16u_compare::i
(byte) mul16u_compare::i#1 i zp[1]:18 16.5
(byte) mul16u_compare::i#12 i zp[1]:18 0.7586206896551724
(byte) mul16u_compare::j
(byte) mul16u_compare::j#1 reg byte y 151.5
(byte) mul16u_compare::j#10 reg byte y 8.08
(dword) mul16u_compare::mf
(dword) mul16u_compare::mf#0 mf zp[4]:10 15.692307692307692
(dword) mul16u_compare::mn
(dword) mul16u_compare::mn#0 mn zp[4]:6 12.0
(dword) mul16u_compare::ms
(dword) mul16u_compare::ms#0 ms zp[4]:2 14.523809523809522
(byte) mul16u_compare::ok
(byte) mul16u_compare::ok#3 reg byte x 202.0
(byte) mul16u_compare::ok#4 reg byte x 33.666666666666664
(const byte*) mul16u_compare::str1[(byte) $1d]  = (byte*) "word multiply results match!"
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
(label) mul16u_error::@1
(label) mul16u_error::@10
(label) mul16u_error::@2
(label) mul16u_error::@3
(label) mul16u_error::@4
(label) mul16u_error::@5
(label) mul16u_error::@6
(label) mul16u_error::@7
(label) mul16u_error::@8
(label) mul16u_error::@9
(label) mul16u_error::@return
(word) mul16u_error::a
(word) mul16u_error::a#0 a zp[2]:14 0.5714285714285714
(word) mul16u_error::b
(word) mul16u_error::b#0 b zp[2]:26 0.4
(dword) mul16u_error::mf
(dword) mul16u_error::mf#0 mf zp[4]:10 0.21052631578947367
(dword) mul16u_error::mn
(dword) mul16u_error::mn#0 mn zp[4]:6 0.25
(dword) mul16u_error::ms
(dword) mul16u_error::ms#0 ms zp[4]:2 0.3076923076923077
(const byte*) mul16u_error::str[(byte) $13]  = (byte*) "multiply mismatch "
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
(word~) mulf16s::$13 zp[2]:26 4.0
(word~) mulf16s::$16 zp[2]:24 4.0
(word~) mulf16s::$17 zp[2]:26 4.0
(word~) mulf16s::$9 zp[2]:24 4.0
(label) mulf16s::@1
(label) mulf16s::@2
(label) mulf16s::@3
(label) mulf16s::@4
(label) mulf16s::@5
(label) mulf16s::@return
(signed word) mulf16s::a
(signed word) mulf16s::a#0 a zp[2]:14 7.357142857142858
(signed word) mulf16s::b
(signed word) mulf16s::b#0 b zp[2]:16 9.363636363636363
(dword) mulf16s::m
(dword) mulf16s::m#0 m zp[4]:10 2.0
(dword) mulf16s::m#1 m zp[4]:10 4.0
(dword) mulf16s::m#2 m zp[4]:10 4.0
(dword) mulf16s::m#4 m zp[4]:10 4.0
(dword) mulf16s::m#5 m zp[4]:10 2.5
(signed dword) mulf16s::return
(signed dword) mulf16s::return#0 return zp[4]:10 34.33333333333333
(signed dword) mulf16s::return#2 return zp[4]:10 202.0
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
(label) mulf16u::@return
(word) mulf16u::a
(word) mulf16u::a#0 a zp[2]:24 2.0
(word) mulf16u::a#1 a zp[2]:24 101.0
(word) mulf16u::a#2 a zp[2]:24 105.0
(word) mulf16u::b
(word) mulf16u::b#0 b zp[2]:26 4.0
(word) mulf16u::b#1 b zp[2]:26 202.0
(word) mulf16u::b#2 b zp[2]:26 52.5
(const word*) mulf16u::memA = (word*) 248
(const word*) mulf16u::memB = (word*) 250
(const dword*) mulf16u::memR = (dword*) 252
(dword) mulf16u::return
(dword) mulf16u::return#0 return zp[4]:10 26.25
(dword) mulf16u::return#2 return zp[4]:10 4.0
(dword) mulf16u::return#3 return zp[4]:10 202.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]:18 2.5384615384615383
(byte) mulf_init::c#2 c zp[1]:18 11.0
(byte) mulf_init::dir
(byte) mulf_init::dir#2 dir zp[1]:23 4.125
(byte) mulf_init::dir#4 dir zp[1]:23 11.0
(word) mulf_init::sqr
(word) mulf_init::sqr#1 sqr zp[2]:24 11.0
(word) mulf_init::sqr#2 sqr zp[2]:24 22.0
(word) mulf_init::sqr#3 sqr zp[2]:24 9.166666666666666
(word) mulf_init::sqr#4 sqr zp[2]:24 5.5
(byte*) mulf_init::sqr1_hi
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:19 7.333333333333333
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:19 2.75
(byte*) mulf_init::sqr1_lo
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:16 22.0
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:16 3.142857142857143
(byte*) mulf_init::sqr2_hi
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:28 3.6666666666666665
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:28 8.25
(byte*) mulf_init::sqr2_lo
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:21 22.0
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:21 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
(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) }
(signed dword()) muls16s((signed word) muls16s::a , (signed word) muls16s::b)
(label) muls16s::@1
(label) muls16s::@2
(label) muls16s::@3
(label) muls16s::@4
(label) muls16s::@5
(label) muls16s::@6
(label) muls16s::@return
(signed word) muls16s::a
(signed word) muls16s::a#0 a zp[2]:14 175.58333333333334
(signed word) muls16s::b
(signed word) muls16s::b#0 b zp[2]:16 191.1818181818182
(signed word) muls16s::i
(signed word) muls16s::i#1 i zp[2]:26 2002.0
(signed word) muls16s::i#2 i zp[2]:26 1001.0
(signed word) muls16s::j
(signed word) muls16s::j#1 j zp[2]:24 2002.0
(signed word) muls16s::j#2 j zp[2]:24 1001.0
(signed dword) muls16s::m
(signed dword) muls16s::m#1 m zp[4]:2 1001.0
(signed dword) muls16s::m#2 m zp[4]:2 1001.0
(signed dword) muls16s::m#3 m zp[4]:2 1501.5
(signed dword) muls16s::m#5 m zp[4]:2 1501.5
(signed dword) muls16s::return
(signed dword) muls16s::return#0 return zp[4]:2 701.0
(signed dword) muls16s::return#2 return zp[4]:2 202.0
(dword()) muls16u((word) muls16u::a , (word) muls16u::b)
(label) muls16u::@1
(label) muls16u::@2
(label) muls16u::@3
(label) muls16u::@return
(word) muls16u::a
(word) muls16u::a#0 a zp[2]:24 157.71428571428572
(word) muls16u::b
(word) muls16u::b#0 b zp[2]:26 183.66666666666669
(word) muls16u::i
(word) muls16u::i#1 i zp[2]:14 2002.0
(word) muls16u::i#2 i zp[2]:14 1001.0
(dword) muls16u::m
(dword) muls16u::m#1 m zp[4]:2 1001.0
(dword) muls16u::m#3 m zp[4]:2 1501.5
(dword) muls16u::return
(dword) muls16u::return#0 return zp[4]:2 367.33333333333337
(dword) muls16u::return#2 return zp[4]:2 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 2.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 4.0
(byte) print_char::ch#6 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:21 101.0
(byte*) print_char_cursor#132 print_char_cursor zp[2]:21 3.1874999999999996
(byte*) print_char_cursor#133 print_char_cursor zp[2]:21 5.75
(byte*) print_char_cursor#137 print_char_cursor zp[2]:21 6.0
(byte*) print_char_cursor#138 print_char_cursor zp[2]:21 5.0
(byte*) print_char_cursor#142 print_char_cursor zp[2]:21 2.0
(byte*) print_char_cursor#145 print_char_cursor zp[2]:21 22.0
(byte*) print_char_cursor#149 print_char_cursor zp[2]:21 24.0
(byte*) print_char_cursor#154 print_char_cursor zp[2]:21 48.0
(byte*) print_char_cursor#180 print_char_cursor zp[2]:21 4.0
(byte*) print_char_cursor#187 print_char_cursor zp[2]:21 4.0
(byte*) print_char_cursor#219 print_char_cursor zp[2]:21 4.0
(byte*) print_char_cursor#22 print_char_cursor zp[2]:21 0.653061224489796
(byte*) print_char_cursor#88 print_char_cursor zp[2]:21 8.0
(void()) print_cls()
(label) print_cls::@return
(void()) print_dword((dword) print_dword::dw)
(label) print_dword::@1
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp[4]:2 4.0
(dword) print_dword::dw#1 dw zp[4]:2 4.0
(dword) print_dword::dw#2 dw zp[4]:2 4.0
(dword) print_dword::dw#3 dw zp[4]:2 4.0
(dword) print_dword::dw#4 dw zp[4]:2 3.9999999999999996
(const byte*) print_hextab[]  = (byte*) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:19 0.6025641025641025
(byte*) print_line_cursor#22 print_line_cursor zp[2]:19 24.0
(byte*) print_line_cursor#43 print_line_cursor zp[2]:19 10.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(byte*) print_screen
(void()) print_sdword((signed dword) print_sdword::dw)
(label) print_sdword::@1
(label) print_sdword::@2
(label) print_sdword::@3
(label) print_sdword::@4
(label) print_sdword::@return
(signed dword) print_sdword::dw
(signed dword) print_sdword::dw#0 dw zp[4]:2 4.0
(signed dword) print_sdword::dw#1 dw zp[4]:2 4.0
(signed dword) print_sdword::dw#2 dw zp[4]:2 4.0
(signed dword) print_sdword::dw#3 dw zp[4]:2 4.0
(signed dword) print_sdword::dw#4 dw zp[4]:2 1.9999999999999998
(signed dword) print_sdword::dw#6 dw zp[4]:2 4.0
(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]:28 202.0
(byte*) print_str::str#15 str zp[2]:28 101.5
(byte*) print_str::str#17 str zp[2]:28 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]:14 4.0
(signed word) print_sword::w#1 w zp[2]:14 4.0
(signed word) print_sword::w#2 w zp[2]:14 4.0
(signed word) print_sword::w#3 w zp[2]:14 1.6666666666666665
(signed word) print_sword::w#5 w zp[2]:14 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]:14 4.0
(word) print_word::w#1 w zp[2]:14 4.0
(word) print_word::w#2 w zp[2]:14 4.0
(word) print_word::w#3 w zp[2]:14 4.0
(word) print_word::w#4 w zp[2]:14 4.0
(word) print_word::w#5 w zp[2]:14 4.666666666666666
(const byte*) str[(byte) 2]  = (byte*) "."
(const byte*) str1[(byte) 2]  = (byte*) "*"
(const byte*) str2[(byte) 7]  = (byte*) " slow:"
(const byte*) str3[(byte) $b]  = (byte*) " / normal:"
(const byte*) str4[(byte) 9]  = (byte*) " / fast:"

reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ]
reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
zp[4]:2 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::return#0 muls16s::m#5 muls16s::m#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
zp[4]:6 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 mul16u_compare::mn#0 mul16u_error::mn#0 ]
zp[4]:10 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ]
reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ]
reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ]
zp[2]:14 [ muls16u::i#2 muls16u::i#1 mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 mul16u_error::a#0 ]
zp[2]:16 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 ]
zp[1]:18 [ mulf_init::c#2 mulf_init::c#1 mul16u_compare::i#12 mul16u_compare::i#1 mul16s_compare::i#12 mul16s_compare::i#1 ]
zp[2]:19 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ]
reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
zp[2]:21 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#219 print_char_cursor#132 print_char_cursor#22 print_char_cursor#180 print_char_cursor#145 print_char_cursor#187 print_char_cursor#1 ]
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
zp[1]:23 [ mulf_init::dir#2 mulf_init::dir#4 ]
reg byte a [ print_byte::$0 ]
reg byte x [ print_byte::$2 ]
zp[2]:24 [ mulf16s::$9 mulf16s::$16 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 muls16s::j#2 muls16s::j#1 mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ]
zp[2]:26 [ mul16s::$9 mul16s::$16 mulf16s::$13 mulf16s::$17 muls16s::i#2 muls16s::i#1 mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ]
zp[2]:28 [ mul16s::$13 mul16s::$17 memset::dst#2 memset::dst#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 print_str::str#15 print_str::str#17 print_str::str#0 ]
reg byte a [ mul16u::$1 ]
reg byte a [ mulf_init::$1 ]
reg byte a [ mulf_init::$4 ]
reg byte a [ mulf_init::$5 ]


FINAL ASSEMBLER
Score: 469028

  // 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 = $15
  .label print_line_cursor = $13
  // @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 
    // [308] 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 
    // [279] 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
    // mul16u_compare()
    // [9] call mul16u_compare 
    // [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare]
    jsr mul16u_compare
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
    // main::@3
    // mul16s_compare()
    // [11] call mul16s_compare 
    jsr mul16s_compare
    // main::@return
    // }
    // [12] return 
    rts
}
  // mul16s_compare
// Perform many possible word multiplications (slow and fast) and compare the results
mul16s_compare: {
    .label a = $e
    .label b = $10
    .label ms = 2
    .label mn = 6
    .label mf = $a
    .label i = $12
    // [13] (byte*) print_char_cursor#219 ← (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
    // [14] phi from mul16s_compare to mul16s_compare::@1 [phi:mul16s_compare->mul16s_compare::@1]
    // [14] phi (byte) mul16s_compare::i#12 = (byte) 0 [phi:mul16s_compare->mul16s_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [14] phi (signed word) mul16s_compare::b#6 = (signed word) -$7fff [phi:mul16s_compare->mul16s_compare::@1#1] -- vwsz1=vwsc1 
    lda #<-$7fff
    sta.z b
    lda #>-$7fff
    sta.z b+1
    // [14] phi (signed word) mul16s_compare::a#6 = (signed word) -$7fff [phi:mul16s_compare->mul16s_compare::@1#2] -- vwsz1=vwsc1 
    lda #<-$7fff
    sta.z a
    lda #>-$7fff
    sta.z a+1
    // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#219 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy 
    // [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1]
    // [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy 
    // [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy 
    // [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy 
    // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy 
    // mul16s_compare::@1
  __b1:
    // print_str(".")
    // [15] call print_str 
    // [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#149 [phi:mul16s_compare::@1->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [16] phi from mul16s_compare::@1 to mul16s_compare::@2 [phi:mul16s_compare::@1->mul16s_compare::@2]
    // [16] phi (byte) mul16s_compare::j#10 = (byte) 0 [phi:mul16s_compare::@1->mul16s_compare::@2#0] -- vbuyy=vbuc1 
    ldy #0
    // [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#6 [phi:mul16s_compare::@1->mul16s_compare::@2#1] -- register_copy 
    // [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#6 [phi:mul16s_compare::@1->mul16s_compare::@2#2] -- register_copy 
    // [16] phi from mul16s_compare::@5 to mul16s_compare::@2 [phi:mul16s_compare::@5->mul16s_compare::@2]
    // [16] phi (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#1 [phi:mul16s_compare::@5->mul16s_compare::@2#0] -- register_copy 
    // [16] phi (signed word) mul16s_compare::b#2 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@5->mul16s_compare::@2#1] -- register_copy 
    // [16] phi (signed word) mul16s_compare::a#2 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@5->mul16s_compare::@2#2] -- register_copy 
    // mul16s_compare::@2
  __b2:
    // a=a+3371
    // [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b -- vwsz1=vwsz1_plus_vwsc1 
    clc
    lda.z a
    adc #<$d2b
    sta.z a
    lda.z a+1
    adc #>$d2b
    sta.z a+1
    // b=b+4093
    // [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd -- vwsz1=vwsz1_plus_vwsc1 
    clc
    lda.z b
    adc #<$ffd
    sta.z b
    lda.z b+1
    adc #>$ffd
    sta.z b+1
    // muls16s(a, b)
    // [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1
    // [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1
    // [21] call muls16s 
    jsr muls16s
    // [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0
    // mul16s_compare::@10
    // ms = muls16s(a, b)
    // [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2
    // mul16s(a,b)
    // [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1
    // [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1
    // [26] call mul16s 
    jsr mul16s
    // [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
    // mul16s_compare::@11
    // mn = mul16s(a,b)
    // [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2
    // mulf16s(a,b)
    // [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1
    // [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1
    // [31] call mulf16s 
    jsr mulf16s
    // [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0
    // mul16s_compare::@12
    // mf = mulf16s(a,b)
    // [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2
    // if(ms!=mf)
    // [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -- vdsz1_eq_vdsz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    bne !+
    lda.z ms+2
    cmp.z mf+2
    bne !+
    lda.z ms+3
    cmp.z mf+3
    beq b1
  !:
    // [35] phi from mul16s_compare::@12 to mul16s_compare::@6 [phi:mul16s_compare::@12->mul16s_compare::@6]
    // mul16s_compare::@6
    // [36] phi from mul16s_compare::@6 to mul16s_compare::@3 [phi:mul16s_compare::@6->mul16s_compare::@3]
    // [36] phi (byte) mul16s_compare::ok#4 = (byte) 0 [phi:mul16s_compare::@6->mul16s_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b3
    // [36] phi from mul16s_compare::@12 to mul16s_compare::@3 [phi:mul16s_compare::@12->mul16s_compare::@3]
  b1:
    // [36] phi (byte) mul16s_compare::ok#4 = (byte) 1 [phi:mul16s_compare::@12->mul16s_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
    // mul16s_compare::@3
  __b3:
    // if(ms!=mn)
    // [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 -- vdsz1_eq_vdsz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    bne !+
    lda.z ms+2
    cmp.z mn+2
    bne !+
    lda.z ms+3
    cmp.z mn+3
    beq __b4
  !:
    // [39] phi from mul16s_compare::@3 to mul16s_compare::@4 [phi:mul16s_compare::@3->mul16s_compare::@4]
    // [39] phi (byte) mul16s_compare::ok#3 = (byte) 0 [phi:mul16s_compare::@3->mul16s_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    // [38] phi from mul16s_compare::@3 to mul16s_compare::@15 [phi:mul16s_compare::@3->mul16s_compare::@15]
    // mul16s_compare::@15
    // [39] phi from mul16s_compare::@15 to mul16s_compare::@4 [phi:mul16s_compare::@15->mul16s_compare::@4]
    // [39] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@15->mul16s_compare::@4#0] -- register_copy 
    // mul16s_compare::@4
  __b4:
    // if(ok==0)
    // [40] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b5
    // mul16s_compare::@7
    // *BGCOL = 2
    // [41] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // mul16s_error(a,b, ms, mn, mf)
    // [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1
    // [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1
    // [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0
    // [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0
    // [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0
    // [47] call mul16s_error 
    // [71] phi from mul16s_compare::@7 to mul16s_error [phi:mul16s_compare::@7->mul16s_error]
    jsr mul16s_error
    // mul16s_compare::@return
    // }
    // [48] return 
    rts
    // mul16s_compare::@5
  __b5:
    // for(byte j: 0..15)
    // [49] (byte) mul16s_compare::j#1 ← ++ (byte) mul16s_compare::j#10 -- vbuyy=_inc_vbuyy 
    iny
    // [50] if((byte) mul16s_compare::j#1!=(byte) $10) goto mul16s_compare::@2 -- vbuyy_neq_vbuc1_then_la1 
    cpy #$10
    bne __b2
    // mul16s_compare::@8
    // for(byte i: 0..15)
    // [51] (byte) mul16s_compare::i#1 ← ++ (byte) mul16s_compare::i#12 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z i
    beq !__b1+
    jmp __b1
  !__b1:
    // [53] phi from mul16s_compare::@8 to mul16s_compare::@9 [phi:mul16s_compare::@8->mul16s_compare::@9]
    // mul16s_compare::@9
    // print_ln()
    // [54] call print_ln 
    // [59] phi from mul16s_compare::@9 to print_ln [phi:mul16s_compare::@9->print_ln]
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@9->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy 
    jsr print_ln
    // mul16s_compare::@13
    // [55] (byte*) print_char_cursor#180 ← (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 word multiply results match!")
    // [56] call print_str 
    // [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    // [57] phi from mul16s_compare::@13 to mul16s_compare::@14 [phi:mul16s_compare::@13->mul16s_compare::@14]
    // mul16s_compare::@14
    // print_ln()
    // [58] call print_ln 
    // [59] phi from mul16s_compare::@14 to print_ln [phi:mul16s_compare::@14->print_ln]
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@14->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy 
    jsr print_ln
    rts
    str1: .text "signed word multiply results match!"
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [60] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
    // [60] phi (byte*) print_line_cursor#22 = (byte*) print_line_cursor#43 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    // print_ln::@1
  __b1:
    // print_line_cursor + $28
    // [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (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)
    // [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) 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
    // }
    // [63] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp($1c) str)
print_str: {
    .label str = $1c
    // [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
    // [65] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#154 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    // print_str::@1
  __b1:
    // while(*str)
    // [66] if((byte) 0!=*((byte*) print_str::str#15)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne __b2
    // print_str::@return
    // }
    // [67] return 
    rts
    // print_str::@2
  __b2:
    // *(print_char_cursor++) = *(str++)
    // [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    sta (print_char_cursor),y
    // *(print_char_cursor++) = *(str++);
    // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp __b1
}
  // mul16s_error
// mul16s_error(signed word zp($e) a, signed word zp($10) b, signed dword zp(2) ms, signed dword zp(6) mn, signed dword zp($a) mf)
mul16s_error: {
    .label a = $e
    .label b = $10
    .label ms = 2
    .label mn = 6
    .label mf = $a
    // print_str("signed word multiply mismatch ")
    // [72] call print_str 
    // [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16s_error->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // mul16s_error::@1
    // print_sword(a)
    // [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0
    // [74] call print_sword 
    // [129] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword]
    // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy 
    jsr print_sword
    // [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2]
    // mul16s_error::@2
    // print_str("*")
    // [76] call print_str 
    // [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@2->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str1 [phi:mul16s_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
    // mul16s_error::@3
    // print_sword(b)
    // [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 -- vwsz1=vwsz2 
    lda.z b
    sta.z print_sword.w
    lda.z b+1
    sta.z print_sword.w+1
    // [78] call print_sword 
    // [129] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword]
    // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy 
    jsr print_sword
    // [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4]
    // mul16s_error::@4
    // print_str(" slow:")
    // [80] call print_str 
    // [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@4->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str2 [phi:mul16s_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
    // mul16s_error::@5
    // print_sdword(ms)
    // [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0
    // [82] call print_sdword 
    // [94] phi from mul16s_error::@5 to print_sdword [phi:mul16s_error::@5->print_sdword]
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#1 [phi:mul16s_error::@5->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [83] phi from mul16s_error::@5 to mul16s_error::@6 [phi:mul16s_error::@5->mul16s_error::@6]
    // mul16s_error::@6
    // print_str(" / normal:")
    // [84] call print_str 
    // [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@6->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str3 [phi:mul16s_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
    // mul16s_error::@7
    // print_sdword(mn)
    // [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 -- vdsz1=vdsz2 
    lda.z mn
    sta.z print_sdword.dw
    lda.z mn+1
    sta.z print_sdword.dw+1
    lda.z mn+2
    sta.z print_sdword.dw+2
    lda.z mn+3
    sta.z print_sdword.dw+3
    // [86] call print_sdword 
    // [94] phi from mul16s_error::@7 to print_sdword [phi:mul16s_error::@7->print_sdword]
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#2 [phi:mul16s_error::@7->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [87] phi from mul16s_error::@7 to mul16s_error::@8 [phi:mul16s_error::@7->mul16s_error::@8]
    // mul16s_error::@8
    // print_str(" / fast:")
    // [88] call print_str 
    // [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@8->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str4 [phi:mul16s_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
    // mul16s_error::@9
    // print_sdword(mf)
    // [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 -- vdsz1=vdsz2 
    lda.z mf
    sta.z print_sdword.dw
    lda.z mf+1
    sta.z print_sdword.dw+1
    lda.z mf+2
    sta.z print_sdword.dw+2
    lda.z mf+3
    sta.z print_sdword.dw+3
    // [90] call print_sdword 
    // [94] phi from mul16s_error::@9 to print_sdword [phi:mul16s_error::@9->print_sdword]
    // [94] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:mul16s_error::@9->print_sdword#0] -- register_copy 
    jsr print_sdword
    // [91] phi from mul16s_error::@9 to mul16s_error::@10 [phi:mul16s_error::@9->mul16s_error::@10]
    // mul16s_error::@10
    // print_ln()
    // [92] call print_ln 
    // [59] phi from mul16s_error::@10 to print_ln [phi:mul16s_error::@10->print_ln]
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16s_error::@10->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy 
    jsr print_ln
    // mul16s_error::@return
    // }
    // [93] return 
    rts
    str: .text "signed word multiply mismatch "
    .byte 0
}
  // print_sdword
// Print a signed dword as HEX
// print_sdword(signed dword zp(2) dw)
print_sdword: {
    .label dw = 2
    // if(dw<0)
    // [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 
    lda.z dw+3
    bmi __b1
    // [96] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3]
    // print_sdword::@3
    // print_char(' ')
    // [97] call print_char 
    // [105] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char]
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@3->print_char#0] -- register_copy 
    // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [98] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2]
    // [98] phi (signed dword) print_sdword::dw#6 = (signed dword) print_sdword::dw#4 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy 
    // print_sdword::@2
  __b2:
    // print_dword((dword)dw)
    // [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6
    // [100] call print_dword 
    // [109] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword]
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#22 [phi:print_sdword::@2->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy 
    jsr print_dword
    // print_sdword::@return
    // }
    // [101] return 
    rts
    // [102] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1]
    // print_sdword::@1
  __b1:
    // print_char('-')
    // [103] call print_char 
    // [105] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char]
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@1->print_char#0] -- register_copy 
    // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    // print_sdword::@4
    // dw = -dw
    // [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 
    sec
    lda.z dw
    eor #$ff
    adc #0
    sta.z dw
    lda.z dw+1
    eor #$ff
    adc #0
    sta.z dw+1
    lda.z dw+2
    eor #$ff
    adc #0
    sta.z dw+2
    lda.z dw+3
    eor #$ff
    adc #0
    sta.z dw+3
    jmp __b2
}
  // print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
    // *(print_char_cursor++) = ch
    // [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
    // *(print_char_cursor++) = ch;
    // [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // print_char::@return
    // }
    // [108] return 
    rts
}
  // print_dword
// Print a dword as HEX
// print_dword(dword zp(2) dw)
print_dword: {
    .label dw = 2
    // print_word(>dw)
    // [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 
    lda.z dw+2
    sta.z print_word.w
    lda.z dw+3
    sta.z print_word.w+1
    // [111] call print_word 
    // [115] phi from print_dword to print_word [phi:print_dword->print_word]
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#138 [phi:print_dword->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy 
    jsr print_word
    // print_dword::@1
    // print_word(<dw)
    // [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 
    lda.z dw
    sta.z print_word.w
    lda.z dw+1
    sta.z print_word.w+1
    // [113] call print_word 
    // [115] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word]
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_dword::@1->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy 
    jsr print_word
    // print_dword::@return
    // }
    // [114] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp($e) w)
print_word: {
    .label w = $e
    // print_byte(>w)
    // [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 
    lda.z w+1
    tax
    // [117] call print_byte 
    // [121] phi from print_word to print_byte [phi:print_word->print_byte]
    // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#137 [phi:print_word->print_byte#0] -- register_copy 
    // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    // print_word::@1
    // print_byte(<w)
    // [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 
    lda.z w
    tax
    // [119] call print_byte 
    // [121] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
    // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // print_word::@return
    // }
    // [120] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
    // b>>4
    // [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    // print_char(print_hextab[b>>4])
    // [123] (byte) print_char::ch#4 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    // [124] call print_char 
    // [105] phi from print_byte to print_char [phi:print_byte->print_char]
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#142 [phi:print_byte->print_char#0] -- register_copy 
    // [105] 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
    // [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // print_char(print_hextab[b&$f])
    // [126] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    // [127] call print_char 
    // [105] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#22 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [105] 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
    // }
    // [128] return 
    rts
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp($e) w)
print_sword: {
    .label w = $e
    // if(w<0)
    // [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1
    // [131] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
    // print_sword::@3
    // print_char(' ')
    // [132] call print_char 
    // [105] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [133] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2]
    // [133] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    // print_sword::@2
  __b2:
    // print_word((word)w)
    // [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5
    // [135] call print_word 
    // [115] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    // print_sword::@return
    // }
    // [136] return 
    rts
    // [137] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
    // print_sword::@1
  __b1:
    // print_char('-')
    // [138] call print_char 
    // [105] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
    // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [105] 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
    // [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 
    sec
    lda #0
    sbc.z w
    sta.z w
    lda #0
    sbc.z w+1
    sta.z w+1
    jmp __b2
}
  // mulf16s
// Fast multiply two signed words to a signed double word result
// Fixes offsets introduced by using unsigned multiplication
// mulf16s(signed word zp($e) a, signed word zp($10) b)
mulf16s: {
    .label __9 = $18
    .label __13 = $1a
    .label __16 = $18
    .label __17 = $1a
    .label m = $a
    .label return = $a
    .label a = $e
    .label b = $10
    // mulf16u((word)a, (word)b)
    // [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 
    lda.z a
    sta.z mulf16u.a
    lda.z a+1
    sta.z mulf16u.a+1
    // [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z mulf16u.b
    lda.z b+1
    sta.z mulf16u.b+1
    // [142] call mulf16u 
    // [157] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u]
    // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy 
    // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy 
    jsr mulf16u
    // mulf16u((word)a, (word)b)
    // [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0
    // mulf16s::@5
    // m = mulf16u((word)a, (word)b)
    // [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2
    // if(a<0)
    // [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 
    lda.z a+1
    bpl __b1
    // mulf16s::@3
    // >m
    // [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __9
    lda.z m+3
    sta.z __9+1
    // >m = (>m)-(word)b
    // [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z __16
    sec
    sbc.z b
    sta.z __16
    lda.z __16+1
    sbc.z b+1
    sta.z __16+1
    // [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __16
    sta.z m+2
    lda.z __16+1
    sta.z m+3
    // [149] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1]
    // [149] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy 
    // mulf16s::@1
  __b1:
    // if(b<0)
    // [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 
    lda.z b+1
    bpl __b2
    // mulf16s::@4
    // >m
    // [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __13
    lda.z m+3
    sta.z __13+1
    // >m = (>m)-(word)a
    // [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z __17
    sec
    sbc.z a
    sta.z __17
    lda.z __17+1
    sbc.z a+1
    sta.z __17+1
    // [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __17
    sta.z m+2
    lda.z __17+1
    sta.z m+3
    // [154] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2]
    // [154] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy 
    // mulf16s::@2
  __b2:
    // (signed dword)m
    // [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4
    // mulf16s::@return
    // }
    // [156] return 
    rts
}
  // mulf16u
// Fast multiply two unsigned words to a double word result
// Done in assembler to utilize fast addition A+X
// mulf16u(word zp($18) a, word zp($1a) b)
mulf16u: {
    .label memA = $f8
    .label memB = $fa
    .label memR = $fc
    .label return = $a
    .label a = $18
    .label b = $1a
    // *memA = a
    // [158] *((const word*) mulf16u::memA) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 
    lda.z a
    sta memA
    lda.z a+1
    sta memA+1
    // *memB = b
    // [159] *((const word*) mulf16u::memB) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 
    lda.z b
    sta memB
    lda.z b+1
    sta memB+1
    // asm
    // asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !:  }
    lda memA
    sta sm1a+1
    sta sm3a+1
    sta sm5a+1
    sta sm7a+1
    eor #$ff
    sta sm2a+1
    sta sm4a+1
    sta sm6a+1
    sta sm8a+1
    lda memA+1
    sta sm1b+1
    sta sm3b+1
    sta sm5b+1
    sta sm7b+1
    eor #$ff
    sta sm2b+1
    sta sm4b+1
    sta sm6b+1
    sta sm8b+1
    ldx memB
    sec
  sm1a:
    lda mulf_sqr1_lo,x
  sm2a:
    sbc mulf_sqr2_lo,x
    sta memR+0
  sm3a:
    lda mulf_sqr1_hi,x
  sm4a:
    sbc mulf_sqr2_hi,x
    sta _AA+1
    sec
  sm1b:
    lda mulf_sqr1_lo,x
  sm2b:
    sbc mulf_sqr2_lo,x
    sta _cc+1
  sm3b:
    lda mulf_sqr1_hi,x
  sm4b:
    sbc mulf_sqr2_hi,x
    sta _CC+1
    ldx memB+1
    sec
  sm5a:
    lda mulf_sqr1_lo,x
  sm6a:
    sbc mulf_sqr2_lo,x
    sta _bb+1
  sm7a:
    lda mulf_sqr1_hi,x
  sm8a:
    sbc mulf_sqr2_hi,x
    sta _BB+1
    sec
  sm5b:
    lda mulf_sqr1_lo,x
  sm6b:
    sbc mulf_sqr2_lo,x
    sta _dd+1
  sm7b:
    lda mulf_sqr1_hi,x
  sm8b:
    sbc mulf_sqr2_hi,x
    sta memR+3
    clc
  _AA:
    lda #0
  _bb:
    adc #0
    sta memR+1
  _BB:
    lda #0
  _CC:
    adc #0
    sta memR+2
    bcc !+
    inc memR+3
    clc
  !:
  _cc:
    lda #0
    adc memR+1
    sta memR+1
  _dd:
    lda #0
    adc memR+2
    sta memR+2
    bcc !+
    inc memR+3
  !:
    // return *memR;
    // [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR) -- vduz1=_deref_pduc1 
    lda memR
    sta.z return
    lda memR+1
    sta.z return+1
    lda memR+2
    sta.z return+2
    lda memR+3
    sta.z return+3
    // mulf16u::@return
    // }
    // [162] return 
    rts
}
  // mul16s
// Multiply of two signed words to a signed double word
// Fixes offsets introduced by using unsigned multiplication
// mul16s(signed word zp($e) a, signed word zp($10) b)
mul16s: {
    .label __9 = $1a
    .label __13 = $1c
    .label __16 = $1a
    .label __17 = $1c
    .label m = 6
    .label return = 6
    .label a = $e
    .label b = $10
    // mul16u((word)a, (word) b)
    // [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u.a
    lda.z a+1
    sta.z mul16u.a+1
    // [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z mul16u.b
    lda.z b+1
    sta.z mul16u.b+1
    // [165] call mul16u 
    // [180] phi from mul16s to mul16u [phi:mul16s->mul16u]
    // [180] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy 
    // [180] phi (word) mul16u::b#2 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- register_copy 
    jsr mul16u
    // mul16u((word)a, (word) b)
    // [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2
    // mul16s::@5
    // m = mul16u((word)a, (word) b)
    // [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2
    // if(a<0)
    // [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 
    lda.z a+1
    bpl __b1
    // mul16s::@3
    // >m
    // [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __9
    lda.z m+3
    sta.z __9+1
    // >m = (>m)-(word)b
    // [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z __16
    sec
    sbc.z b
    sta.z __16
    lda.z __16+1
    sbc.z b+1
    sta.z __16+1
    // [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __16
    sta.z m+2
    lda.z __16+1
    sta.z m+3
    // [172] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1]
    // [172] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy 
    // mul16s::@1
  __b1:
    // if(b<0)
    // [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 
    lda.z b+1
    bpl __b2
    // mul16s::@4
    // >m
    // [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 
    lda.z m+2
    sta.z __13
    lda.z m+3
    sta.z __13+1
    // >m = (>m)-(word)a
    // [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z __17
    sec
    sbc.z a
    sta.z __17
    lda.z __17+1
    sbc.z a+1
    sta.z __17+1
    // [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 
    lda.z __17
    sta.z m+2
    lda.z __17+1
    sta.z m+3
    // [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2]
    // [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy 
    // mul16s::@2
  __b2:
    // (signed dword)m
    // [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
    // mul16s::@return
    // }
    // [179] return 
    rts
}
  // mul16u
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
// mul16u(word zp($1c) a, word zp($1a) b)
mul16u: {
    .label mb = $a
    .label a = $1c
    .label res = 6
    .label b = $1a
    .label return = 6
    // mb = b
    // [181] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2 
    lda.z b
    sta.z mb
    lda.z b+1
    sta.z mb+1
    lda #0
    sta.z mb+2
    sta.z mb+3
    // [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1]
    // [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy 
    // [182] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1 
    sta.z res
    sta.z res+1
    lda #<0>>$10
    sta.z res+2
    lda #>0>>$10
    sta.z res+3
    // [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy 
    // mul16u::@1
  __b1:
    // while(a!=0)
    // [183] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 
    lda.z a
    bne __b2
    lda.z a+1
    bne __b2
    // mul16u::@return
    // }
    // [184] return 
    rts
    // mul16u::@2
  __b2:
    // a&1
    // [185] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 
    lda #1
    and.z a
    // if( (a&1) != 0)
    // [186] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq __b3
    // mul16u::@4
    // res = res + mb
    // [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 
    lda.z res
    clc
    adc.z mb
    sta.z res
    lda.z res+1
    adc.z mb+1
    sta.z res+1
    lda.z res+2
    adc.z mb+2
    sta.z res+2
    lda.z res+3
    adc.z mb+3
    sta.z res+3
    // [188] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3]
    // [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy 
    // mul16u::@3
  __b3:
    // a = a>>1
    // [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 
    lsr.z a+1
    ror.z a
    // mb = mb<<1
    // [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 
    asl.z mb
    rol.z mb+1
    rol.z mb+2
    rol.z mb+3
    // [182] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1]
    // [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy 
    // [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy 
    // [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy 
    jmp __b1
}
  // muls16s
// Slow multiplication of signed words
// Perform a signed multiplication by repeated addition/subtraction
// muls16s(signed word zp($e) a, signed word zp($10) b)
muls16s: {
    .label m = 2
    .label j = $18
    .label return = 2
    .label i = $1a
    .label a = $e
    .label b = $10
    // if(a<0)
    // [191] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 
    lda.z a+1
    bmi b3
    // muls16s::@2
    // if (a>0)
    // [192] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 
    bmi b2
    bne !+
    lda.z a
    beq b2
  !:
    // [193] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3]
    // [193] phi (signed dword) muls16s::m#3 = (signed dword) 0 [phi:muls16s::@2->muls16s::@3#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z m
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [193] phi (signed word) muls16s::j#2 = (signed word) 0 [phi:muls16s::@2->muls16s::@3#1] -- vwsz1=vwsc1 
    lda #<0
    sta.z j
    sta.z j+1
    // muls16s::@3
  __b3:
    // for(signed word j = 0; j!=a; j++)
    // [194] if((signed word) muls16s::j#2!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 
    lda.z j+1
    cmp.z a+1
    bne __b4
    lda.z j
    cmp.z a
    bne __b4
    // [195] phi from muls16s::@3 muls16s::@5 to muls16s::@1 [phi:muls16s::@3/muls16s::@5->muls16s::@1]
    // [195] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#3 [phi:muls16s::@3/muls16s::@5->muls16s::@1#0] -- register_copy 
    rts
    // [195] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1]
  b2:
    // [195] phi (signed dword) muls16s::return#0 = (signed dword) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z return
    sta.z return+1
    lda #<0>>$10
    sta.z return+2
    lda #>0>>$10
    sta.z return+3
    // muls16s::@1
    // muls16s::@return
    // }
    // [196] return 
    rts
    // muls16s::@4
  __b4:
    // m = m + b
    // [197] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 
    lda.z b+1
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    lda.z m
    clc
    adc.z b
    sta.z m
    lda.z m+1
    adc.z b+1
    sta.z m+1
    lda.z m+2
    adc.z $ff
    sta.z m+2
    lda.z m+3
    adc.z $ff
    sta.z m+3
    // for(signed word j = 0; j!=a; j++)
    // [198] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 
    inc.z j
    bne !+
    inc.z j+1
  !:
    // [193] phi from muls16s::@4 to muls16s::@3 [phi:muls16s::@4->muls16s::@3]
    // [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@4->muls16s::@3#0] -- register_copy 
    // [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@4->muls16s::@3#1] -- register_copy 
    jmp __b3
    // [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5]
  b3:
    // [199] phi (signed dword) muls16s::m#5 = (signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vdsz1=vdsc1 
    lda #<0
    sta.z m
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [199] phi (signed word) muls16s::i#2 = (signed word) 0 [phi:muls16s->muls16s::@5#1] -- vwsz1=vwsc1 
    lda #<0
    sta.z i
    sta.z i+1
    // muls16s::@5
  __b5:
    // for(signed word i = 0; i!=a; i--)
    // [200] if((signed word) muls16s::i#2!=(signed word) muls16s::a#0) goto muls16s::@6 -- vwsz1_neq_vwsz2_then_la1 
    lda.z i+1
    cmp.z a+1
    bne __b6
    lda.z i
    cmp.z a
    bne __b6
    rts
    // muls16s::@6
  __b6:
    // m = m - b
    // [201] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 
    lda.z b+1
    ora #$7f
    bmi !+
    lda #0
  !:
    sta.z $ff
    sec
    lda.z m
    sbc.z b
    sta.z m
    lda.z m+1
    sbc.z b+1
    sta.z m+1
    lda.z m+2
    sbc.z $ff
    sta.z m+2
    lda.z m+3
    sbc.z $ff
    sta.z m+3
    // for(signed word i = 0; i!=a; i--)
    // [202] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 
    lda.z i
    bne !+
    dec.z i+1
  !:
    dec.z i
    // [199] phi from muls16s::@6 to muls16s::@5 [phi:muls16s::@6->muls16s::@5]
    // [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@6->muls16s::@5#0] -- register_copy 
    // [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@6->muls16s::@5#1] -- register_copy 
    jmp __b5
}
  // mul16u_compare
// Perform many possible word multiplications (slow and fast) and compare the results
mul16u_compare: {
    .label a = $18
    .label b = $1a
    .label ms = 2
    .label mn = 6
    .label mf = $a
    .label i = $12
    // [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1]
    // [204] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [204] phi (word) mul16u_compare::b#6 = (word) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vwuc1 
    sta.z b
    sta.z b+1
    // [204] phi (word) mul16u_compare::a#6 = (word) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vwuc1 
    sta.z a
    sta.z a+1
    // [204] phi (byte*) print_char_cursor#145 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [204] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1]
    // [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy 
    // [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy 
    // [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy 
    // [204] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy 
    // mul16u_compare::@1
  __b1:
    // print_str(".")
    // [205] call print_str 
    // [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#145 [phi:mul16u_compare::@1->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2]
    // [206] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 
    ldy #0
    // [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy 
    // [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy 
    // [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2]
    // [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy 
    // [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy 
    // [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy 
    // mul16u_compare::@2
  __b2:
    // a=a+3371
    // [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 
    clc
    lda.z a
    adc #<$d2b
    sta.z a
    lda.z a+1
    adc #>$d2b
    sta.z a+1
    // b=b+4093
    // [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 
    clc
    lda.z b
    adc #<$ffd
    sta.z b
    lda.z b+1
    adc #>$ffd
    sta.z b+1
    // muls16u(a, b)
    // [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1
    // [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1
    // [211] call muls16u 
    jsr muls16u
    // [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0
    // mul16u_compare::@10
    // ms = muls16u(a, b)
    // [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2
    // mul16u(a,b)
    // [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u.a
    lda.z a+1
    sta.z mul16u.a+1
    // [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1
    // [216] call mul16u 
    // [180] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u]
    // [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy 
    // [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- register_copy 
    jsr mul16u
    // mul16u(a,b)
    // [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2
    // mul16u_compare::@11
    // mn = mul16u(a,b)
    // [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3
    // mulf16u(a,b)
    // [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1
    // [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1
    // [221] call mulf16u 
    // [157] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u]
    // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy 
    // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy 
    jsr mulf16u
    // mulf16u(a,b)
    // [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0
    // mul16u_compare::@12
    // mf = mulf16u(a,b)
    // [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3
    // if(ms!=mf)
    // [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 
    lda.z ms
    cmp.z mf
    bne !+
    lda.z ms+1
    cmp.z mf+1
    bne !+
    lda.z ms+2
    cmp.z mf+2
    bne !+
    lda.z ms+3
    cmp.z mf+3
    beq b1
  !:
    // [225] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6]
    // mul16u_compare::@6
    // [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3]
    // [226] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b3
    // [226] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3]
  b1:
    // [226] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 
    ldx #1
    // mul16u_compare::@3
  __b3:
    // if(ms!=mn)
    // [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 
    lda.z ms
    cmp.z mn
    bne !+
    lda.z ms+1
    cmp.z mn+1
    bne !+
    lda.z ms+2
    cmp.z mn+2
    bne !+
    lda.z ms+3
    cmp.z mn+3
    beq __b4
  !:
    // [229] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4]
    // [229] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 
    ldx #0
    // [228] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15]
    // mul16u_compare::@15
    // [229] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4]
    // [229] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy 
    // mul16u_compare::@4
  __b4:
    // if(ok==0)
    // [230] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b5
    // mul16u_compare::@7
    // *BGCOL = 2
    // [231] *((const byte*) BGCOL) ← (byte) 2 -- _deref_pbuc1=vbuc2 
    lda #2
    sta BGCOL
    // mul16u_error(a,b, ms, mn, mf)
    // [232] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 
    lda.z a
    sta.z mul16u_error.a
    lda.z a+1
    sta.z mul16u_error.a+1
    // [233] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1
    // [234] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0
    // [235] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0
    // [236] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0
    // [237] call mul16u_error 
    // [249] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error]
    jsr mul16u_error
    // mul16u_compare::@return
    // }
    // [238] return 
    rts
    // mul16u_compare::@5
  __b5:
    // for(byte j: 0..15)
    // [239] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy 
    iny
    // [240] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 
    cpy #$10
    bne __b2
    // mul16u_compare::@8
    // for(byte i: 0..15)
    // [241] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [242] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z i
    beq !__b1+
    jmp __b1
  !__b1:
    // [243] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9]
    // mul16u_compare::@9
    // print_ln()
    // [244] call print_ln 
    // [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln]
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@9->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    // mul16u_compare::@13
    // [245] (byte*) print_char_cursor#187 ← (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("word multiply results match!")
    // [246] call print_str 
    // [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str.str
    lda #>str1
    sta.z print_str.str+1
    jsr print_str
    // [247] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14]
    // mul16u_compare::@14
    // print_ln()
    // [248] call print_ln 
    // [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln]
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@14->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy 
    jsr print_ln
    rts
    str1: .text "word multiply results match!"
    .byte 0
}
  // mul16u_error
// mul16u_error(word zp($e) a, word zp($1a) b, dword zp(2) ms, dword zp(6) mn, dword zp($a) mf)
mul16u_error: {
    .label a = $e
    .label b = $1a
    .label ms = 2
    .label mn = 6
    .label mf = $a
    // print_str("multiply mismatch ")
    // [250] call print_str 
    // [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16u_error->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // mul16u_error::@1
    // print_word(a)
    // [251] (word) print_word::w#3 ← (word) mul16u_error::a#0
    // [252] call print_word 
    // [115] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word]
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@1->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy 
    jsr print_word
    // [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2]
    // mul16u_error::@2
    // print_str("*")
    // [254] call print_str 
    // [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@2->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str1 [phi:mul16u_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
    // mul16u_error::@3
    // print_word(b)
    // [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 
    lda.z b
    sta.z print_word.w
    lda.z b+1
    sta.z print_word.w+1
    // [256] call print_word 
    // [115] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word]
    // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@3->print_word#0] -- register_copy 
    // [115] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy 
    jsr print_word
    // [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4]
    // mul16u_error::@4
    // print_str(" slow:")
    // [258] call print_str 
    // [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@4->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str2 [phi:mul16u_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
    // mul16u_error::@5
    // print_dword(ms)
    // [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0
    // [260] call print_dword 
    // [109] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword]
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@5->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy 
    jsr print_dword
    // [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6]
    // mul16u_error::@6
    // print_str(" / normal:")
    // [262] call print_str 
    // [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@6->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str3 [phi:mul16u_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
    // mul16u_error::@7
    // print_dword(mn)
    // [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 
    lda.z mn
    sta.z print_dword.dw
    lda.z mn+1
    sta.z print_dword.dw+1
    lda.z mn+2
    sta.z print_dword.dw+2
    lda.z mn+3
    sta.z print_dword.dw+3
    // [264] call print_dword 
    // [109] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword]
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@7->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy 
    jsr print_dword
    // [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8]
    // mul16u_error::@8
    // print_str(" / fast:")
    // [266] call print_str 
    // [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str]
    // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@8->print_str#0] -- register_copy 
    // [64] phi (byte*) print_str::str#17 = (const byte*) str4 [phi:mul16u_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
    // mul16u_error::@9
    // print_dword(mf)
    // [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 
    lda.z mf
    sta.z print_dword.dw
    lda.z mf+1
    sta.z print_dword.dw+1
    lda.z mf+2
    sta.z print_dword.dw+2
    lda.z mf+3
    sta.z print_dword.dw+3
    // [268] call print_dword 
    // [109] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword]
    // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@9->print_dword#0] -- register_copy 
    // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy 
    jsr print_dword
    // [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10]
    // mul16u_error::@10
    // print_ln()
    // [270] call print_ln 
    // [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln]
    // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16u_error::@10->print_ln#0] -- register_copy 
    // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    // mul16u_error::@return
    // }
    // [271] return 
    rts
    str: .text "multiply mismatch "
    .byte 0
}
  // muls16u
// Slow multiplication of unsigned words
// Calculate an unsigned multiplication by repeated addition
// muls16u(word zp($18) a, word zp($1a) b)
muls16u: {
    .label return = 2
    .label m = 2
    .label i = $e
    .label a = $18
    .label b = $1a
    // if(a!=0)
    // [272] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 
    lda.z a
    bne !+
    lda.z a+1
    beq b1
  !:
    // [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2]
    // [273] phi (dword) muls16u::m#3 = (dword) 0 [phi:muls16u->muls16u::@2#0] -- vduz1=vduc1 
    lda #<0
    sta.z m
    sta.z m+1
    lda #<0>>$10
    sta.z m+2
    lda #>0>>$10
    sta.z m+3
    // [273] phi (word) muls16u::i#2 = (word) 0 [phi:muls16u->muls16u::@2#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    sta.z i+1
    // muls16u::@2
  __b2:
    // for(word i = 0; i!=a; i++)
    // [274] if((word) muls16u::i#2!=(word) muls16u::a#0) goto muls16u::@3 -- vwuz1_neq_vwuz2_then_la1 
    lda.z i+1
    cmp.z a+1
    bne __b3
    lda.z i
    cmp.z a
    bne __b3
    // [275] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1]
    // [275] phi (dword) muls16u::return#0 = (dword) muls16u::m#3 [phi:muls16u::@2->muls16u::@1#0] -- register_copy 
    rts
    // [275] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1]
  b1:
    // [275] phi (dword) muls16u::return#0 = (dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vduc1 
    lda #<0
    sta.z return
    sta.z return+1
    lda #<0>>$10
    sta.z return+2
    lda #>0>>$10
    sta.z return+3
    // muls16u::@1
    // muls16u::@return
    // }
    // [276] return 
    rts
    // muls16u::@3
  __b3:
    // m = m + b
    // [277] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 
    lda.z m
    clc
    adc.z b
    sta.z m
    lda.z m+1
    adc.z b+1
    sta.z m+1
    lda.z m+2
    adc #0
    sta.z m+2
    lda.z m+3
    adc #0
    sta.z m+3
    // for(word i = 0; i!=a; i++)
    // [278] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [273] phi from muls16u::@3 to muls16u::@2 [phi:muls16u::@3->muls16u::@2]
    // [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@3->muls16u::@2#0] -- register_copy 
    // [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@3->muls16u::@2#1] -- register_copy 
    jmp __b2
}
  // mulf_init
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
mulf_init: {
    // x/2
    .label c = $12
    // Counter used for determining x%2==0
    .label sqr1_hi = $13
    // 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 = $18
    .label sqr1_lo = $10
    // Decrease or increase x_255 - initially we decrease
    .label sqr2_hi = $1c
    .label sqr2_lo = $15
    //Start with g(0)=f(255)
    .label dir = $17
    // [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1]
    // [280] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [280] 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
    // [280] 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
    // [280] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vbuz1=vbuc1 
    sta.z c
    // [280] 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++)
    // [281] 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
    // [282] phi from mulf_init::@1 to mulf_init::@5 [phi:mulf_init::@1->mulf_init::@5]
    // [282] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@1->mulf_init::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z dir
    // [282] 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
    // [282] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@1->mulf_init::@5#2] -- vbuxx=vbuc1 
    ldx #-1
    // [282] 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++)
    // [283] 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)
    // [284] *((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)
    // [285] *((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
    // }
    // [286] return 
    rts
    // mulf_init::@6
  __b6:
    // *sqr2_lo = mulf_sqr1_lo[x_255]
    // [287] *((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]
    // [288] *((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];
    // [289] (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
    // [290] (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)
    // [291] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b8
    // [293] phi from mulf_init::@6 to mulf_init::@8 [phi:mulf_init::@6->mulf_init::@8]
    // [293] phi (byte) mulf_init::dir#4 = (byte) 1 [phi:mulf_init::@6->mulf_init::@8#0] -- vbuz1=vbuc1 
    lda #1
    sta.z dir
    // [292] phi from mulf_init::@6 to mulf_init::@9 [phi:mulf_init::@6->mulf_init::@9]
    // mulf_init::@9
    // [293] phi from mulf_init::@9 to mulf_init::@8 [phi:mulf_init::@9->mulf_init::@8]
    // [293] 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++)
    // [294] (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
  !:
    // [282] phi from mulf_init::@8 to mulf_init::@5 [phi:mulf_init::@8->mulf_init::@5]
    // [282] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#4 [phi:mulf_init::@8->mulf_init::@5#0] -- register_copy 
    // [282] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@8->mulf_init::@5#1] -- register_copy 
    // [282] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@8->mulf_init::@5#2] -- register_copy 
    // [282] 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)
    // [295] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 
    inc.z c
    // ++c&1
    // [296] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuz1_band_vbuc1 
    lda #1
    and.z c
    // if((++c&1)==0)
    // [297] 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++;
    // [298] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuxx=_inc_vbuxx 
    inx
    // sqr++;
    // [299] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 
    inc.z sqr
    bne !+
    inc.z sqr+1
  !:
    // [300] phi from mulf_init::@2 mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@2/mulf_init::@4->mulf_init::@3]
    // [300] 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 
    // [300] 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
    // [301] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 
    lda.z sqr
    // *sqr1_lo = <sqr
    // [302] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (sqr1_lo),y
    // >sqr
    // [303] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 
    lda.z sqr+1
    // *sqr1_hi++ = >sqr
    // [304] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa 
    sta (sqr1_hi),y
    // *sqr1_hi++ = >sqr;
    // [305] (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
    // [306] (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++)
    // [307] (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
  !:
    // [280] phi from mulf_init::@3 to mulf_init::@1 [phi:mulf_init::@3->mulf_init::@1]
    // [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@3->mulf_init::@1#0] -- register_copy 
    // [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@3->mulf_init::@1#1] -- register_copy 
    // [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@3->mulf_init::@1#2] -- register_copy 
    // [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@3->mulf_init::@1#3] -- register_copy 
    // [280] 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)
    // [309] call memset 
    // [311] phi from print_cls to memset [phi:print_cls->memset]
    jsr memset
    // print_cls::@return
    // }
    // [310] 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 = $1c
    // [312] phi from memset to memset::@1 [phi:memset->memset::@1]
    // [312] 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++)
    // [313] 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
    // }
    // [314] return 
    rts
    // memset::@2
  __b2:
    // *dst = c
    // [315] *((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++)
    // [316] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [312] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
    // [312] 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
  str: .text "."
  .byte 0
  str1: .text "*"
  .byte 0
  str2: .text " slow:"
  .byte 0
  str3: .text " / normal:"
  .byte 0
  str4: .text " / fast:"
  .byte 0

