
CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
  (byte*) print_line_cursor#0 ← (byte*) print_screen#0
  (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
  to:@12
print_str: scope:[print_str]  from test_16s::@4 test_16s::@6 test_16s::@8 test_16u::@4 test_16u::@6 test_16u::@8 test_8s::@4 test_8s::@6 test_8s::@8 test_8u::@4 test_8u::@6 test_8u::@8
  (byte*) print_char_cursor#143 ← phi( test_16s::@4/(byte*) print_char_cursor#55 test_16s::@6/(byte*) print_char_cursor#57 test_16s::@8/(byte*) print_char_cursor#59 test_16u::@4/(byte*) print_char_cursor#37 test_16u::@6/(byte*) print_char_cursor#39 test_16u::@8/(byte*) print_char_cursor#41 test_8s::@4/(byte*) print_char_cursor#46 test_8s::@6/(byte*) print_char_cursor#48 test_8s::@8/(byte*) print_char_cursor#50 test_8u::@4/(byte*) print_char_cursor#28 test_8u::@6/(byte*) print_char_cursor#30 test_8u::@8/(byte*) print_char_cursor#32 )
  (byte*) print_str::str#15 ← phi( test_16s::@4/(byte*) print_str::str#10 test_16s::@6/(byte*) print_str::str#11 test_16s::@8/(byte*) print_str::str#12 test_16u::@4/(byte*) print_str::str#4 test_16u::@6/(byte*) print_str::str#5 test_16u::@8/(byte*) print_str::str#6 test_8s::@4/(byte*) print_str::str#7 test_8s::@6/(byte*) print_str::str#8 test_8s::@8/(byte*) print_str::str#9 test_8u::@4/(byte*) print_str::str#1 test_8u::@6/(byte*) print_str::str#2 test_8u::@8/(byte*) print_str::str#3 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#143 print_str::@2/(byte*) print_char_cursor#1 )
  (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 )
  (bool~) print_str::$0 ← *((byte*) print_str::str#13) != (byte) '@'
  if((bool~) print_str::$0) goto print_str::@2
  to:print_str::@return
print_str::@2: scope:[print_str]  from print_str::@1
  (byte*) print_char_cursor#65 ← phi( print_str::@1/(byte*) print_char_cursor#128 )
  (byte*) print_str::str#14 ← phi( print_str::@1/(byte*) print_str::str#13 )
  *((byte*) print_char_cursor#65) ← *((byte*) print_str::str#14)
  (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#65
  (byte*) print_str::str#0 ← ++ (byte*) print_str::str#14
  to:print_str::@1
print_str::@return: scope:[print_str]  from print_str::@1
  (byte*) print_char_cursor#66 ← phi( print_str::@1/(byte*) print_char_cursor#128 )
  (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#66
  return 
  to:@return
print_ln: scope:[print_ln]  from test_16s::@10 test_16u::@10 test_8s::@10 test_8u::@10
  (byte*) print_char_cursor#129 ← phi( test_16s::@10/(byte*) print_char_cursor#61 test_16u::@10/(byte*) print_char_cursor#43 test_8s::@10/(byte*) print_char_cursor#52 test_8u::@10/(byte*) print_char_cursor#34 )
  (byte*) print_line_cursor#39 ← phi( test_16s::@10/(byte*) print_line_cursor#44 test_16u::@10/(byte*) print_line_cursor#42 test_8s::@10/(byte*) print_line_cursor#43 test_8u::@10/(byte*) print_line_cursor#41 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  (byte*) print_char_cursor#67 ← phi( print_ln/(byte*) print_char_cursor#129 print_ln::@1/(byte*) print_char_cursor#67 )
  (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 )
  (byte*~) print_ln::$0 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0
  (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#67
  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#21 ← phi( print_ln::@1/(byte*) print_line_cursor#1 )
  (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#21
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@2
  (byte*) print_char_cursor#68 ← phi( print_ln::@2/(byte*) print_char_cursor#3 )
  (byte*) print_line_cursor#22 ← phi( print_ln::@2/(byte*) print_line_cursor#21 )
  (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#22
  (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#68
  return 
  to:@return
print_sword: scope:[print_sword]  from test_16s::@3 test_16s::@5 test_16s::@7 test_16s::@9
  (byte*) print_char_cursor#144 ← phi( test_16s::@3/(byte*) print_char_cursor#141 test_16s::@5/(byte*) print_char_cursor#56 test_16s::@7/(byte*) print_char_cursor#58 test_16s::@9/(byte*) print_char_cursor#60 )
  (signed word) print_sword::w#5 ← phi( test_16s::@3/(signed word) print_sword::w#1 test_16s::@5/(signed word) print_sword::w#2 test_16s::@7/(signed word) print_sword::w#3 test_16s::@9/(signed word) print_sword::w#4 )
  (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) print_sword::$1 ← ! (bool~) print_sword::$0
  if((bool~) print_sword::$1) goto print_sword::@1
  to:print_sword::@2
print_sword::@1: scope:[print_sword]  from print_sword print_sword::@4
  (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#144 print_sword::@4/(byte*) print_char_cursor#6 )
  (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@4/(signed word) print_sword::w#0 )
  (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w#6
  (word) print_word::w#0 ← (word~) print_sword::$4
  call print_word 
  to:print_sword::@3
print_sword::@3: scope:[print_sword]  from print_sword::@1
  (byte*) print_char_cursor#69 ← phi( print_sword::@1/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#69
  to:print_sword::@return
print_sword::@2: scope:[print_sword]  from print_sword
  (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#5 )
  (byte*) print_char_cursor#131 ← phi( print_sword/(byte*) print_char_cursor#144 )
  (byte) print_char::ch#0 ← (byte) '-'
  call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@2
  (signed word) print_sword::w#7 ← phi( print_sword::@2/(signed word) print_sword::w#8 )
  (byte*) print_char_cursor#70 ← phi( print_sword::@2/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#70
  (signed word~) print_sword::$3 ← - (signed word) print_sword::w#7
  (signed word) print_sword::w#0 ← (signed word~) print_sword::$3
  to:print_sword::@1
print_sword::@return: scope:[print_sword]  from print_sword::@3
  (byte*) print_char_cursor#71 ← phi( print_sword::@3/(byte*) print_char_cursor#5 )
  (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#71
  return 
  to:@return
print_sbyte: scope:[print_sbyte]  from test_8s::@3 test_8s::@5 test_8s::@7 test_8s::@9
  (byte*) print_char_cursor#145 ← phi( test_8s::@3/(byte*) print_char_cursor#140 test_8s::@5/(byte*) print_char_cursor#47 test_8s::@7/(byte*) print_char_cursor#49 test_8s::@9/(byte*) print_char_cursor#51 )
  (signed byte) print_sbyte::b#5 ← phi( test_8s::@3/(signed byte) print_sbyte::b#1 test_8s::@5/(signed byte) print_sbyte::b#2 test_8s::@7/(signed byte) print_sbyte::b#3 test_8s::@9/(signed byte) print_sbyte::b#4 )
  (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#5 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) print_sbyte::$0) goto print_sbyte::@1
  to:print_sbyte::@3
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte
  (signed byte) print_sbyte::b#8 ← phi( print_sbyte/(signed byte) print_sbyte::b#5 )
  (byte*) print_char_cursor#132 ← phi( print_sbyte/(byte*) print_char_cursor#145 )
  (byte) print_char::ch#1 ← (byte) '-'
  call print_char 
  to:print_sbyte::@5
print_sbyte::@5: scope:[print_sbyte]  from print_sbyte::@1
  (signed byte) print_sbyte::b#6 ← phi( print_sbyte::@1/(signed byte) print_sbyte::b#8 )
  (byte*) print_char_cursor#72 ← phi( print_sbyte::@1/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#72
  (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b#6
  (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$3
  to:print_sbyte::@2
print_sbyte::@3: scope:[print_sbyte]  from print_sbyte
  (signed byte) print_sbyte::b#10 ← phi( print_sbyte/(signed byte) print_sbyte::b#5 )
  (byte*) print_char_cursor#133 ← phi( print_sbyte/(byte*) print_char_cursor#145 )
  (byte) print_char::ch#2 ← (byte) ' '
  call print_char 
  to:print_sbyte::@6
print_sbyte::@6: scope:[print_sbyte]  from print_sbyte::@3
  (signed byte) print_sbyte::b#9 ← phi( print_sbyte::@3/(signed byte) print_sbyte::b#10 )
  (byte*) print_char_cursor#73 ← phi( print_sbyte::@3/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#73
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@5 print_sbyte::@6
  (byte*) print_char_cursor#134 ← phi( print_sbyte::@5/(byte*) print_char_cursor#8 print_sbyte::@6/(byte*) print_char_cursor#9 )
  (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@6/(signed byte) print_sbyte::b#9 )
  (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b#7
  (byte) print_byte::b#0 ← (byte~) print_sbyte::$4
  call print_byte 
  to:print_sbyte::@7
print_sbyte::@7: scope:[print_sbyte]  from print_sbyte::@2
  (byte*) print_char_cursor#74 ← phi( print_sbyte::@2/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#74
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@7
  (byte*) print_char_cursor#75 ← phi( print_sbyte::@7/(byte*) print_char_cursor#10 )
  (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#75
  return 
  to:@return
print_word: scope:[print_word]  from print_sword::@1 test_16u::@3 test_16u::@5 test_16u::@7 test_16u::@9
  (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@3/(byte*) print_char_cursor#139 test_16u::@5/(byte*) print_char_cursor#38 test_16u::@7/(byte*) print_char_cursor#40 test_16u::@9/(byte*) print_char_cursor#42 )
  (word) print_word::w#5 ← phi( print_sword::@1/(word) print_word::w#0 test_16u::@3/(word) print_word::w#1 test_16u::@5/(word) print_word::w#2 test_16u::@7/(word) print_word::w#3 test_16u::@9/(word) print_word::w#4 )
  (byte~) print_word::$0 ← > (word) print_word::w#5
  (byte) print_byte::b#1 ← (byte~) print_word::$0
  call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  (word) print_word::w#6 ← phi( print_word/(word) print_word::w#5 )
  (byte*) print_char_cursor#76 ← phi( print_word/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#76
  (byte~) print_word::$2 ← < (word) print_word::w#6
  (byte) print_byte::b#2 ← (byte~) print_word::$2
  call print_byte 
  to:print_word::@2
print_word::@2: scope:[print_word]  from print_word::@1
  (byte*) print_char_cursor#77 ← phi( print_word::@1/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#77
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@2
  (byte*) print_char_cursor#78 ← phi( print_word::@2/(byte*) print_char_cursor#13 )
  (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#78
  return 
  to:@return
@12: scope:[]  from @begin
  (byte*) print_screen#10 ← phi( @begin/(byte*) print_screen#0 )
  (byte*) print_char_cursor#158 ← phi( @begin/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#66 ← phi( @begin/(byte*) print_line_cursor#0 )
  (byte[]) print_hextab#0 ← (const string) $0
  to:@19
print_byte: scope:[print_byte]  from print_sbyte::@2 print_word print_word::@1 test_8u::@3 test_8u::@5 test_8u::@7 test_8u::@9
  (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#134 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#12 test_8u::@3/(byte*) print_char_cursor#138 test_8u::@5/(byte*) print_char_cursor#29 test_8u::@7/(byte*) print_char_cursor#31 test_8u::@9/(byte*) print_char_cursor#33 )
  (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@3/(byte) print_byte::b#3 test_8u::@5/(byte) print_byte::b#4 test_8u::@7/(byte) print_byte::b#5 test_8u::@9/(byte) print_byte::b#6 )
  (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0)
  call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  (byte) print_byte::b#8 ← phi( print_byte/(byte) print_byte::b#7 )
  (byte*) print_char_cursor#79 ← phi( print_byte/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#79
  (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15
  (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$2)
  call print_char 
  to:print_byte::@2
print_byte::@2: scope:[print_byte]  from print_byte::@1
  (byte*) print_char_cursor#80 ← phi( print_byte::@1/(byte*) print_char_cursor#19 )
  (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#80
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@2
  (byte*) print_char_cursor#81 ← phi( print_byte::@2/(byte*) print_char_cursor#16 )
  (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#81
  return 
  to:@return
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2
  (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#15 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#133 print_sword::@2/(byte*) print_char_cursor#131 )
  (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) print_char::ch#1 print_sbyte::@3/(byte) print_char::ch#2 print_sword::@2/(byte) print_char::ch#0 )
  *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5
  (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  (byte*) print_char_cursor#83 ← phi( print_char/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#83
  return 
  to:@return
print_cls: scope:[print_cls]  from main
  (byte*) print_screen#1 ← phi( main/(byte*) print_screen#4 )
  (byte*) print_cls::sc#0 ← (byte*) print_screen#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  (byte*) print_screen#2 ← phi( print_cls/(byte*) print_screen#1 print_cls::@1/(byte*) print_screen#2 )
  (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 )
  *((byte*) print_cls::sc#2) ← (byte) ' '
  (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
  (byte*~) print_cls::$0 ← (byte*) print_screen#2 + (word/signed word/dword/signed dword) 1000
  (bool~) print_cls::$1 ← (byte*) print_cls::sc#1 != (byte*~) print_cls::$0
  if((bool~) print_cls::$1) goto print_cls::@1
  to:print_cls::@2
print_cls::@2: scope:[print_cls]  from print_cls::@1
  (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 )
  (byte*) print_line_cursor#3 ← (byte*) print_screen#3
  (byte*) print_char_cursor#20 ← (byte*) print_line_cursor#3
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@2
  (byte*) print_char_cursor#84 ← phi( print_cls::@2/(byte*) print_char_cursor#20 )
  (byte*) print_line_cursor#23 ← phi( print_cls::@2/(byte*) print_line_cursor#3 )
  (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#23
  (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#84
  return 
  to:@return
@19: scope:[]  from @12
  (byte*) print_screen#9 ← phi( @12/(byte*) print_screen#10 )
  (byte*) print_char_cursor#157 ← phi( @12/(byte*) print_char_cursor#158 )
  (byte*) print_line_cursor#61 ← phi( @12/(byte*) print_line_cursor#66 )
  (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@21
div8u: scope:[div8u]  from div8s::@4 test_8u::@1
  (byte) rem8u#31 ← phi( div8s::@4/(byte) rem8u#32 test_8u::@1/(byte) rem8u#36 )
  (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 )
  (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 )
  (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2
  (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2
  (byte) divr8u::rem#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  call divr8u 
  (byte) divr8u::return#0 ← (byte) divr8u::return#2
  to:div8u::@2
div8u::@2: scope:[div8u]  from div8u
  (byte) rem8u#15 ← phi( div8u/(byte) rem8u#4 )
  (byte) divr8u::return#3 ← phi( div8u/(byte) divr8u::return#0 )
  (byte~) div8u::$0 ← (byte) divr8u::return#3
  (byte) rem8u#1 ← (byte) rem8u#15
  (byte) div8u::return#0 ← (byte~) div8u::$0
  to:div8u::@return
div8u::@return: scope:[div8u]  from div8u::@2
  (byte) rem8u#16 ← phi( div8u::@2/(byte) rem8u#1 )
  (byte) div8u::return#4 ← phi( div8u::@2/(byte) div8u::return#0 )
  (byte) div8u::return#1 ← (byte) div8u::return#4
  (byte) rem8u#2 ← (byte) rem8u#16
  return 
  to:@return
divr8u: scope:[divr8u]  from div8u
  (byte) divr8u::divisor#5 ← phi( div8u/(byte) divr8u::divisor#0 )
  (byte) divr8u::dividend#4 ← phi( div8u/(byte) divr8u::dividend#0 )
  (byte) divr8u::rem#9 ← phi( div8u/(byte) divr8u::rem#0 )
  (byte) divr8u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) divr8u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:divr8u::@1
divr8u::@1: scope:[divr8u]  from divr8u divr8u::@3
  (byte) divr8u::i#5 ← phi( divr8u/(byte) divr8u::i#0 divr8u::@3/(byte) divr8u::i#1 )
  (byte) divr8u::divisor#3 ← phi( divr8u/(byte) divr8u::divisor#5 divr8u::@3/(byte) divr8u::divisor#6 )
  (byte) divr8u::quotient#6 ← phi( divr8u/(byte) divr8u::quotient#0 divr8u::@3/(byte) divr8u::quotient#8 )
  (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#4 divr8u::@3/(byte) divr8u::dividend#5 )
  (byte) divr8u::rem#4 ← phi( divr8u/(byte) divr8u::rem#9 divr8u::@3/(byte) divr8u::rem#10 )
  (byte~) divr8u::$0 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) divr8u::rem#1 ← (byte~) divr8u::$0
  (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128
  (bool~) divr8u::$2 ← (byte~) divr8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr8u::$3 ← ! (bool~) divr8u::$2
  if((bool~) divr8u::$3) goto divr8u::@2
  to:divr8u::@4
divr8u::@2: scope:[divr8u]  from divr8u::@1 divr8u::@4
  (byte) divr8u::i#3 ← phi( divr8u::@1/(byte) divr8u::i#5 divr8u::@4/(byte) divr8u::i#6 )
  (byte) divr8u::divisor#1 ← phi( divr8u::@1/(byte) divr8u::divisor#3 divr8u::@4/(byte) divr8u::divisor#4 )
  (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 )
  (byte) divr8u::quotient#3 ← phi( divr8u::@1/(byte) divr8u::quotient#6 divr8u::@4/(byte) divr8u::quotient#7 )
  (byte) divr8u::dividend#3 ← phi( divr8u::@1/(byte) divr8u::dividend#2 divr8u::@4/(byte) divr8u::dividend#6 )
  (byte~) divr8u::$5 ← (byte) divr8u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) divr8u::dividend#1 ← (byte~) divr8u::$5
  (byte~) divr8u::$6 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) divr8u::quotient#1 ← (byte~) divr8u::$6
  (bool~) divr8u::$7 ← (byte) divr8u::rem#5 >= (byte) divr8u::divisor#1
  (bool~) divr8u::$8 ← ! (bool~) divr8u::$7
  if((bool~) divr8u::$8) goto divr8u::@3
  to:divr8u::@5
divr8u::@4: scope:[divr8u]  from divr8u::@1
  (byte) divr8u::i#6 ← phi( divr8u::@1/(byte) divr8u::i#5 )
  (byte) divr8u::divisor#4 ← phi( divr8u::@1/(byte) divr8u::divisor#3 )
  (byte) divr8u::quotient#7 ← phi( divr8u::@1/(byte) divr8u::quotient#6 )
  (byte) divr8u::dividend#6 ← phi( divr8u::@1/(byte) divr8u::dividend#2 )
  (byte) divr8u::rem#6 ← phi( divr8u::@1/(byte) divr8u::rem#1 )
  (byte/word/dword~) divr8u::$4 ← (byte) divr8u::rem#6 | (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) divr8u::rem#2 ← (byte/word/dword~) divr8u::$4
  to:divr8u::@2
divr8u::@3: scope:[divr8u]  from divr8u::@2 divr8u::@5
  (byte) divr8u::divisor#6 ← phi( divr8u::@2/(byte) divr8u::divisor#1 divr8u::@5/(byte) divr8u::divisor#2 )
  (byte) divr8u::quotient#8 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 )
  (byte) divr8u::dividend#5 ← phi( divr8u::@2/(byte) divr8u::dividend#1 divr8u::@5/(byte) divr8u::dividend#7 )
  (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 )
  (byte) divr8u::i#2 ← phi( divr8u::@2/(byte) divr8u::i#3 divr8u::@5/(byte) divr8u::i#4 )
  (byte) divr8u::i#1 ← (byte) divr8u::i#2 + rangenext(0,7)
  (bool~) divr8u::$10 ← (byte) divr8u::i#1 != rangelast(0,7)
  if((bool~) divr8u::$10) goto divr8u::@1
  to:divr8u::@6
divr8u::@5: scope:[divr8u]  from divr8u::@2
  (byte) divr8u::dividend#7 ← phi( divr8u::@2/(byte) divr8u::dividend#1 )
  (byte) divr8u::i#4 ← phi( divr8u::@2/(byte) divr8u::i#3 )
  (byte) divr8u::divisor#2 ← phi( divr8u::@2/(byte) divr8u::divisor#1 )
  (byte) divr8u::rem#7 ← phi( divr8u::@2/(byte) divr8u::rem#5 )
  (byte) divr8u::quotient#4 ← phi( divr8u::@2/(byte) divr8u::quotient#1 )
  (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#4
  (byte~) divr8u::$9 ← (byte) divr8u::rem#7 - (byte) divr8u::divisor#2
  (byte) divr8u::rem#3 ← (byte~) divr8u::$9
  to:divr8u::@3
divr8u::@6: scope:[divr8u]  from divr8u::@3
  (byte) divr8u::quotient#5 ← phi( divr8u::@3/(byte) divr8u::quotient#8 )
  (byte) divr8u::rem#8 ← phi( divr8u::@3/(byte) divr8u::rem#10 )
  (byte) rem8u#3 ← (byte) divr8u::rem#8
  (byte) divr8u::return#1 ← (byte) divr8u::quotient#5
  to:divr8u::@return
divr8u::@return: scope:[divr8u]  from divr8u::@6
  (byte) rem8u#17 ← phi( divr8u::@6/(byte) rem8u#3 )
  (byte) divr8u::return#4 ← phi( divr8u::@6/(byte) divr8u::return#1 )
  (byte) divr8u::return#2 ← (byte) divr8u::return#4
  (byte) rem8u#4 ← (byte) rem8u#17
  return 
  to:@return
@21: scope:[]  from @19
  (byte*) print_screen#8 ← phi( @19/(byte*) print_screen#9 )
  (byte) rem8u#55 ← phi( @19/(byte) rem8u#0 )
  (byte*) print_char_cursor#156 ← phi( @19/(byte*) print_char_cursor#157 )
  (byte*) print_line_cursor#56 ← phi( @19/(byte*) print_line_cursor#61 )
  (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@24
divr16u: scope:[divr16u]  from div16u divr16s::@4
  (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 )
  (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 )
  (word) divr16u::rem#10 ← phi( div16u/(word) divr16u::rem#3 divr16s::@4/(word) divr16u::rem#4 )
  (word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:divr16u::@1
divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
  (byte) divr16u::i#5 ← phi( divr16u/(byte) divr16u::i#0 divr16u::@3/(byte) divr16u::i#1 )
  (word) divr16u::divisor#4 ← phi( divr16u/(word) divr16u::divisor#6 divr16u::@3/(word) divr16u::divisor#7 )
  (word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 )
  (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#6 )
  (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
  (word~) divr16u::$0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) divr16u::rem#0 ← (word~) divr16u::$0
  (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
  (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
  (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16u::$4 ← ! (bool~) divr16u::$3
  if((bool~) divr16u::$4) goto divr16u::@2
  to:divr16u::@4
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  (byte) divr16u::i#3 ← phi( divr16u::@1/(byte) divr16u::i#5 divr16u::@4/(byte) divr16u::i#6 )
  (word) divr16u::divisor#2 ← phi( divr16u::@1/(word) divr16u::divisor#4 divr16u::@4/(word) divr16u::divisor#5 )
  (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
  (word) divr16u::quotient#3 ← phi( divr16u::@1/(word) divr16u::quotient#6 divr16u::@4/(word) divr16u::quotient#7 )
  (word) divr16u::dividend#4 ← phi( divr16u::@1/(word) divr16u::dividend#3 divr16u::@4/(word) divr16u::dividend#7 )
  (word~) divr16u::$6 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) divr16u::dividend#0 ← (word~) divr16u::$6
  (word~) divr16u::$7 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) divr16u::quotient#1 ← (word~) divr16u::$7
  (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2
  (bool~) divr16u::$9 ← ! (bool~) divr16u::$8
  if((bool~) divr16u::$9) goto divr16u::@3
  to:divr16u::@5
divr16u::@4: scope:[divr16u]  from divr16u::@1
  (byte) divr16u::i#6 ← phi( divr16u::@1/(byte) divr16u::i#5 )
  (word) divr16u::divisor#5 ← phi( divr16u::@1/(word) divr16u::divisor#4 )
  (word) divr16u::quotient#7 ← phi( divr16u::@1/(word) divr16u::quotient#6 )
  (word) divr16u::dividend#7 ← phi( divr16u::@1/(word) divr16u::dividend#3 )
  (word) divr16u::rem#7 ← phi( divr16u::@1/(word) divr16u::rem#0 )
  (word/dword~) divr16u::$5 ← (word) divr16u::rem#7 | (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) divr16u::rem#1 ← (word/dword~) divr16u::$5
  to:divr16u::@2
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  (word) divr16u::divisor#7 ← phi( divr16u::@2/(word) divr16u::divisor#2 divr16u::@5/(word) divr16u::divisor#3 )
  (word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
  (word) divr16u::dividend#6 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#8 )
  (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
  (byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 )
  (byte) divr16u::i#1 ← (byte) divr16u::i#2 + rangenext(0,15)
  (bool~) divr16u::$11 ← (byte) divr16u::i#1 != rangelast(0,15)
  if((bool~) divr16u::$11) goto divr16u::@1
  to:divr16u::@6
divr16u::@5: scope:[divr16u]  from divr16u::@2
  (word) divr16u::dividend#8 ← phi( divr16u::@2/(word) divr16u::dividend#0 )
  (byte) divr16u::i#4 ← phi( divr16u::@2/(byte) divr16u::i#3 )
  (word) divr16u::divisor#3 ← phi( divr16u::@2/(word) divr16u::divisor#2 )
  (word) divr16u::rem#8 ← phi( divr16u::@2/(word) divr16u::rem#6 )
  (word) divr16u::quotient#4 ← phi( divr16u::@2/(word) divr16u::quotient#1 )
  (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#4
  (word~) divr16u::$10 ← (word) divr16u::rem#8 - (word) divr16u::divisor#3
  (word) divr16u::rem#2 ← (word~) divr16u::$10
  to:divr16u::@3
divr16u::@6: scope:[divr16u]  from divr16u::@3
  (word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 )
  (word) divr16u::rem#9 ← phi( divr16u::@3/(word) divr16u::rem#11 )
  (word) rem16u#1 ← (word) divr16u::rem#9
  (word) divr16u::return#0 ← (word) divr16u::quotient#5
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@6
  (word) rem16u#17 ← phi( divr16u::@6/(word) rem16u#1 )
  (word) divr16u::return#4 ← phi( divr16u::@6/(word) divr16u::return#0 )
  (word) divr16u::return#1 ← (word) divr16u::return#4
  (word) rem16u#2 ← (word) rem16u#17
  return 
  to:@return
div16u: scope:[div16u]  from test_16u::@1
  (word) rem16u#35 ← phi( test_16u::@1/(word) rem16u#40 )
  (word) div16u::divisor#1 ← phi( test_16u::@1/(word) div16u::divisor#0 )
  (word) div16u::dividend#1 ← phi( test_16u::@1/(word) div16u::dividend#0 )
  (word) divr16u::dividend#1 ← (word) div16u::dividend#1
  (word) divr16u::divisor#0 ← (word) div16u::divisor#1
  (word) divr16u::rem#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  call divr16u 
  (word) divr16u::return#2 ← (word) divr16u::return#1
  to:div16u::@2
div16u::@2: scope:[div16u]  from div16u
  (word) rem16u#18 ← phi( div16u/(word) rem16u#2 )
  (word) divr16u::return#5 ← phi( div16u/(word) divr16u::return#2 )
  (word~) div16u::$0 ← (word) divr16u::return#5
  (word) rem16u#3 ← (word) rem16u#18
  (word) div16u::return#0 ← (word~) div16u::$0
  to:div16u::@return
div16u::@return: scope:[div16u]  from div16u::@2
  (word) rem16u#19 ← phi( div16u::@2/(word) rem16u#3 )
  (word) div16u::return#3 ← phi( div16u::@2/(word) div16u::return#0 )
  (word) div16u::return#1 ← (word) div16u::return#3
  (word) rem16u#4 ← (word) rem16u#19
  return 
  to:@return
@24: scope:[]  from @21
  (byte*) print_screen#7 ← phi( @21/(byte*) print_screen#8 )
  (word) rem16u#55 ← phi( @21/(word) rem16u#0 )
  (byte) rem8u#52 ← phi( @21/(byte) rem8u#55 )
  (byte*) print_char_cursor#151 ← phi( @21/(byte*) print_char_cursor#156 )
  (byte*) print_line_cursor#51 ← phi( @21/(byte*) print_line_cursor#56 )
  (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@25
div8s: scope:[div8s]  from test_8s::@1
  (byte) rem8u#60 ← phi( test_8s::@1/(byte) rem8u#39 )
  (signed byte) div8s::divisor#6 ← phi( test_8s::@1/(signed byte) div8s::divisor#0 )
  (signed byte) div8s::dividend#1 ← phi( test_8s::@1/(signed byte) div8s::dividend#0 )
  (byte) div8s::neg#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) div8s::dividendu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) div8s::$0 ← (signed byte) div8s::dividend#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) div8s::$0) goto div8s::@1
  to:div8s::@7
div8s::@1: scope:[div8s]  from div8s
  (byte) rem8u#56 ← phi( div8s/(byte) rem8u#60 )
  (signed byte) div8s::divisor#4 ← phi( div8s/(signed byte) div8s::divisor#6 )
  (signed byte) div8s::dividend#2 ← phi( div8s/(signed byte) div8s::dividend#1 )
  (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#2
  (byte~) div8s::$3 ← ((byte)) (signed byte~) div8s::$2
  (byte) div8s::dividendu#1 ← (byte~) div8s::$3
  (byte) div8s::neg#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  to:div8s::@2
div8s::@7: scope:[div8s]  from div8s
  (byte) rem8u#57 ← phi( div8s/(byte) rem8u#60 )
  (byte) div8s::neg#7 ← phi( div8s/(byte) div8s::neg#0 )
  (signed byte) div8s::divisor#5 ← phi( div8s/(signed byte) div8s::divisor#6 )
  (signed byte) div8s::dividend#3 ← phi( div8s/(signed byte) div8s::dividend#1 )
  (byte~) div8s::$1 ← ((byte)) (signed byte) div8s::dividend#3
  (byte) div8s::dividendu#2 ← (byte~) div8s::$1
  to:div8s::@2
div8s::@2: scope:[div8s]  from div8s::@1 div8s::@7
  (byte) rem8u#51 ← phi( div8s::@1/(byte) rem8u#56 div8s::@7/(byte) rem8u#57 )
  (byte) div8s::dividendu#6 ← phi( div8s::@1/(byte) div8s::dividendu#1 div8s::@7/(byte) div8s::dividendu#2 )
  (byte) div8s::neg#5 ← phi( div8s::@1/(byte) div8s::neg#1 div8s::@7/(byte) div8s::neg#7 )
  (signed byte) div8s::divisor#1 ← phi( div8s::@1/(signed byte) div8s::divisor#4 div8s::@7/(signed byte) div8s::divisor#5 )
  (byte) div8s::divisoru#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) div8s::$4 ← (signed byte) div8s::divisor#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) div8s::$4) goto div8s::@3
  to:div8s::@9
div8s::@3: scope:[div8s]  from div8s::@2
  (byte) rem8u#42 ← phi( div8s::@2/(byte) rem8u#51 )
  (byte) div8s::dividendu#4 ← phi( div8s::@2/(byte) div8s::dividendu#6 )
  (byte) div8s::neg#3 ← phi( div8s::@2/(byte) div8s::neg#5 )
  (signed byte) div8s::divisor#2 ← phi( div8s::@2/(signed byte) div8s::divisor#1 )
  (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#2
  (byte~) div8s::$7 ← ((byte)) (signed byte~) div8s::$6
  (byte) div8s::divisoru#1 ← (byte~) div8s::$7
  (byte/word/dword~) div8s::$8 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) div8s::neg#2 ← (byte/word/dword~) div8s::$8
  to:div8s::@4
div8s::@9: scope:[div8s]  from div8s::@2
  (byte) div8s::neg#8 ← phi( div8s::@2/(byte) div8s::neg#5 )
  (byte) rem8u#43 ← phi( div8s::@2/(byte) rem8u#51 )
  (byte) div8s::dividendu#5 ← phi( div8s::@2/(byte) div8s::dividendu#6 )
  (signed byte) div8s::divisor#3 ← phi( div8s::@2/(signed byte) div8s::divisor#1 )
  (byte~) div8s::$5 ← ((byte)) (signed byte) div8s::divisor#3
  (byte) div8s::divisoru#2 ← (byte~) div8s::$5
  to:div8s::@4
div8s::@4: scope:[div8s]  from div8s::@3 div8s::@9
  (byte) div8s::neg#6 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@9/(byte) div8s::neg#8 )
  (byte) rem8u#32 ← phi( div8s::@3/(byte) rem8u#42 div8s::@9/(byte) rem8u#43 )
  (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte) div8s::divisoru#1 div8s::@9/(byte) div8s::divisoru#2 )
  (byte) div8s::dividendu#3 ← phi( div8s::@3/(byte) div8s::dividendu#4 div8s::@9/(byte) div8s::dividendu#5 )
  (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3
  (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3
  call div8u 
  (byte) div8u::return#2 ← (byte) div8u::return#1
  to:div8s::@15
div8s::@15: scope:[div8s]  from div8s::@4
  (byte) div8s::neg#4 ← phi( div8s::@4/(byte) div8s::neg#6 )
  (byte) rem8u#18 ← phi( div8s::@4/(byte) rem8u#2 )
  (byte) div8u::return#5 ← phi( div8s::@4/(byte) div8u::return#2 )
  (byte~) div8s::$9 ← (byte) div8u::return#5
  (byte) rem8u#5 ← (byte) rem8u#18
  (byte) div8s::resultu#0 ← (byte~) div8s::$9
  (bool~) div8s::$10 ← (byte) div8s::neg#4 == (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) div8s::$10) goto div8s::@5
  to:div8s::@11
div8s::@5: scope:[div8s]  from div8s::@15
  (byte) div8s::resultu#1 ← phi( div8s::@15/(byte) div8s::resultu#0 )
  (byte) rem8u#19 ← phi( div8s::@15/(byte) rem8u#5 )
  (signed byte~) div8s::$15 ← ((signed byte)) (byte) rem8u#19
  (signed byte) rem8s#1 ← (signed byte~) div8s::$15
  (signed byte~) div8s::$16 ← ((signed byte)) (byte) div8s::resultu#1
  (signed byte) div8s::return#0 ← (signed byte~) div8s::$16
  to:div8s::@return
div8s::@11: scope:[div8s]  from div8s::@15
  (byte) div8s::resultu#2 ← phi( div8s::@15/(byte) div8s::resultu#0 )
  (byte) rem8u#20 ← phi( div8s::@15/(byte) rem8u#5 )
  (signed byte~) div8s::$11 ← ((signed byte)) (byte) rem8u#20
  (signed byte~) div8s::$12 ← - (signed byte~) div8s::$11
  (signed byte) rem8s#2 ← (signed byte~) div8s::$12
  (signed byte~) div8s::$13 ← ((signed byte)) (byte) div8s::resultu#2
  (signed byte~) div8s::$14 ← - (signed byte~) div8s::$13
  (signed byte) div8s::return#1 ← (signed byte~) div8s::$14
  to:div8s::@return
div8s::@return: scope:[div8s]  from div8s::@11 div8s::@5
  (signed byte) rem8s#9 ← phi( div8s::@11/(signed byte) rem8s#2 div8s::@5/(signed byte) rem8s#1 )
  (byte) rem8u#21 ← phi( div8s::@11/(byte) rem8u#20 div8s::@5/(byte) rem8u#19 )
  (signed byte) div8s::return#4 ← phi( div8s::@11/(signed byte) div8s::return#1 div8s::@5/(signed byte) div8s::return#0 )
  (signed byte) div8s::return#2 ← (signed byte) div8s::return#4
  (byte) rem8u#6 ← (byte) rem8u#21
  (signed byte) rem8s#3 ← (signed byte) rem8s#9
  return 
  to:@return
@25: scope:[]  from @24
  (byte*) print_screen#6 ← phi( @24/(byte*) print_screen#7 )
  (signed byte) rem8s#26 ← phi( @24/(signed byte) rem8s#0 )
  (word) rem16u#54 ← phi( @24/(word) rem16u#55 )
  (byte) rem8u#50 ← phi( @24/(byte) rem8u#52 )
  (byte*) print_char_cursor#150 ← phi( @24/(byte*) print_char_cursor#151 )
  (byte*) print_line_cursor#50 ← phi( @24/(byte*) print_line_cursor#51 )
  (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@32
divr16s: scope:[divr16s]  from div16s
  (word) rem16u#64 ← phi( div16s/(word) rem16u#37 )
  (signed word) divr16s::divisor#6 ← phi( div16s/(signed word) divr16s::divisor#0 )
  (signed word) divr16s::rem#1 ← phi( div16s/(signed word) divr16s::rem#0 )
  (signed word) divr16s::dividend#1 ← phi( div16s/(signed word) divr16s::dividend#0 )
  (byte) divr16s::neg#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (word) divr16s::dividendu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (word) divr16s::remu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16s::$0 ← (signed word) divr16s::dividend#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16s::$1 ← (signed word) divr16s::rem#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
  if((bool~) divr16s::$2) goto divr16s::@1
  to:divr16s::@7
divr16s::@1: scope:[divr16s]  from divr16s
  (word) rem16u#60 ← phi( divr16s/(word) rem16u#64 )
  (signed word) divr16s::divisor#4 ← phi( divr16s/(signed word) divr16s::divisor#6 )
  (signed word) divr16s::rem#2 ← phi( divr16s/(signed word) divr16s::rem#1 )
  (signed word) divr16s::dividend#2 ← phi( divr16s/(signed word) divr16s::dividend#1 )
  (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#2
  (word~) divr16s::$6 ← ((word)) (signed word~) divr16s::$5
  (word) divr16s::dividendu#1 ← (word~) divr16s::$6
  (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#2
  (word~) divr16s::$8 ← ((word)) (signed word~) divr16s::$7
  (word) divr16s::remu#1 ← (word~) divr16s::$8
  (byte) divr16s::neg#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  to:divr16s::@2
divr16s::@7: scope:[divr16s]  from divr16s
  (word) rem16u#61 ← phi( divr16s/(word) rem16u#64 )
  (byte) divr16s::neg#7 ← phi( divr16s/(byte) divr16s::neg#0 )
  (signed word) divr16s::divisor#5 ← phi( divr16s/(signed word) divr16s::divisor#6 )
  (signed word) divr16s::rem#3 ← phi( divr16s/(signed word) divr16s::rem#1 )
  (signed word) divr16s::dividend#3 ← phi( divr16s/(signed word) divr16s::dividend#1 )
  (word~) divr16s::$3 ← ((word)) (signed word) divr16s::dividend#3
  (word) divr16s::dividendu#2 ← (word~) divr16s::$3
  (word~) divr16s::$4 ← ((word)) (signed word) divr16s::rem#3
  (word) divr16s::remu#2 ← (word~) divr16s::$4
  to:divr16s::@2
divr16s::@2: scope:[divr16s]  from divr16s::@1 divr16s::@7
  (word) rem16u#56 ← phi( divr16s::@1/(word) rem16u#60 divr16s::@7/(word) rem16u#61 )
  (word) divr16s::remu#6 ← phi( divr16s::@1/(word) divr16s::remu#1 divr16s::@7/(word) divr16s::remu#2 )
  (word) divr16s::dividendu#6 ← phi( divr16s::@1/(word) divr16s::dividendu#1 divr16s::@7/(word) divr16s::dividendu#2 )
  (byte) divr16s::neg#5 ← phi( divr16s::@1/(byte) divr16s::neg#1 divr16s::@7/(byte) divr16s::neg#7 )
  (signed word) divr16s::divisor#1 ← phi( divr16s::@1/(signed word) divr16s::divisor#4 divr16s::@7/(signed word) divr16s::divisor#5 )
  (word) divr16s::divisoru#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16s::$9 ← (signed word) divr16s::divisor#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) divr16s::$9) goto divr16s::@3
  to:divr16s::@9
divr16s::@3: scope:[divr16s]  from divr16s::@2
  (word) rem16u#46 ← phi( divr16s::@2/(word) rem16u#56 )
  (word) divr16s::remu#4 ← phi( divr16s::@2/(word) divr16s::remu#6 )
  (word) divr16s::dividendu#4 ← phi( divr16s::@2/(word) divr16s::dividendu#6 )
  (byte) divr16s::neg#3 ← phi( divr16s::@2/(byte) divr16s::neg#5 )
  (signed word) divr16s::divisor#2 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 )
  (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#2
  (word~) divr16s::$12 ← ((word)) (signed word~) divr16s::$11
  (word) divr16s::divisoru#1 ← (word~) divr16s::$12
  (byte/word/dword~) divr16s::$13 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) divr16s::neg#2 ← (byte/word/dword~) divr16s::$13
  to:divr16s::@4
divr16s::@9: scope:[divr16s]  from divr16s::@2
  (byte) divr16s::neg#8 ← phi( divr16s::@2/(byte) divr16s::neg#5 )
  (word) rem16u#47 ← phi( divr16s::@2/(word) rem16u#56 )
  (word) divr16s::remu#5 ← phi( divr16s::@2/(word) divr16s::remu#6 )
  (word) divr16s::dividendu#5 ← phi( divr16s::@2/(word) divr16s::dividendu#6 )
  (signed word) divr16s::divisor#3 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 )
  (word~) divr16s::$10 ← ((word)) (signed word) divr16s::divisor#3
  (word) divr16s::divisoru#2 ← (word~) divr16s::$10
  to:divr16s::@4
divr16s::@4: scope:[divr16s]  from divr16s::@3 divr16s::@9
  (byte) divr16s::neg#6 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#8 )
  (word) rem16u#36 ← phi( divr16s::@3/(word) rem16u#46 divr16s::@9/(word) rem16u#47 )
  (word) divr16s::remu#3 ← phi( divr16s::@3/(word) divr16s::remu#4 divr16s::@9/(word) divr16s::remu#5 )
  (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#1 divr16s::@9/(word) divr16s::divisoru#2 )
  (word) divr16s::dividendu#3 ← phi( divr16s::@3/(word) divr16s::dividendu#4 divr16s::@9/(word) divr16s::dividendu#5 )
  (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3
  (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3
  (word) divr16u::rem#4 ← (word) divr16s::remu#3
  call divr16u 
  (word) divr16u::return#3 ← (word) divr16u::return#1
  to:divr16s::@15
divr16s::@15: scope:[divr16s]  from divr16s::@4
  (byte) divr16s::neg#4 ← phi( divr16s::@4/(byte) divr16s::neg#6 )
  (word) rem16u#20 ← phi( divr16s::@4/(word) rem16u#2 )
  (word) divr16u::return#6 ← phi( divr16s::@4/(word) divr16u::return#3 )
  (word~) divr16s::$14 ← (word) divr16u::return#6
  (word) rem16u#5 ← (word) rem16u#20
  (word) divr16s::resultu#0 ← (word~) divr16s::$14
  (bool~) divr16s::$15 ← (byte) divr16s::neg#4 == (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) divr16s::$15) goto divr16s::@5
  to:divr16s::@11
divr16s::@5: scope:[divr16s]  from divr16s::@15
  (word) divr16s::resultu#1 ← phi( divr16s::@15/(word) divr16s::resultu#0 )
  (word) rem16u#21 ← phi( divr16s::@15/(word) rem16u#5 )
  (signed word~) divr16s::$20 ← ((signed word)) (word) rem16u#21
  (signed word) rem16s#1 ← (signed word~) divr16s::$20
  (signed word~) divr16s::$21 ← ((signed word)) (word) divr16s::resultu#1
  (signed word) divr16s::return#0 ← (signed word~) divr16s::$21
  to:divr16s::@return
divr16s::@11: scope:[divr16s]  from divr16s::@15
  (word) divr16s::resultu#2 ← phi( divr16s::@15/(word) divr16s::resultu#0 )
  (word) rem16u#22 ← phi( divr16s::@15/(word) rem16u#5 )
  (signed word~) divr16s::$16 ← ((signed word)) (word) rem16u#22
  (signed word~) divr16s::$17 ← - (signed word~) divr16s::$16
  (signed word) rem16s#2 ← (signed word~) divr16s::$17
  (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#2
  (signed word~) divr16s::$19 ← - (signed word~) divr16s::$18
  (signed word) divr16s::return#1 ← (signed word~) divr16s::$19
  to:divr16s::@return
divr16s::@return: scope:[divr16s]  from divr16s::@11 divr16s::@5
  (signed word) rem16s#11 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@5/(signed word) rem16s#1 )
  (word) rem16u#23 ← phi( divr16s::@11/(word) rem16u#22 divr16s::@5/(word) rem16u#21 )
  (signed word) divr16s::return#4 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@5/(signed word) divr16s::return#0 )
  (signed word) divr16s::return#2 ← (signed word) divr16s::return#4
  (word) rem16u#6 ← (word) rem16u#23
  (signed word) rem16s#3 ← (signed word) rem16s#11
  return 
  to:@return
div16s: scope:[div16s]  from test_16s::@1
  (signed word) rem16s#20 ← phi( test_16s::@1/(signed word) rem16s#22 )
  (word) rem16u#37 ← phi( test_16s::@1/(word) rem16u#43 )
  (signed word) div16s::divisor#1 ← phi( test_16s::@1/(signed word) div16s::divisor#0 )
  (signed word) div16s::dividend#1 ← phi( test_16s::@1/(signed word) div16s::dividend#0 )
  (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#1
  (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#1
  (signed word) divr16s::rem#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  call divr16s 
  (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
  to:div16s::@2
div16s::@2: scope:[div16s]  from div16s
  (signed word) rem16s#12 ← phi( div16s/(signed word) rem16s#3 )
  (word) rem16u#24 ← phi( div16s/(word) rem16u#6 )
  (signed word) divr16s::return#5 ← phi( div16s/(signed word) divr16s::return#3 )
  (signed word~) div16s::$0 ← (signed word) divr16s::return#5
  (word) rem16u#7 ← (word) rem16u#24
  (signed word) rem16s#4 ← (signed word) rem16s#12
  (signed word) div16s::return#0 ← (signed word~) div16s::$0
  to:div16s::@return
div16s::@return: scope:[div16s]  from div16s::@2
  (signed word) rem16s#13 ← phi( div16s::@2/(signed word) rem16s#4 )
  (word) rem16u#25 ← phi( div16s::@2/(word) rem16u#7 )
  (signed word) div16s::return#3 ← phi( div16s::@2/(signed word) div16s::return#0 )
  (signed word) div16s::return#1 ← (signed word) div16s::return#3
  (word) rem16u#8 ← (word) rem16u#25
  (signed word) rem16s#5 ← (signed word) rem16s#13
  return 
  to:@return
main: scope:[main]  from @32
  (signed word) rem16s#34 ← phi( @32/(signed word) rem16s#25 )
  (signed byte) rem8s#29 ← phi( @32/(signed byte) rem8s#21 )
  (word) rem16u#57 ← phi( @32/(word) rem16u#45 )
  (byte) rem8u#44 ← phi( @32/(byte) rem8u#41 )
  (byte*) print_char_cursor#137 ← phi( @32/(byte*) print_char_cursor#142 )
  (byte*) print_line_cursor#40 ← phi( @32/(byte*) print_line_cursor#45 )
  (byte*) print_screen#4 ← phi( @32/(byte*) print_screen#5 )
  call print_cls 
  to:main::@1
main::@1: scope:[main]  from main
  (signed word) rem16s#32 ← phi( main/(signed word) rem16s#34 )
  (signed byte) rem8s#27 ← phi( main/(signed byte) rem8s#29 )
  (word) rem16u#48 ← phi( main/(word) rem16u#57 )
  (byte) rem8u#33 ← phi( main/(byte) rem8u#44 )
  (byte*) print_char_cursor#85 ← phi( main/(byte*) print_char_cursor#21 )
  (byte*) print_line_cursor#24 ← phi( main/(byte*) print_line_cursor#4 )
  (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#24
  (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#85
  call test_8u 
  to:main::@2
main::@2: scope:[main]  from main::@1
  (signed word) rem16s#30 ← phi( main::@1/(signed word) rem16s#32 )
  (signed byte) rem8s#22 ← phi( main::@1/(signed byte) rem8s#27 )
  (word) rem16u#38 ← phi( main::@1/(word) rem16u#48 )
  (byte*) print_line_cursor#25 ← phi( main::@1/(byte*) print_line_cursor#12 )
  (byte*) print_char_cursor#86 ← phi( main::@1/(byte*) print_char_cursor#36 )
  (byte) rem8u#22 ← phi( main::@1/(byte) rem8u#11 )
  (byte) rem8u#7 ← (byte) rem8u#22
  (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#86
  (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#25
  call test_16u 
  to:main::@3
main::@3: scope:[main]  from main::@2
  (signed word) rem16s#26 ← phi( main::@2/(signed word) rem16s#30 )
  (signed byte) rem8s#16 ← phi( main::@2/(signed byte) rem8s#22 )
  (byte) rem8u#34 ← phi( main::@2/(byte) rem8u#7 )
  (byte*) print_line_cursor#26 ← phi( main::@2/(byte*) print_line_cursor#14 )
  (byte*) print_char_cursor#87 ← phi( main::@2/(byte*) print_char_cursor#45 )
  (word) rem16u#26 ← phi( main::@2/(word) rem16u#13 )
  (word) rem16u#9 ← (word) rem16u#26
  (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#87
  (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#26
  call test_8s 
  to:main::@4
main::@4: scope:[main]  from main::@3
  (signed word) rem16s#21 ← phi( main::@3/(signed word) rem16s#26 )
  (word) rem16u#39 ← phi( main::@3/(word) rem16u#9 )
  (byte*) print_line_cursor#27 ← phi( main::@3/(byte*) print_line_cursor#16 )
  (byte*) print_char_cursor#88 ← phi( main::@3/(byte*) print_char_cursor#54 )
  (signed byte) rem8s#10 ← phi( main::@3/(signed byte) rem8s#7 )
  (byte) rem8u#23 ← phi( main::@3/(byte) rem8u#13 )
  (byte) rem8u#8 ← (byte) rem8u#23
  (signed byte) rem8s#4 ← (signed byte) rem8s#10
  (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#88
  (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#27
  call test_16s 
  to:main::@5
main::@5: scope:[main]  from main::@4
  (signed byte) rem8s#17 ← phi( main::@4/(signed byte) rem8s#4 )
  (byte) rem8u#35 ← phi( main::@4/(byte) rem8u#8 )
  (byte*) print_line_cursor#28 ← phi( main::@4/(byte*) print_line_cursor#18 )
  (byte*) print_char_cursor#89 ← phi( main::@4/(byte*) print_char_cursor#63 )
  (signed word) rem16s#14 ← phi( main::@4/(signed word) rem16s#9 )
  (word) rem16u#27 ← phi( main::@4/(word) rem16u#15 )
  (word) rem16u#10 ← (word) rem16u#27
  (signed word) rem16s#6 ← (signed word) rem16s#14
  (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#89
  (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#28
  to:main::@return
main::@return: scope:[main]  from main::@5
  (signed word) rem16s#15 ← phi( main::@5/(signed word) rem16s#6 )
  (signed byte) rem8s#11 ← phi( main::@5/(signed byte) rem8s#17 )
  (word) rem16u#28 ← phi( main::@5/(word) rem16u#10 )
  (byte) rem8u#24 ← phi( main::@5/(byte) rem8u#35 )
  (byte*) print_char_cursor#90 ← phi( main::@5/(byte*) print_char_cursor#26 )
  (byte*) print_line_cursor#29 ← phi( main::@5/(byte*) print_line_cursor#9 )
  (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#29
  (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#90
  (byte) rem8u#9 ← (byte) rem8u#24
  (word) rem16u#11 ← (word) rem16u#28
  (signed byte) rem8s#5 ← (signed byte) rem8s#11
  (signed word) rem16s#7 ← (signed word) rem16s#15
  return 
  to:@return
test_8u: scope:[test_8u]  from main::@1
  (byte*) print_line_cursor#83 ← phi( main::@1/(byte*) print_line_cursor#5 )
  (byte*) print_char_cursor#152 ← phi( main::@1/(byte*) print_char_cursor#22 )
  (byte) rem8u#45 ← phi( main::@1/(byte) rem8u#33 )
  (byte[]) test_8u::dividends#0 ← { (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255 }
  (byte[]) test_8u::divisors#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
  (byte) test_8u::rem#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) test_8u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:test_8u::@1
test_8u::@1: scope:[test_8u]  from test_8u test_8u::@11
  (byte*) print_line_cursor#79 ← phi( test_8u/(byte*) print_line_cursor#83 test_8u::@11/(byte*) print_line_cursor#11 )
  (byte*) print_char_cursor#146 ← phi( test_8u/(byte*) print_char_cursor#152 test_8u::@11/(byte*) print_char_cursor#35 )
  (byte) rem8u#36 ← phi( test_8u/(byte) rem8u#45 test_8u::@11/(byte) rem8u#38 )
  (byte) test_8u::i#2 ← phi( test_8u/(byte) test_8u::i#0 test_8u::@11/(byte) test_8u::i#1 )
  (byte) test_8u::dividend#0 ← *((byte[]) test_8u::dividends#0 + (byte) test_8u::i#2)
  (byte) test_8u::divisor#0 ← *((byte[]) test_8u::divisors#0 + (byte) test_8u::i#2)
  (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0
  (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0
  call div8u 
  (byte) div8u::return#3 ← (byte) div8u::return#1
  to:test_8u::@3
test_8u::@3: scope:[test_8u]  from test_8u::@1
  (byte) test_8u::i#11 ← phi( test_8u::@1/(byte) test_8u::i#2 )
  (byte*) print_line_cursor#75 ← phi( test_8u::@1/(byte*) print_line_cursor#79 )
  (byte) test_8u::divisor#3 ← phi( test_8u::@1/(byte) test_8u::divisor#0 )
  (byte*) print_char_cursor#138 ← phi( test_8u::@1/(byte*) print_char_cursor#146 )
  (byte) test_8u::dividend#1 ← phi( test_8u::@1/(byte) test_8u::dividend#0 )
  (byte) rem8u#25 ← phi( test_8u::@1/(byte) rem8u#2 )
  (byte) div8u::return#6 ← phi( test_8u::@1/(byte) div8u::return#3 )
  (byte~) test_8u::$0 ← (byte) div8u::return#6
  (byte) rem8u#10 ← (byte) rem8u#25
  (byte) test_8u::res#0 ← (byte~) test_8u::$0
  (byte) print_byte::b#3 ← (byte) test_8u::dividend#1
  call print_byte 
  to:test_8u::@4
test_8u::@4: scope:[test_8u]  from test_8u::@3
  (byte) test_8u::i#10 ← phi( test_8u::@3/(byte) test_8u::i#11 )
  (byte*) print_line_cursor#71 ← phi( test_8u::@3/(byte*) print_line_cursor#75 )
  (byte) rem8u#61 ← phi( test_8u::@3/(byte) rem8u#10 )
  (byte) test_8u::res#4 ← phi( test_8u::@3/(byte) test_8u::res#0 )
  (byte) test_8u::divisor#2 ← phi( test_8u::@3/(byte) test_8u::divisor#3 )
  (byte*) print_char_cursor#91 ← phi( test_8u::@3/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#91
  (byte*) print_str::str#1 ← (const string) test_8u::str
  call print_str 
  to:test_8u::@5
test_8u::@5: scope:[test_8u]  from test_8u::@4
  (byte) test_8u::i#9 ← phi( test_8u::@4/(byte) test_8u::i#10 )
  (byte*) print_line_cursor#67 ← phi( test_8u::@4/(byte*) print_line_cursor#71 )
  (byte) rem8u#58 ← phi( test_8u::@4/(byte) rem8u#61 )
  (byte) test_8u::res#3 ← phi( test_8u::@4/(byte) test_8u::res#4 )
  (byte) test_8u::divisor#1 ← phi( test_8u::@4/(byte) test_8u::divisor#2 )
  (byte*) print_char_cursor#92 ← phi( test_8u::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#92
  (byte) print_byte::b#4 ← (byte) test_8u::divisor#1
  call print_byte 
  to:test_8u::@6
test_8u::@6: scope:[test_8u]  from test_8u::@5
  (byte) test_8u::i#8 ← phi( test_8u::@5/(byte) test_8u::i#9 )
  (byte*) print_line_cursor#62 ← phi( test_8u::@5/(byte*) print_line_cursor#67 )
  (byte) rem8u#53 ← phi( test_8u::@5/(byte) rem8u#58 )
  (byte) test_8u::res#2 ← phi( test_8u::@5/(byte) test_8u::res#3 )
  (byte*) print_char_cursor#93 ← phi( test_8u::@5/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#93
  (byte*) print_str::str#2 ← (const string) test_8u::str1
  call print_str 
  to:test_8u::@7
test_8u::@7: scope:[test_8u]  from test_8u::@6
  (byte) test_8u::i#7 ← phi( test_8u::@6/(byte) test_8u::i#8 )
  (byte*) print_line_cursor#57 ← phi( test_8u::@6/(byte*) print_line_cursor#62 )
  (byte) rem8u#46 ← phi( test_8u::@6/(byte) rem8u#53 )
  (byte) test_8u::res#1 ← phi( test_8u::@6/(byte) test_8u::res#2 )
  (byte*) print_char_cursor#94 ← phi( test_8u::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#94
  (byte) print_byte::b#5 ← (byte) test_8u::res#1
  call print_byte 
  to:test_8u::@8
test_8u::@8: scope:[test_8u]  from test_8u::@7
  (byte) test_8u::i#6 ← phi( test_8u::@7/(byte) test_8u::i#7 )
  (byte*) print_line_cursor#52 ← phi( test_8u::@7/(byte*) print_line_cursor#57 )
  (byte) rem8u#37 ← phi( test_8u::@7/(byte) rem8u#46 )
  (byte*) print_char_cursor#95 ← phi( test_8u::@7/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#95
  (byte*) print_str::str#3 ← (const string) test_8u::str2
  call print_str 
  to:test_8u::@9
test_8u::@9: scope:[test_8u]  from test_8u::@8
  (byte) test_8u::i#5 ← phi( test_8u::@8/(byte) test_8u::i#6 )
  (byte*) print_line_cursor#46 ← phi( test_8u::@8/(byte*) print_line_cursor#52 )
  (byte) rem8u#26 ← phi( test_8u::@8/(byte) rem8u#37 )
  (byte*) print_char_cursor#96 ← phi( test_8u::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#96
  (byte) print_byte::b#6 ← (byte) rem8u#26
  call print_byte 
  to:test_8u::@10
test_8u::@10: scope:[test_8u]  from test_8u::@9
  (byte) rem8u#47 ← phi( test_8u::@9/(byte) rem8u#26 )
  (byte) test_8u::i#4 ← phi( test_8u::@9/(byte) test_8u::i#5 )
  (byte*) print_line_cursor#41 ← phi( test_8u::@9/(byte*) print_line_cursor#46 )
  (byte*) print_char_cursor#97 ← phi( test_8u::@9/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#97
  call print_ln 
  to:test_8u::@11
test_8u::@11: scope:[test_8u]  from test_8u::@10
  (byte) rem8u#38 ← phi( test_8u::@10/(byte) rem8u#47 )
  (byte) test_8u::i#3 ← phi( test_8u::@10/(byte) test_8u::i#4 )
  (byte*) print_char_cursor#98 ← phi( test_8u::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#30 ← phi( test_8u::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#30
  (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#98
  (byte) test_8u::i#1 ← (byte) test_8u::i#3 + rangenext(0,5)
  (bool~) test_8u::$9 ← (byte) test_8u::i#1 != rangelast(0,5)
  if((bool~) test_8u::$9) goto test_8u::@1
  to:test_8u::@return
test_8u::@return: scope:[test_8u]  from test_8u::@11
  (byte*) print_line_cursor#31 ← phi( test_8u::@11/(byte*) print_line_cursor#11 )
  (byte*) print_char_cursor#99 ← phi( test_8u::@11/(byte*) print_char_cursor#35 )
  (byte) rem8u#27 ← phi( test_8u::@11/(byte) rem8u#38 )
  (byte) rem8u#11 ← (byte) rem8u#27
  (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#99
  (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#31
  return 
  to:@return
test_16u: scope:[test_16u]  from main::@2
  (byte*) print_line_cursor#84 ← phi( main::@2/(byte*) print_line_cursor#6 )
  (byte*) print_char_cursor#153 ← phi( main::@2/(byte*) print_char_cursor#23 )
  (word) rem16u#49 ← phi( main::@2/(word) rem16u#38 )
  (word[]) test_16u::dividends#0 ← { (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535 }
  (word[]) test_16u::divisors#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
  (byte) test_16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:test_16u::@1
test_16u::@1: scope:[test_16u]  from test_16u test_16u::@11
  (byte*) print_line_cursor#80 ← phi( test_16u/(byte*) print_line_cursor#84 test_16u::@11/(byte*) print_line_cursor#13 )
  (byte*) print_char_cursor#147 ← phi( test_16u/(byte*) print_char_cursor#153 test_16u::@11/(byte*) print_char_cursor#44 )
  (word) rem16u#40 ← phi( test_16u/(word) rem16u#49 test_16u::@11/(word) rem16u#42 )
  (byte) test_16u::i#2 ← phi( test_16u/(byte) test_16u::i#0 test_16u::@11/(byte) test_16u::i#1 )
  (word) test_16u::dividend#0 ← *((word[]) test_16u::dividends#0 + (byte) test_16u::i#2)
  (word) test_16u::divisor#0 ← *((word[]) test_16u::divisors#0 + (byte) test_16u::i#2)
  (word) div16u::dividend#0 ← (word) test_16u::dividend#0
  (word) div16u::divisor#0 ← (word) test_16u::divisor#0
  call div16u 
  (word) div16u::return#2 ← (word) div16u::return#1
  to:test_16u::@3
test_16u::@3: scope:[test_16u]  from test_16u::@1
  (byte) test_16u::i#11 ← phi( test_16u::@1/(byte) test_16u::i#2 )
  (byte*) print_line_cursor#76 ← phi( test_16u::@1/(byte*) print_line_cursor#80 )
  (word) test_16u::divisor#3 ← phi( test_16u::@1/(word) test_16u::divisor#0 )
  (byte*) print_char_cursor#139 ← phi( test_16u::@1/(byte*) print_char_cursor#147 )
  (word) test_16u::dividend#1 ← phi( test_16u::@1/(word) test_16u::dividend#0 )
  (word) rem16u#29 ← phi( test_16u::@1/(word) rem16u#4 )
  (word) div16u::return#4 ← phi( test_16u::@1/(word) div16u::return#2 )
  (word~) test_16u::$0 ← (word) div16u::return#4
  (word) rem16u#12 ← (word) rem16u#29
  (word) test_16u::res#0 ← (word~) test_16u::$0
  (word) print_word::w#1 ← (word) test_16u::dividend#1
  call print_word 
  to:test_16u::@4
test_16u::@4: scope:[test_16u]  from test_16u::@3
  (byte) test_16u::i#10 ← phi( test_16u::@3/(byte) test_16u::i#11 )
  (byte*) print_line_cursor#72 ← phi( test_16u::@3/(byte*) print_line_cursor#76 )
  (word) rem16u#65 ← phi( test_16u::@3/(word) rem16u#12 )
  (word) test_16u::res#4 ← phi( test_16u::@3/(word) test_16u::res#0 )
  (word) test_16u::divisor#2 ← phi( test_16u::@3/(word) test_16u::divisor#3 )
  (byte*) print_char_cursor#100 ← phi( test_16u::@3/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#100
  (byte*) print_str::str#4 ← (const string) test_16u::str
  call print_str 
  to:test_16u::@5
test_16u::@5: scope:[test_16u]  from test_16u::@4
  (byte) test_16u::i#9 ← phi( test_16u::@4/(byte) test_16u::i#10 )
  (byte*) print_line_cursor#68 ← phi( test_16u::@4/(byte*) print_line_cursor#72 )
  (word) rem16u#62 ← phi( test_16u::@4/(word) rem16u#65 )
  (word) test_16u::res#3 ← phi( test_16u::@4/(word) test_16u::res#4 )
  (word) test_16u::divisor#1 ← phi( test_16u::@4/(word) test_16u::divisor#2 )
  (byte*) print_char_cursor#101 ← phi( test_16u::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#101
  (word) print_word::w#2 ← (word) test_16u::divisor#1
  call print_word 
  to:test_16u::@6
test_16u::@6: scope:[test_16u]  from test_16u::@5
  (byte) test_16u::i#8 ← phi( test_16u::@5/(byte) test_16u::i#9 )
  (byte*) print_line_cursor#63 ← phi( test_16u::@5/(byte*) print_line_cursor#68 )
  (word) rem16u#58 ← phi( test_16u::@5/(word) rem16u#62 )
  (word) test_16u::res#2 ← phi( test_16u::@5/(word) test_16u::res#3 )
  (byte*) print_char_cursor#102 ← phi( test_16u::@5/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#102
  (byte*) print_str::str#5 ← (const string) test_16u::str1
  call print_str 
  to:test_16u::@7
test_16u::@7: scope:[test_16u]  from test_16u::@6
  (byte) test_16u::i#7 ← phi( test_16u::@6/(byte) test_16u::i#8 )
  (byte*) print_line_cursor#58 ← phi( test_16u::@6/(byte*) print_line_cursor#63 )
  (word) rem16u#50 ← phi( test_16u::@6/(word) rem16u#58 )
  (word) test_16u::res#1 ← phi( test_16u::@6/(word) test_16u::res#2 )
  (byte*) print_char_cursor#103 ← phi( test_16u::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#103
  (word) print_word::w#3 ← (word) test_16u::res#1
  call print_word 
  to:test_16u::@8
test_16u::@8: scope:[test_16u]  from test_16u::@7
  (byte) test_16u::i#6 ← phi( test_16u::@7/(byte) test_16u::i#7 )
  (byte*) print_line_cursor#53 ← phi( test_16u::@7/(byte*) print_line_cursor#58 )
  (word) rem16u#41 ← phi( test_16u::@7/(word) rem16u#50 )
  (byte*) print_char_cursor#104 ← phi( test_16u::@7/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#104
  (byte*) print_str::str#6 ← (const string) test_16u::str2
  call print_str 
  to:test_16u::@9
test_16u::@9: scope:[test_16u]  from test_16u::@8
  (byte) test_16u::i#5 ← phi( test_16u::@8/(byte) test_16u::i#6 )
  (byte*) print_line_cursor#47 ← phi( test_16u::@8/(byte*) print_line_cursor#53 )
  (word) rem16u#30 ← phi( test_16u::@8/(word) rem16u#41 )
  (byte*) print_char_cursor#105 ← phi( test_16u::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#105
  (word) print_word::w#4 ← (word) rem16u#30
  call print_word 
  to:test_16u::@10
test_16u::@10: scope:[test_16u]  from test_16u::@9
  (word) rem16u#51 ← phi( test_16u::@9/(word) rem16u#30 )
  (byte) test_16u::i#4 ← phi( test_16u::@9/(byte) test_16u::i#5 )
  (byte*) print_line_cursor#42 ← phi( test_16u::@9/(byte*) print_line_cursor#47 )
  (byte*) print_char_cursor#106 ← phi( test_16u::@9/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#106
  call print_ln 
  to:test_16u::@11
test_16u::@11: scope:[test_16u]  from test_16u::@10
  (word) rem16u#42 ← phi( test_16u::@10/(word) rem16u#51 )
  (byte) test_16u::i#3 ← phi( test_16u::@10/(byte) test_16u::i#4 )
  (byte*) print_char_cursor#107 ← phi( test_16u::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#32 ← phi( test_16u::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#32
  (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#107
  (byte/signed word/word/dword/signed dword~) test_16u::$9 ← (byte) test_16u::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) test_16u::i#1 ← (byte/signed word/word/dword/signed dword~) test_16u::$9
  (bool~) test_16u::$10 ← (byte) test_16u::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 12
  if((bool~) test_16u::$10) goto test_16u::@1
  to:test_16u::@return
test_16u::@return: scope:[test_16u]  from test_16u::@11
  (byte*) print_line_cursor#33 ← phi( test_16u::@11/(byte*) print_line_cursor#13 )
  (byte*) print_char_cursor#108 ← phi( test_16u::@11/(byte*) print_char_cursor#44 )
  (word) rem16u#31 ← phi( test_16u::@11/(word) rem16u#42 )
  (word) rem16u#13 ← (word) rem16u#31
  (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#108
  (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#33
  return 
  to:@return
test_8s: scope:[test_8s]  from main::@3
  (byte*) print_line_cursor#85 ← phi( main::@3/(byte*) print_line_cursor#7 )
  (byte*) print_char_cursor#154 ← phi( main::@3/(byte*) print_char_cursor#24 )
  (signed byte) rem8s#23 ← phi( main::@3/(signed byte) rem8s#16 )
  (byte) rem8u#48 ← phi( main::@3/(byte) rem8u#34 )
  (signed byte/signed word/signed dword~) test_8s::$0 ← - (byte/signed byte/word/signed word/dword/signed dword) 127
  (signed byte/signed word/signed dword~) test_8s::$1 ← - (byte/signed byte/word/signed word/dword/signed dword) 127
  (signed byte[]) test_8s::dividends#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 127, (signed byte/signed word/signed dword~) test_8s::$0, (signed byte/signed word/signed dword~) test_8s::$1, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127 }
  (signed byte/signed word/signed dword~) test_8s::$2 ← - (byte/signed byte/word/signed word/dword/signed dword) 11
  (signed byte/signed word/signed dword~) test_8s::$3 ← - (byte/signed byte/word/signed word/dword/signed dword) 13
  (signed byte[]) test_8s::divisors#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (signed byte/signed word/signed dword~) test_8s::$2, (signed byte/signed word/signed dword~) test_8s::$3, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
  (byte) test_8s::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:test_8s::@1
test_8s::@1: scope:[test_8s]  from test_8s test_8s::@11
  (byte*) print_line_cursor#81 ← phi( test_8s/(byte*) print_line_cursor#85 test_8s::@11/(byte*) print_line_cursor#15 )
  (byte*) print_char_cursor#148 ← phi( test_8s/(byte*) print_char_cursor#154 test_8s::@11/(byte*) print_char_cursor#53 )
  (signed byte) rem8s#18 ← phi( test_8s/(signed byte) rem8s#23 test_8s::@11/(signed byte) rem8s#20 )
  (byte) rem8u#39 ← phi( test_8s/(byte) rem8u#48 test_8s::@11/(byte) rem8u#40 )
  (byte) test_8s::i#2 ← phi( test_8s/(byte) test_8s::i#0 test_8s::@11/(byte) test_8s::i#1 )
  (signed byte) test_8s::dividend#0 ← *((signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#2)
  (signed byte) test_8s::divisor#0 ← *((signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#2)
  (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0
  (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0
  call div8s 
  (signed byte) div8s::return#3 ← (signed byte) div8s::return#2
  to:test_8s::@3
test_8s::@3: scope:[test_8s]  from test_8s::@1
  (byte) test_8s::i#11 ← phi( test_8s::@1/(byte) test_8s::i#2 )
  (byte*) print_line_cursor#77 ← phi( test_8s::@1/(byte*) print_line_cursor#81 )
  (signed byte) test_8s::divisor#3 ← phi( test_8s::@1/(signed byte) test_8s::divisor#0 )
  (byte*) print_char_cursor#140 ← phi( test_8s::@1/(byte*) print_char_cursor#148 )
  (signed byte) test_8s::dividend#1 ← phi( test_8s::@1/(signed byte) test_8s::dividend#0 )
  (signed byte) rem8s#12 ← phi( test_8s::@1/(signed byte) rem8s#3 )
  (byte) rem8u#28 ← phi( test_8s::@1/(byte) rem8u#6 )
  (signed byte) div8s::return#5 ← phi( test_8s::@1/(signed byte) div8s::return#3 )
  (signed byte~) test_8s::$4 ← (signed byte) div8s::return#5
  (byte) rem8u#12 ← (byte) rem8u#28
  (signed byte) rem8s#6 ← (signed byte) rem8s#12
  (signed byte) test_8s::res#0 ← (signed byte~) test_8s::$4
  (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#1
  call print_sbyte 
  to:test_8s::@4
test_8s::@4: scope:[test_8s]  from test_8s::@3
  (byte) rem8u#65 ← phi( test_8s::@3/(byte) rem8u#12 )
  (byte) test_8s::i#10 ← phi( test_8s::@3/(byte) test_8s::i#11 )
  (byte*) print_line_cursor#73 ← phi( test_8s::@3/(byte*) print_line_cursor#77 )
  (signed byte) rem8s#31 ← phi( test_8s::@3/(signed byte) rem8s#6 )
  (signed byte) test_8s::res#4 ← phi( test_8s::@3/(signed byte) test_8s::res#0 )
  (signed byte) test_8s::divisor#2 ← phi( test_8s::@3/(signed byte) test_8s::divisor#3 )
  (byte*) print_char_cursor#109 ← phi( test_8s::@3/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#109
  (byte*) print_str::str#7 ← (const string) test_8s::str
  call print_str 
  to:test_8s::@5
test_8s::@5: scope:[test_8s]  from test_8s::@4
  (byte) rem8u#64 ← phi( test_8s::@4/(byte) rem8u#65 )
  (byte) test_8s::i#9 ← phi( test_8s::@4/(byte) test_8s::i#10 )
  (byte*) print_line_cursor#69 ← phi( test_8s::@4/(byte*) print_line_cursor#73 )
  (signed byte) rem8s#30 ← phi( test_8s::@4/(signed byte) rem8s#31 )
  (signed byte) test_8s::res#3 ← phi( test_8s::@4/(signed byte) test_8s::res#4 )
  (signed byte) test_8s::divisor#1 ← phi( test_8s::@4/(signed byte) test_8s::divisor#2 )
  (byte*) print_char_cursor#110 ← phi( test_8s::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#110
  (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#1
  call print_sbyte 
  to:test_8s::@6
test_8s::@6: scope:[test_8s]  from test_8s::@5
  (byte) rem8u#63 ← phi( test_8s::@5/(byte) rem8u#64 )
  (byte) test_8s::i#8 ← phi( test_8s::@5/(byte) test_8s::i#9 )
  (byte*) print_line_cursor#64 ← phi( test_8s::@5/(byte*) print_line_cursor#69 )
  (signed byte) rem8s#28 ← phi( test_8s::@5/(signed byte) rem8s#30 )
  (signed byte) test_8s::res#2 ← phi( test_8s::@5/(signed byte) test_8s::res#3 )
  (byte*) print_char_cursor#111 ← phi( test_8s::@5/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#111
  (byte*) print_str::str#8 ← (const string) test_8s::str1
  call print_str 
  to:test_8s::@7
test_8s::@7: scope:[test_8s]  from test_8s::@6
  (byte) rem8u#62 ← phi( test_8s::@6/(byte) rem8u#63 )
  (byte) test_8s::i#7 ← phi( test_8s::@6/(byte) test_8s::i#8 )
  (byte*) print_line_cursor#59 ← phi( test_8s::@6/(byte*) print_line_cursor#64 )
  (signed byte) rem8s#24 ← phi( test_8s::@6/(signed byte) rem8s#28 )
  (signed byte) test_8s::res#1 ← phi( test_8s::@6/(signed byte) test_8s::res#2 )
  (byte*) print_char_cursor#112 ← phi( test_8s::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#112
  (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#1
  call print_sbyte 
  to:test_8s::@8
test_8s::@8: scope:[test_8s]  from test_8s::@7
  (byte) rem8u#59 ← phi( test_8s::@7/(byte) rem8u#62 )
  (byte) test_8s::i#6 ← phi( test_8s::@7/(byte) test_8s::i#7 )
  (byte*) print_line_cursor#54 ← phi( test_8s::@7/(byte*) print_line_cursor#59 )
  (signed byte) rem8s#19 ← phi( test_8s::@7/(signed byte) rem8s#24 )
  (byte*) print_char_cursor#113 ← phi( test_8s::@7/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#113
  (byte*) print_str::str#9 ← (const string) test_8s::str2
  call print_str 
  to:test_8s::@9
test_8s::@9: scope:[test_8s]  from test_8s::@8
  (byte) rem8u#54 ← phi( test_8s::@8/(byte) rem8u#59 )
  (byte) test_8s::i#5 ← phi( test_8s::@8/(byte) test_8s::i#6 )
  (byte*) print_line_cursor#48 ← phi( test_8s::@8/(byte*) print_line_cursor#54 )
  (signed byte) rem8s#13 ← phi( test_8s::@8/(signed byte) rem8s#19 )
  (byte*) print_char_cursor#114 ← phi( test_8s::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#114
  (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#13
  call print_sbyte 
  to:test_8s::@10
test_8s::@10: scope:[test_8s]  from test_8s::@9
  (signed byte) rem8s#25 ← phi( test_8s::@9/(signed byte) rem8s#13 )
  (byte) rem8u#49 ← phi( test_8s::@9/(byte) rem8u#54 )
  (byte) test_8s::i#4 ← phi( test_8s::@9/(byte) test_8s::i#5 )
  (byte*) print_line_cursor#43 ← phi( test_8s::@9/(byte*) print_line_cursor#48 )
  (byte*) print_char_cursor#115 ← phi( test_8s::@9/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#115
  call print_ln 
  to:test_8s::@11
test_8s::@11: scope:[test_8s]  from test_8s::@10
  (signed byte) rem8s#20 ← phi( test_8s::@10/(signed byte) rem8s#25 )
  (byte) rem8u#40 ← phi( test_8s::@10/(byte) rem8u#49 )
  (byte) test_8s::i#3 ← phi( test_8s::@10/(byte) test_8s::i#4 )
  (byte*) print_char_cursor#116 ← phi( test_8s::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#34 ← phi( test_8s::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#34
  (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#116
  (byte) test_8s::i#1 ← (byte) test_8s::i#3 + rangenext(0,5)
  (bool~) test_8s::$13 ← (byte) test_8s::i#1 != rangelast(0,5)
  if((bool~) test_8s::$13) goto test_8s::@1
  to:test_8s::@return
test_8s::@return: scope:[test_8s]  from test_8s::@11
  (byte*) print_line_cursor#35 ← phi( test_8s::@11/(byte*) print_line_cursor#15 )
  (byte*) print_char_cursor#117 ← phi( test_8s::@11/(byte*) print_char_cursor#53 )
  (signed byte) rem8s#14 ← phi( test_8s::@11/(signed byte) rem8s#20 )
  (byte) rem8u#29 ← phi( test_8s::@11/(byte) rem8u#40 )
  (byte) rem8u#13 ← (byte) rem8u#29
  (signed byte) rem8s#7 ← (signed byte) rem8s#14
  (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#117
  (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#35
  return 
  to:@return
test_16s: scope:[test_16s]  from main::@4
  (byte*) print_line_cursor#86 ← phi( main::@4/(byte*) print_line_cursor#8 )
  (byte*) print_char_cursor#155 ← phi( main::@4/(byte*) print_char_cursor#25 )
  (signed word) rem16s#27 ← phi( main::@4/(signed word) rem16s#21 )
  (word) rem16u#52 ← phi( main::@4/(word) rem16u#39 )
  (signed word/signed dword~) test_16s::$0 ← - (word/signed word/dword/signed dword) 32767
  (signed word/signed dword~) test_16s::$1 ← - (word/signed word/dword/signed dword) 32767
  (signed word/signed dword~) test_16s::$2 ← - (word/signed word/dword/signed dword) 32767
  (signed word[]) test_16s::dividends#0 ← { (word/signed word/dword/signed dword) 32767, (word/signed word/dword/signed dword) 32767, (signed word/signed dword~) test_16s::$0, (signed word/signed dword~) test_16s::$1, (word/signed word/dword/signed dword) 32767, (signed word/signed dword~) test_16s::$2 }
  (signed byte/signed word/signed dword~) test_16s::$3 ← - (byte/signed byte/word/signed word/dword/signed dword) 7
  (signed byte/signed word/signed dword~) test_16s::$4 ← - (byte/signed byte/word/signed word/dword/signed dword) 13
  (signed byte/signed word/signed dword~) test_16s::$5 ← - (byte/signed byte/word/signed word/dword/signed dword) 17
  (signed word[]) test_16s::divisors#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 5, (signed byte/signed word/signed dword~) test_16s::$3, (byte/signed byte/word/signed word/dword/signed dword) 11, (signed byte/signed word/signed dword~) test_16s::$4, (signed byte/signed word/signed dword~) test_16s::$5, (byte/signed byte/word/signed word/dword/signed dword) 19 }
  (byte) test_16s::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:test_16s::@1
test_16s::@1: scope:[test_16s]  from test_16s test_16s::@11
  (byte*) print_line_cursor#82 ← phi( test_16s/(byte*) print_line_cursor#86 test_16s::@11/(byte*) print_line_cursor#17 )
  (byte*) print_char_cursor#149 ← phi( test_16s/(byte*) print_char_cursor#155 test_16s::@11/(byte*) print_char_cursor#62 )
  (signed word) rem16s#22 ← phi( test_16s/(signed word) rem16s#27 test_16s::@11/(signed word) rem16s#24 )
  (word) rem16u#43 ← phi( test_16s/(word) rem16u#52 test_16s::@11/(word) rem16u#44 )
  (byte) test_16s::i#2 ← phi( test_16s/(byte) test_16s::i#0 test_16s::@11/(byte) test_16s::i#1 )
  (signed word) test_16s::dividend#0 ← *((signed word[]) test_16s::dividends#0 + (byte) test_16s::i#2)
  (signed word) test_16s::divisor#0 ← *((signed word[]) test_16s::divisors#0 + (byte) test_16s::i#2)
  (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0
  (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0
  call div16s 
  (signed word) div16s::return#2 ← (signed word) div16s::return#1
  to:test_16s::@3
test_16s::@3: scope:[test_16s]  from test_16s::@1
  (byte) test_16s::i#11 ← phi( test_16s::@1/(byte) test_16s::i#2 )
  (byte*) print_line_cursor#78 ← phi( test_16s::@1/(byte*) print_line_cursor#82 )
  (signed word) test_16s::divisor#3 ← phi( test_16s::@1/(signed word) test_16s::divisor#0 )
  (byte*) print_char_cursor#141 ← phi( test_16s::@1/(byte*) print_char_cursor#149 )
  (signed word) test_16s::dividend#1 ← phi( test_16s::@1/(signed word) test_16s::dividend#0 )
  (signed word) rem16s#16 ← phi( test_16s::@1/(signed word) rem16s#5 )
  (word) rem16u#32 ← phi( test_16s::@1/(word) rem16u#8 )
  (signed word) div16s::return#4 ← phi( test_16s::@1/(signed word) div16s::return#2 )
  (signed word~) test_16s::$6 ← (signed word) div16s::return#4
  (word) rem16u#14 ← (word) rem16u#32
  (signed word) rem16s#8 ← (signed word) rem16s#16
  (signed word) test_16s::res#0 ← (signed word~) test_16s::$6
  (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#1
  call print_sword 
  to:test_16s::@4
test_16s::@4: scope:[test_16s]  from test_16s::@3
  (word) rem16u#69 ← phi( test_16s::@3/(word) rem16u#14 )
  (byte) test_16s::i#10 ← phi( test_16s::@3/(byte) test_16s::i#11 )
  (byte*) print_line_cursor#74 ← phi( test_16s::@3/(byte*) print_line_cursor#78 )
  (signed word) rem16s#35 ← phi( test_16s::@3/(signed word) rem16s#8 )
  (signed word) test_16s::res#4 ← phi( test_16s::@3/(signed word) test_16s::res#0 )
  (signed word) test_16s::divisor#2 ← phi( test_16s::@3/(signed word) test_16s::divisor#3 )
  (byte*) print_char_cursor#118 ← phi( test_16s::@3/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#118
  (byte*) print_str::str#10 ← (const string) test_16s::str
  call print_str 
  to:test_16s::@5
test_16s::@5: scope:[test_16s]  from test_16s::@4
  (word) rem16u#68 ← phi( test_16s::@4/(word) rem16u#69 )
  (byte) test_16s::i#9 ← phi( test_16s::@4/(byte) test_16s::i#10 )
  (byte*) print_line_cursor#70 ← phi( test_16s::@4/(byte*) print_line_cursor#74 )
  (signed word) rem16s#33 ← phi( test_16s::@4/(signed word) rem16s#35 )
  (signed word) test_16s::res#3 ← phi( test_16s::@4/(signed word) test_16s::res#4 )
  (signed word) test_16s::divisor#1 ← phi( test_16s::@4/(signed word) test_16s::divisor#2 )
  (byte*) print_char_cursor#119 ← phi( test_16s::@4/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#119
  (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#1
  call print_sword 
  to:test_16s::@6
test_16s::@6: scope:[test_16s]  from test_16s::@5
  (word) rem16u#67 ← phi( test_16s::@5/(word) rem16u#68 )
  (byte) test_16s::i#8 ← phi( test_16s::@5/(byte) test_16s::i#9 )
  (byte*) print_line_cursor#65 ← phi( test_16s::@5/(byte*) print_line_cursor#70 )
  (signed word) rem16s#31 ← phi( test_16s::@5/(signed word) rem16s#33 )
  (signed word) test_16s::res#2 ← phi( test_16s::@5/(signed word) test_16s::res#3 )
  (byte*) print_char_cursor#120 ← phi( test_16s::@5/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#120
  (byte*) print_str::str#11 ← (const string) test_16s::str1
  call print_str 
  to:test_16s::@7
test_16s::@7: scope:[test_16s]  from test_16s::@6
  (word) rem16u#66 ← phi( test_16s::@6/(word) rem16u#67 )
  (byte) test_16s::i#7 ← phi( test_16s::@6/(byte) test_16s::i#8 )
  (byte*) print_line_cursor#60 ← phi( test_16s::@6/(byte*) print_line_cursor#65 )
  (signed word) rem16s#28 ← phi( test_16s::@6/(signed word) rem16s#31 )
  (signed word) test_16s::res#1 ← phi( test_16s::@6/(signed word) test_16s::res#2 )
  (byte*) print_char_cursor#121 ← phi( test_16s::@6/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#121
  (signed word) print_sword::w#3 ← (signed word) test_16s::res#1
  call print_sword 
  to:test_16s::@8
test_16s::@8: scope:[test_16s]  from test_16s::@7
  (word) rem16u#63 ← phi( test_16s::@7/(word) rem16u#66 )
  (byte) test_16s::i#6 ← phi( test_16s::@7/(byte) test_16s::i#7 )
  (byte*) print_line_cursor#55 ← phi( test_16s::@7/(byte*) print_line_cursor#60 )
  (signed word) rem16s#23 ← phi( test_16s::@7/(signed word) rem16s#28 )
  (byte*) print_char_cursor#122 ← phi( test_16s::@7/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#122
  (byte*) print_str::str#12 ← (const string) test_16s::str2
  call print_str 
  to:test_16s::@9
test_16s::@9: scope:[test_16s]  from test_16s::@8
  (word) rem16u#59 ← phi( test_16s::@8/(word) rem16u#63 )
  (byte) test_16s::i#5 ← phi( test_16s::@8/(byte) test_16s::i#6 )
  (byte*) print_line_cursor#49 ← phi( test_16s::@8/(byte*) print_line_cursor#55 )
  (signed word) rem16s#17 ← phi( test_16s::@8/(signed word) rem16s#23 )
  (byte*) print_char_cursor#123 ← phi( test_16s::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#123
  (signed word) print_sword::w#4 ← (signed word) rem16s#17
  call print_sword 
  to:test_16s::@10
test_16s::@10: scope:[test_16s]  from test_16s::@9
  (signed word) rem16s#29 ← phi( test_16s::@9/(signed word) rem16s#17 )
  (word) rem16u#53 ← phi( test_16s::@9/(word) rem16u#59 )
  (byte) test_16s::i#4 ← phi( test_16s::@9/(byte) test_16s::i#5 )
  (byte*) print_line_cursor#44 ← phi( test_16s::@9/(byte*) print_line_cursor#49 )
  (byte*) print_char_cursor#124 ← phi( test_16s::@9/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#124
  call print_ln 
  to:test_16s::@11
test_16s::@11: scope:[test_16s]  from test_16s::@10
  (signed word) rem16s#24 ← phi( test_16s::@10/(signed word) rem16s#29 )
  (word) rem16u#44 ← phi( test_16s::@10/(word) rem16u#53 )
  (byte) test_16s::i#3 ← phi( test_16s::@10/(byte) test_16s::i#4 )
  (byte*) print_char_cursor#125 ← phi( test_16s::@10/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#36 ← phi( test_16s::@10/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#36
  (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#125
  (byte/signed word/word/dword/signed dword~) test_16s::$15 ← (byte) test_16s::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) test_16s::i#1 ← (byte/signed word/word/dword/signed dword~) test_16s::$15
  (bool~) test_16s::$16 ← (byte) test_16s::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 12
  if((bool~) test_16s::$16) goto test_16s::@1
  to:test_16s::@return
test_16s::@return: scope:[test_16s]  from test_16s::@11
  (byte*) print_line_cursor#37 ← phi( test_16s::@11/(byte*) print_line_cursor#17 )
  (byte*) print_char_cursor#126 ← phi( test_16s::@11/(byte*) print_char_cursor#62 )
  (signed word) rem16s#18 ← phi( test_16s::@11/(signed word) rem16s#24 )
  (word) rem16u#33 ← phi( test_16s::@11/(word) rem16u#44 )
  (word) rem16u#15 ← (word) rem16u#33
  (signed word) rem16s#9 ← (signed word) rem16s#18
  (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#126
  (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#37
  return 
  to:@return
@32: scope:[]  from @25
  (byte*) print_screen#5 ← phi( @25/(byte*) print_screen#6 )
  (signed word) rem16s#25 ← phi( @25/(signed word) rem16s#0 )
  (signed byte) rem8s#21 ← phi( @25/(signed byte) rem8s#26 )
  (word) rem16u#45 ← phi( @25/(word) rem16u#54 )
  (byte) rem8u#41 ← phi( @25/(byte) rem8u#50 )
  (byte*) print_char_cursor#142 ← phi( @25/(byte*) print_char_cursor#150 )
  (byte*) print_line_cursor#45 ← phi( @25/(byte*) print_line_cursor#50 )
  call main 
  to:@33
@33: scope:[]  from @32
  (signed word) rem16s#19 ← phi( @32/(signed word) rem16s#7 )
  (signed byte) rem8s#15 ← phi( @32/(signed byte) rem8s#5 )
  (word) rem16u#34 ← phi( @32/(word) rem16u#11 )
  (byte) rem8u#30 ← phi( @32/(byte) rem8u#9 )
  (byte*) print_char_cursor#127 ← phi( @32/(byte*) print_char_cursor#27 )
  (byte*) print_line_cursor#38 ← phi( @32/(byte*) print_line_cursor#10 )
  (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#38
  (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#127
  (byte) rem8u#14 ← (byte) rem8u#30
  (word) rem16u#16 ← (word) rem16u#34
  (signed byte) rem8s#8 ← (signed byte) rem8s#15
  (signed word) rem16s#10 ← (signed word) rem16s#19
  to:@end
@end: scope:[]  from @33

SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @12
(label) @19
(label) @21
(label) @24
(label) @25
(label) @32
(label) @33
(label) @begin
(label) @end
(signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor)
(signed word~) div16s::$0
(label) div16s::@2
(label) div16s::@return
(signed word) div16s::dividend
(signed word) div16s::dividend#0
(signed word) div16s::dividend#1
(signed word) div16s::divisor
(signed word) div16s::divisor#0
(signed word) div16s::divisor#1
(signed word) div16s::return
(signed word) div16s::return#0
(signed word) div16s::return#1
(signed word) div16s::return#2
(signed word) div16s::return#3
(signed word) div16s::return#4
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
(word~) div16u::$0
(label) div16u::@2
(label) div16u::@return
(word) div16u::dividend
(word) div16u::dividend#0
(word) div16u::dividend#1
(word) div16u::divisor
(word) div16u::divisor#0
(word) div16u::divisor#1
(word) div16u::return
(word) div16u::return#0
(word) div16u::return#1
(word) div16u::return#2
(word) div16u::return#3
(word) div16u::return#4
(signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor)
(bool~) div8s::$0
(byte~) div8s::$1
(bool~) div8s::$10
(signed byte~) div8s::$11
(signed byte~) div8s::$12
(signed byte~) div8s::$13
(signed byte~) div8s::$14
(signed byte~) div8s::$15
(signed byte~) div8s::$16
(signed byte~) div8s::$2
(byte~) div8s::$3
(bool~) div8s::$4
(byte~) div8s::$5
(signed byte~) div8s::$6
(byte~) div8s::$7
(byte/word/dword~) div8s::$8
(byte~) div8s::$9
(label) div8s::@1
(label) div8s::@11
(label) div8s::@15
(label) div8s::@2
(label) div8s::@3
(label) div8s::@4
(label) div8s::@5
(label) div8s::@7
(label) div8s::@9
(label) div8s::@return
(signed byte) div8s::dividend
(signed byte) div8s::dividend#0
(signed byte) div8s::dividend#1
(signed byte) div8s::dividend#2
(signed byte) div8s::dividend#3
(byte) div8s::dividendu
(byte) div8s::dividendu#0
(byte) div8s::dividendu#1
(byte) div8s::dividendu#2
(byte) div8s::dividendu#3
(byte) div8s::dividendu#4
(byte) div8s::dividendu#5
(byte) div8s::dividendu#6
(signed byte) div8s::divisor
(signed byte) div8s::divisor#0
(signed byte) div8s::divisor#1
(signed byte) div8s::divisor#2
(signed byte) div8s::divisor#3
(signed byte) div8s::divisor#4
(signed byte) div8s::divisor#5
(signed byte) div8s::divisor#6
(byte) div8s::divisoru
(byte) div8s::divisoru#0
(byte) div8s::divisoru#1
(byte) div8s::divisoru#2
(byte) div8s::divisoru#3
(byte) div8s::neg
(byte) div8s::neg#0
(byte) div8s::neg#1
(byte) div8s::neg#2
(byte) div8s::neg#3
(byte) div8s::neg#4
(byte) div8s::neg#5
(byte) div8s::neg#6
(byte) div8s::neg#7
(byte) div8s::neg#8
(byte) div8s::resultu
(byte) div8s::resultu#0
(byte) div8s::resultu#1
(byte) div8s::resultu#2
(signed byte) div8s::return
(signed byte) div8s::return#0
(signed byte) div8s::return#1
(signed byte) div8s::return#2
(signed byte) div8s::return#3
(signed byte) div8s::return#4
(signed byte) div8s::return#5
(byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor)
(byte~) div8u::$0
(label) div8u::@2
(label) div8u::@return
(byte) div8u::dividend
(byte) div8u::dividend#0
(byte) div8u::dividend#1
(byte) div8u::dividend#2
(byte) div8u::divisor
(byte) div8u::divisor#0
(byte) div8u::divisor#1
(byte) div8u::divisor#2
(byte) div8u::return
(byte) div8u::return#0
(byte) div8u::return#1
(byte) div8u::return#2
(byte) div8u::return#3
(byte) div8u::return#4
(byte) div8u::return#5
(byte) div8u::return#6
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(bool~) divr16s::$0
(bool~) divr16s::$1
(word~) divr16s::$10
(signed word~) divr16s::$11
(word~) divr16s::$12
(byte/word/dword~) divr16s::$13
(word~) divr16s::$14
(bool~) divr16s::$15
(signed word~) divr16s::$16
(signed word~) divr16s::$17
(signed word~) divr16s::$18
(signed word~) divr16s::$19
(bool~) divr16s::$2
(signed word~) divr16s::$20
(signed word~) divr16s::$21
(word~) divr16s::$3
(word~) divr16s::$4
(signed word~) divr16s::$5
(word~) divr16s::$6
(signed word~) divr16s::$7
(word~) divr16s::$8
(bool~) divr16s::$9
(label) divr16s::@1
(label) divr16s::@11
(label) divr16s::@15
(label) divr16s::@2
(label) divr16s::@3
(label) divr16s::@4
(label) divr16s::@5
(label) divr16s::@7
(label) divr16s::@9
(label) divr16s::@return
(signed word) divr16s::dividend
(signed word) divr16s::dividend#0
(signed word) divr16s::dividend#1
(signed word) divr16s::dividend#2
(signed word) divr16s::dividend#3
(word) divr16s::dividendu
(word) divr16s::dividendu#0
(word) divr16s::dividendu#1
(word) divr16s::dividendu#2
(word) divr16s::dividendu#3
(word) divr16s::dividendu#4
(word) divr16s::dividendu#5
(word) divr16s::dividendu#6
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0
(signed word) divr16s::divisor#1
(signed word) divr16s::divisor#2
(signed word) divr16s::divisor#3
(signed word) divr16s::divisor#4
(signed word) divr16s::divisor#5
(signed word) divr16s::divisor#6
(word) divr16s::divisoru
(word) divr16s::divisoru#0
(word) divr16s::divisoru#1
(word) divr16s::divisoru#2
(word) divr16s::divisoru#3
(byte) divr16s::neg
(byte) divr16s::neg#0
(byte) divr16s::neg#1
(byte) divr16s::neg#2
(byte) divr16s::neg#3
(byte) divr16s::neg#4
(byte) divr16s::neg#5
(byte) divr16s::neg#6
(byte) divr16s::neg#7
(byte) divr16s::neg#8
(signed word) divr16s::rem
(signed word) divr16s::rem#0
(signed word) divr16s::rem#1
(signed word) divr16s::rem#2
(signed word) divr16s::rem#3
(word) divr16s::remu
(word) divr16s::remu#0
(word) divr16s::remu#1
(word) divr16s::remu#2
(word) divr16s::remu#3
(word) divr16s::remu#4
(word) divr16s::remu#5
(word) divr16s::remu#6
(word) divr16s::resultu
(word) divr16s::resultu#0
(word) divr16s::resultu#1
(word) divr16s::resultu#2
(signed word) divr16s::return
(signed word) divr16s::return#0
(signed word) divr16s::return#1
(signed word) divr16s::return#2
(signed word) divr16s::return#3
(signed word) divr16s::return#4
(signed word) divr16s::return#5
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(word~) divr16u::$0
(byte~) divr16u::$1
(word~) divr16u::$10
(bool~) divr16u::$11
(byte~) divr16u::$2
(bool~) divr16u::$3
(bool~) divr16u::$4
(word/dword~) divr16u::$5
(word~) divr16u::$6
(word~) divr16u::$7
(bool~) divr16u::$8
(bool~) divr16u::$9
(label) divr16u::@1
(label) divr16u::@2
(label) divr16u::@3
(label) divr16u::@4
(label) divr16u::@5
(label) divr16u::@6
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0
(word) divr16u::dividend#1
(word) divr16u::dividend#2
(word) divr16u::dividend#3
(word) divr16u::dividend#4
(word) divr16u::dividend#5
(word) divr16u::dividend#6
(word) divr16u::dividend#7
(word) divr16u::dividend#8
(word) divr16u::divisor
(word) divr16u::divisor#0
(word) divr16u::divisor#1
(word) divr16u::divisor#2
(word) divr16u::divisor#3
(word) divr16u::divisor#4
(word) divr16u::divisor#5
(word) divr16u::divisor#6
(word) divr16u::divisor#7
(byte) divr16u::i
(byte) divr16u::i#0
(byte) divr16u::i#1
(byte) divr16u::i#2
(byte) divr16u::i#3
(byte) divr16u::i#4
(byte) divr16u::i#5
(byte) divr16u::i#6
(word) divr16u::quotient
(word) divr16u::quotient#0
(word) divr16u::quotient#1
(word) divr16u::quotient#2
(word) divr16u::quotient#3
(word) divr16u::quotient#4
(word) divr16u::quotient#5
(word) divr16u::quotient#6
(word) divr16u::quotient#7
(word) divr16u::quotient#8
(word) divr16u::rem
(word) divr16u::rem#0
(word) divr16u::rem#1
(word) divr16u::rem#10
(word) divr16u::rem#11
(word) divr16u::rem#2
(word) divr16u::rem#3
(word) divr16u::rem#4
(word) divr16u::rem#5
(word) divr16u::rem#6
(word) divr16u::rem#7
(word) divr16u::rem#8
(word) divr16u::rem#9
(word) divr16u::return
(word) divr16u::return#0
(word) divr16u::return#1
(word) divr16u::return#2
(word) divr16u::return#3
(word) divr16u::return#4
(word) divr16u::return#5
(word) divr16u::return#6
(byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem)
(byte~) divr8u::$0
(byte~) divr8u::$1
(bool~) divr8u::$10
(bool~) divr8u::$2
(bool~) divr8u::$3
(byte/word/dword~) divr8u::$4
(byte~) divr8u::$5
(byte~) divr8u::$6
(bool~) divr8u::$7
(bool~) divr8u::$8
(byte~) divr8u::$9
(label) divr8u::@1
(label) divr8u::@2
(label) divr8u::@3
(label) divr8u::@4
(label) divr8u::@5
(label) divr8u::@6
(label) divr8u::@return
(byte) divr8u::dividend
(byte) divr8u::dividend#0
(byte) divr8u::dividend#1
(byte) divr8u::dividend#2
(byte) divr8u::dividend#3
(byte) divr8u::dividend#4
(byte) divr8u::dividend#5
(byte) divr8u::dividend#6
(byte) divr8u::dividend#7
(byte) divr8u::divisor
(byte) divr8u::divisor#0
(byte) divr8u::divisor#1
(byte) divr8u::divisor#2
(byte) divr8u::divisor#3
(byte) divr8u::divisor#4
(byte) divr8u::divisor#5
(byte) divr8u::divisor#6
(byte) divr8u::i
(byte) divr8u::i#0
(byte) divr8u::i#1
(byte) divr8u::i#2
(byte) divr8u::i#3
(byte) divr8u::i#4
(byte) divr8u::i#5
(byte) divr8u::i#6
(byte) divr8u::quotient
(byte) divr8u::quotient#0
(byte) divr8u::quotient#1
(byte) divr8u::quotient#2
(byte) divr8u::quotient#3
(byte) divr8u::quotient#4
(byte) divr8u::quotient#5
(byte) divr8u::quotient#6
(byte) divr8u::quotient#7
(byte) divr8u::quotient#8
(byte) divr8u::rem
(byte) divr8u::rem#0
(byte) divr8u::rem#1
(byte) divr8u::rem#10
(byte) divr8u::rem#2
(byte) divr8u::rem#3
(byte) divr8u::rem#4
(byte) divr8u::rem#5
(byte) divr8u::rem#6
(byte) divr8u::rem#7
(byte) divr8u::rem#8
(byte) divr8u::rem#9
(byte) divr8u::return
(byte) divr8u::return#0
(byte) divr8u::return#1
(byte) divr8u::return#2
(byte) divr8u::return#3
(byte) divr8u::return#4
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@return
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0
(byte~) print_byte::$2
(label) print_byte::@1
(label) print_byte::@2
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0
(byte) print_byte::b#1
(byte) print_byte::b#2
(byte) print_byte::b#3
(byte) print_byte::b#4
(byte) print_byte::b#5
(byte) print_byte::b#6
(byte) print_byte::b#7
(byte) print_byte::b#8
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#0
(byte) print_char::ch#1
(byte) print_char::ch#2
(byte) print_char::ch#3
(byte) print_char::ch#4
(byte) print_char::ch#5
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
(byte*) print_char_cursor#10
(byte*) print_char_cursor#100
(byte*) print_char_cursor#101
(byte*) print_char_cursor#102
(byte*) print_char_cursor#103
(byte*) print_char_cursor#104
(byte*) print_char_cursor#105
(byte*) print_char_cursor#106
(byte*) print_char_cursor#107
(byte*) print_char_cursor#108
(byte*) print_char_cursor#109
(byte*) print_char_cursor#11
(byte*) print_char_cursor#110
(byte*) print_char_cursor#111
(byte*) print_char_cursor#112
(byte*) print_char_cursor#113
(byte*) print_char_cursor#114
(byte*) print_char_cursor#115
(byte*) print_char_cursor#116
(byte*) print_char_cursor#117
(byte*) print_char_cursor#118
(byte*) print_char_cursor#119
(byte*) print_char_cursor#12
(byte*) print_char_cursor#120
(byte*) print_char_cursor#121
(byte*) print_char_cursor#122
(byte*) print_char_cursor#123
(byte*) print_char_cursor#124
(byte*) print_char_cursor#125
(byte*) print_char_cursor#126
(byte*) print_char_cursor#127
(byte*) print_char_cursor#128
(byte*) print_char_cursor#129
(byte*) print_char_cursor#13
(byte*) print_char_cursor#130
(byte*) print_char_cursor#131
(byte*) print_char_cursor#132
(byte*) print_char_cursor#133
(byte*) print_char_cursor#134
(byte*) print_char_cursor#135
(byte*) print_char_cursor#136
(byte*) print_char_cursor#137
(byte*) print_char_cursor#138
(byte*) print_char_cursor#139
(byte*) print_char_cursor#14
(byte*) print_char_cursor#140
(byte*) print_char_cursor#141
(byte*) print_char_cursor#142
(byte*) print_char_cursor#143
(byte*) print_char_cursor#144
(byte*) print_char_cursor#145
(byte*) print_char_cursor#146
(byte*) print_char_cursor#147
(byte*) print_char_cursor#148
(byte*) print_char_cursor#149
(byte*) print_char_cursor#15
(byte*) print_char_cursor#150
(byte*) print_char_cursor#151
(byte*) print_char_cursor#152
(byte*) print_char_cursor#153
(byte*) print_char_cursor#154
(byte*) print_char_cursor#155
(byte*) print_char_cursor#156
(byte*) print_char_cursor#157
(byte*) print_char_cursor#158
(byte*) print_char_cursor#16
(byte*) print_char_cursor#17
(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()
(byte*~) print_cls::$0
(bool~) print_cls::$1
(label) print_cls::@1
(label) print_cls::@2
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#0
(byte*) print_cls::sc#1
(byte*) print_cls::sc#2
(byte[]) print_hextab
(byte[]) print_hextab#0
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
(byte*) print_line_cursor#10
(byte*) print_line_cursor#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#9
(void()) print_ln()
(byte*~) print_ln::$0
(bool~) print_ln::$1
(label) print_ln::@1
(label) print_ln::@2
(label) print_ln::@return
(void()) print_sbyte((signed byte) print_sbyte::b)
(bool~) print_sbyte::$0
(signed byte~) print_sbyte::$3
(byte~) print_sbyte::$4
(label) print_sbyte::@1
(label) print_sbyte::@2
(label) print_sbyte::@3
(label) print_sbyte::@5
(label) print_sbyte::@6
(label) print_sbyte::@7
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0
(signed byte) print_sbyte::b#1
(signed byte) print_sbyte::b#10
(signed byte) print_sbyte::b#2
(signed byte) print_sbyte::b#3
(signed byte) print_sbyte::b#4
(signed byte) print_sbyte::b#5
(signed byte) print_sbyte::b#6
(signed byte) print_sbyte::b#7
(signed byte) print_sbyte::b#8
(signed byte) print_sbyte::b#9
(byte*) print_screen
(byte*) print_screen#0
(byte*) print_screen#1
(byte*) print_screen#10
(byte*) print_screen#2
(byte*) print_screen#3
(byte*) print_screen#4
(byte*) print_screen#5
(byte*) print_screen#6
(byte*) print_screen#7
(byte*) print_screen#8
(byte*) print_screen#9
(void()) print_str((byte*) print_str::str)
(bool~) print_str::$0
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0
(byte*) print_str::str#1
(byte*) print_str::str#10
(byte*) print_str::str#11
(byte*) print_str::str#12
(byte*) print_str::str#13
(byte*) print_str::str#14
(byte*) print_str::str#15
(byte*) print_str::str#2
(byte*) print_str::str#3
(byte*) print_str::str#4
(byte*) print_str::str#5
(byte*) print_str::str#6
(byte*) print_str::str#7
(byte*) print_str::str#8
(byte*) print_str::str#9
(void()) print_sword((signed word) print_sword::w)
(bool~) print_sword::$0
(bool~) print_sword::$1
(signed word~) print_sword::$3
(word~) print_sword::$4
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0
(signed word) print_sword::w#1
(signed word) print_sword::w#2
(signed word) print_sword::w#3
(signed word) print_sword::w#4
(signed word) print_sword::w#5
(signed word) print_sword::w#6
(signed word) print_sword::w#7
(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
(signed word) rem16s
(signed word) rem16s#0
(signed word) rem16s#1
(signed word) rem16s#10
(signed word) rem16s#11
(signed word) rem16s#12
(signed word) rem16s#13
(signed word) rem16s#14
(signed word) rem16s#15
(signed word) rem16s#16
(signed word) rem16s#17
(signed word) rem16s#18
(signed word) rem16s#19
(signed word) rem16s#2
(signed word) rem16s#20
(signed word) rem16s#21
(signed word) rem16s#22
(signed word) rem16s#23
(signed word) rem16s#24
(signed word) rem16s#25
(signed word) rem16s#26
(signed word) rem16s#27
(signed word) rem16s#28
(signed word) rem16s#29
(signed word) rem16s#3
(signed word) rem16s#30
(signed word) rem16s#31
(signed word) rem16s#32
(signed word) rem16s#33
(signed word) rem16s#34
(signed word) rem16s#35
(signed word) rem16s#4
(signed word) rem16s#5
(signed word) rem16s#6
(signed word) rem16s#7
(signed word) rem16s#8
(signed word) rem16s#9
(word) rem16u
(word) rem16u#0
(word) rem16u#1
(word) rem16u#10
(word) rem16u#11
(word) rem16u#12
(word) rem16u#13
(word) rem16u#14
(word) rem16u#15
(word) rem16u#16
(word) rem16u#17
(word) rem16u#18
(word) rem16u#19
(word) rem16u#2
(word) rem16u#20
(word) rem16u#21
(word) rem16u#22
(word) rem16u#23
(word) rem16u#24
(word) rem16u#25
(word) rem16u#26
(word) rem16u#27
(word) rem16u#28
(word) rem16u#29
(word) rem16u#3
(word) rem16u#30
(word) rem16u#31
(word) rem16u#32
(word) rem16u#33
(word) rem16u#34
(word) rem16u#35
(word) rem16u#36
(word) rem16u#37
(word) rem16u#38
(word) rem16u#39
(word) rem16u#4
(word) rem16u#40
(word) rem16u#41
(word) rem16u#42
(word) rem16u#43
(word) rem16u#44
(word) rem16u#45
(word) rem16u#46
(word) rem16u#47
(word) rem16u#48
(word) rem16u#49
(word) rem16u#5
(word) rem16u#50
(word) rem16u#51
(word) rem16u#52
(word) rem16u#53
(word) rem16u#54
(word) rem16u#55
(word) rem16u#56
(word) rem16u#57
(word) rem16u#58
(word) rem16u#59
(word) rem16u#6
(word) rem16u#60
(word) rem16u#61
(word) rem16u#62
(word) rem16u#63
(word) rem16u#64
(word) rem16u#65
(word) rem16u#66
(word) rem16u#67
(word) rem16u#68
(word) rem16u#69
(word) rem16u#7
(word) rem16u#8
(word) rem16u#9
(signed byte) rem8s
(signed byte) rem8s#0
(signed byte) rem8s#1
(signed byte) rem8s#10
(signed byte) rem8s#11
(signed byte) rem8s#12
(signed byte) rem8s#13
(signed byte) rem8s#14
(signed byte) rem8s#15
(signed byte) rem8s#16
(signed byte) rem8s#17
(signed byte) rem8s#18
(signed byte) rem8s#19
(signed byte) rem8s#2
(signed byte) rem8s#20
(signed byte) rem8s#21
(signed byte) rem8s#22
(signed byte) rem8s#23
(signed byte) rem8s#24
(signed byte) rem8s#25
(signed byte) rem8s#26
(signed byte) rem8s#27
(signed byte) rem8s#28
(signed byte) rem8s#29
(signed byte) rem8s#3
(signed byte) rem8s#30
(signed byte) rem8s#31
(signed byte) rem8s#4
(signed byte) rem8s#5
(signed byte) rem8s#6
(signed byte) rem8s#7
(signed byte) rem8s#8
(signed byte) rem8s#9
(byte) rem8u
(byte) rem8u#0
(byte) rem8u#1
(byte) rem8u#10
(byte) rem8u#11
(byte) rem8u#12
(byte) rem8u#13
(byte) rem8u#14
(byte) rem8u#15
(byte) rem8u#16
(byte) rem8u#17
(byte) rem8u#18
(byte) rem8u#19
(byte) rem8u#2
(byte) rem8u#20
(byte) rem8u#21
(byte) rem8u#22
(byte) rem8u#23
(byte) rem8u#24
(byte) rem8u#25
(byte) rem8u#26
(byte) rem8u#27
(byte) rem8u#28
(byte) rem8u#29
(byte) rem8u#3
(byte) rem8u#30
(byte) rem8u#31
(byte) rem8u#32
(byte) rem8u#33
(byte) rem8u#34
(byte) rem8u#35
(byte) rem8u#36
(byte) rem8u#37
(byte) rem8u#38
(byte) rem8u#39
(byte) rem8u#4
(byte) rem8u#40
(byte) rem8u#41
(byte) rem8u#42
(byte) rem8u#43
(byte) rem8u#44
(byte) rem8u#45
(byte) rem8u#46
(byte) rem8u#47
(byte) rem8u#48
(byte) rem8u#49
(byte) rem8u#5
(byte) rem8u#50
(byte) rem8u#51
(byte) rem8u#52
(byte) rem8u#53
(byte) rem8u#54
(byte) rem8u#55
(byte) rem8u#56
(byte) rem8u#57
(byte) rem8u#58
(byte) rem8u#59
(byte) rem8u#6
(byte) rem8u#60
(byte) rem8u#61
(byte) rem8u#62
(byte) rem8u#63
(byte) rem8u#64
(byte) rem8u#65
(byte) rem8u#7
(byte) rem8u#8
(byte) rem8u#9
(void()) test_16s()
(signed word/signed dword~) test_16s::$0
(signed word/signed dword~) test_16s::$1
(byte/signed word/word/dword/signed dword~) test_16s::$15
(bool~) test_16s::$16
(signed word/signed dword~) test_16s::$2
(signed byte/signed word/signed dword~) test_16s::$3
(signed byte/signed word/signed dword~) test_16s::$4
(signed byte/signed word/signed dword~) test_16s::$5
(signed word~) test_16s::$6
(label) test_16s::@1
(label) test_16s::@10
(label) test_16s::@11
(label) test_16s::@3
(label) test_16s::@4
(label) test_16s::@5
(label) test_16s::@6
(label) test_16s::@7
(label) test_16s::@8
(label) test_16s::@9
(label) test_16s::@return
(signed word) test_16s::dividend
(signed word) test_16s::dividend#0
(signed word) test_16s::dividend#1
(signed word[]) test_16s::dividends
(signed word[]) test_16s::dividends#0
(signed word) test_16s::divisor
(signed word) test_16s::divisor#0
(signed word) test_16s::divisor#1
(signed word) test_16s::divisor#2
(signed word) test_16s::divisor#3
(signed word[]) test_16s::divisors
(signed word[]) test_16s::divisors#0
(byte) test_16s::i
(byte) test_16s::i#0
(byte) test_16s::i#1
(byte) test_16s::i#10
(byte) test_16s::i#11
(byte) test_16s::i#2
(byte) test_16s::i#3
(byte) test_16s::i#4
(byte) test_16s::i#5
(byte) test_16s::i#6
(byte) test_16s::i#7
(byte) test_16s::i#8
(byte) test_16s::i#9
(signed word) test_16s::res
(signed word) test_16s::res#0
(signed word) test_16s::res#1
(signed word) test_16s::res#2
(signed word) test_16s::res#3
(signed word) test_16s::res#4
(const string) test_16s::str = (string) " / @"
(const string) test_16s::str1 = (string) " = @"
(const string) test_16s::str2 = (string) " @"
(void()) test_16u()
(word~) test_16u::$0
(bool~) test_16u::$10
(byte/signed word/word/dword/signed dword~) test_16u::$9
(label) test_16u::@1
(label) test_16u::@10
(label) test_16u::@11
(label) test_16u::@3
(label) test_16u::@4
(label) test_16u::@5
(label) test_16u::@6
(label) test_16u::@7
(label) test_16u::@8
(label) test_16u::@9
(label) test_16u::@return
(word) test_16u::dividend
(word) test_16u::dividend#0
(word) test_16u::dividend#1
(word[]) test_16u::dividends
(word[]) test_16u::dividends#0
(word) test_16u::divisor
(word) test_16u::divisor#0
(word) test_16u::divisor#1
(word) test_16u::divisor#2
(word) test_16u::divisor#3
(word[]) test_16u::divisors
(word[]) test_16u::divisors#0
(byte) test_16u::i
(byte) test_16u::i#0
(byte) test_16u::i#1
(byte) test_16u::i#10
(byte) test_16u::i#11
(byte) test_16u::i#2
(byte) test_16u::i#3
(byte) test_16u::i#4
(byte) test_16u::i#5
(byte) test_16u::i#6
(byte) test_16u::i#7
(byte) test_16u::i#8
(byte) test_16u::i#9
(word) test_16u::res
(word) test_16u::res#0
(word) test_16u::res#1
(word) test_16u::res#2
(word) test_16u::res#3
(word) test_16u::res#4
(const string) test_16u::str = (string) " / @"
(const string) test_16u::str1 = (string) " = @"
(const string) test_16u::str2 = (string) " @"
(void()) test_8s()
(signed byte/signed word/signed dword~) test_8s::$0
(signed byte/signed word/signed dword~) test_8s::$1
(bool~) test_8s::$13
(signed byte/signed word/signed dword~) test_8s::$2
(signed byte/signed word/signed dword~) test_8s::$3
(signed byte~) test_8s::$4
(label) test_8s::@1
(label) test_8s::@10
(label) test_8s::@11
(label) test_8s::@3
(label) test_8s::@4
(label) test_8s::@5
(label) test_8s::@6
(label) test_8s::@7
(label) test_8s::@8
(label) test_8s::@9
(label) test_8s::@return
(signed byte) test_8s::dividend
(signed byte) test_8s::dividend#0
(signed byte) test_8s::dividend#1
(signed byte[]) test_8s::dividends
(signed byte[]) test_8s::dividends#0
(signed byte) test_8s::divisor
(signed byte) test_8s::divisor#0
(signed byte) test_8s::divisor#1
(signed byte) test_8s::divisor#2
(signed byte) test_8s::divisor#3
(signed byte[]) test_8s::divisors
(signed byte[]) test_8s::divisors#0
(byte) test_8s::i
(byte) test_8s::i#0
(byte) test_8s::i#1
(byte) test_8s::i#10
(byte) test_8s::i#11
(byte) test_8s::i#2
(byte) test_8s::i#3
(byte) test_8s::i#4
(byte) test_8s::i#5
(byte) test_8s::i#6
(byte) test_8s::i#7
(byte) test_8s::i#8
(byte) test_8s::i#9
(signed byte) test_8s::res
(signed byte) test_8s::res#0
(signed byte) test_8s::res#1
(signed byte) test_8s::res#2
(signed byte) test_8s::res#3
(signed byte) test_8s::res#4
(const string) test_8s::str = (string) " / @"
(const string) test_8s::str1 = (string) " = @"
(const string) test_8s::str2 = (string) " @"
(void()) test_8u()
(byte~) test_8u::$0
(bool~) test_8u::$9
(label) test_8u::@1
(label) test_8u::@10
(label) test_8u::@11
(label) test_8u::@3
(label) test_8u::@4
(label) test_8u::@5
(label) test_8u::@6
(label) test_8u::@7
(label) test_8u::@8
(label) test_8u::@9
(label) test_8u::@return
(byte) test_8u::dividend
(byte) test_8u::dividend#0
(byte) test_8u::dividend#1
(byte[]) test_8u::dividends
(byte[]) test_8u::dividends#0
(byte) test_8u::divisor
(byte) test_8u::divisor#0
(byte) test_8u::divisor#1
(byte) test_8u::divisor#2
(byte) test_8u::divisor#3
(byte[]) test_8u::divisors
(byte[]) test_8u::divisors#0
(byte) test_8u::i
(byte) test_8u::i#0
(byte) test_8u::i#1
(byte) test_8u::i#10
(byte) test_8u::i#11
(byte) test_8u::i#2
(byte) test_8u::i#3
(byte) test_8u::i#4
(byte) test_8u::i#5
(byte) test_8u::i#6
(byte) test_8u::i#7
(byte) test_8u::i#8
(byte) test_8u::i#9
(byte) test_8u::rem
(byte) test_8u::rem#0
(byte) test_8u::res
(byte) test_8u::res#0
(byte) test_8u::res#1
(byte) test_8u::res#2
(byte) test_8u::res#3
(byte) test_8u::res#4
(const string) test_8u::str = (string) " / @"
(const string) test_8u::str1 = (string) " = @"
(const string) test_8u::str2 = (string) " @"

Inversing boolean not [28] (bool~) print_sword::$1 ← (signed word) print_sword::w#5 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [27] (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [145] (bool~) divr8u::$3 ← (byte~) divr8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [144] (bool~) divr8u::$2 ← (byte~) divr8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [153] (bool~) divr8u::$8 ← (byte) divr8u::rem#5 < (byte) divr8u::divisor#1 from [152] (bool~) divr8u::$7 ← (byte) divr8u::rem#5 >= (byte) divr8u::divisor#1
Inversing boolean not [184] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [183] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [192] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [191] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#66 (byte*) print_char_cursor#158 (byte*) print_screen#10 (byte*) print_line_cursor#61 (byte*) print_char_cursor#157 (byte*) print_screen#9 (byte*) print_line_cursor#56 (byte*) print_char_cursor#156 (byte*) print_screen#8 (byte*) print_line_cursor#51 (byte*) print_char_cursor#151 (byte*) print_screen#7 (byte*) print_line_cursor#50 (byte*) print_char_cursor#150 (byte*) print_screen#6 (byte*) print_line_cursor#45 (byte*) print_char_cursor#142 (byte*) print_screen#5 
Alias (byte*) print_str::str#13 = (byte*) print_str::str#14 
Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#66 (byte*) print_char_cursor#2 
Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#68 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 
Alias (word) print_word::w#0 = (word~) print_sword::$4 
Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#69 (byte*) print_char_cursor#71 (byte*) print_char_cursor#7 
Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#144 
Alias (signed word) print_sword::w#5 = (signed word) print_sword::w#8 (signed word) print_sword::w#7 
Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#70 
Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$3 
Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#145 (byte*) print_char_cursor#133 
Alias (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#8 (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#6 (signed byte) print_sbyte::b#9 
Alias (byte*) print_char_cursor#72 = (byte*) print_char_cursor#8 
Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$3 
Alias (byte*) print_char_cursor#73 = (byte*) print_char_cursor#9 
Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$4 
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#74 (byte*) print_char_cursor#75 (byte*) print_char_cursor#11 
Alias (byte) print_byte::b#1 = (byte~) print_word::$0 
Alias (word) print_word::w#5 = (word) print_word::w#6 
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#76 
Alias (byte) print_byte::b#2 = (byte~) print_word::$2 
Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#77 (byte*) print_char_cursor#78 (byte*) print_char_cursor#14 
Alias (byte) print_byte::b#7 = (byte) print_byte::b#8 
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#79 
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#80 (byte*) print_char_cursor#81 (byte*) print_char_cursor#17 
Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#83 (byte*) print_char_cursor#19 
Alias (byte*) print_line_cursor#23 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#20 (byte*) print_char_cursor#84 (byte*) print_line_cursor#4 (byte*) print_char_cursor#21 
Alias (byte) divr8u::return#0 = (byte) divr8u::return#3 
Alias (byte) rem8u#1 = (byte) rem8u#15 (byte) rem8u#16 (byte) rem8u#2 
Alias (byte) div8u::return#0 = (byte~) div8u::$0 (byte) div8u::return#4 (byte) div8u::return#1 
Alias (byte) divr8u::rem#1 = (byte~) divr8u::$0 (byte) divr8u::rem#6 
Alias (byte) divr8u::dividend#1 = (byte~) divr8u::$5 (byte) divr8u::dividend#7 
Alias (byte) divr8u::quotient#1 = (byte~) divr8u::$6 (byte) divr8u::quotient#4 
Alias (byte) divr8u::dividend#2 = (byte) divr8u::dividend#6 
Alias (byte) divr8u::quotient#6 = (byte) divr8u::quotient#7 
Alias (byte) divr8u::divisor#3 = (byte) divr8u::divisor#4 
Alias (byte) divr8u::i#5 = (byte) divr8u::i#6 
Alias (byte) divr8u::rem#2 = (byte/word/dword~) divr8u::$4 
Alias (byte) divr8u::rem#5 = (byte) divr8u::rem#7 
Alias (byte) divr8u::divisor#1 = (byte) divr8u::divisor#2 
Alias (byte) divr8u::i#3 = (byte) divr8u::i#4 
Alias (byte) divr8u::rem#3 = (byte~) divr8u::$9 
Alias (byte) divr8u::rem#10 = (byte) divr8u::rem#8 
Alias (byte) divr8u::return#1 = (byte) divr8u::quotient#5 (byte) divr8u::quotient#8 (byte) divr8u::return#4 (byte) divr8u::return#2 
Alias (byte) rem8u#17 = (byte) rem8u#3 (byte) rem8u#4 
Alias (byte) rem8u#0 = (byte) rem8u#55 (byte) rem8u#52 (byte) rem8u#50 (byte) rem8u#41 
Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 
Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 
Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 
Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#7 
Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 
Alias (word) divr16u::divisor#4 = (word) divr16u::divisor#5 
Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 
Alias (word) divr16u::rem#1 = (word/dword~) divr16u::$5 
Alias (word) divr16u::rem#6 = (word) divr16u::rem#8 
Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#3 
Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 
Alias (word) divr16u::rem#2 = (word~) divr16u::$10 
Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 
Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 
Alias (word) rem16u#1 = (word) rem16u#17 (word) rem16u#2 
Alias (word) divr16u::return#2 = (word) divr16u::return#5 
Alias (word) rem16u#18 = (word) rem16u#3 (word) rem16u#19 (word) rem16u#4 
Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 
Alias (word) rem16u#0 = (word) rem16u#55 (word) rem16u#54 (word) rem16u#45 
Alias (signed byte) div8s::dividend#1 = (signed byte) div8s::dividend#2 (signed byte) div8s::dividend#3 
Alias (signed byte) div8s::divisor#4 = (signed byte) div8s::divisor#6 (signed byte) div8s::divisor#5 
Alias (byte) rem8u#56 = (byte) rem8u#60 (byte) rem8u#57 
Alias (byte) div8s::dividendu#1 = (byte~) div8s::$3 
Alias (byte) div8s::neg#0 = (byte) div8s::neg#7 
Alias (byte) div8s::dividendu#2 = (byte~) div8s::$1 
Alias (signed byte) div8s::divisor#1 = (signed byte) div8s::divisor#2 (signed byte) div8s::divisor#3 
Alias (byte) div8s::neg#3 = (byte) div8s::neg#5 (byte) div8s::neg#8 
Alias (byte) div8s::dividendu#4 = (byte) div8s::dividendu#6 (byte) div8s::dividendu#5 
Alias (byte) rem8u#42 = (byte) rem8u#51 (byte) rem8u#43 
Alias (byte) div8s::divisoru#1 = (byte~) div8s::$7 
Alias (byte) div8s::neg#2 = (byte/word/dword~) div8s::$8 
Alias (byte) div8s::divisoru#2 = (byte~) div8s::$5 
Alias (byte) div8u::return#2 = (byte) div8u::return#5 
Alias (byte) div8s::neg#4 = (byte) div8s::neg#6 
Alias (byte) rem8u#18 = (byte) rem8u#5 (byte) rem8u#19 (byte) rem8u#20 
Alias (byte) div8s::resultu#0 = (byte~) div8s::$9 (byte) div8s::resultu#1 (byte) div8s::resultu#2 
Alias (signed byte) rem8s#1 = (signed byte~) div8s::$15 
Alias (signed byte) div8s::return#0 = (signed byte~) div8s::$16 
Alias (signed byte) rem8s#2 = (signed byte~) div8s::$12 
Alias (signed byte) div8s::return#1 = (signed byte~) div8s::$14 
Alias (signed byte) div8s::return#2 = (signed byte) div8s::return#4 
Alias (byte) rem8u#21 = (byte) rem8u#6 
Alias (signed byte) rem8s#3 = (signed byte) rem8s#9 
Alias (signed byte) rem8s#0 = (signed byte) rem8s#26 (signed byte) rem8s#21 
Alias (signed word) divr16s::dividend#1 = (signed word) divr16s::dividend#2 (signed word) divr16s::dividend#3 
Alias (signed word) divr16s::rem#1 = (signed word) divr16s::rem#2 (signed word) divr16s::rem#3 
Alias (signed word) divr16s::divisor#4 = (signed word) divr16s::divisor#6 (signed word) divr16s::divisor#5 
Alias (word) rem16u#60 = (word) rem16u#64 (word) rem16u#61 
Alias (word) divr16s::dividendu#1 = (word~) divr16s::$6 
Alias (word) divr16s::remu#1 = (word~) divr16s::$8 
Alias (byte) divr16s::neg#0 = (byte) divr16s::neg#7 
Alias (word) divr16s::dividendu#2 = (word~) divr16s::$3 
Alias (word) divr16s::remu#2 = (word~) divr16s::$4 
Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#2 (signed word) divr16s::divisor#3 
Alias (byte) divr16s::neg#3 = (byte) divr16s::neg#5 (byte) divr16s::neg#8 
Alias (word) divr16s::dividendu#4 = (word) divr16s::dividendu#6 (word) divr16s::dividendu#5 
Alias (word) divr16s::remu#4 = (word) divr16s::remu#6 (word) divr16s::remu#5 
Alias (word) rem16u#46 = (word) rem16u#56 (word) rem16u#47 
Alias (word) divr16s::divisoru#1 = (word~) divr16s::$12 
Alias (byte) divr16s::neg#2 = (byte/word/dword~) divr16s::$13 
Alias (word) divr16s::divisoru#2 = (word~) divr16s::$10 
Alias (word) divr16u::return#3 = (word) divr16u::return#6 
Alias (byte) divr16s::neg#4 = (byte) divr16s::neg#6 
Alias (word) rem16u#20 = (word) rem16u#5 (word) rem16u#21 (word) rem16u#22 
Alias (word) divr16s::resultu#0 = (word~) divr16s::$14 (word) divr16s::resultu#1 (word) divr16s::resultu#2 
Alias (signed word) rem16s#1 = (signed word~) divr16s::$20 
Alias (signed word) divr16s::return#0 = (signed word~) divr16s::$21 
Alias (signed word) rem16s#2 = (signed word~) divr16s::$17 
Alias (signed word) divr16s::return#1 = (signed word~) divr16s::$19 
Alias (signed word) divr16s::return#2 = (signed word) divr16s::return#4 
Alias (word) rem16u#23 = (word) rem16u#6 
Alias (signed word) rem16s#11 = (signed word) rem16s#3 
Alias (signed word) divr16s::return#3 = (signed word) divr16s::return#5 
Alias (word) rem16u#24 = (word) rem16u#7 (word) rem16u#25 (word) rem16u#8 
Alias (signed word) rem16s#12 = (signed word) rem16s#4 (signed word) rem16s#13 (signed word) rem16s#5 
Alias (signed word) div16s::return#0 = (signed word~) div16s::$0 (signed word) div16s::return#3 (signed word) div16s::return#1 
Alias (byte) rem8u#33 = (byte) rem8u#44 
Alias (word) rem16u#38 = (word) rem16u#48 (word) rem16u#57 
Alias (signed byte) rem8s#16 = (signed byte) rem8s#27 (signed byte) rem8s#29 (signed byte) rem8s#22 
Alias (signed word) rem16s#21 = (signed word) rem16s#32 (signed word) rem16s#34 (signed word) rem16s#30 (signed word) rem16s#26 
Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#5 
Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#85 
Alias (byte) rem8u#22 = (byte) rem8u#7 (byte) rem8u#34 
Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#86 
Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#6 
Alias (word) rem16u#26 = (word) rem16u#9 (word) rem16u#39 
Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#87 
Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#7 
Alias (byte) rem8u#23 = (byte) rem8u#8 (byte) rem8u#35 (byte) rem8u#24 (byte) rem8u#9 
Alias (signed byte) rem8s#10 = (signed byte) rem8s#4 (signed byte) rem8s#17 (signed byte) rem8s#11 (signed byte) rem8s#5 
Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#88 
Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#8 
Alias (word) rem16u#10 = (word) rem16u#27 (word) rem16u#28 (word) rem16u#11 
Alias (signed word) rem16s#14 = (signed word) rem16s#6 (signed word) rem16s#15 (signed word) rem16s#7 
Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#27 
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 
Alias (byte) div8u::return#3 = (byte) div8u::return#6 
Alias (byte) test_8u::dividend#0 = (byte) test_8u::dividend#1 
Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#146 
Alias (byte) test_8u::divisor#0 = (byte) test_8u::divisor#3 (byte) test_8u::divisor#2 (byte) test_8u::divisor#1 
Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#75 (byte*) print_line_cursor#79 (byte*) print_line_cursor#71 (byte*) print_line_cursor#67 (byte*) print_line_cursor#62 (byte*) print_line_cursor#57 (byte*) print_line_cursor#52 (byte*) print_line_cursor#46 
Alias (byte) test_8u::i#10 = (byte) test_8u::i#11 (byte) test_8u::i#2 (byte) test_8u::i#9 (byte) test_8u::i#8 (byte) test_8u::i#7 (byte) test_8u::i#6 (byte) test_8u::i#5 (byte) test_8u::i#4 (byte) test_8u::i#3 
Alias (byte) rem8u#10 = (byte) rem8u#25 (byte) rem8u#61 (byte) rem8u#58 (byte) rem8u#53 (byte) rem8u#46 (byte) rem8u#37 (byte) rem8u#26 (byte) rem8u#47 (byte) rem8u#38 (byte) rem8u#27 (byte) rem8u#11 
Alias (byte) test_8u::res#0 = (byte~) test_8u::$0 (byte) test_8u::res#4 (byte) test_8u::res#3 (byte) test_8u::res#2 (byte) test_8u::res#1 
Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#91 
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#92 
Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#93 
Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#94 
Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#95 
Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#96 
Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#97 
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31 (byte*) print_line_cursor#12 
Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#98 (byte*) print_char_cursor#99 (byte*) print_char_cursor#36 
Alias (word) div16u::return#2 = (word) div16u::return#4 
Alias (word) test_16u::dividend#0 = (word) test_16u::dividend#1 
Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#147 
Alias (word) test_16u::divisor#0 = (word) test_16u::divisor#3 (word) test_16u::divisor#2 (word) test_16u::divisor#1 
Alias (byte*) print_line_cursor#42 = (byte*) print_line_cursor#76 (byte*) print_line_cursor#80 (byte*) print_line_cursor#72 (byte*) print_line_cursor#68 (byte*) print_line_cursor#63 (byte*) print_line_cursor#58 (byte*) print_line_cursor#53 (byte*) print_line_cursor#47 
Alias (byte) test_16u::i#10 = (byte) test_16u::i#11 (byte) test_16u::i#2 (byte) test_16u::i#9 (byte) test_16u::i#8 (byte) test_16u::i#7 (byte) test_16u::i#6 (byte) test_16u::i#5 (byte) test_16u::i#4 (byte) test_16u::i#3 
Alias (word) rem16u#12 = (word) rem16u#29 (word) rem16u#65 (word) rem16u#62 (word) rem16u#58 (word) rem16u#50 (word) rem16u#41 (word) rem16u#30 (word) rem16u#51 (word) rem16u#42 (word) rem16u#31 (word) rem16u#13 
Alias (word) test_16u::res#0 = (word~) test_16u::$0 (word) test_16u::res#4 (word) test_16u::res#3 (word) test_16u::res#2 (word) test_16u::res#1 
Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#37 
Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#38 
Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#39 
Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#40 
Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#41 
Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#42 
Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#43 
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#33 (byte*) print_line_cursor#14 
Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#44 (byte*) print_char_cursor#108 (byte*) print_char_cursor#45 
Alias (byte) test_16u::i#1 = (byte/signed word/word/dword/signed dword~) test_16u::$9 
Alias (signed byte) div8s::return#3 = (signed byte) div8s::return#5 
Alias (signed byte) test_8s::dividend#0 = (signed byte) test_8s::dividend#1 
Alias (byte*) print_char_cursor#140 = (byte*) print_char_cursor#148 
Alias (signed byte) test_8s::divisor#0 = (signed byte) test_8s::divisor#3 (signed byte) test_8s::divisor#2 (signed byte) test_8s::divisor#1 
Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#77 (byte*) print_line_cursor#81 (byte*) print_line_cursor#73 (byte*) print_line_cursor#69 (byte*) print_line_cursor#64 (byte*) print_line_cursor#59 (byte*) print_line_cursor#54 (byte*) print_line_cursor#48 
Alias (byte) test_8s::i#10 = (byte) test_8s::i#11 (byte) test_8s::i#2 (byte) test_8s::i#9 (byte) test_8s::i#8 (byte) test_8s::i#7 (byte) test_8s::i#6 (byte) test_8s::i#5 (byte) test_8s::i#4 (byte) test_8s::i#3 
Alias (byte) rem8u#12 = (byte) rem8u#28 (byte) rem8u#65 (byte) rem8u#64 (byte) rem8u#63 (byte) rem8u#62 (byte) rem8u#59 (byte) rem8u#54 (byte) rem8u#49 (byte) rem8u#40 (byte) rem8u#29 (byte) rem8u#13 
Alias (signed byte) rem8s#12 = (signed byte) rem8s#6 (signed byte) rem8s#31 (signed byte) rem8s#30 (signed byte) rem8s#28 (signed byte) rem8s#24 (signed byte) rem8s#19 (signed byte) rem8s#13 (signed byte) rem8s#25 (signed byte) rem8s#20 (signed byte) rem8s#14 (signed byte) rem8s#7 
Alias (signed byte) test_8s::res#0 = (signed byte~) test_8s::$4 (signed byte) test_8s::res#4 (signed byte) test_8s::res#3 (signed byte) test_8s::res#2 (signed byte) test_8s::res#1 
Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#46 
Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#47 
Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#48 
Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#49 
Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#50 
Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#51 
Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#52 
Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#16 
Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#117 (byte*) print_char_cursor#54 
Alias (signed word) div16s::return#2 = (signed word) div16s::return#4 
Alias (signed word) test_16s::dividend#0 = (signed word) test_16s::dividend#1 
Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#149 
Alias (signed word) test_16s::divisor#0 = (signed word) test_16s::divisor#3 (signed word) test_16s::divisor#2 (signed word) test_16s::divisor#1 
Alias (byte*) print_line_cursor#44 = (byte*) print_line_cursor#78 (byte*) print_line_cursor#82 (byte*) print_line_cursor#74 (byte*) print_line_cursor#70 (byte*) print_line_cursor#65 (byte*) print_line_cursor#60 (byte*) print_line_cursor#55 (byte*) print_line_cursor#49 
Alias (byte) test_16s::i#10 = (byte) test_16s::i#11 (byte) test_16s::i#2 (byte) test_16s::i#9 (byte) test_16s::i#8 (byte) test_16s::i#7 (byte) test_16s::i#6 (byte) test_16s::i#5 (byte) test_16s::i#4 (byte) test_16s::i#3 
Alias (word) rem16u#14 = (word) rem16u#32 (word) rem16u#69 (word) rem16u#68 (word) rem16u#67 (word) rem16u#66 (word) rem16u#63 (word) rem16u#59 (word) rem16u#53 (word) rem16u#44 (word) rem16u#33 (word) rem16u#15 
Alias (signed word) rem16s#16 = (signed word) rem16s#8 (signed word) rem16s#35 (signed word) rem16s#33 (signed word) rem16s#31 (signed word) rem16s#28 (signed word) rem16s#23 (signed word) rem16s#17 (signed word) rem16s#29 (signed word) rem16s#24 (signed word) rem16s#18 (signed word) rem16s#9 
Alias (signed word) test_16s::res#0 = (signed word~) test_16s::$6 (signed word) test_16s::res#4 (signed word) test_16s::res#3 (signed word) test_16s::res#2 (signed word) test_16s::res#1 
Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#55 
Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#56 
Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#57 
Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#58 
Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#59 
Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#60 
Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#61 
Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#18 
Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#62 (byte*) print_char_cursor#126 (byte*) print_char_cursor#63 
Alias (byte) test_16s::i#1 = (byte/signed word/word/dword/signed dword~) test_16s::$15 
Alias (signed word) rem16s#0 = (signed word) rem16s#25 
Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#38 
Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#64 
Alias (byte) rem8u#14 = (byte) rem8u#30 
Alias (word) rem16u#16 = (word) rem16u#34 
Alias (signed byte) rem8s#15 = (signed byte) rem8s#8 
Alias (signed word) rem16s#10 = (signed word) rem16s#19 
Successful SSA optimization Pass2AliasElimination
Alias (byte) divr8u::dividend#2 = (byte) divr8u::dividend#3 
Alias (byte) divr8u::quotient#3 = (byte) divr8u::quotient#6 
Alias (byte) divr8u::divisor#1 = (byte) divr8u::divisor#3 (byte) divr8u::divisor#6 
Alias (byte) divr8u::i#2 = (byte) divr8u::i#3 (byte) divr8u::i#5 
Alias (byte) divr8u::dividend#1 = (byte) divr8u::dividend#5 
Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 
Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 
Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7 
Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 
Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 
Alias (signed byte) div8s::divisor#1 = (signed byte) div8s::divisor#4 
Alias (byte) rem8u#32 = (byte) rem8u#42 (byte) rem8u#56 
Alias (byte) div8s::dividendu#3 = (byte) div8s::dividendu#4 
Alias (byte) rem8u#18 = (byte) rem8u#21 
Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#4 
Alias (word) rem16u#36 = (word) rem16u#46 (word) rem16u#60 
Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4 
Alias (word) divr16s::remu#3 = (word) divr16s::remu#4 
Alias (word) rem16u#20 = (word) rem16u#23 
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) print_char_cursor#67
Self Phi Eliminated (byte*) print_line_cursor#23
Self Phi Eliminated (byte) divr8u::divisor#1
Self Phi Eliminated (word) divr16u::divisor#2
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) print_char_cursor#67 (byte*) print_char_cursor#129
Redundant Phi (byte*) print_char_cursor#5 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#6 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#72 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#73 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#12 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#13 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#15 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#4
Redundant Phi (byte*) print_line_cursor#23 (byte*) print_screen#1
Redundant Phi (byte) rem8u#1 (byte) rem8u#17
Redundant Phi (byte) divr8u::rem#9 (byte) divr8u::rem#0
Redundant Phi (byte) divr8u::dividend#4 (byte) divr8u::dividend#0
Redundant Phi (byte) divr8u::divisor#5 (byte) divr8u::divisor#0
Redundant Phi (byte) divr8u::divisor#1 (byte) divr8u::divisor#5
Redundant Phi (word) divr16u::divisor#2 (word) divr16u::divisor#6
Redundant Phi (word) div16u::dividend#1 (word) div16u::dividend#0
Redundant Phi (word) div16u::divisor#1 (word) div16u::divisor#0
Redundant Phi (word) rem16u#35 (word) rem16u#40
Redundant Phi (word) rem16u#18 (word) rem16u#1
Redundant Phi (signed byte) div8s::dividend#1 (signed byte) div8s::dividend#0
Redundant Phi (signed byte) div8s::divisor#1 (signed byte) div8s::divisor#0
Redundant Phi (byte) rem8u#32 (byte) rem8u#39
Redundant Phi (byte) rem8u#18 (byte) rem8u#1
Redundant Phi (signed word) divr16s::dividend#1 (signed word) divr16s::dividend#0
Redundant Phi (signed word) divr16s::rem#1 (signed word) divr16s::rem#0
Redundant Phi (signed word) divr16s::divisor#1 (signed word) divr16s::divisor#0
Redundant Phi (word) rem16u#36 (word) rem16u#37
Redundant Phi (word) rem16u#20 (word) rem16u#1
Redundant Phi (signed word) div16s::dividend#1 (signed word) div16s::dividend#0
Redundant Phi (signed word) div16s::divisor#1 (signed word) div16s::divisor#0
Redundant Phi (word) rem16u#37 (word) rem16u#43
Redundant Phi (signed word) rem16s#20 (signed word) rem16s#22
Redundant Phi (word) rem16u#24 (word) rem16u#20
Redundant Phi (signed word) rem16s#12 (signed word) rem16s#11
Redundant Phi (byte*) print_screen#4 (byte*) print_line_cursor#0
Redundant Phi (byte*) print_line_cursor#40 (byte*) print_line_cursor#0
Redundant Phi (byte*) print_char_cursor#137 (byte*) print_line_cursor#0
Redundant Phi (byte) rem8u#33 (byte) rem8u#0
Redundant Phi (word) rem16u#38 (word) rem16u#0
Redundant Phi (signed byte) rem8s#16 (signed byte) rem8s#0
Redundant Phi (signed word) rem16s#21 (signed word) rem16s#0
Redundant Phi (byte*) print_line_cursor#24 (byte*) print_line_cursor#23
Redundant Phi (byte*) print_char_cursor#22 (byte*) print_line_cursor#23
Redundant Phi (byte) rem8u#22 (byte) rem8u#10
Redundant Phi (byte*) print_char_cursor#23 (byte*) print_char_cursor#35
Redundant Phi (byte*) print_line_cursor#25 (byte*) print_line_cursor#11
Redundant Phi (word) rem16u#26 (word) rem16u#12
Redundant Phi (byte*) print_char_cursor#24 (byte*) print_char_cursor#107
Redundant Phi (byte*) print_line_cursor#26 (byte*) print_line_cursor#13
Redundant Phi (byte) rem8u#23 (byte) rem8u#12
Redundant Phi (signed byte) rem8s#10 (signed byte) rem8s#12
Redundant Phi (byte*) print_char_cursor#25 (byte*) print_char_cursor#116
Redundant Phi (byte*) print_line_cursor#27 (byte*) print_line_cursor#15
Redundant Phi (word) rem16u#10 (word) rem16u#14
Redundant Phi (signed word) rem16s#14 (signed word) rem16s#16
Redundant Phi (byte*) print_char_cursor#26 (byte*) print_char_cursor#125
Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#17
Redundant Phi (byte) rem8u#45 (byte) rem8u#33
Redundant Phi (byte*) print_char_cursor#152 (byte*) print_char_cursor#22
Redundant Phi (byte*) print_line_cursor#83 (byte*) print_line_cursor#24
Redundant Phi (byte) rem8u#10 (byte) rem8u#1
Redundant Phi (byte*) print_char_cursor#28 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#29 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#30 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#31 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#32 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_char_cursor#33 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#34 (byte*) print_char_cursor#16
Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#35 (byte*) print_line_cursor#1
Redundant Phi (word) rem16u#49 (word) rem16u#38
Redundant Phi (byte*) print_char_cursor#153 (byte*) print_char_cursor#23
Redundant Phi (byte*) print_line_cursor#84 (byte*) print_line_cursor#25
Redundant Phi (word) rem16u#12 (word) rem16u#18
Redundant Phi (byte*) print_char_cursor#100 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#101 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#102 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#103 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#104 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_char_cursor#105 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#106 (byte*) print_char_cursor#13
Redundant Phi (byte*) print_line_cursor#13 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#107 (byte*) print_line_cursor#1
Redundant Phi (byte) rem8u#48 (byte) rem8u#22
Redundant Phi (signed byte) rem8s#23 (signed byte) rem8s#16
Redundant Phi (byte*) print_char_cursor#154 (byte*) print_char_cursor#24
Redundant Phi (byte*) print_line_cursor#85 (byte*) print_line_cursor#26
Redundant Phi (byte) rem8u#12 (byte) rem8u#18
Redundant Phi (signed byte) rem8s#12 (signed byte) rem8s#3
Redundant Phi (byte*) print_char_cursor#109 (byte*) print_char_cursor#10
Redundant Phi (byte*) print_char_cursor#110 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#111 (byte*) print_char_cursor#10
Redundant Phi (byte*) print_char_cursor#112 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#113 (byte*) print_char_cursor#10
Redundant Phi (byte*) print_char_cursor#114 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#115 (byte*) print_char_cursor#10
Redundant Phi (byte*) print_line_cursor#15 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#116 (byte*) print_line_cursor#1
Redundant Phi (word) rem16u#52 (word) rem16u#26
Redundant Phi (signed word) rem16s#27 (signed word) rem16s#21
Redundant Phi (byte*) print_char_cursor#155 (byte*) print_char_cursor#25
Redundant Phi (byte*) print_line_cursor#86 (byte*) print_line_cursor#27
Redundant Phi (word) rem16u#14 (word) rem16u#24
Redundant Phi (signed word) rem16s#16 (signed word) rem16s#12
Redundant Phi (byte*) print_char_cursor#118 (byte*) print_char_cursor#5
Redundant Phi (byte*) print_char_cursor#119 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#120 (byte*) print_char_cursor#5
Redundant Phi (byte*) print_char_cursor#121 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#122 (byte*) print_char_cursor#5
Redundant Phi (byte*) print_char_cursor#123 (byte*) print_char_cursor#128
Redundant Phi (byte*) print_char_cursor#124 (byte*) print_char_cursor#5
Redundant Phi (byte*) print_line_cursor#17 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#125 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#19 (byte*) print_line_cursor#10
Redundant Phi (byte*) print_char_cursor#127 (byte*) print_char_cursor#26
Redundant Phi (byte) rem8u#14 (byte) rem8u#23
Redundant Phi (word) rem16u#16 (word) rem16u#10
Redundant Phi (signed byte) rem8s#15 (signed byte) rem8s#10
Redundant Phi (signed word) rem16s#10 (signed word) rem16s#14
Successful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) print_char_cursor#143 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#129 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#134 (byte*) print_char_cursor#18
Redundant Phi (byte*) print_char_cursor#139 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#42 (byte*) print_line_cursor#1
Redundant Phi (byte) rem8u#39 (byte) rem8u#17
Redundant Phi (byte*) print_char_cursor#140 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#43 (byte*) print_line_cursor#1
Redundant Phi (word) rem16u#43 (word) rem16u#1
Redundant Phi (byte*) print_char_cursor#141 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#44 (byte*) print_line_cursor#1
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2
Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1
Simple Condition (bool~) print_sword::$1 [29] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
Simple Condition (bool~) print_sbyte::$0 [48] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1
Simple Condition (bool~) print_cls::$1 [113] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
Simple Condition (bool~) divr8u::$3 [146] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2
Simple Condition (bool~) divr8u::$8 [154] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3
Simple Condition (bool~) divr8u::$10 [161] if((byte) divr8u::i#1!=rangelast(0,7)) goto divr8u::@1
Simple Condition (bool~) divr16u::$4 [185] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
Simple Condition (bool~) divr16u::$9 [193] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3
Simple Condition (bool~) divr16u::$11 [200] if((byte) divr16u::i#1!=rangelast(0,15)) goto divr16u::@1
Simple Condition (bool~) div8s::$0 [232] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1
Simple Condition (bool~) div8s::$4 [244] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3
Simple Condition (bool~) div8s::$10 [264] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@5
Simple Condition (bool~) divr16s::$9 [308] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
Simple Condition (bool~) divr16s::$15 [329] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@5
Simple Condition (bool~) test_8u::$9 [448] if((byte) test_8u::i#1!=rangelast(0,5)) goto test_8u::@1
Simple Condition (bool~) test_16u::$10 [504] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1
Simple Condition (bool~) test_8s::$13 [564] if((byte) test_8s::i#1!=rangelast(0,5)) goto test_8s::@1
Simple Condition (bool~) test_16s::$16 [628] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting || if()-condition to two if()s [290] (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
Constant (const byte) print_char::ch#0 = '-'
Constant (const byte) print_char::ch#1 = '-'
Constant (const byte) print_char::ch#2 = ' '
Constant (const byte[]) print_hextab#0 = $0
Constant (const byte) rem8u#0 = 0
Constant (const byte) divr8u::rem#0 = 0
Constant (const byte) divr8u::quotient#0 = 0
Constant (const byte) divr8u::i#0 = 0
Constant (const word) rem16u#0 = 0
Constant (const word) divr16u::quotient#0 = 0
Constant (const byte) divr16u::i#0 = 0
Constant (const word) divr16u::rem#3 = 0
Constant (const signed byte) rem8s#0 = 0
Constant (const byte) div8s::neg#0 = 0
Constant (const byte) div8s::dividendu#0 = 0
Constant (const byte) div8s::neg#1 = 1
Constant (const byte) div8s::divisoru#0 = 0
Constant (const signed word) rem16s#0 = 0
Constant (const byte) divr16s::neg#0 = 0
Constant (const word) divr16s::dividendu#0 = 0
Constant (const word) divr16s::remu#0 = 0
Constant (const byte) divr16s::neg#1 = 1
Constant (const word) divr16s::divisoru#0 = 0
Constant (const signed word) divr16s::rem#0 = 0
Constant (const byte[]) test_8u::dividends#0 = { 255, 255, 255, 255, 255, 255 }
Constant (const byte[]) test_8u::divisors#0 = { 5, 7, 11, 13, 17, 19 }
Constant (const byte) test_8u::rem#0 = 0
Constant (const byte) test_8u::i#0 = 0
Constant (const byte*) print_str::str#1 = test_8u::str
Constant (const byte*) print_str::str#2 = test_8u::str1
Constant (const byte*) print_str::str#3 = test_8u::str2
Constant (const word[]) test_16u::dividends#0 = { 65535, 65535, 65535, 65535, 65535, 65535 }
Constant (const word[]) test_16u::divisors#0 = { 5, 7, 11, 13, 17, 19 }
Constant (const byte) test_16u::i#0 = 0
Constant (const byte*) print_str::str#4 = test_16u::str
Constant (const byte*) print_str::str#5 = test_16u::str1
Constant (const byte*) print_str::str#6 = test_16u::str2
Constant (const signed byte/signed word/signed dword) test_8s::$0 = -127
Constant (const signed byte/signed word/signed dword) test_8s::$1 = -127
Constant (const signed byte/signed word/signed dword) test_8s::$2 = -11
Constant (const signed byte/signed word/signed dword) test_8s::$3 = -13
Constant (const byte) test_8s::i#0 = 0
Constant (const byte*) print_str::str#7 = test_8s::str
Constant (const byte*) print_str::str#8 = test_8s::str1
Constant (const byte*) print_str::str#9 = test_8s::str2
Constant (const signed word/signed dword) test_16s::$0 = -32767
Constant (const signed word/signed dword) test_16s::$1 = -32767
Constant (const signed word/signed dword) test_16s::$2 = -32767
Constant (const signed byte/signed word/signed dword) test_16s::$3 = -7
Constant (const signed byte/signed word/signed dword) test_16s::$4 = -13
Constant (const signed byte/signed word/signed dword) test_16s::$5 = -17
Constant (const byte) test_16s::i#0 = 0
Constant (const byte*) print_str::str#10 = test_16s::str
Constant (const byte*) print_str::str#11 = test_16s::str1
Constant (const byte*) print_str::str#12 = test_16s::str2
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
Constant (const bool) divr16s::$1 = divr16s::rem#0<0
Constant (const signed word) divr16s::$7 = -divr16s::rem#0
Constant (const word) divr16s::remu#2 = ((word))divr16s::rem#0
Constant (const signed byte[]) test_8s::dividends#0 = { 127, test_8s::$0, test_8s::$1, 127, 127, 127 }
Constant (const signed byte[]) test_8s::divisors#0 = { 5, 7, test_8s::$2, test_8s::$3, 17, 19 }
Constant (const signed word[]) test_16s::dividends#0 = { 32767, 32767, test_16s::$0, test_16s::$1, 32767, test_16s::$2 }
Constant (const signed word[]) test_16s::divisors#0 = { 5, test_16s::$3, 11, test_16s::$4, test_16s::$5, 19 }
Successful SSA optimization Pass2ConstantIdentification
Constant (const word) divr16s::remu#1 = ((word))divr16s::$7
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [256] if((const bool) divr16s::$1) goto divr16s::@1
Successful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantStringConsolidation
Successful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Eliminating Noop Cast (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#6
Eliminating Noop Cast (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#7
Eliminating Noop Cast (byte) div8s::dividendu#1 ← ((byte)) (signed byte~) div8s::$2
Eliminating Noop Cast (byte) div8s::dividendu#2 ← ((byte)) (signed byte) div8s::dividend#0
Eliminating Noop Cast (byte) div8s::divisoru#1 ← ((byte)) (signed byte~) div8s::$6
Eliminating Noop Cast (byte) div8s::divisoru#2 ← ((byte)) (signed byte) div8s::divisor#0
Eliminating Noop Cast (signed byte) rem8s#1 ← ((signed byte)) (byte) rem8u#17
Eliminating Noop Cast (signed byte) div8s::return#0 ← ((signed byte)) (byte) div8s::resultu#0
Eliminating Noop Cast (signed byte~) div8s::$11 ← ((signed byte)) (byte) rem8u#17
Eliminating Noop Cast (signed byte~) div8s::$13 ← ((signed byte)) (byte) div8s::resultu#0
Eliminating Noop Cast (word) divr16s::dividendu#1 ← ((word)) (signed word~) divr16s::$5
Eliminating Noop Cast (word) divr16s::dividendu#2 ← ((word)) (signed word) divr16s::dividend#0
Eliminating Noop Cast (word) divr16s::divisoru#1 ← ((word)) (signed word~) divr16s::$11
Eliminating Noop Cast (word) divr16s::divisoru#2 ← ((word)) (signed word) divr16s::divisor#0
Eliminating Noop Cast (signed word) rem16s#1 ← ((signed word)) (word) rem16u#1
Eliminating Noop Cast (signed word) divr16s::return#0 ← ((signed word)) (word) divr16s::resultu#0
Eliminating Noop Cast (signed word~) divr16s::$16 ← ((signed word)) (word) rem16u#1
Eliminating Noop Cast (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#0
Successful SSA optimization Pass2NopCastElimination
Resolved ranged next value divr8u::i#1 ← ++ divr8u::i#2 to ++
Resolved ranged comparison value if(divr8u::i#1!=rangelast(0,7)) goto divr8u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++
Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16
Resolved ranged next value test_8u::i#1 ← ++ test_8u::i#10 to ++
Resolved ranged comparison value if(test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 6
Resolved ranged next value test_8s::i#1 ← ++ test_8s::i#10 to ++
Resolved ranged comparison value if(test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 to (byte/signed byte/word/signed word/dword/signed dword) 6
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_sword::@3
Culled Empty Block (label) print_sbyte::@6
Culled Empty Block (label) print_sbyte::@7
Culled Empty Block (label) print_word::@2
Culled Empty Block (label) @12
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) @19
Culled Empty Block (label) @21
Culled Empty Block (label) @24
Culled Empty Block (label) div8s::@7
Culled Empty Block (label) div8s::@9
Culled Empty Block (label) div8s::@5
Culled Empty Block (label) @25
Culled Empty Block (label) divr16s::@7
Culled Empty Block (label) divr16s::@9
Culled Empty Block (label) divr16s::@5
Culled Empty Block (label) main::@5
Culled Empty Block (label) @33
Culled Empty Block (label) divr16s::@16
Successful SSA optimization Pass2CullEmptyBlocks
Simple Condition (bool~) divr16s::$0 [115] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
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_char::ch#0
Inlining constant with var siblings (const byte) print_char::ch#1
Inlining constant with var siblings (const byte) print_char::ch#2
Inlining constant with var siblings (const byte*) print_cls::sc#0
Inlining constant with var siblings (const byte) divr8u::rem#0
Inlining constant with var siblings (const byte) divr8u::quotient#0
Inlining constant with var siblings (const byte) divr8u::i#0
Inlining constant with var siblings (const word) divr16u::quotient#0
Inlining constant with var siblings (const byte) divr16u::i#0
Inlining constant with var siblings (const word) divr16u::rem#3
Inlining constant with var siblings (const byte) div8s::neg#0
Inlining constant with var siblings (const byte) div8s::neg#1
Inlining constant with var siblings (const byte) divr16s::neg#0
Inlining constant with var siblings (const byte) divr16s::neg#1
Inlining constant with var siblings (const word) divr16s::remu#2
Inlining constant with var siblings (const word) divr16s::remu#1
Inlining constant with var siblings (const byte) test_8u::i#0
Inlining constant with var siblings (const byte) test_16u::i#0
Inlining constant with var siblings (const byte) test_8s::i#0
Inlining constant with var siblings (const byte) test_16s::i#0
Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined divr16u::rem#3 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8s::str1 = (const string) str1
Constant inlined test_8s::str2 = (const string) str2
Constant inlined $0 = (const byte[]) print_hextab#0
Constant inlined divr8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8s::$3 = -(byte/signed byte/word/signed word/dword/signed dword) 13
Constant inlined test_8s::$2 = -(byte/signed byte/word/signed word/dword/signed dword) 11
Constant inlined test_8s::$1 = -(byte/signed byte/word/signed word/dword/signed dword) 127
Constant inlined test_8s::$0 = -(byte/signed byte/word/signed word/dword/signed dword) 127
Constant inlined test_16s::str1 = (const string) str1
Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined test_16s::str2 = (const string) str2
Constant inlined test_16s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr8u::rem#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#9 = (const string) str2
Constant inlined print_str::str#4 = (const string) str
Constant inlined print_str::str#3 = (const string) str2
Constant inlined div8s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined print_str::str#2 = (const string) str1
Constant inlined div8s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#1 = (const string) str
Constant inlined print_str::str#8 = (const string) str1
Constant inlined print_str::str#7 = (const string) str
Constant inlined test_8u::str = (const string) str
Constant inlined print_str::str#6 = (const string) str2
Constant inlined print_str::str#5 = (const string) str1
Constant inlined test_16s::str = (const string) str
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#12 = (const string) str2
Constant inlined print_str::str#11 = (const string) str1
Constant inlined print_str::str#10 = (const string) str
Constant inlined divr16s::$7 = -(const signed word) divr16s::rem#0
Constant inlined divr16s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined divr16s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8u::str2 = (const string) str2
Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8u::str1 = (const string) str1
Constant inlined test_8s::str = (const string) str
Constant inlined test_16s::$3 = -(byte/signed byte/word/signed word/dword/signed dword) 7
Constant inlined test_16s::$4 = -(byte/signed byte/word/signed word/dword/signed dword) 13
Constant inlined test_16s::$5 = -(byte/signed byte/word/signed word/dword/signed dword) 17
Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined divr8u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_16u::str1 = (const string) str1
Constant inlined print_char::ch#2 = (byte) ' '
Constant inlined test_16u::str = (const string) str
Constant inlined test_16u::str2 = (const string) str2
Constant inlined print_char::ch#1 = (byte) '-'
Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined test_16s::$0 = -(word/signed word/dword/signed dword) 32767
Constant inlined test_16s::$1 = -(word/signed word/dword/signed dword) 32767
Constant inlined divr16s::remu#1 = ((word))-(const signed word) divr16s::rem#0
Constant inlined test_8s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_16s::$2 = -(word/signed word/dword/signed dword) 32767
Constant inlined divr16s::remu#2 = ((word))(const signed word) divr16s::rem#0
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting test_16s::@12(between test_16s::@11 and test_16s::@1)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1)
Added new block during phi lifting divr16s::@17(between divr16s and divr16s::@2)
Fixing phi predecessor for divr16s::neg#3 to new block ( divr16s -> divr16s::@17 ) during phi lifting.
Fixing phi predecessor for divr16s::remu#3 to new block ( divr16s -> divr16s::@17 ) during phi lifting.
Added new block during phi lifting divr16s::@18(between divr16s::@2 and divr16s::@4)
Added new block during phi lifting divr16s::@19(between divr16s::@15 and divr16s::@return)
Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1)
Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2)
Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3)
Added new block during phi lifting test_8s::@12(between test_8s::@11 and test_8s::@1)
Added new block during phi lifting div8s::@16(between div8s and div8s::@2)
Fixing phi predecessor for div8s::neg#3 to new block ( div8s -> div8s::@16 ) during phi lifting.
Added new block during phi lifting div8s::@17(between div8s::@2 and div8s::@4)
Added new block during phi lifting div8s::@18(between div8s::@15 and div8s::@return)
Added new block during phi lifting divr8u::@8(between divr8u::@3 and divr8u::@1)
Added new block during phi lifting divr8u::@9(between divr8u::@1 and divr8u::@2)
Added new block during phi lifting divr8u::@10(between divr8u::@2 and divr8u::@3)
Added new block during phi lifting test_16u::@12(between test_16u::@11 and test_16u::@1)
Added new block during phi lifting test_8u::@12(between test_8u::@11 and test_8u::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @32
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
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 test_16s
Adding NOP phi() at start of test_16s::@4
Adding NOP phi() at start of test_16s::@6
Adding NOP phi() at start of test_16s::@8
Adding NOP phi() at start of test_8s
Adding NOP phi() at start of test_8s::@4
Adding NOP phi() at start of test_8s::@6
Adding NOP phi() at start of test_8s::@8
Adding NOP phi() at start of test_16u
Adding NOP phi() at start of test_16u::@4
Adding NOP phi() at start of test_16u::@6
Adding NOP phi() at start of test_16u::@8
Adding NOP phi() at start of test_8u
Adding NOP phi() at start of test_8u::@4
Adding NOP phi() at start of test_8u::@6
Adding NOP phi() at start of test_8u::@8
Adding NOP phi() at start of print_cls
CALL GRAPH
Calls in [] to main:2 
Calls in [main] to print_cls:5 test_8u:7 test_16u:9 test_8s:11 test_16s:13 
Calls in [test_16s] to div16s:21 print_sword:27 print_str:29 print_sword:33 print_str:35 print_sword:39 print_str:41 print_sword:45 print_ln:47 
Calls in [print_sword] to print_char:62 print_word:69 
Calls in [print_word] to print_byte:77 print_byte:81 
Calls in [print_byte] to print_char:88 print_char:93 
Calls in [div16s] to divr16s:112 
Calls in [divr16s] to divr16u:129 
Calls in [test_8s] to div8s:183 print_sbyte:189 print_str:191 print_sbyte:195 print_str:197 print_sbyte:201 print_str:203 print_sbyte:207 print_ln:209 
Calls in [print_sbyte] to print_char:217 print_byte:222 print_char:225 
Calls in [div8s] to div8u:239 
Calls in [div8u] to divr8u:260 
Calls in [test_16u] to div16u:297 print_word:303 print_str:305 print_word:309 print_str:311 print_word:315 print_str:317 print_word:321 print_ln:323 
Calls in [div16u] to divr16u:332 
Calls in [test_8u] to div8u:344 print_byte:350 print_str:352 print_byte:356 print_str:358 print_byte:362 print_str:364 print_byte:368 print_ln:370 

Created 57 initial phi equivalence classes
Coalesced [25] print_sword::w#9 ← print_sword::w#1
Not coalescing [26] print_char_cursor#159 ← print_line_cursor#1
Coalesced [31] print_sword::w#10 ← print_sword::w#2
Coalesced [32] print_char_cursor#160 ← print_char_cursor#128
Coalesced [37] print_sword::w#11 ← print_sword::w#3
Coalesced (already) [38] print_char_cursor#161 ← print_char_cursor#128
Coalesced [43] print_sword::w#12 ← print_sword::w#4
Coalesced (already) [44] print_char_cursor#162 ← print_char_cursor#128
Coalesced [46] print_line_cursor#87 ← print_line_cursor#1
Coalesced [51] test_16s::i#12 ← test_16s::i#1
Coalesced [53] print_line_cursor#91 ← print_line_cursor#39
Coalesced (already) [58] print_line_cursor#92 ← print_line_cursor#1
Coalesced [61] print_char_cursor#181 ← print_char_cursor#131
Coalesced [64] print_sword::w#14 ← print_sword::w#0
Coalesced [65] print_char_cursor#164 ← print_char_cursor#18
Coalesced [68] print_char_cursor#165 ← print_char_cursor#130
Coalesced [71] print_sword::w#13 ← print_sword::w#5
Coalesced [72] print_char_cursor#163 ← print_char_cursor#131
Coalesced [75] print_byte::b#10 ← print_byte::b#1
Coalesced [76] print_char_cursor#171 ← print_char_cursor#135
Coalesced [79] print_byte::b#11 ← print_byte::b#2
Coalesced (already) [80] print_char_cursor#172 ← print_char_cursor#18
Coalesced [86] print_char::ch#6 ← print_char::ch#3
Coalesced (already) [87] print_char_cursor#177 ← print_char_cursor#136
Coalesced [91] print_char::ch#7 ← print_char::ch#4
Coalesced (already) [92] print_char_cursor#178 ← print_char_cursor#18
Coalesced [100] print_str::str#16 ← print_str::str#15
Coalesced (already) [101] print_char_cursor#182 ← print_char_cursor#18
Coalesced [108] print_str::str#17 ← print_str::str#0
Coalesced [109] print_char_cursor#183 ← print_char_cursor#1
Coalesced [121] divr16s::neg#10 ← divr16s::neg#3
Coalesced [126] divr16u::rem#12 ← divr16u::rem#4
Coalesced [127] divr16u::dividend#10 ← divr16u::dividend#2
Coalesced [128] divr16u::divisor#9 ← divr16u::divisor#1
Coalesced [135] divr16s::return#6 ← divr16s::return#1
Coalesced [136] rem16s#36 ← rem16s#2
Coalesced [144] divr16s::neg#9 ← divr16s::neg#2
Coalesced [148] divr16u::rem#13 ← divr16u::rem#10
Coalesced [149] divr16u::dividend#11 ← divr16u::dividend#5
Coalesced [156] divr16u::rem#16 ← divr16u::rem#1
Coalesced [163] divr16u::rem#18 ← divr16u::rem#2
Coalesced [164] divr16u::return#8 ← divr16u::quotient#2
Coalesced [170] divr16u::rem#14 ← divr16u::rem#11
Coalesced [171] divr16u::dividend#12 ← divr16u::dividend#0
Coalesced [172] divr16u::quotient#9 ← divr16u::return#0
Coalesced [173] divr16u::i#7 ← divr16u::i#1
Coalesced [174] divr16u::rem#17 ← divr16u::rem#6
Coalesced [175] divr16u::return#7 ← divr16u::quotient#1
Coalesced [176] divr16u::rem#15 ← divr16u::rem#0
Coalesced [187] print_sbyte::b#11 ← print_sbyte::b#1
Not coalescing [188] print_char_cursor#184 ← print_line_cursor#1
Coalesced [193] print_sbyte::b#12 ← print_sbyte::b#2
Coalesced [194] print_char_cursor#185 ← print_char_cursor#128
Coalesced [199] print_sbyte::b#13 ← print_sbyte::b#3
Coalesced (already) [200] print_char_cursor#186 ← print_char_cursor#128
Coalesced [205] print_sbyte::b#14 ← print_sbyte::b#4
Coalesced (already) [206] print_char_cursor#187 ← print_char_cursor#128
Coalesced (already) [208] print_line_cursor#89 ← print_line_cursor#1
Coalesced [213] test_8s::i#12 ← test_8s::i#1
Coalesced (already) [216] print_char_cursor#180 ← print_char_cursor#132
Coalesced [218] print_sbyte::b#16 ← print_sbyte::b#10
Coalesced (already) [221] print_char_cursor#170 ← print_char_cursor#18
Coalesced (already) [224] print_char_cursor#179 ← print_char_cursor#132
Coalesced [227] print_sbyte::b#15 ← print_sbyte::b#0
Coalesced [233] div8s::neg#10 ← div8s::neg#3
Coalesced [237] div8u::dividend#3 ← div8u::dividend#0
Coalesced [238] div8u::divisor#3 ← div8u::divisor#0
Coalesced [245] div8s::return#6 ← div8s::return#1
Coalesced [246] rem8s#32 ← rem8s#2
Coalesced [254] div8s::neg#9 ← div8s::neg#2
Coalesced [264] divr8u::dividend#8 ← divr8u::dividend#0
Coalesced [270] divr8u::rem#13 ← divr8u::rem#2
Coalesced [277] divr8u::rem#15 ← divr8u::rem#3
Coalesced [278] divr8u::return#6 ← divr8u::quotient#2
Coalesced [284] divr8u::rem#11 ← divr8u::rem#10
Coalesced [285] divr8u::dividend#9 ← divr8u::dividend#1
Coalesced [286] divr8u::quotient#9 ← divr8u::return#1
Coalesced [287] divr8u::i#7 ← divr8u::i#1
Coalesced [288] divr8u::rem#14 ← divr8u::rem#5
Coalesced [289] divr8u::return#5 ← divr8u::quotient#1
Coalesced [290] divr8u::rem#12 ← divr8u::rem#1
Coalesced [301] print_word::w#8 ← print_word::w#1
Not coalescing [302] print_char_cursor#166 ← print_line_cursor#1
Coalesced [307] print_word::w#9 ← print_word::w#2
Coalesced (already) [308] print_char_cursor#167 ← print_char_cursor#128
Coalesced [313] print_word::w#10 ← print_word::w#3
Coalesced (already) [314] print_char_cursor#168 ← print_char_cursor#128
Coalesced [319] print_word::w#11 ← print_word::w#4
Coalesced (already) [320] print_char_cursor#169 ← print_char_cursor#128
Coalesced (already) [322] print_line_cursor#88 ← print_line_cursor#1
Coalesced [327] test_16u::i#12 ← test_16u::i#1
Coalesced [330] divr16u::dividend#9 ← divr16u::dividend#1
Coalesced [331] divr16u::divisor#8 ← divr16u::divisor#0
Coalesced [342] div8u::dividend#4 ← div8u::dividend#1
Coalesced [343] div8u::divisor#4 ← div8u::divisor#1
Coalesced [348] print_byte::b#12 ← print_byte::b#3
Coalesced [349] print_char_cursor#173 ← print_char_cursor#138
Coalesced [354] print_byte::b#13 ← print_byte::b#4
Coalesced (already) [355] print_char_cursor#174 ← print_char_cursor#128
Coalesced [360] print_byte::b#14 ← print_byte::b#5
Coalesced (already) [361] print_char_cursor#175 ← print_char_cursor#128
Coalesced [366] print_byte::b#15 ← print_byte::b#6
Coalesced (already) [367] print_char_cursor#176 ← print_char_cursor#128
Coalesced [369] print_line_cursor#90 ← print_line_cursor#41
Coalesced [374] test_8u::i#12 ← test_8u::i#1
Not coalescing [375] print_char_cursor#188 ← print_line_cursor#1
Coalesced (already) [376] print_line_cursor#93 ← print_line_cursor#1
Coalesced [383] print_cls::sc#3 ← print_cls::sc#1
Coalesced down to 35 phi equivalence classes
Culled Empty Block (label) test_16s::@12
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_sword::@5
Culled Empty Block (label) divr16u::@8
Culled Empty Block (label) divr16u::@10
Culled Empty Block (label) divr16u::@9
Culled Empty Block (label) test_8s::@12
Culled Empty Block (label) divr8u::@8
Culled Empty Block (label) divr8u::@10
Culled Empty Block (label) divr8u::@9
Culled Empty Block (label) test_16u::@12
Culled Empty Block (label) print_cls::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @32
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
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 test_16s
Adding NOP phi() at start of test_16s::@4
Adding NOP phi() at start of test_16s::@6
Adding NOP phi() at start of test_16s::@8
Adding NOP phi() at start of test_16s::@10
Adding NOP phi() at start of print_sword::@2
Adding NOP phi() at start of test_8s
Adding NOP phi() at start of test_8s::@4
Adding NOP phi() at start of test_8s::@6
Adding NOP phi() at start of test_8s::@8
Adding NOP phi() at start of test_8s::@10
Adding NOP phi() at start of print_sbyte::@3
Adding NOP phi() at start of print_sbyte::@1
Adding NOP phi() at start of divr8u
Adding NOP phi() at start of test_16u
Adding NOP phi() at start of test_16u::@4
Adding NOP phi() at start of test_16u::@6
Adding NOP phi() at start of test_16u::@8
Adding NOP phi() at start of test_16u::@10
Adding NOP phi() at start of test_8u
Adding NOP phi() at start of test_8u::@4
Adding NOP phi() at start of test_8u::@6
Adding NOP phi() at start of test_8u::@8
Adding NOP phi() at start of test_8u::@10
Adding NOP phi() at start of print_cls

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@32
@32: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @32
  [3] phi()
main: scope:[main]  from @32
  [4] phi()
  [5] call print_cls 
  to:main::@1
main::@1: scope:[main]  from main
  [6] phi()
  [7] call test_8u 
  to:main::@2
main::@2: scope:[main]  from main::@1
  [8] phi()
  [9] call test_16u 
  to:main::@3
main::@3: scope:[main]  from main::@2
  [10] phi()
  [11] call test_8s 
  to:main::@4
main::@4: scope:[main]  from main::@3
  [12] phi()
  [13] call test_16s 
  to:main::@return
main::@return: scope:[main]  from main::@4
  [14] return 
  to:@return
test_16s: scope:[test_16s]  from main::@4
  [15] phi()
  to:test_16s::@1
test_16s::@1: scope:[test_16s]  from test_16s test_16s::@11
  [16] (byte) test_16s::i#10 ← phi( test_16s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16s::@11/(byte) test_16s::i#1 )
  [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10)
  [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10)
  [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0
  [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0
  [21] call div16s 
  [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0
  to:test_16s::@3
test_16s::@3: scope:[test_16s]  from test_16s::@1
  [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2
  [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0
  [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1
  [26] call print_sword 
  to:test_16s::@4
test_16s::@4: scope:[test_16s]  from test_16s::@3
  [27] phi()
  [28] call print_str 
  to:test_16s::@5
test_16s::@5: scope:[test_16s]  from test_16s::@4
  [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0
  [30] call print_sword 
  to:test_16s::@6
test_16s::@6: scope:[test_16s]  from test_16s::@5
  [31] phi()
  [32] call print_str 
  to:test_16s::@7
test_16s::@7: scope:[test_16s]  from test_16s::@6
  [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0
  [34] call print_sword 
  to:test_16s::@8
test_16s::@8: scope:[test_16s]  from test_16s::@7
  [35] phi()
  [36] call print_str 
  to:test_16s::@9
test_16s::@9: scope:[test_16s]  from test_16s::@8
  [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11
  [38] call print_sword 
  to:test_16s::@10
test_16s::@10: scope:[test_16s]  from test_16s::@9
  [39] phi()
  [40] call print_ln 
  to:test_16s::@11
test_16s::@11: scope:[test_16s]  from test_16s::@10
  [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2
  [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1
  to:test_16s::@return
test_16s::@return: scope:[test_16s]  from test_16s::@11
  [43] return 
  to:@return
print_ln: scope:[print_ln]  from test_16s::@10 test_16u::@10 test_8s::@10 test_8u::@10
  [44] (byte*) print_line_cursor#39 ← phi( test_16s::@10/(byte*) print_line_cursor#1 test_16u::@10/(byte*) print_line_cursor#1 test_8s::@10/(byte*) print_line_cursor#1 test_8u::@10/(byte*) print_line_cursor#41 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [45] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 )
  [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40
  [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [48] return 
  to:@return
print_sword: scope:[print_sword]  from test_16s::@3 test_16s::@5 test_16s::@7 test_16s::@9
  [49] (byte*) print_char_cursor#131 ← phi( test_16s::@3/(byte*~) print_char_cursor#159 test_16s::@5/(byte*) print_char_cursor#128 test_16s::@7/(byte*) print_char_cursor#128 test_16s::@9/(byte*) print_char_cursor#128 )
  [49] (signed word) print_sword::w#5 ← phi( test_16s::@3/(signed word) print_sword::w#1 test_16s::@5/(signed word) print_sword::w#2 test_16s::@7/(signed word) print_sword::w#3 test_16s::@9/(signed word) print_sword::w#4 )
  [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword
  [51] phi()
  [52] call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@2
  [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5
  to:print_sword::@1
print_sword::@1: scope:[print_sword]  from print_sword print_sword::@4
  [54] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@4/(byte*) print_char_cursor#18 )
  [54] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@4/(signed word) print_sword::w#0 )
  [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6
  [56] call print_word 
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@1
  [57] return 
  to:@return
print_word: scope:[print_word]  from print_sword::@1 test_16u::@3 test_16u::@5 test_16u::@7 test_16u::@9
  [58] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@3/(byte*~) print_char_cursor#166 test_16u::@5/(byte*) print_char_cursor#128 test_16u::@7/(byte*) print_char_cursor#128 test_16u::@9/(byte*) print_char_cursor#128 )
  [58] (word) print_word::w#5 ← phi( print_sword::@1/(word~) print_word::w#7 test_16u::@3/(word) print_word::w#1 test_16u::@5/(word) print_word::w#2 test_16u::@7/(word) print_word::w#3 test_16u::@9/(word) print_word::w#4 )
  [59] (byte) print_byte::b#1 ← > (word) print_word::w#5
  [60] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [61] (byte) print_byte::b#2 ← < (word) print_word::w#5
  [62] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [63] return 
  to:@return
print_byte: scope:[print_byte]  from print_sbyte::@2 print_word print_word::@1 test_8u::@3 test_8u::@5 test_8u::@7 test_8u::@9
  [64] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@3/(byte*) print_char_cursor#138 test_8u::@5/(byte*) print_char_cursor#128 test_8u::@7/(byte*) print_char_cursor#128 test_8u::@9/(byte*) print_char_cursor#128 )
  [64] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@3/(byte) print_byte::b#3 test_8u::@5/(byte) print_byte::b#4 test_8u::@7/(byte) print_byte::b#5 test_8u::@9/(byte) print_byte::b#6 )
  [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4
  [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
  [67] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15
  [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
  [70] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [71] return 
  to:@return
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2
  [72] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 )
  [72] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' )
  [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5
  [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [75] return 
  to:@return
print_str: scope:[print_str]  from test_16s::@4 test_16s::@6 test_16s::@8 test_16u::@4 test_16u::@6 test_16u::@8 test_8s::@4 test_8s::@6 test_8s::@8 test_8u::@4 test_8u::@6 test_8u::@8
  [76] (byte*) print_str::str#15 ← phi( test_16s::@4/(const string) str test_16s::@6/(const string) str1 test_16s::@8/(const string) str2 test_16u::@4/(const string) str test_16u::@6/(const string) str1 test_16u::@8/(const string) str2 test_8s::@4/(const string) str test_8s::@6/(const string) str1 test_8s::@8/(const string) str2 test_8u::@4/(const string) str test_8u::@6/(const string) str1 test_8u::@8/(const string) str2 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [77] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 )
  [77] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 )
  [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [79] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13)
  [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128
  [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13
  to:print_str::@1
div16s: scope:[div16s]  from test_16s::@1
  [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0
  [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0
  [85] call divr16s 
  [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
  to:div16s::@2
div16s::@2: scope:[div16s]  from div16s
  [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3
  to:div16s::@return
div16s::@return: scope:[div16s]  from div16s::@2
  [88] return 
  to:@return
divr16s: scope:[divr16s]  from div16s
  [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
  to:divr16s::@17
divr16s::@17: scope:[divr16s]  from divr16s
  [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0
  to:divr16s::@2
divr16s::@2: scope:[divr16s]  from divr16s::@1 divr16s::@17
  [91] (word) divr16s::remu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::rem#0 divr16s::@17/((word))(const signed word) divr16s::rem#0 )
  [91] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@17/(word~) divr16s::dividendu#8 )
  [91] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
  to:divr16s::@18
divr16s::@18: scope:[divr16s]  from divr16s::@2
  [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
  to:divr16s::@4
divr16s::@4: scope:[divr16s]  from divr16s::@18 divr16s::@3
  [94] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 )
  [94] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 )
  [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3
  [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3
  [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3
  [98] call divr16u 
  [99] (word) divr16u::return#3 ← (word) divr16u::return#0
  to:divr16s::@15
divr16s::@15: scope:[divr16s]  from divr16s::@4
  [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3
  [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19
  to:divr16s::@11
divr16s::@11: scope:[divr16s]  from divr16s::@15
  [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1
  [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
  to:divr16s::@return
divr16s::@return: scope:[divr16s]  from divr16s::@11 divr16s::@19
  [104] (signed word) rem16s#11 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@19/(signed word~) rem16s#37 )
  [104] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 )
  [105] return 
  to:@return
divr16s::@19: scope:[divr16s]  from divr16s::@15
  [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
  [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1
  to:divr16s::@return
divr16s::@3: scope:[divr16s]  from divr16s::@2
  [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0
  [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
  [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
  to:divr16s::@4
divr16s::@1: scope:[divr16s]  from divr16s
  [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0
  [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5
  to:divr16s::@2
divr16u: scope:[divr16u]  from div16u divr16s::@4
  [113] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 )
  [113] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 )
  [113] (word) divr16u::rem#10 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16s::@4/(word) divr16u::rem#4 )
  to:divr16u::@1
divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
  [114] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
  [114] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
  [114] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
  [114] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
  [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
  [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
  [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
  to:divr16u::@4
divr16u::@4: scope:[divr16u]  from divr16u::@1
  [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
  to:divr16u::@2
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  [120] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
  [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3
  to:divr16u::@5
divr16u::@5: scope:[divr16u]  from divr16u::@2
  [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
  [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6
  to:divr16u::@3
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  [126] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
  [126] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
  [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
  [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
  to:divr16u::@6
divr16u::@6: scope:[divr16u]  from divr16u::@3
  [129] (word) rem16u#1 ← (word) divr16u::rem#11
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@6
  [130] return 
  to:@return
test_8s: scope:[test_8s]  from main::@3
  [131] phi()
  to:test_8s::@1
test_8s::@1: scope:[test_8s]  from test_8s test_8s::@11
  [132] (byte) test_8s::i#10 ← phi( test_8s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8s::@11/(byte) test_8s::i#1 )
  [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10)
  [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10)
  [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0
  [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0
  [137] call div8s 
  [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2
  to:test_8s::@3
test_8s::@3: scope:[test_8s]  from test_8s::@1
  [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3
  [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0
  [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1
  [142] call print_sbyte 
  to:test_8s::@4
test_8s::@4: scope:[test_8s]  from test_8s::@3
  [143] phi()
  [144] call print_str 
  to:test_8s::@5
test_8s::@5: scope:[test_8s]  from test_8s::@4
  [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0
  [146] call print_sbyte 
  to:test_8s::@6
test_8s::@6: scope:[test_8s]  from test_8s::@5
  [147] phi()
  [148] call print_str 
  to:test_8s::@7
test_8s::@7: scope:[test_8s]  from test_8s::@6
  [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0
  [150] call print_sbyte 
  to:test_8s::@8
test_8s::@8: scope:[test_8s]  from test_8s::@7
  [151] phi()
  [152] call print_str 
  to:test_8s::@9
test_8s::@9: scope:[test_8s]  from test_8s::@8
  [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3
  [154] call print_sbyte 
  to:test_8s::@10
test_8s::@10: scope:[test_8s]  from test_8s::@9
  [155] phi()
  [156] call print_ln 
  to:test_8s::@11
test_8s::@11: scope:[test_8s]  from test_8s::@10
  [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10
  [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1
  to:test_8s::@return
test_8s::@return: scope:[test_8s]  from test_8s::@11
  [159] return 
  to:@return
print_sbyte: scope:[print_sbyte]  from test_8s::@3 test_8s::@5 test_8s::@7 test_8s::@9
  [160] (byte*) print_char_cursor#132 ← phi( test_8s::@3/(byte*~) print_char_cursor#184 test_8s::@5/(byte*) print_char_cursor#128 test_8s::@7/(byte*) print_char_cursor#128 test_8s::@9/(byte*) print_char_cursor#128 )
  [160] (signed byte) print_sbyte::b#10 ← phi( test_8s::@3/(signed byte) print_sbyte::b#1 test_8s::@5/(signed byte) print_sbyte::b#2 test_8s::@7/(signed byte) print_sbyte::b#3 test_8s::@9/(signed byte) print_sbyte::b#4 )
  [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1
  to:print_sbyte::@3
print_sbyte::@3: scope:[print_sbyte]  from print_sbyte
  [162] phi()
  [163] call print_char 
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@3 print_sbyte::@5
  [164] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 )
  [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7
  [166] call print_byte 
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@2
  [167] return 
  to:@return
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte
  [168] phi()
  [169] call print_char 
  to:print_sbyte::@5
print_sbyte::@5: scope:[print_sbyte]  from print_sbyte::@1
  [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10
  to:print_sbyte::@2
div8s: scope:[div8s]  from test_8s::@1
  [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1
  to:div8s::@16
div8s::@16: scope:[div8s]  from div8s
  [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0
  to:div8s::@2
div8s::@2: scope:[div8s]  from div8s::@1 div8s::@16
  [173] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@16/(byte~) div8s::dividendu#8 )
  [173] (byte) div8s::neg#3 ← phi( div8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 div8s::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3
  to:div8s::@17
div8s::@17: scope:[div8s]  from div8s::@2
  [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0
  to:div8s::@4
div8s::@4: scope:[div8s]  from div8s::@17 div8s::@3
  [176] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@17/(byte) div8s::neg#3 )
  [176] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@17/(byte~) div8s::divisoru#5 )
  [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3
  [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3
  [179] call div8u 
  [180] (byte) div8u::return#2 ← (byte) div8u::return#0
  to:div8s::@15
div8s::@15: scope:[div8s]  from div8s::@4
  [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2
  [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18
  to:div8s::@11
div8s::@11: scope:[div8s]  from div8s::@15
  [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17
  [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0
  to:div8s::@return
div8s::@return: scope:[div8s]  from div8s::@11 div8s::@18
  [185] (signed byte) rem8s#3 ← phi( div8s::@11/(signed byte) rem8s#2 div8s::@18/(signed byte~) rem8s#33 )
  [185] (signed byte) div8s::return#2 ← phi( div8s::@11/(signed byte) div8s::return#1 div8s::@18/(signed byte~) div8s::return#7 )
  [186] return 
  to:@return
div8s::@18: scope:[div8s]  from div8s::@15
  [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0
  [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17
  to:div8s::@return
div8s::@3: scope:[div8s]  from div8s::@2
  [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0
  [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
  [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6
  to:div8s::@4
div8s::@1: scope:[div8s]  from div8s
  [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0
  [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2
  to:div8s::@2
div8u: scope:[div8u]  from div8s::@4 test_8u::@1
  [194] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 )
  [194] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 )
  [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2
  [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2
  [197] call divr8u 
  [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1
  to:div8u::@2
div8u::@2: scope:[div8u]  from div8u
  [199] (byte) div8u::return#0 ← (byte) divr8u::return#0
  to:div8u::@return
div8u::@return: scope:[div8u]  from div8u::@2
  [200] return 
  to:@return
divr8u: scope:[divr8u]  from div8u
  [201] phi()
  to:divr8u::@1
divr8u::@1: scope:[divr8u]  from divr8u divr8u::@3
  [202] (byte) divr8u::i#2 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::i#1 )
  [202] (byte) divr8u::quotient#3 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::return#1 )
  [202] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 )
  [202] (byte) divr8u::rem#4 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::rem#10 )
  [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128
  [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2
  to:divr8u::@4
divr8u::@4: scope:[divr8u]  from divr8u::@1
  [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1
  to:divr8u::@2
divr8u::@2: scope:[divr8u]  from divr8u::@1 divr8u::@4
  [207] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 )
  [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3
  to:divr8u::@5
divr8u::@5: scope:[divr8u]  from divr8u::@2
  [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1
  [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0
  to:divr8u::@3
divr8u::@3: scope:[divr8u]  from divr8u::@2 divr8u::@5
  [213] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 )
  [213] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 )
  [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2
  [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1
  to:divr8u::@6
divr8u::@6: scope:[divr8u]  from divr8u::@3
  [216] (byte) rem8u#17 ← (byte) divr8u::rem#10
  to:divr8u::@return
divr8u::@return: scope:[divr8u]  from divr8u::@6
  [217] return 
  to:@return
test_16u: scope:[test_16u]  from main::@2
  [218] phi()
  to:test_16u::@1
test_16u::@1: scope:[test_16u]  from test_16u test_16u::@11
  [219] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@11/(byte) test_16u::i#1 )
  [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10)
  [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10)
  [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0
  [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0
  [224] call div16u 
  [225] (word) div16u::return#2 ← (word) div16u::return#0
  to:test_16u::@3
test_16u::@3: scope:[test_16u]  from test_16u::@1
  [226] (word) test_16u::res#0 ← (word) div16u::return#2
  [227] (word) print_word::w#1 ← (word) test_16u::dividend#0
  [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1
  [229] call print_word 
  to:test_16u::@4
test_16u::@4: scope:[test_16u]  from test_16u::@3
  [230] phi()
  [231] call print_str 
  to:test_16u::@5
test_16u::@5: scope:[test_16u]  from test_16u::@4
  [232] (word) print_word::w#2 ← (word) test_16u::divisor#0
  [233] call print_word 
  to:test_16u::@6
test_16u::@6: scope:[test_16u]  from test_16u::@5
  [234] phi()
  [235] call print_str 
  to:test_16u::@7
test_16u::@7: scope:[test_16u]  from test_16u::@6
  [236] (word) print_word::w#3 ← (word) test_16u::res#0
  [237] call print_word 
  to:test_16u::@8
test_16u::@8: scope:[test_16u]  from test_16u::@7
  [238] phi()
  [239] call print_str 
  to:test_16u::@9
test_16u::@9: scope:[test_16u]  from test_16u::@8
  [240] (word) print_word::w#4 ← (word) rem16u#1
  [241] call print_word 
  to:test_16u::@10
test_16u::@10: scope:[test_16u]  from test_16u::@9
  [242] phi()
  [243] call print_ln 
  to:test_16u::@11
test_16u::@11: scope:[test_16u]  from test_16u::@10
  [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2
  [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1
  to:test_16u::@return
test_16u::@return: scope:[test_16u]  from test_16u::@11
  [246] return 
  to:@return
div16u: scope:[div16u]  from test_16u::@1
  [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0
  [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0
  [249] call divr16u 
  [250] (word) divr16u::return#2 ← (word) divr16u::return#0
  to:div16u::@2
div16u::@2: scope:[div16u]  from div16u
  [251] (word) div16u::return#0 ← (word) divr16u::return#2
  to:div16u::@return
div16u::@return: scope:[div16u]  from div16u::@2
  [252] return 
  to:@return
test_8u: scope:[test_8u]  from main::@1
  [253] phi()
  to:test_8u::@1
test_8u::@1: scope:[test_8u]  from test_8u test_8u::@12
  [254] (byte*) print_line_cursor#41 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) 1024 test_8u::@12/(byte*) print_line_cursor#1 )
  [254] (byte*) print_char_cursor#138 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) 1024 test_8u::@12/(byte*~) print_char_cursor#188 )
  [254] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@12/(byte) test_8u::i#1 )
  [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10)
  [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10)
  [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0
  [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0
  [259] call div8u 
  [260] (byte) div8u::return#3 ← (byte) div8u::return#0
  to:test_8u::@3
test_8u::@3: scope:[test_8u]  from test_8u::@1
  [261] (byte) test_8u::res#0 ← (byte) div8u::return#3
  [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0
  [263] call print_byte 
  to:test_8u::@4
test_8u::@4: scope:[test_8u]  from test_8u::@3
  [264] phi()
  [265] call print_str 
  to:test_8u::@5
test_8u::@5: scope:[test_8u]  from test_8u::@4
  [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0
  [267] call print_byte 
  to:test_8u::@6
test_8u::@6: scope:[test_8u]  from test_8u::@5
  [268] phi()
  [269] call print_str 
  to:test_8u::@7
test_8u::@7: scope:[test_8u]  from test_8u::@6
  [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0
  [271] call print_byte 
  to:test_8u::@8
test_8u::@8: scope:[test_8u]  from test_8u::@7
  [272] phi()
  [273] call print_str 
  to:test_8u::@9
test_8u::@9: scope:[test_8u]  from test_8u::@8
  [274] (byte) print_byte::b#6 ← (byte) rem8u#17
  [275] call print_byte 
  to:test_8u::@10
test_8u::@10: scope:[test_8u]  from test_8u::@9
  [276] phi()
  [277] call print_ln 
  to:test_8u::@11
test_8u::@11: scope:[test_8u]  from test_8u::@10
  [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10
  [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12
  to:test_8u::@return
test_8u::@return: scope:[test_8u]  from test_8u::@11
  [280] return 
  to:@return
test_8u::@12: scope:[test_8u]  from test_8u::@11
  [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1
  to:test_8u::@1
print_cls: scope:[print_cls]  from main
  [282] phi()
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  [283] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
  [284] *((byte*) print_cls::sc#2) ← (byte) ' '
  [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
  [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  [287] return 
  to:@return


VARIABLE REGISTER WEIGHTS
(signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor)
(signed word) div16s::dividend
(signed word) div16s::dividend#0 6.5
(signed word) div16s::divisor
(signed word) div16s::divisor#0 6.5
(signed word) div16s::return
(signed word) div16s::return#0 4.333333333333333
(signed word) div16s::return#2 22.0
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
(word) div16u::dividend
(word) div16u::dividend#0 6.5
(word) div16u::divisor
(word) div16u::divisor#0 6.5
(word) div16u::return
(word) div16u::return#0 4.333333333333333
(word) div16u::return#2 22.0
(signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor)
(signed byte~) div8s::$2 2.0
(signed byte~) div8s::$6 1.0
(signed byte) div8s::dividend
(signed byte) div8s::dividend#0 5.0
(byte) div8s::dividendu
(byte) div8s::dividendu#3 0.8571428571428571
(byte~) div8s::dividendu#7 4.0
(byte~) div8s::dividendu#8 4.0
(signed byte) div8s::divisor
(signed byte) div8s::divisor#0 2.142857142857143
(byte) div8s::divisoru
(byte) div8s::divisoru#3 3.0
(byte~) div8s::divisoru#4 4.0
(byte~) div8s::divisoru#5 4.0
(byte) div8s::neg
(byte) div8s::neg#2 2.0
(byte) div8s::neg#3 1.0
(byte) div8s::neg#4 1.0
(byte) div8s::resultu
(byte) div8s::resultu#0 0.6666666666666666
(signed byte) div8s::return
(signed byte) div8s::return#1 4.0
(signed byte) div8s::return#2 5.0
(signed byte) div8s::return#3 22.0
(signed byte~) div8s::return#7 2.0
(byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor)
(byte) div8u::dividend
(byte) div8u::dividend#0 2.0
(byte) div8u::dividend#1 11.0
(byte) div8u::dividend#2 15.0
(byte) div8u::divisor
(byte) div8u::divisor#0 4.0
(byte) div8u::divisor#1 22.0
(byte) div8u::divisor#2 7.5
(byte) div8u::return
(byte) div8u::return#0 3.75
(byte) div8u::return#2 4.0
(byte) div8u::return#3 22.0
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(signed word~) divr16s::$11 1.0
(signed word~) divr16s::$5 2.0
(signed word) divr16s::dividend
(signed word) divr16s::dividend#0 2.0
(word) divr16s::dividendu
(word) divr16s::dividendu#3 0.8571428571428571
(word~) divr16s::dividendu#7 4.0
(word~) divr16s::dividendu#8 4.0
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0 0.8571428571428571
(word) divr16s::divisoru
(word) divr16s::divisoru#3 3.0
(word~) divr16s::divisoru#4 4.0
(word~) divr16s::divisoru#5 4.0
(byte) divr16s::neg
(byte) divr16s::neg#2 2.0
(byte) divr16s::neg#3 1.0
(byte) divr16s::neg#4 0.8571428571428571
(signed word) divr16s::rem
(word) divr16s::remu
(word) divr16s::remu#3 0.2222222222222222
(word) divr16s::resultu
(word) divr16s::resultu#0 0.6666666666666666
(signed word) divr16s::return
(signed word) divr16s::return#1 4.0
(signed word) divr16s::return#2 2.0
(signed word) divr16s::return#3 4.0
(signed word~) divr16s::return#7 2.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 202.0
(byte~) divr16u::$2 202.0
(word) divr16u::dividend
(word) divr16u::dividend#0 25.25
(word) divr16u::dividend#1 2.0
(word) divr16u::dividend#2 1.3333333333333333
(word) divr16u::dividend#3 43.57142857142858
(word) divr16u::dividend#5 6.0
(word) divr16u::divisor
(word) divr16u::divisor#0 4.0
(word) divr16u::divisor#1 2.0
(word) divr16u::divisor#6 12.875
(byte) divr16u::i
(byte) divr16u::i#1 151.5
(byte) divr16u::i#2 15.538461538461538
(word) divr16u::quotient
(word) divr16u::quotient#1 151.5
(word) divr16u::quotient#2 101.0
(word) divr16u::quotient#3 25.25
(word) divr16u::rem
(word) divr16u::rem#0 75.75
(word) divr16u::rem#1 202.0
(word) divr16u::rem#10 4.0
(word) divr16u::rem#11 101.66666666666667
(word) divr16u::rem#2 202.0
(word) divr16u::rem#4 4.0
(word) divr16u::rem#5 204.0
(word) divr16u::rem#6 101.0
(word) divr16u::return
(word) divr16u::return#0 43.85714285714286
(word) divr16u::return#2 4.0
(word) divr16u::return#3 4.0
(byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem)
(byte~) divr8u::$1 202.0
(byte) divr8u::dividend
(byte) divr8u::dividend#0 1.3333333333333333
(byte) divr8u::dividend#1 25.25
(byte) divr8u::dividend#2 50.83333333333333
(byte) divr8u::divisor
(byte) divr8u::divisor#0 12.75
(byte) divr8u::i
(byte) divr8u::i#1 151.5
(byte) divr8u::i#2 16.833333333333332
(byte) divr8u::quotient
(byte) divr8u::quotient#1 151.5
(byte) divr8u::quotient#2 101.0
(byte) divr8u::quotient#3 28.857142857142858
(byte) divr8u::rem
(byte) divr8u::rem#1 101.0
(byte) divr8u::rem#10 101.66666666666667
(byte) divr8u::rem#2 202.0
(byte) divr8u::rem#3 202.0
(byte) divr8u::rem#4 202.0
(byte) divr8u::rem#5 101.0
(byte) divr8u::return
(byte) divr8u::return#0 4.0
(byte) divr8u::return#1 50.83333333333333
(void()) main()
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 4.0
(byte~) print_byte::$2 4.0
(byte) print_byte::b
(byte) print_byte::b#1 4.0
(byte) print_byte::b#2 4.0
(byte) print_byte::b#3 22.0
(byte) print_byte::b#4 22.0
(byte) print_byte::b#5 22.0
(byte) print_byte::b#6 22.0
(byte) print_byte::b#7 13.5
(byte~) print_byte::b#9 4.0
(void()) print_char((byte) print_char::ch)
(byte) print_char::ch
(byte) print_char::ch#3 4.0
(byte) print_char::ch#4 4.0
(byte) print_char::ch#5 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 101.0
(byte*) print_char_cursor#128 15.607142857142856
(byte*) print_char_cursor#130 3.0
(byte*) print_char_cursor#131 15.999999999999998
(byte*) print_char_cursor#132 12.0
(byte*) print_char_cursor#135 24.0
(byte*) print_char_cursor#136 17.333333333333332
(byte*) print_char_cursor#138 2.4444444444444446
(byte*~) print_char_cursor#159 22.0
(byte*~) print_char_cursor#166 22.0
(byte*) print_char_cursor#18 1.9152542372881352
(byte*~) print_char_cursor#184 22.0
(byte*~) print_char_cursor#188 22.0
(byte*) print_char_cursor#82 7.0
(void()) print_cls()
(byte*) print_cls::sc
(byte*) print_cls::sc#1 16.5
(byte*) print_cls::sc#2 16.5
(byte[]) print_hextab
(byte*) print_line_cursor
(byte*) print_line_cursor#1 3.9099999999999993
(byte*) print_line_cursor#20 204.0
(byte*) print_line_cursor#39 46.0
(byte*) print_line_cursor#41 0.9565217391304348
(void()) print_ln()
(void()) print_sbyte((signed byte) print_sbyte::b)
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0 4.0
(signed byte) print_sbyte::b#1 11.0
(signed byte) print_sbyte::b#10 8.333333333333332
(signed byte) print_sbyte::b#2 22.0
(signed byte) print_sbyte::b#3 22.0
(signed byte) print_sbyte::b#4 22.0
(signed byte) print_sbyte::b#7 4.0
(byte*) print_screen
(void()) print_str((byte*) print_str::str)
(byte*) print_str::str
(byte*) print_str::str#0 202.0
(byte*) print_str::str#13 101.5
(byte*) print_str::str#15 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 11.0
(signed word) print_sword::w#2 22.0
(signed word) print_sword::w#3 22.0
(signed word) print_sword::w#4 22.0
(signed word) print_sword::w#5 12.5
(signed word) print_sword::w#6 4.0
(void()) print_word((word) print_word::w)
(word) print_word::w
(word) print_word::w#1 11.0
(word) print_word::w#2 22.0
(word) print_word::w#3 22.0
(word) print_word::w#4 22.0
(word) print_word::w#5 16.666666666666664
(word~) print_word::w#7 4.0
(signed word) rem16s
(signed word) rem16s#11 0.6818181818181819
(signed word) rem16s#2 2.0
(signed word~) rem16s#37 4.0
(word) rem16u
(word) rem16u#1 0.48148148148148145
(signed byte) rem8s
(signed byte) rem8s#2 2.0
(signed byte) rem8s#3 0.8333333333333335
(signed byte~) rem8s#33 4.0
(byte) rem8u
(byte) rem8u#17 0.5
(void()) test_16s()
(signed word) test_16s::dividend
(signed word) test_16s::dividend#0 4.714285714285714
(signed word[]) test_16s::dividends
(signed word) test_16s::divisor
(signed word) test_16s::divisor#0 3.0
(signed word[]) test_16s::divisors
(byte) test_16s::i
(byte) test_16s::i#1 16.5
(byte) test_16s::i#10 1.76
(signed word) test_16s::res
(signed word) test_16s::res#0 2.2
(void()) test_16u()
(word) test_16u::dividend
(word) test_16u::dividend#0 4.714285714285714
(word[]) test_16u::dividends
(word) test_16u::divisor
(word) test_16u::divisor#0 3.0
(word[]) test_16u::divisors
(byte) test_16u::i
(byte) test_16u::i#1 16.5
(byte) test_16u::i#10 1.76
(word) test_16u::res
(word) test_16u::res#0 2.2
(void()) test_8s()
(signed byte) test_8s::dividend
(signed byte) test_8s::dividend#0 4.714285714285714
(signed byte[]) test_8s::dividends
(signed byte) test_8s::divisor
(signed byte) test_8s::divisor#0 3.0
(signed byte[]) test_8s::divisors
(byte) test_8s::i
(byte) test_8s::i#1 16.5
(byte) test_8s::i#10 1.76
(signed byte) test_8s::res
(signed byte) test_8s::res#0 2.2
(void()) test_8u()
(byte) test_8u::dividend
(byte) test_8u::dividend#0 4.714285714285714
(byte[]) test_8u::dividends
(byte) test_8u::divisor
(byte) test_8u::divisor#0 3.3000000000000003
(byte[]) test_8u::divisors
(byte) test_8u::i
(byte) test_8u::i#1 11.0
(byte) test_8u::i#10 1.8333333333333333
(byte) test_8u::rem
(byte) test_8u::res
(byte) test_8u::res#0 2.4444444444444446

Initial phi equivalence classes
[ test_16s::i#10 test_16s::i#1 ]
[ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ]
[ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ]
[ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ]
[ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ]
[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
[ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ]
[ print_str::str#13 print_str::str#15 print_str::str#0 ]
[ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ]
[ divr16s::remu#3 ]
[ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
[ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
[ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
[ rem16s#11 rem16s#2 rem16s#37 ]
[ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ]
[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ]
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
[ divr16u::i#2 divr16u::i#1 ]
[ test_8s::i#10 test_8s::i#1 ]
[ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ]
[ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ]
[ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ]
[ div8s::neg#4 div8s::neg#2 div8s::neg#3 ]
[ div8s::return#2 div8s::return#1 div8s::return#7 ]
[ rem8s#3 rem8s#2 rem8s#33 ]
[ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ]
[ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ]
[ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ]
[ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ]
[ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
[ divr8u::i#2 divr8u::i#1 ]
[ test_16u::i#10 test_16u::i#1 ]
[ test_8u::i#10 test_8u::i#1 ]
[ print_cls::sc#2 print_cls::sc#1 ]
Added variable test_16s::dividend#0 to zero page equivalence class [ test_16s::dividend#0 ]
Added variable test_16s::divisor#0 to zero page equivalence class [ test_16s::divisor#0 ]
Added variable div16s::dividend#0 to zero page equivalence class [ div16s::dividend#0 ]
Added variable div16s::divisor#0 to zero page equivalence class [ div16s::divisor#0 ]
Added variable div16s::return#2 to zero page equivalence class [ div16s::return#2 ]
Added variable test_16s::res#0 to zero page equivalence class [ test_16s::res#0 ]
Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ]
Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ]
Added variable divr16s::dividend#0 to zero page equivalence class [ divr16s::dividend#0 ]
Added variable divr16s::divisor#0 to zero page equivalence class [ divr16s::divisor#0 ]
Added variable divr16s::return#3 to zero page equivalence class [ divr16s::return#3 ]
Added variable div16s::return#0 to zero page equivalence class [ div16s::return#0 ]
Added variable divr16u::return#3 to zero page equivalence class [ divr16u::return#3 ]
Added variable divr16s::resultu#0 to zero page equivalence class [ divr16s::resultu#0 ]
Added variable divr16s::$11 to zero page equivalence class [ divr16s::$11 ]
Added variable divr16s::$5 to zero page equivalence class [ divr16s::$5 ]
Added variable divr16u::$1 to zero page equivalence class [ divr16u::$1 ]
Added variable divr16u::$2 to zero page equivalence class [ divr16u::$2 ]
Added variable rem16u#1 to zero page equivalence class [ rem16u#1 ]
Added variable test_8s::dividend#0 to zero page equivalence class [ test_8s::dividend#0 ]
Added variable test_8s::divisor#0 to zero page equivalence class [ test_8s::divisor#0 ]
Added variable div8s::dividend#0 to zero page equivalence class [ div8s::dividend#0 ]
Added variable div8s::divisor#0 to zero page equivalence class [ div8s::divisor#0 ]
Added variable div8s::return#3 to zero page equivalence class [ div8s::return#3 ]
Added variable test_8s::res#0 to zero page equivalence class [ test_8s::res#0 ]
Added variable div8u::return#2 to zero page equivalence class [ div8u::return#2 ]
Added variable div8s::resultu#0 to zero page equivalence class [ div8s::resultu#0 ]
Added variable div8s::$6 to zero page equivalence class [ div8s::$6 ]
Added variable div8s::$2 to zero page equivalence class [ div8s::$2 ]
Added variable divr8u::divisor#0 to zero page equivalence class [ divr8u::divisor#0 ]
Added variable divr8u::return#0 to zero page equivalence class [ divr8u::return#0 ]
Added variable div8u::return#0 to zero page equivalence class [ div8u::return#0 ]
Added variable divr8u::$1 to zero page equivalence class [ divr8u::$1 ]
Added variable rem8u#17 to zero page equivalence class [ rem8u#17 ]
Added variable test_16u::dividend#0 to zero page equivalence class [ test_16u::dividend#0 ]
Added variable test_16u::divisor#0 to zero page equivalence class [ test_16u::divisor#0 ]
Added variable div16u::dividend#0 to zero page equivalence class [ div16u::dividend#0 ]
Added variable div16u::divisor#0 to zero page equivalence class [ div16u::divisor#0 ]
Added variable div16u::return#2 to zero page equivalence class [ div16u::return#2 ]
Added variable test_16u::res#0 to zero page equivalence class [ test_16u::res#0 ]
Added variable divr16u::return#2 to zero page equivalence class [ divr16u::return#2 ]
Added variable div16u::return#0 to zero page equivalence class [ div16u::return#0 ]
Added variable test_8u::dividend#0 to zero page equivalence class [ test_8u::dividend#0 ]
Added variable test_8u::divisor#0 to zero page equivalence class [ test_8u::divisor#0 ]
Added variable div8u::return#3 to zero page equivalence class [ div8u::return#3 ]
Added variable test_8u::res#0 to zero page equivalence class [ test_8u::res#0 ]
Complete equivalence classes
[ test_16s::i#10 test_16s::i#1 ]
[ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ]
[ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ]
[ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ]
[ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ]
[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
[ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ]
[ print_str::str#13 print_str::str#15 print_str::str#0 ]
[ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ]
[ divr16s::remu#3 ]
[ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
[ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
[ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
[ rem16s#11 rem16s#2 rem16s#37 ]
[ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ]
[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ]
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
[ divr16u::i#2 divr16u::i#1 ]
[ test_8s::i#10 test_8s::i#1 ]
[ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ]
[ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ]
[ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ]
[ div8s::neg#4 div8s::neg#2 div8s::neg#3 ]
[ div8s::return#2 div8s::return#1 div8s::return#7 ]
[ rem8s#3 rem8s#2 rem8s#33 ]
[ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ]
[ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ]
[ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ]
[ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ]
[ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
[ divr8u::i#2 divr8u::i#1 ]
[ test_16u::i#10 test_16u::i#1 ]
[ test_8u::i#10 test_8u::i#1 ]
[ print_cls::sc#2 print_cls::sc#1 ]
[ test_16s::dividend#0 ]
[ test_16s::divisor#0 ]
[ div16s::dividend#0 ]
[ div16s::divisor#0 ]
[ div16s::return#2 ]
[ test_16s::res#0 ]
[ print_byte::$0 ]
[ print_byte::$2 ]
[ divr16s::dividend#0 ]
[ divr16s::divisor#0 ]
[ divr16s::return#3 ]
[ div16s::return#0 ]
[ divr16u::return#3 ]
[ divr16s::resultu#0 ]
[ divr16s::$11 ]
[ divr16s::$5 ]
[ divr16u::$1 ]
[ divr16u::$2 ]
[ rem16u#1 ]
[ test_8s::dividend#0 ]
[ test_8s::divisor#0 ]
[ div8s::dividend#0 ]
[ div8s::divisor#0 ]
[ div8s::return#3 ]
[ test_8s::res#0 ]
[ div8u::return#2 ]
[ div8s::resultu#0 ]
[ div8s::$6 ]
[ div8s::$2 ]
[ divr8u::divisor#0 ]
[ divr8u::return#0 ]
[ div8u::return#0 ]
[ divr8u::$1 ]
[ rem8u#17 ]
[ test_16u::dividend#0 ]
[ test_16u::divisor#0 ]
[ div16u::dividend#0 ]
[ div16u::divisor#0 ]
[ div16u::return#2 ]
[ test_16u::res#0 ]
[ divr16u::return#2 ]
[ div16u::return#0 ]
[ test_8u::dividend#0 ]
[ test_8u::divisor#0 ]
[ div8u::return#3 ]
[ test_8u::res#0 ]
Allocated zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ]
Allocated zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ]
Allocated zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ]
Allocated zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ]
Allocated zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ]
Allocated zp ZP_BYTE:10 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
Allocated zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ]
Allocated zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ]
Allocated zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ]
Allocated zp ZP_WORD:17 [ divr16s::remu#3 ]
Allocated zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
Allocated zp ZP_BYTE:21 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
Allocated zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
Allocated zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ]
Allocated zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ]
Allocated zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
Allocated zp ZP_WORD:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ]
Allocated zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
Allocated zp ZP_BYTE:34 [ divr16u::i#2 divr16u::i#1 ]
Allocated zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ]
Allocated zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ]
Allocated zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ]
Allocated zp ZP_BYTE:38 [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ]
Allocated zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ]
Allocated zp ZP_BYTE:40 [ div8s::return#2 div8s::return#1 div8s::return#7 ]
Allocated zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ]
Allocated zp ZP_BYTE:42 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ]
Allocated zp ZP_BYTE:43 [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ]
Allocated zp ZP_BYTE:44 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ]
Allocated zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ]
Allocated zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
Allocated zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ]
Allocated zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ]
Allocated zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ]
Allocated zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ]
Allocated zp ZP_WORD:52 [ test_16s::dividend#0 ]
Allocated zp ZP_WORD:54 [ test_16s::divisor#0 ]
Allocated zp ZP_WORD:56 [ div16s::dividend#0 ]
Allocated zp ZP_WORD:58 [ div16s::divisor#0 ]
Allocated zp ZP_WORD:60 [ div16s::return#2 ]
Allocated zp ZP_WORD:62 [ test_16s::res#0 ]
Allocated zp ZP_BYTE:64 [ print_byte::$0 ]
Allocated zp ZP_BYTE:65 [ print_byte::$2 ]
Allocated zp ZP_WORD:66 [ divr16s::dividend#0 ]
Allocated zp ZP_WORD:68 [ divr16s::divisor#0 ]
Allocated zp ZP_WORD:70 [ divr16s::return#3 ]
Allocated zp ZP_WORD:72 [ div16s::return#0 ]
Allocated zp ZP_WORD:74 [ divr16u::return#3 ]
Allocated zp ZP_WORD:76 [ divr16s::resultu#0 ]
Allocated zp ZP_WORD:78 [ divr16s::$11 ]
Allocated zp ZP_WORD:80 [ divr16s::$5 ]
Allocated zp ZP_BYTE:82 [ divr16u::$1 ]
Allocated zp ZP_BYTE:83 [ divr16u::$2 ]
Allocated zp ZP_WORD:84 [ rem16u#1 ]
Allocated zp ZP_BYTE:86 [ test_8s::dividend#0 ]
Allocated zp ZP_BYTE:87 [ test_8s::divisor#0 ]
Allocated zp ZP_BYTE:88 [ div8s::dividend#0 ]
Allocated zp ZP_BYTE:89 [ div8s::divisor#0 ]
Allocated zp ZP_BYTE:90 [ div8s::return#3 ]
Allocated zp ZP_BYTE:91 [ test_8s::res#0 ]
Allocated zp ZP_BYTE:92 [ div8u::return#2 ]
Allocated zp ZP_BYTE:93 [ div8s::resultu#0 ]
Allocated zp ZP_BYTE:94 [ div8s::$6 ]
Allocated zp ZP_BYTE:95 [ div8s::$2 ]
Allocated zp ZP_BYTE:96 [ divr8u::divisor#0 ]
Allocated zp ZP_BYTE:97 [ divr8u::return#0 ]
Allocated zp ZP_BYTE:98 [ div8u::return#0 ]
Allocated zp ZP_BYTE:99 [ divr8u::$1 ]
Allocated zp ZP_BYTE:100 [ rem8u#17 ]
Allocated zp ZP_WORD:101 [ test_16u::dividend#0 ]
Allocated zp ZP_WORD:103 [ test_16u::divisor#0 ]
Allocated zp ZP_WORD:105 [ div16u::dividend#0 ]
Allocated zp ZP_WORD:107 [ div16u::divisor#0 ]
Allocated zp ZP_WORD:109 [ div16u::return#2 ]
Allocated zp ZP_WORD:111 [ test_16u::res#0 ]
Allocated zp ZP_WORD:113 [ divr16u::return#2 ]
Allocated zp ZP_WORD:115 [ div16u::return#0 ]
Allocated zp ZP_BYTE:117 [ test_8u::dividend#0 ]
Allocated zp ZP_BYTE:118 [ test_8u::divisor#0 ]
Allocated zp ZP_BYTE:119 [ div8u::return#3 ]
Allocated zp ZP_BYTE:120 [ test_8u::res#0 ]

INITIAL ASM
//SEG0 File Comments
// Test the binary division library
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label print_char_cursor = $b
  .label print_line_cursor = 3
  .label rem16u = $54
  .label rem8s = $29
  .label rem16s = $18
  .label rem8u = $64
//SEG3 @begin
bbegin:
//SEG4 [1] phi from @begin to @32 [phi:@begin->@32]
b32_from_bbegin:
  jmp b32
//SEG5 @32
b32:
//SEG6 [2] call main 
//SEG7 [4] phi from @32 to main [phi:@32->main]
main_from_b32:
  jsr main
//SEG8 [3] phi from @32 to @end [phi:@32->@end]
bend_from_b32:
  jmp bend
//SEG9 @end
bend:
//SEG10 main
main: {
  //SEG11 [5] call print_cls 
  //SEG12 [282] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
  //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
  b1_from_main:
    jmp b1
  //SEG14 main::@1
  b1:
  //SEG15 [7] call test_8u 
  //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u]
  test_8u_from_b1:
    jsr test_8u
  //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
  //SEG18 main::@2
  b2:
  //SEG19 [9] call test_16u 
  //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u]
  test_16u_from_b2:
    jsr test_16u
  //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  b3_from_b2:
    jmp b3
  //SEG22 main::@3
  b3:
  //SEG23 [11] call test_8s 
  //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s]
  test_8s_from_b3:
    jsr test_8s
  //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  b4_from_b3:
    jmp b4
  //SEG26 main::@4
  b4:
  //SEG27 [13] call test_16s 
  //SEG28 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s]
  test_16s_from_b4:
    jsr test_16s
    jmp breturn
  //SEG29 main::@return
  breturn:
  //SEG30 [14] return 
    rts
}
//SEG31 test_16s
test_16s: {
    .label dividend = $34
    .label divisor = $36
    .label res = $3e
    .label i = 2
  //SEG32 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1]
  b1_from_test_16s:
  //SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG34 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1]
  b1_from_b11:
  //SEG35 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy 
    jmp b1
  //SEG36 test_16s::@1
  b1:
  //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
    lda dividends+1,y
    sta dividend+1
  //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 
    ldy i
    lda divisors,y
    sta divisor
    lda divisors+1,y
    sta divisor+1
  //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 
    lda dividend
    sta div16s.dividend
    lda dividend+1
    sta div16s.dividend+1
  //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 
    lda divisor
    sta div16s.divisor
    lda divisor+1
    sta div16s.divisor+1
  //SEG41 [21] call div16s 
    jsr div16s
  //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 -- vwsz1=vwsz2 
    lda div16s.return
    sta div16s.return_2
    lda div16s.return+1
    sta div16s.return_2+1
    jmp b3
  //SEG43 test_16s::@3
  b3:
  //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 -- vwsz1=vwsz2 
    lda div16s.return_2
    sta res
    lda div16s.return_2+1
    sta res+1
  //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 
    lda dividend
    sta print_sword.w
    lda dividend+1
    sta print_sword.w+1
  //SEG46 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG47 [26] call print_sword 
  //SEG48 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword]
  print_sword_from_b3:
  //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy 
  //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG51 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4]
  b4_from_b3:
    jmp b4
  //SEG52 test_16s::@4
  b4:
  //SEG53 [28] call print_str 
  //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str]
  print_str_from_b4:
  //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG56 test_16s::@5
  b5:
  //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 
    lda divisor
    sta print_sword.w
    lda divisor+1
    sta print_sword.w+1
  //SEG58 [30] call print_sword 
  //SEG59 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword]
  print_sword_from_b5:
  //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy 
  //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG62 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6]
  b6_from_b5:
    jmp b6
  //SEG63 test_16s::@6
  b6:
  //SEG64 [32] call print_str 
  //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str]
  print_str_from_b6:
  //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG67 test_16s::@7
  b7:
  //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 
    lda res
    sta print_sword.w
    lda res+1
    sta print_sword.w+1
  //SEG69 [34] call print_sword 
  //SEG70 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword]
  print_sword_from_b7:
  //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy 
  //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG73 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8]
  b8_from_b7:
    jmp b8
  //SEG74 test_16s::@8
  b8:
  //SEG75 [36] call print_str 
  //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str]
  print_str_from_b8:
  //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG78 test_16s::@9
  b9:
  //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 
    lda rem16s
    sta print_sword.w
    lda rem16s+1
    sta print_sword.w+1
  //SEG80 [38] call print_sword 
  //SEG81 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword]
  print_sword_from_b9:
  //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy 
  //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG84 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10]
  b10_from_b9:
    jmp b10
  //SEG85 test_16s::@10
  b10:
  //SEG86 [40] call print_ln 
  //SEG87 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln]
  print_ln_from_b10:
  //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy 
    jsr print_ln
    jmp b11
  //SEG89 test_16s::@11
  b11:
  //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #$c
    bne b1_from_b11
    jmp breturn
  //SEG92 test_16s::@return
  breturn:
  //SEG93 [43] return 
    rts
    dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff
    divisors: .word 5, -7, $b, -$d, -$11, $13
}
//SEG94 print_ln
// Print a newline
print_ln: {
  //SEG95 [45] 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:
  //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    jmp b1
  //SEG97 print_ln::@1
  b1:
  //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 
    lda print_line_cursor
    clc
    adc #$28
    sta print_line_cursor
    bcc !+
    inc print_line_cursor+1
  !:
  //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda print_line_cursor+1
    cmp print_char_cursor+1
    bcc b1_from_b1
    bne !+
    lda print_line_cursor
    cmp print_char_cursor
    bcc b1_from_b1
  !:
    jmp breturn
  //SEG100 print_ln::@return
  breturn:
  //SEG101 [48] return 
    rts
}
//SEG102 print_sword
// Print a signed word as HEX
// print_sword(signed word zeropage(5) w)
print_sword: {
    .label w = 5
  //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 
    lda w+1
    bpl b1_from_print_sword
  //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2]
  b2_from_print_sword:
    jmp b2
  //SEG105 print_sword::@2
  b2:
  //SEG106 [52] call print_char 
  //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char]
  print_char_from_b2:
  //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy 
  //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta print_char.ch
    jsr print_char
    jmp b4
  //SEG110 print_sword::@4
  b4:
  //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 
    sec
    lda w
    eor #$ff
    adc #0
    sta w
    lda w+1
    eor #$ff
    adc #0
    sta w+1
  //SEG112 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1]
  b1_from_print_sword:
  b1_from_b4:
  //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy 
  //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy 
    jmp b1
  //SEG115 print_sword::@1
  b1:
  //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 
    lda w
    sta print_word.w
    lda w+1
    sta print_word.w+1
  //SEG117 [56] call print_word 
  //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word]
  print_word_from_b1:
  //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy 
  //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy 
    jsr print_word
    jmp breturn
  //SEG121 print_sword::@return
  breturn:
  //SEG122 [57] return 
    rts
}
//SEG123 print_word
// Print a word as HEX
// print_word(word zeropage(7) w)
print_word: {
    .label w = 7
  //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 
    lda w+1
    sta print_byte.b
  //SEG125 [60] call print_byte 
  //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
  //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy 
  //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp b1
  //SEG129 print_word::@1
  b1:
  //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 
    lda w
    sta print_byte.b
  //SEG131 [62] call print_byte 
  //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from_b1:
  //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy 
  //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    jmp breturn
  //SEG135 print_word::@return
  breturn:
  //SEG136 [63] return 
    rts
}
//SEG137 print_byte
// Print a byte as HEX
// print_byte(byte zeropage(9) b)
print_byte: {
    .label _0 = $40
    .label _2 = $41
    .label b = 9
  //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 
    lda b
    lsr
    lsr
    lsr
    lsr
    sta _0
  //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy _0
    lda print_hextab,y
    sta print_char.ch
  //SEG140 [67] call print_char 
  //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
  //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy 
  //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    jmp b1
  //SEG144 print_byte::@1
  b1:
  //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 
    lda #$f
    and b
    sta _2
  //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy _2
    lda print_hextab,y
    sta print_char.ch
  //SEG147 [70] call print_char 
  //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from_b1:
  //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy 
  //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    jmp breturn
  //SEG151 print_byte::@return
  breturn:
  //SEG152 [71] return 
    rts
}
//SEG153 print_char
// Print a single char
// print_char(byte zeropage($a) ch)
print_char: {
    .label ch = $a
  //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 
    lda ch
    ldy #0
    sta (print_char_cursor),y
  //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
    jmp breturn
  //SEG156 print_char::@return
  breturn:
  //SEG157 [75] return 
    rts
}
//SEG158 print_str
// Print a zero-terminated string
// print_str(byte* zeropage($d) str)
print_str: {
    .label str = $d
  //SEG159 [77] 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:
  //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp b1
  //SEG162 print_str::@1
  b1:
  //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
    jmp breturn
  //SEG164 print_str::@return
  breturn:
  //SEG165 [79] return 
    rts
  //SEG166 print_str::@2
  b2:
  //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
  //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
  //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1_from_b2
}
//SEG170 div16s
// Perform division on two signed 16-bit numbers
// Returns dividend/divisor.
// The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// div16s(signed word zeropage($38) dividend, signed word zeropage($3a) divisor)
div16s: {
    .label return = $48
    .label dividend = $38
    .label divisor = $3a
    .label return_2 = $3c
  //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 
    lda dividend
    sta divr16s.dividend
    lda dividend+1
    sta divr16s.dividend+1
  //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 
    lda divisor
    sta divr16s.divisor
    lda divisor+1
    sta divr16s.divisor+1
  //SEG173 [85] call divr16s 
    jsr divr16s
  //SEG174 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 
    lda divr16s.return
    sta divr16s.return_3
    lda divr16s.return+1
    sta divr16s.return_3+1
    jmp b2
  //SEG175 div16s::@2
  b2:
  //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 
    lda divr16s.return_3
    sta return
    lda divr16s.return_3+1
    sta return+1
    jmp breturn
  //SEG177 div16s::@return
  breturn:
  //SEG178 [88] return 
    rts
}
//SEG179 divr16s
// Perform division on two signed 16-bit numbers with an initial remainder.
// Returns dividend/divisor. The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// divr16s(signed word zeropage($42) dividend, signed word zeropage($44) divisor)
divr16s: {
    .const rem = 0
    .label _5 = $50
    .label _11 = $4e
    .label neg = $15
    .label resultu = $4c
    .label return = $16
    .label dividend = $42
    .label divisor = $44
    .label return_3 = $46
    .label dividendu = $f
    .label divisoru = $13
    .label remu = $11
  //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 
    lda dividend+1
    bmi b1
    jmp b17
  //SEG181 divr16s::@17
  b17:
  //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 -- vwuz1=vwuz2 
    lda dividend
    sta dividendu
    lda dividend+1
    sta dividendu+1
  //SEG183 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
  b2_from_b17:
  //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 
    lda #<rem
    sta remu
    lda #>rem
    sta remu+1
  //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy 
  //SEG186 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuz1=vbuc1 
    lda #0
    sta neg
    jmp b2
  //SEG187 divr16s::@2
  b2:
  //SEG188 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 
    lda divisor+1
    bmi b3
    jmp b18
  //SEG189 divr16s::@18
  b18:
  //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 
    lda divisor
    sta divisoru
    lda divisor+1
    sta divisoru+1
  //SEG191 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
  b4_from_b18:
  b4_from_b3:
  //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy 
  //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy 
    jmp b4
  //SEG194 divr16s::@4
  b4:
  //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 
    lda dividendu
    sta divr16u.dividend
    lda dividendu+1
    sta divr16u.dividend+1
  //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 
    lda divisoru
    sta divr16u.divisor
    lda divisoru+1
    sta divr16u.divisor+1
  //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 
    lda remu
    sta divr16u.rem
    lda remu+1
    sta divr16u.rem+1
  //SEG198 [98] call divr16u 
  //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
  divr16u_from_b4:
  //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy 
  //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy 
  //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy 
    jsr divr16u
  //SEG203 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 
    lda divr16u.return
    sta divr16u.return_3
    lda divr16u.return+1
    sta divr16u.return_3+1
    jmp b15
  //SEG204 divr16s::@15
  b15:
  //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 
    lda divr16u.return_3
    sta resultu
    lda divr16u.return_3+1
    sta resultu+1
  //SEG206 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuz1_eq_0_then_la1 
    lda neg
    cmp #0
    beq b19
    jmp b11
  //SEG207 divr16s::@11
  b11:
  //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz2 
    sec
    lda rem16u
    eor #$ff
    adc #0
    sta rem16s
    lda rem16u+1
    eor #$ff
    adc #0
    sta rem16s+1
  //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 
    sec
    lda resultu
    eor #$ff
    adc #0
    sta return
    lda resultu+1
    eor #$ff
    adc #0
    sta return+1
  //SEG210 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
  breturn_from_b11:
  breturn_from_b19:
  //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy 
  //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy 
    jmp breturn
  //SEG213 divr16s::@return
  breturn:
  //SEG214 [105] return 
    rts
  //SEG215 divr16s::@19
  b19:
  //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 
    lda resultu
    sta return
    lda resultu+1
    sta return+1
  //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 
    lda rem16u
    sta rem16s
    lda rem16u+1
    sta rem16s+1
    jmp breturn_from_b19
  //SEG218 divr16s::@3
  b3:
  //SEG219 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 
    sec
    lda divisor
    eor #$ff
    adc #0
    sta _11
    lda divisor+1
    eor #$ff
    adc #0
    sta _11+1
  //SEG220 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 
    lda neg
    eor #1
    sta neg
  //SEG221 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 -- vwuz1=vwuz2 
    lda _11
    sta divisoru
    lda _11+1
    sta divisoru+1
    jmp b4_from_b3
  //SEG222 divr16s::@1
  b1:
  //SEG223 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz2 
    sec
    lda dividend
    eor #$ff
    adc #0
    sta _5
    lda dividend+1
    eor #$ff
    adc #0
    sta _5+1
  //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 -- vwuz1=vwuz2 
    lda _5
    sta dividendu
    lda _5+1
    sta dividendu+1
  //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
  b2_from_b1:
  //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 
    lda #<-rem
    sta remu
    lda #>-rem
    sta remu+1
  //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy 
  //SEG228 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 
    lda #1
    sta neg
    jmp b2
}
//SEG229 divr16u
// Performs division on two 16 bit unsigned words and an initial remainder
// Returns the quotient dividend/divisor.
// The final remainder will be set into the global variable rem16u
// Implemented using simple binary division
// divr16u(word zeropage($1e) dividend, word zeropage($1a) divisor, word zeropage($1c) rem)
divr16u: {
    .label _1 = $52
    .label _2 = $53
    .label rem = $1c
    .label dividend = $1e
    .label quotient = $20
    .label i = $22
    .label return = $20
    .label divisor = $1a
    .label return_2 = $71
    .label return_3 = $4a
  //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
  b1_from_divr16u:
  //SEG231 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG232 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta quotient
    lda #>0
    sta quotient+1
  //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy 
  //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy 
    jmp b1
  //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
  b1_from_b3:
  //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy 
  //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy 
  //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy 
  //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy 
    jmp b1
  //SEG240 divr16u::@1
  b1:
  //SEG241 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl rem
    rol rem+1
  //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 
    lda dividend+1
    sta _1
  //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 
    lda #$80
    and _1
    sta _2
  //SEG244 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 
    lda _2
    cmp #0
    beq b2_from_b1
    jmp b4
  //SEG245 divr16u::@4
  b4:
  //SEG246 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 
    lda #1
    ora rem
    sta rem
  //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy 
    jmp b2
  //SEG249 divr16u::@2
  b2:
  //SEG250 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl dividend
    rol dividend+1
  //SEG251 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl quotient
    rol quotient+1
  //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 
    lda rem+1
    cmp divisor+1
    bcc b3_from_b2
    bne !+
    lda rem
    cmp divisor
    bcc b3_from_b2
  !:
    jmp b5
  //SEG253 divr16u::@5
  b5:
  //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 
    inc quotient
    bne !+
    inc quotient+1
  !:
  //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 
    lda rem
    sec
    sbc divisor
    sta rem
    lda rem+1
    sbc divisor+1
    sta rem+1
  //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
  b3_from_b2:
  b3_from_b5:
  //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy 
  //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy 
    jmp b3
  //SEG259 divr16u::@3
  b3:
  //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG261 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #$10
    bne b1_from_b3
    jmp b6
  //SEG262 divr16u::@6
  b6:
  //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 
    lda rem
    sta rem16u
    lda rem+1
    sta rem16u+1
    jmp breturn
  //SEG264 divr16u::@return
  breturn:
  //SEG265 [130] return 
    rts
}
//SEG266 test_8s
test_8s: {
    .label dividend = $56
    .label divisor = $57
    .label res = $5b
    .label i = $23
  //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1]
  b1_from_test_8s:
  //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG269 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1]
  b1_from_b11:
  //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy 
    jmp b1
  //SEG271 test_8s::@1
  b1:
  //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
  //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda divisors,y
    sta divisor
  //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 
    lda dividend
    sta div8s.dividend
  //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 
    lda divisor
    sta div8s.divisor
  //SEG276 [137] call div8s 
    jsr div8s
  //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 -- vbsz1=vbsz2 
    lda div8s.return
    sta div8s.return_3
    jmp b3
  //SEG278 test_8s::@3
  b3:
  //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsz2 
    lda div8s.return_3
    sta res
  //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 
    lda dividend
    sta print_sbyte.b
  //SEG281 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG282 [142] call print_sbyte 
  //SEG283 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte]
  print_sbyte_from_b3:
  //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy 
  //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG286 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4]
  b4_from_b3:
    jmp b4
  //SEG287 test_8s::@4
  b4:
  //SEG288 [144] call print_str 
  //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str]
  print_str_from_b4:
  //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG291 test_8s::@5
  b5:
  //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 
    lda divisor
    sta print_sbyte.b
  //SEG293 [146] call print_sbyte 
  //SEG294 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte]
  print_sbyte_from_b5:
  //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy 
  //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG297 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6]
  b6_from_b5:
    jmp b6
  //SEG298 test_8s::@6
  b6:
  //SEG299 [148] call print_str 
  //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str]
  print_str_from_b6:
  //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG302 test_8s::@7
  b7:
  //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 
    lda res
    sta print_sbyte.b
  //SEG304 [150] call print_sbyte 
  //SEG305 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte]
  print_sbyte_from_b7:
  //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy 
  //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG308 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8]
  b8_from_b7:
    jmp b8
  //SEG309 test_8s::@8
  b8:
  //SEG310 [152] call print_str 
  //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str]
  print_str_from_b8:
  //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG313 test_8s::@9
  b9:
  //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsz2 
    lda rem8s
    sta print_sbyte.b
  //SEG315 [154] call print_sbyte 
  //SEG316 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte]
  print_sbyte_from_b9:
  //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy 
  //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG319 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10]
  b10_from_b9:
    jmp b10
  //SEG320 test_8s::@10
  b10:
  //SEG321 [156] call print_ln 
  //SEG322 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln]
  print_ln_from_b10:
  //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy 
    jsr print_ln
    jmp b11
  //SEG324 test_8s::@11
  b11:
  //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #6
    bne b1_from_b11
    jmp breturn
  //SEG327 test_8s::@return
  breturn:
  //SEG328 [159] return 
    rts
    dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f
    divisors: .byte 5, 7, -$b, -$d, $11, $13
}
//SEG329 print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte zeropage($24) b)
print_sbyte: {
    .label b = $24
  //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 
    lda b
    bmi b1_from_print_sbyte
  //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
  b3_from_print_sbyte:
    jmp b3
  //SEG332 print_sbyte::@3
  b3:
  //SEG333 [163] call print_char 
  //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
  print_char_from_b3:
  //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy 
  //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta print_char.ch
    jsr print_char
  //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2]
  b2_from_b3:
  b2_from_b5:
  //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy 
    jmp b2
  //SEG339 print_sbyte::@2
  b2:
  //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 -- vbuz1=vbuz2 
    lda b
    sta print_byte.b
  //SEG341 [166] call print_byte 
  //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  print_byte_from_b2:
  //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
  //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
    jmp breturn
  //SEG345 print_sbyte::@return
  breturn:
  //SEG346 [167] return 
    rts
  //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  b1_from_print_sbyte:
    jmp b1
  //SEG348 print_sbyte::@1
  b1:
  //SEG349 [169] call print_char 
  //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  print_char_from_b1:
  //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy 
  //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta print_char.ch
    jsr print_char
    jmp b5
  //SEG353 print_sbyte::@5
  b5:
  //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 
    lda b
    eor #$ff
    clc
    adc #1
    sta b
    jmp b2_from_b5
}
//SEG355 div8s
// Perform division on two signed 8-bit numbers
// Returns dividend/divisor.
// The remainder will be set into the global variable rem8s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// div8s(signed byte zeropage($58) dividend, signed byte zeropage($59) divisor)
div8s: {
    .label _2 = $5f
    .label _6 = $5e
    .label neg = $27
    .label resultu = $5d
    .label return = $28
    .label dividend = $58
    .label divisor = $59
    .label return_3 = $5a
    .label dividendu = $25
    .label divisoru = $26
  //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsz1_lt_0_then_la1 
    lda dividend
    bmi b1
    jmp b16
  //SEG357 div8s::@16
  b16:
  //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 -- vbuz1=vbuz2 
    lda dividend
    sta dividendu
  //SEG359 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2]
  b2_from_b16:
  //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy 
  //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta neg
    jmp b2
  //SEG362 div8s::@2
  b2:
  //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsz1_lt_0_then_la1 
    lda divisor
    bmi b3
    jmp b17
  //SEG364 div8s::@17
  b17:
  //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuz1=vbuz2 
    lda divisor
    sta divisoru
  //SEG366 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4]
  b4_from_b17:
  b4_from_b3:
  //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy 
  //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy 
    jmp b4
  //SEG369 div8s::@4
  b4:
  //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuz1=vbuz2 
    lda dividendu
    sta div8u.dividend
  //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 -- vbuz1=vbuz2 
    lda divisoru
    sta div8u.divisor
  //SEG372 [179] call div8u 
  //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u]
  div8u_from_b4:
  //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy 
  //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy 
    jsr div8u
  //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 -- vbuz1=vbuz2 
    lda div8u.return
    sta div8u.return_2
    jmp b15
  //SEG377 div8s::@15
  b15:
  //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuz1=vbuz2 
    lda div8u.return_2
    sta resultu
  //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 
    lda neg
    cmp #0
    beq b18
    jmp b11
  //SEG380 div8s::@11
  b11:
  //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsz1=_neg_vbsz2 
    lda rem8u
    eor #$ff
    clc
    adc #1
    sta rem8s
  //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsz1=_neg_vbsz2 
    lda resultu
    eor #$ff
    clc
    adc #1
    sta return
  //SEG383 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return]
  breturn_from_b11:
  breturn_from_b18:
  //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy 
  //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy 
    jmp breturn
  //SEG386 div8s::@return
  breturn:
  //SEG387 [186] return 
    rts
  //SEG388 div8s::@18
  b18:
  //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsz1=vbsz2 
    lda resultu
    sta return
  //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 
    lda rem8u
    sta rem8s
    jmp breturn_from_b18
  //SEG391 div8s::@3
  b3:
  //SEG392 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsz1=_neg_vbsz2 
    lda divisor
    eor #$ff
    clc
    adc #1
    sta _6
  //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 
    lda neg
    eor #1
    sta neg
  //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6 -- vbuz1=vbuz2 
    lda _6
    sta divisoru
    jmp b4_from_b3
  //SEG395 div8s::@1
  b1:
  //SEG396 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsz1=_neg_vbsz2 
    lda dividend
    eor #$ff
    clc
    adc #1
    sta _2
  //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuz1=vbuz2 
    lda _2
    sta dividendu
  //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2]
  b2_from_b1:
  //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy 
  //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 
    lda #1
    sta neg
    jmp b2
}
//SEG401 div8u
// Performs division on two 8 bit unsigned bytes
// Returns dividend/divisor.
// The remainder will be set into the global variable rem8u
// Implemented using simple binary division
// div8u(byte zeropage($2a) dividend, byte zeropage($2b) divisor)
div8u: {
    .label return = $62
    .label dividend = $2a
    .label divisor = $2b
    .label return_2 = $5c
    .label return_3 = $77
  //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuz2 
    lda dividend
    sta divr8u.dividend
  //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuz2 
    lda divisor
    sta divr8u.divisor
  //SEG404 [197] call divr8u 
  //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u]
  divr8u_from_div8u:
    jsr divr8u
  //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuz1=vbuz2 
    lda divr8u.return_1
    sta divr8u.return
    jmp b2
  //SEG407 div8u::@2
  b2:
  //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 -- vbuz1=vbuz2 
    lda divr8u.return
    sta return
    jmp breturn
  //SEG409 div8u::@return
  breturn:
  //SEG410 [200] return 
    rts
}
//SEG411 divr8u
// Performs division on two 8 bit unsigned bytes and an initial remainder
// Returns dividend/divisor.
// The final remainder will be set into the global variable rem8u
// Implemented using simple binary division
// divr8u(byte zeropage($2d) dividend, byte zeropage($60) divisor, byte zeropage($2c) rem)
divr8u: {
    .label _1 = $63
    .label dividend = $2d
    .label divisor = $60
    .label return = $61
    .label rem = $2c
    .label quotient = $2e
    .label i = $2f
    .label return_1 = $2e
  //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1]
  b1_from_divr8u:
  //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta quotient
  //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy 
  //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta rem
    jmp b1
  //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1]
  b1_from_b3:
  //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy 
  //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy 
  //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy 
  //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy 
    jmp b1
  //SEG422 divr8u::@1
  b1:
  //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 
    asl rem
  //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 
    lda #$80
    and dividend
    sta _1
  //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuz1_eq_0_then_la1 
    lda _1
    cmp #0
    beq b2_from_b1
    jmp b4
  //SEG426 divr8u::@4
  b4:
  //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bor_vbuc1 
    lda #1
    ora rem
    sta rem
  //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy 
    jmp b2
  //SEG430 divr8u::@2
  b2:
  //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 
    asl dividend
  //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 
    asl quotient
  //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuz1_lt_vbuz2_then_la1 
    lda rem
    cmp divisor
    bcc b3_from_b2
    jmp b5
  //SEG434 divr8u::@5
  b5:
  //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 
    inc quotient
  //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuz1=vbuz1_minus_vbuz2 
    lda rem
    sec
    sbc divisor
    sta rem
  //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3]
  b3_from_b2:
  b3_from_b5:
  //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy 
  //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy 
    jmp b3
  //SEG440 divr8u::@3
  b3:
  //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b1_from_b3
    jmp b6
  //SEG443 divr8u::@6
  b6:
  //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuz1=vbuz2 
    lda rem
    sta rem8u
    jmp breturn
  //SEG445 divr8u::@return
  breturn:
  //SEG446 [217] return 
    rts
}
//SEG447 test_16u
test_16u: {
    .label dividend = $65
    .label divisor = $67
    .label res = $6f
    .label i = $30
  //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1]
  b1_from_test_16u:
  //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG450 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1]
  b1_from_b11:
  //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy 
    jmp b1
  //SEG452 test_16u::@1
  b1:
  //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
    lda dividends+1,y
    sta dividend+1
  //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 
    ldy i
    lda divisors,y
    sta divisor
    lda divisors+1,y
    sta divisor+1
  //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 
    lda dividend
    sta div16u.dividend
    lda dividend+1
    sta div16u.dividend+1
  //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 
    lda divisor
    sta div16u.divisor
    lda divisor+1
    sta div16u.divisor+1
  //SEG457 [224] call div16u 
    jsr div16u
  //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 
    lda div16u.return
    sta div16u.return_2
    lda div16u.return+1
    sta div16u.return_2+1
    jmp b3
  //SEG459 test_16u::@3
  b3:
  //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 
    lda div16u.return_2
    sta res
    lda div16u.return_2+1
    sta res+1
  //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 
    lda dividend
    sta print_word.w
    lda dividend+1
    sta print_word.w+1
  //SEG462 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG463 [229] call print_word 
  //SEG464 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word]
  print_word_from_b3:
  //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy 
  //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy 
    jsr print_word
  //SEG467 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4]
  b4_from_b3:
    jmp b4
  //SEG468 test_16u::@4
  b4:
  //SEG469 [231] call print_str 
  //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str]
  print_str_from_b4:
  //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG472 test_16u::@5
  b5:
  //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 
    lda divisor
    sta print_word.w
    lda divisor+1
    sta print_word.w+1
  //SEG474 [233] call print_word 
  //SEG475 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word]
  print_word_from_b5:
  //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy 
  //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy 
    jsr print_word
  //SEG478 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6]
  b6_from_b5:
    jmp b6
  //SEG479 test_16u::@6
  b6:
  //SEG480 [235] call print_str 
  //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str]
  print_str_from_b6:
  //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG483 test_16u::@7
  b7:
  //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 
    lda res
    sta print_word.w
    lda res+1
    sta print_word.w+1
  //SEG485 [237] call print_word 
  //SEG486 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word]
  print_word_from_b7:
  //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy 
  //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy 
    jsr print_word
  //SEG489 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8]
  b8_from_b7:
    jmp b8
  //SEG490 test_16u::@8
  b8:
  //SEG491 [239] call print_str 
  //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str]
  print_str_from_b8:
  //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG494 test_16u::@9
  b9:
  //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 
    lda rem16u
    sta print_word.w
    lda rem16u+1
    sta print_word.w+1
  //SEG496 [241] call print_word 
  //SEG497 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word]
  print_word_from_b9:
  //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy 
  //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy 
    jsr print_word
  //SEG500 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10]
  b10_from_b9:
    jmp b10
  //SEG501 test_16u::@10
  b10:
  //SEG502 [243] call print_ln 
  //SEG503 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln]
  print_ln_from_b10:
  //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy 
    jsr print_ln
    jmp b11
  //SEG505 test_16u::@11
  b11:
  //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #$c
    bne b1_from_b11
    jmp breturn
  //SEG508 test_16u::@return
  breturn:
  //SEG509 [246] return 
    rts
    dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
    divisors: .word 5, 7, $b, $d, $11, $13
}
//SEG510 div16u
// Performs division on two 16 bit unsigned words
// Returns the quotient dividend/divisor.
// The remainder will be set into the global variable rem16u
// Implemented using simple binary division
// div16u(word zeropage($69) dividend, word zeropage($6b) divisor)
div16u: {
    .label return = $73
    .label dividend = $69
    .label divisor = $6b
    .label return_2 = $6d
  //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 
    lda dividend
    sta divr16u.dividend
    lda dividend+1
    sta divr16u.dividend+1
  //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 -- vwuz1=vwuz2 
    lda divisor
    sta divr16u.divisor
    lda divisor+1
    sta divr16u.divisor+1
  //SEG513 [249] call divr16u 
  //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u]
  divr16u_from_div16u:
  //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy 
  //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy 
  //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 
    lda #<0
    sta divr16u.rem
    lda #>0
    sta divr16u.rem+1
    jsr divr16u
  //SEG518 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 
    lda divr16u.return
    sta divr16u.return_2
    lda divr16u.return+1
    sta divr16u.return_2+1
    jmp b2
  //SEG519 div16u::@2
  b2:
  //SEG520 [251] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 
    lda divr16u.return_2
    sta return
    lda divr16u.return_2+1
    sta return+1
    jmp breturn
  //SEG521 div16u::@return
  breturn:
  //SEG522 [252] return 
    rts
}
//SEG523 test_8u
test_8u: {
    .label dividend = $75
    .label divisor = $76
    .label res = $78
    .label i = $31
  //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1]
  b1_from_test_8u:
  //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
  //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG528 test_8u::@1
  b1:
  //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
  //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy i
    lda divisors,y
    sta divisor
  //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 
    lda dividend
    sta div8u.dividend
  //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 
    lda divisor
    sta div8u.divisor
  //SEG533 [259] call div8u 
  //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u]
  div8u_from_b1:
  //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy 
  //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy 
    jsr div8u
  //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 -- vbuz1=vbuz2 
    lda div8u.return
    sta div8u.return_3
    jmp b3
  //SEG538 test_8u::@3
  b3:
  //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuz2 
    lda div8u.return_3
    sta res
  //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 
    lda dividend
    sta print_byte.b
  //SEG541 [263] call print_byte 
  //SEG542 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte]
  print_byte_from_b3:
  //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy 
  //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG545 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4]
  b4_from_b3:
    jmp b4
  //SEG546 test_8u::@4
  b4:
  //SEG547 [265] call print_str 
  //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str]
  print_str_from_b4:
  //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG550 test_8u::@5
  b5:
  //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 
    lda divisor
    sta print_byte.b
  //SEG552 [267] call print_byte 
  //SEG553 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte]
  print_byte_from_b5:
  //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy 
  //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG556 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6]
  b6_from_b5:
    jmp b6
  //SEG557 test_8u::@6
  b6:
  //SEG558 [269] call print_str 
  //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str]
  print_str_from_b6:
  //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG561 test_8u::@7
  b7:
  //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 
    lda res
    sta print_byte.b
  //SEG563 [271] call print_byte 
  //SEG564 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte]
  print_byte_from_b7:
  //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy 
  //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG567 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8]
  b8_from_b7:
    jmp b8
  //SEG568 test_8u::@8
  b8:
  //SEG569 [273] call print_str 
  //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str]
  print_str_from_b8:
  //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG572 test_8u::@9
  b9:
  //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuz2 
    lda rem8u
    sta print_byte.b
  //SEG574 [275] call print_byte 
  //SEG575 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte]
  print_byte_from_b9:
  //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy 
  //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG578 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10]
  b10_from_b9:
    jmp b10
  //SEG579 test_8u::@10
  b10:
  //SEG580 [277] call print_ln 
  //SEG581 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln]
  print_ln_from_b10:
  //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy 
    jsr print_ln
    jmp b11
  //SEG583 test_8u::@11
  b11:
  //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #6
    bne b12
    jmp breturn
  //SEG586 test_8u::@return
  breturn:
  //SEG587 [280] return 
    rts
  //SEG588 test_8u::@12
  b12:
  //SEG589 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG590 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1]
  b1_from_b12:
  //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy 
  //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy 
  //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy 
    jmp b1
    dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff
    divisors: .byte 5, 7, $b, $d, $11, $13
}
//SEG594 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = $32
  //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  b1_from_print_cls:
  //SEG596 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
    jmp b1
  //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  b1_from_b1:
  //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
    jmp b1
  //SEG599 print_cls::@1
  b1:
  //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG602 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1_from_b1
    lda sc
    cmp #<$400+$3e8
    bne b1_from_b1
    jmp breturn
  //SEG603 print_cls::@return
  breturn:
  //SEG604 [287] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  str: .text " / @"
  str2: .text " @"
  str1: .text " = @"

REGISTER UPLIFT POTENTIAL REGISTERS
Statement [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ]
Statement [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a 
Statement [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a 
Statement [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a 
Statement [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a 
Statement [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a 
Statement [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a 
Statement [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a 
Statement [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ]
Statement [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a 
Statement [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a 
Statement [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#7 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#7 ] ) always clobbers reg byte a 
Statement [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ test_8s::divisor#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ test_8s::res#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ rem8u#17 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:118 [ test_8u::divisor#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:120 [ test_8u::res#0 ]
Statement [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a 
Statement [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:26::print_char:52 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_char:52 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_char:52 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_char:52 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:67 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:70 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:163 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:163 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:169 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:87 [ test_8s::divisor#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:91 [ test_8s::res#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:100 [ rem8u#17 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:118 [ test_8u::divisor#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:120 [ test_8u::res#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ]
Statement [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y 
Statement [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y 
Statement [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a 
Statement [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a 
Statement [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a 
Statement [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a 
Statement [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a 
Statement [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a 
Statement [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
Statement [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a 
Statement [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a 
Statement [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a 
Statement [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) always clobbers reg byte a 
Statement [99] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a 
Statement [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a 
Statement [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a 
Statement [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a 
Statement [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a 
Statement [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a 
Statement [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a 
Statement [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a 
Statement [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a 
Statement [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::$5 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::$5 ] ) always clobbers reg byte a 
Statement [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a 
Statement [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ divr16u::i#2 divr16u::i#1 ]
Statement [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a 
Statement [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a 
Statement [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a 
Statement [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a 
Statement [129] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a 
Statement [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ test_8s::dividend#0 ]
Statement [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ]
Statement [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:142 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:146 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:150 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:154 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a 
Statement [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ div8s::resultu#0 ]
Statement [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a 
Statement [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$6 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$6 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ]
Statement [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::$6 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::$6 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:94 [ div8s::$6 ]
Statement [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::$2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::$2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:89 [ div8s::divisor#0 ]
Statement [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:96 [ divr8u::divisor#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:117 [ test_8u::dividend#0 ]
Statement [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a 
Statement [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a 
Statement [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ) always clobbers reg byte a 
Statement [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a 
Statement [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a 
Statement [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a 
Statement [225] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a 
Statement [226] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a 
Statement [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a 
Statement [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a 
Statement [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a 
Statement [236] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a 
Statement [240] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a 
Statement [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a 
Statement [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a 
Statement [250] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a 
Statement [251] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a 
Statement [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) always clobbers reg byte a 
Statement [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a 
Statement [284] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a 
Statement [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a 
Statement [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a 
Statement [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a 
Statement [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a 
Statement [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a 
Statement [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a 
Statement [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a 
Statement [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a 
Statement [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a 
Statement [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a 
Statement [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#7 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#7 ] ) always clobbers reg byte a 
Statement [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a 
Statement [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a 
Statement [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:26::print_char:52 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_char:52 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_char:52 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_char:52 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:67 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:70 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:163 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:163 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:169 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y 
Statement [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y 
Statement [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y 
Statement [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a 
Statement [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a 
Statement [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a 
Statement [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a 
Statement [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a 
Statement [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a 
Statement [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a 
Statement [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a 
Statement [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a 
Statement [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a 
Statement [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) always clobbers reg byte a 
Statement [99] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a 
Statement [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a 
Statement [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a 
Statement [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a 
Statement [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a 
Statement [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a 
Statement [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a 
Statement [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a 
Statement [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a 
Statement [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::$5 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::$5 ] ) always clobbers reg byte a 
Statement [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a 
Statement [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a 
Statement [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a 
Statement [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a 
Statement [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a 
Statement [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a 
Statement [129] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a 
Statement [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 ] ) always clobbers reg byte a 
Statement [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a 
Statement [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:142 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:146 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:150 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:154 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a 
Statement [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a 
Statement [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a 
Statement [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$6 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$6 ] ) always clobbers reg byte a 
Statement [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::$6 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::$6 ] ) always clobbers reg byte a 
Statement [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::$2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::$2 ] ) always clobbers reg byte a 
Statement [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a 
Statement [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a 
Statement [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a 
Statement [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ) always clobbers reg byte a 
Statement [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a 
Statement [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a 
Statement [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a 
Statement [225] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a 
Statement [226] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a 
Statement [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a 
Statement [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a 
Statement [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a 
Statement [236] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a 
Statement [240] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a 
Statement [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a 
Statement [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a 
Statement [250] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a 
Statement [251] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a 
Statement [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) always clobbers reg byte a 
Statement [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a 
Statement [284] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a 
Potential registers zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] : zp ZP_BYTE:2 , reg byte x , 
Potential registers zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] : zp ZP_WORD:3 , 
Potential registers zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] : zp ZP_WORD:5 , 
Potential registers zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] : zp ZP_WORD:7 , 
Potential registers zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] : zp ZP_BYTE:9 , reg byte x , 
Potential registers zp ZP_BYTE:10 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] : zp ZP_WORD:11 , 
Potential registers zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] : zp ZP_WORD:13 , 
Potential registers zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] : zp ZP_WORD:15 , 
Potential registers zp ZP_WORD:17 [ divr16s::remu#3 ] : zp ZP_WORD:17 , 
Potential registers zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] : zp ZP_WORD:19 , 
Potential registers zp ZP_BYTE:21 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] : zp ZP_WORD:22 , 
Potential registers zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] : zp ZP_WORD:24 , 
Potential registers zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] : zp ZP_WORD:26 , 
Potential registers zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:28 , 
Potential registers zp ZP_WORD:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] : zp ZP_WORD:30 , 
Potential registers zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:32 , 
Potential registers zp ZP_BYTE:34 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:34 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] : zp ZP_BYTE:35 , reg byte x , 
Potential registers zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] : zp ZP_BYTE:36 , reg byte x , 
Potential registers zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:38 [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] : zp ZP_BYTE:39 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:40 [ div8s::return#2 div8s::return#1 div8s::return#7 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ] : zp ZP_BYTE:41 , reg byte x , 
Potential registers zp ZP_BYTE:42 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:43 [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:44 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] : zp ZP_BYTE:48 , reg byte x , 
Potential registers zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] : zp ZP_BYTE:49 , reg byte x , 
Potential registers zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:50 , 
Potential registers zp ZP_WORD:52 [ test_16s::dividend#0 ] : zp ZP_WORD:52 , 
Potential registers zp ZP_WORD:54 [ test_16s::divisor#0 ] : zp ZP_WORD:54 , 
Potential registers zp ZP_WORD:56 [ div16s::dividend#0 ] : zp ZP_WORD:56 , 
Potential registers zp ZP_WORD:58 [ div16s::divisor#0 ] : zp ZP_WORD:58 , 
Potential registers zp ZP_WORD:60 [ div16s::return#2 ] : zp ZP_WORD:60 , 
Potential registers zp ZP_WORD:62 [ test_16s::res#0 ] : zp ZP_WORD:62 , 
Potential registers zp ZP_BYTE:64 [ print_byte::$0 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:65 [ print_byte::$2 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:66 [ divr16s::dividend#0 ] : zp ZP_WORD:66 , 
Potential registers zp ZP_WORD:68 [ divr16s::divisor#0 ] : zp ZP_WORD:68 , 
Potential registers zp ZP_WORD:70 [ divr16s::return#3 ] : zp ZP_WORD:70 , 
Potential registers zp ZP_WORD:72 [ div16s::return#0 ] : zp ZP_WORD:72 , 
Potential registers zp ZP_WORD:74 [ divr16u::return#3 ] : zp ZP_WORD:74 , 
Potential registers zp ZP_WORD:76 [ divr16s::resultu#0 ] : zp ZP_WORD:76 , 
Potential registers zp ZP_WORD:78 [ divr16s::$11 ] : zp ZP_WORD:78 , 
Potential registers zp ZP_WORD:80 [ divr16s::$5 ] : zp ZP_WORD:80 , 
Potential registers zp ZP_BYTE:82 [ divr16u::$1 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:83 [ divr16u::$2 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:84 [ rem16u#1 ] : zp ZP_WORD:84 , 
Potential registers zp ZP_BYTE:86 [ test_8s::dividend#0 ] : zp ZP_BYTE:86 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:87 [ test_8s::divisor#0 ] : zp ZP_BYTE:87 , reg byte x , 
Potential registers zp ZP_BYTE:88 [ div8s::dividend#0 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:89 [ div8s::divisor#0 ] : zp ZP_BYTE:89 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:90 [ div8s::return#3 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:91 [ test_8s::res#0 ] : zp ZP_BYTE:91 , reg byte x , 
Potential registers zp ZP_BYTE:92 [ div8u::return#2 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:93 [ div8s::resultu#0 ] : zp ZP_BYTE:93 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:94 [ div8s::$6 ] : zp ZP_BYTE:94 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:95 [ div8s::$2 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:96 [ divr8u::divisor#0 ] : zp ZP_BYTE:96 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:97 [ divr8u::return#0 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:98 [ div8u::return#0 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:99 [ divr8u::$1 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:100 [ rem8u#17 ] : zp ZP_BYTE:100 , reg byte x , 
Potential registers zp ZP_WORD:101 [ test_16u::dividend#0 ] : zp ZP_WORD:101 , 
Potential registers zp ZP_WORD:103 [ test_16u::divisor#0 ] : zp ZP_WORD:103 , 
Potential registers zp ZP_WORD:105 [ div16u::dividend#0 ] : zp ZP_WORD:105 , 
Potential registers zp ZP_WORD:107 [ div16u::divisor#0 ] : zp ZP_WORD:107 , 
Potential registers zp ZP_WORD:109 [ div16u::return#2 ] : zp ZP_WORD:109 , 
Potential registers zp ZP_WORD:111 [ test_16u::res#0 ] : zp ZP_WORD:111 , 
Potential registers zp ZP_WORD:113 [ divr16u::return#2 ] : zp ZP_WORD:113 , 
Potential registers zp ZP_WORD:115 [ div16u::return#0 ] : zp ZP_WORD:115 , 
Potential registers zp ZP_BYTE:117 [ test_8u::dividend#0 ] : zp ZP_BYTE:117 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:118 [ test_8u::divisor#0 ] : zp ZP_BYTE:118 , reg byte x , 
Potential registers zp ZP_BYTE:119 [ div8u::return#3 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:120 [ test_8u::res#0 ] : zp ZP_BYTE:120 , reg byte x , 

REGISTER UPLIFT SCOPES
Uplift Scope [divr16u] 894.42: zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 321.61: zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:82 [ divr16u::$1 ] 202: zp ZP_BYTE:83 [ divr16u::$2 ] 167.04: zp ZP_BYTE:34 [ divr16u::i#2 divr16u::i#1 ] 78.15: zp ZP_WORD:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] 18.88: zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] 4: zp ZP_WORD:74 [ divr16u::return#3 ] 4: zp ZP_WORD:113 [ divr16u::return#2 ] 
Uplift Scope [divr8u] 909.67: zp ZP_BYTE:44 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] 332.19: zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] 202: zp ZP_BYTE:99 [ divr8u::$1 ] 168.33: zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ] 77.42: zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] 12.75: zp ZP_BYTE:96 [ divr8u::divisor#0 ] 4: zp ZP_BYTE:97 [ divr8u::return#0 ] 
Uplift Scope [] 288.3: zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] 254.87: zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] 6.83: zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ] 6.68: zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] 0.5: zp ZP_BYTE:100 [ rem8u#17 ] 0.48: zp ZP_WORD:84 [ rem16u#1 ] 
Uplift Scope [print_str] 305.5: zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] 
Uplift Scope [print_byte] 113.5: zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] 4: zp ZP_BYTE:64 [ print_byte::$0 ] 4: zp ZP_BYTE:65 [ print_byte::$2 ] 
Uplift Scope [print_word] 97.67: zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] 
Uplift Scope [print_sword] 97.5: zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] 
Uplift Scope [print_sbyte] 93.33: zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] 
Uplift Scope [div8u] 33.5: zp ZP_BYTE:43 [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] 28: zp ZP_BYTE:42 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] 22: zp ZP_BYTE:119 [ div8u::return#3 ] 4: zp ZP_BYTE:92 [ div8u::return#2 ] 3.75: zp ZP_BYTE:98 [ div8u::return#0 ] 
Uplift Scope [div8s] 22: zp ZP_BYTE:90 [ div8s::return#3 ] 11: zp ZP_BYTE:38 [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] 11: zp ZP_BYTE:40 [ div8s::return#2 div8s::return#1 div8s::return#7 ] 8.86: zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] 5: zp ZP_BYTE:88 [ div8s::dividend#0 ] 4: zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] 2.14: zp ZP_BYTE:89 [ div8s::divisor#0 ] 2: zp ZP_BYTE:95 [ div8s::$2 ] 1: zp ZP_BYTE:94 [ div8s::$6 ] 0.67: zp ZP_BYTE:93 [ div8s::resultu#0 ] 
Uplift Scope [divr16s] 11: zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 8.86: zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] 8: zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 4: zp ZP_WORD:70 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:21 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:66 [ divr16s::dividend#0 ] 2: zp ZP_WORD:80 [ divr16s::$5 ] 1: zp ZP_WORD:78 [ divr16s::$11 ] 0.86: zp ZP_WORD:68 [ divr16s::divisor#0 ] 0.67: zp ZP_WORD:76 [ divr16s::resultu#0 ] 0.22: zp ZP_WORD:17 [ divr16s::remu#3 ] 
Uplift Scope [div16u] 22: zp ZP_WORD:109 [ div16u::return#2 ] 6.5: zp ZP_WORD:105 [ div16u::dividend#0 ] 6.5: zp ZP_WORD:107 [ div16u::divisor#0 ] 4.33: zp ZP_WORD:115 [ div16u::return#0 ] 
Uplift Scope [div16s] 22: zp ZP_WORD:60 [ div16s::return#2 ] 6.5: zp ZP_WORD:56 [ div16s::dividend#0 ] 6.5: zp ZP_WORD:58 [ div16s::divisor#0 ] 4.33: zp ZP_WORD:72 [ div16s::return#0 ] 
Uplift Scope [print_cls] 33: zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] 
Uplift Scope [test_16u] 18.26: zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] 4.71: zp ZP_WORD:101 [ test_16u::dividend#0 ] 3: zp ZP_WORD:103 [ test_16u::divisor#0 ] 2.2: zp ZP_WORD:111 [ test_16u::res#0 ] 
Uplift Scope [test_8s] 18.26: zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] 4.71: zp ZP_BYTE:86 [ test_8s::dividend#0 ] 3: zp ZP_BYTE:87 [ test_8s::divisor#0 ] 2.2: zp ZP_BYTE:91 [ test_8s::res#0 ] 
Uplift Scope [test_16s] 18.26: zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] 4.71: zp ZP_WORD:52 [ test_16s::dividend#0 ] 3: zp ZP_WORD:54 [ test_16s::divisor#0 ] 2.2: zp ZP_WORD:62 [ test_16s::res#0 ] 
Uplift Scope [test_8u] 12.83: zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] 4.71: zp ZP_BYTE:117 [ test_8u::dividend#0 ] 3.3: zp ZP_BYTE:118 [ test_8u::divisor#0 ] 2.44: zp ZP_BYTE:120 [ test_8u::res#0 ] 
Uplift Scope [print_char] 14: zp ZP_BYTE:10 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] 
Uplift Scope [print_ln] 
Uplift Scope [main] 

Uplifting [divr16u] best 44181 combination zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] zp ZP_WORD:74 [ divr16u::return#3 ] zp ZP_WORD:113 [ divr16u::return#2 ] 
Uplifting [divr8u] best 41778 combination reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] reg byte a [ divr8u::$1 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] zp ZP_BYTE:96 [ divr8u::divisor#0 ] zp ZP_BYTE:97 [ divr8u::return#0 ] 
Limited combination testing to 100 combinations of 3888 possible.
Uplifting [] best 41711 combination zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] reg byte x [ rem8u#17 ] zp ZP_WORD:84 [ rem16u#1 ] 
Uplifting [print_str] best 41711 combination zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] 
Uplifting [print_byte] best 41703 combination zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] 
Uplifting [print_word] best 41703 combination zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] 
Uplifting [print_sword] best 41703 combination zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] 
Uplifting [print_sbyte] best 41703 combination zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] 
Uplifting [div8u] best 41565 combination reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::return#3 ] reg byte a [ div8u::return#2 ] zp ZP_BYTE:98 [ div8u::return#0 ] 
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [div8s] best 41460 combination reg byte a [ div8s::return#3 ] reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] zp ZP_BYTE:88 [ div8s::dividend#0 ] zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] zp ZP_BYTE:89 [ div8s::divisor#0 ] zp ZP_BYTE:95 [ div8s::$2 ] zp ZP_BYTE:94 [ div8s::$6 ] zp ZP_BYTE:93 [ div8s::resultu#0 ] 
Limited combination testing to 100 combinations of 248832 possible.
Uplifting [divr16s] best 41449 combination zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:70 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:66 [ divr16s::dividend#0 ] zp ZP_WORD:80 [ divr16s::$5 ] zp ZP_WORD:78 [ divr16s::$11 ] zp ZP_WORD:68 [ divr16s::divisor#0 ] zp ZP_WORD:76 [ divr16s::resultu#0 ] zp ZP_WORD:17 [ divr16s::remu#3 ] 
Uplifting [div16u] best 41449 combination zp ZP_WORD:109 [ div16u::return#2 ] zp ZP_WORD:105 [ div16u::dividend#0 ] zp ZP_WORD:107 [ div16u::divisor#0 ] zp ZP_WORD:115 [ div16u::return#0 ] 
Uplifting [div16s] best 41449 combination zp ZP_WORD:60 [ div16s::return#2 ] zp ZP_WORD:56 [ div16s::dividend#0 ] zp ZP_WORD:58 [ div16s::divisor#0 ] zp ZP_WORD:72 [ div16s::return#0 ] 
Uplifting [print_cls] best 41449 combination zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] 
Uplifting [test_16u] best 41449 combination zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] zp ZP_WORD:101 [ test_16u::dividend#0 ] zp ZP_WORD:103 [ test_16u::divisor#0 ] zp ZP_WORD:111 [ test_16u::res#0 ] 
Uplifting [test_8s] best 41449 combination zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] zp ZP_BYTE:86 [ test_8s::dividend#0 ] zp ZP_BYTE:87 [ test_8s::divisor#0 ] zp ZP_BYTE:91 [ test_8s::res#0 ] 
Uplifting [test_16s] best 41449 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] zp ZP_WORD:52 [ test_16s::dividend#0 ] zp ZP_WORD:54 [ test_16s::divisor#0 ] zp ZP_WORD:62 [ test_16s::res#0 ] 
Uplifting [test_8u] best 41449 combination zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] zp ZP_BYTE:117 [ test_8u::dividend#0 ] zp ZP_BYTE:118 [ test_8u::divisor#0 ] zp ZP_BYTE:120 [ test_8u::res#0 ] 
Uplifting [print_char] best 41431 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] 
Uplifting [print_ln] best 41431 combination 
Uplifting [main] best 41431 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
Uplifting [divr8u] best 41431 combination zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ]
Uplifting [print_byte] best 41431 combination zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ]
Uplifting [print_sbyte] best 41431 combination zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ]
Uplifting [divr8u] best 41431 combination zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ]
Uplifting [test_16s] best 41431 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ]
Uplifting [test_8s] best 41431 combination zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ]
Uplifting [test_16u] best 41431 combination zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ]
Uplifting [test_8u] best 41431 combination zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:96 [ divr8u::divisor#0 ]
Uplifting [divr8u] best 41431 combination zp ZP_BYTE:96 [ divr8u::divisor#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ]
Uplifting [div8s] best 41424 combination reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:88 [ div8s::dividend#0 ]
Uplifting [div8s] best 41389 combination reg byte y [ div8s::dividend#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:86 [ test_8s::dividend#0 ]
Uplifting [test_8s] best 41389 combination zp ZP_BYTE:86 [ test_8s::dividend#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:117 [ test_8u::dividend#0 ]
Uplifting [test_8u] best 41389 combination zp ZP_BYTE:117 [ test_8u::dividend#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ]
Uplifting [div8s] best 41389 combination zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:97 [ divr8u::return#0 ]
Uplifting [divr8u] best 41383 combination reg byte a [ divr8u::return#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:98 [ div8u::return#0 ]
Uplifting [div8u] best 41347 combination reg byte a [ div8u::return#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:118 [ test_8u::divisor#0 ]
Uplifting [test_8u] best 41347 combination zp ZP_BYTE:118 [ test_8u::divisor#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:87 [ test_8s::divisor#0 ]
Uplifting [test_8s] best 41347 combination zp ZP_BYTE:87 [ test_8s::divisor#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:120 [ test_8u::res#0 ]
Uplifting [test_8u] best 41347 combination zp ZP_BYTE:120 [ test_8u::res#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:91 [ test_8s::res#0 ]
Uplifting [test_8s] best 41347 combination zp ZP_BYTE:91 [ test_8s::res#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:89 [ div8s::divisor#0 ]
Uplifting [div8s] best 41312 combination reg byte x [ div8s::divisor#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:95 [ div8s::$2 ]
Uplifting [div8s] best 41308 combination reg byte a [ div8s::$2 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:94 [ div8s::$6 ]
Uplifting [div8s] best 41304 combination reg byte x [ div8s::$6 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:93 [ div8s::resultu#0 ]
Uplifting [div8s] best 41301 combination reg byte y [ div8s::resultu#0 ] 
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:76 [ divr16s::resultu#0 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] ] with [ zp ZP_WORD:84 [ rem16u#1 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] ] with [ zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] with [ zp ZP_WORD:52 [ test_16s::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] ] with [ zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] with [ zp ZP_BYTE:117 [ test_8u::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] ] with [ zp ZP_WORD:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] ] with [ zp ZP_WORD:66 [ divr16s::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 ] ] with [ zp ZP_WORD:80 [ divr16s::$5 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ divr16s::remu#3 ] ] with [ zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] ] with [ zp ZP_WORD:68 [ divr16s::divisor#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 ] ] with [ zp ZP_WORD:78 [ divr16s::$11 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:70 [ divr16s::return#3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:74 [ divr16u::return#3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 ] ] with [ zp ZP_WORD:113 [ divr16u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:54 [ test_16s::divisor#0 ] ] with [ zp ZP_WORD:58 [ div16s::divisor#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ div16s::return#2 ] ] with [ zp ZP_WORD:62 [ test_16s::res#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ div16s::return#2 test_16s::res#0 ] ] with [ zp ZP_WORD:72 [ div16s::return#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:101 [ test_16u::dividend#0 ] ] with [ zp ZP_WORD:105 [ div16u::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:103 [ test_16u::divisor#0 ] ] with [ zp ZP_WORD:107 [ div16u::divisor#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ div16u::return#2 ] ] with [ zp ZP_WORD:111 [ test_16u::res#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ div16u::return#2 test_16u::res#0 ] ] with [ zp ZP_WORD:115 [ div16u::return#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 ] ] with [ zp ZP_WORD:56 [ div16s::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 ] ] with [ zp ZP_WORD:101 [ test_16u::dividend#0 div16u::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 ] ] with [ zp ZP_BYTE:86 [ test_8s::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ divr16s::remu#3 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 rem16u#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::$11 ] ] with [ zp ZP_WORD:103 [ test_16u::divisor#0 div16u::divisor#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 ] ] with [ zp ZP_WORD:60 [ div16s::return#2 test_16s::res#0 div16s::return#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 div16s::return#2 test_16s::res#0 div16s::return#0 ] ] with [ zp ZP_WORD:109 [ div16u::return#2 test_16u::res#0 div16u::return#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] ] with [ zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 ] ] with [ zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 test_16u::i#10 test_16u::i#1 ] ] with [ zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] ] with [ zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 ] ] with [ zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] ]
Coalescing zero page register [ zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] ] with [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::$5 ] ]
Coalescing zero page register [ zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] ] with [ zp ZP_BYTE:91 [ test_8s::res#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 test_8s::res#0 ] ] with [ zp ZP_BYTE:118 [ test_8u::divisor#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] ] with [ zp ZP_BYTE:120 [ test_8u::res#0 ] ]
Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:7 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ]
Allocated (was zp ZP_WORD:11) zp ZP_WORD:8 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::$5 ]
Allocated (was zp ZP_WORD:17) zp ZP_WORD:10 [ divr16s::remu#3 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16s#11 rem16s#2 rem16s#37 rem16u#1 ]
Allocated (was zp ZP_WORD:19) zp ZP_WORD:12 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::$11 test_16u::divisor#0 div16u::divisor#0 ]
Allocated (was zp ZP_WORD:22) zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 div16s::return#2 test_16s::res#0 div16s::return#0 div16u::return#2 test_16u::res#0 div16u::return#0 ]
Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:16 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 test_8s::res#0 test_8u::divisor#0 ]
Allocated (was zp ZP_BYTE:45) zp ZP_BYTE:17 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 test_8u::res#0 ]
Allocated (was zp ZP_BYTE:46) zp ZP_BYTE:18 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
Allocated (was zp ZP_WORD:54) zp ZP_WORD:19 [ test_16s::divisor#0 div16s::divisor#0 ]
Allocated (was zp ZP_BYTE:87) zp ZP_BYTE:21 [ test_8s::divisor#0 ]
Allocated (was zp ZP_BYTE:96) zp ZP_BYTE:22 [ divr8u::divisor#0 ]

ASSEMBLER BEFORE OPTIMIZATION
//SEG0 File Comments
// Test the binary division library
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label print_char_cursor = 8
  .label print_line_cursor = 3
  .label rem16u = $a
  .label rem16s = $a
//SEG3 @begin
bbegin:
//SEG4 [1] phi from @begin to @32 [phi:@begin->@32]
b32_from_bbegin:
  jmp b32
//SEG5 @32
b32:
//SEG6 [2] call main 
//SEG7 [4] phi from @32 to main [phi:@32->main]
main_from_b32:
  jsr main
//SEG8 [3] phi from @32 to @end [phi:@32->@end]
bend_from_b32:
  jmp bend
//SEG9 @end
bend:
//SEG10 main
main: {
  //SEG11 [5] call print_cls 
  //SEG12 [282] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
  //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
  b1_from_main:
    jmp b1
  //SEG14 main::@1
  b1:
  //SEG15 [7] call test_8u 
  //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u]
  test_8u_from_b1:
    jsr test_8u
  //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
  //SEG18 main::@2
  b2:
  //SEG19 [9] call test_16u 
  //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u]
  test_16u_from_b2:
    jsr test_16u
  //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  b3_from_b2:
    jmp b3
  //SEG22 main::@3
  b3:
  //SEG23 [11] call test_8s 
  //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s]
  test_8s_from_b3:
    jsr test_8s
  //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  b4_from_b3:
    jmp b4
  //SEG26 main::@4
  b4:
  //SEG27 [13] call test_16s 
  //SEG28 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s]
  test_16s_from_b4:
    jsr test_16s
    jmp breturn
  //SEG29 main::@return
  breturn:
  //SEG30 [14] return 
    rts
}
//SEG31 test_16s
test_16s: {
    .label dividend = 5
    .label divisor = $13
    .label res = $e
    .label i = 2
  //SEG32 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1]
  b1_from_test_16s:
  //SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG34 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1]
  b1_from_b11:
  //SEG35 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy 
    jmp b1
  //SEG36 test_16s::@1
  b1:
  //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
    lda dividends+1,y
    sta dividend+1
  //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 
    ldy i
    lda divisors,y
    sta divisor
    lda divisors+1,y
    sta divisor+1
  //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0
  //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0
  //SEG41 [21] call div16s 
    jsr div16s
  //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0
    jmp b3
  //SEG43 test_16s::@3
  b3:
  //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2
  //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0
  //SEG46 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG47 [26] call print_sword 
  //SEG48 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword]
  print_sword_from_b3:
  //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy 
  //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG51 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4]
  b4_from_b3:
    jmp b4
  //SEG52 test_16s::@4
  b4:
  //SEG53 [28] call print_str 
  //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str]
  print_str_from_b4:
  //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG56 test_16s::@5
  b5:
  //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 
    lda divisor
    sta print_sword.w
    lda divisor+1
    sta print_sword.w+1
  //SEG58 [30] call print_sword 
  //SEG59 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword]
  print_sword_from_b5:
  //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy 
  //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG62 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6]
  b6_from_b5:
    jmp b6
  //SEG63 test_16s::@6
  b6:
  //SEG64 [32] call print_str 
  //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str]
  print_str_from_b6:
  //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG67 test_16s::@7
  b7:
  //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 
    lda res
    sta print_sword.w
    lda res+1
    sta print_sword.w+1
  //SEG69 [34] call print_sword 
  //SEG70 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword]
  print_sword_from_b7:
  //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy 
  //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG73 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8]
  b8_from_b7:
    jmp b8
  //SEG74 test_16s::@8
  b8:
  //SEG75 [36] call print_str 
  //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str]
  print_str_from_b8:
  //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG78 test_16s::@9
  b9:
  //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 
    lda rem16s
    sta print_sword.w
    lda rem16s+1
    sta print_sword.w+1
  //SEG80 [38] call print_sword 
  //SEG81 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword]
  print_sword_from_b9:
  //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy 
  //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG84 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10]
  b10_from_b9:
    jmp b10
  //SEG85 test_16s::@10
  b10:
  //SEG86 [40] call print_ln 
  //SEG87 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln]
  print_ln_from_b10:
  //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy 
    jsr print_ln
    jmp b11
  //SEG89 test_16s::@11
  b11:
  //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #$c
    bne b1_from_b11
    jmp breturn
  //SEG92 test_16s::@return
  breturn:
  //SEG93 [43] return 
    rts
    dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff
    divisors: .word 5, -7, $b, -$d, -$11, $13
}
//SEG94 print_ln
// Print a newline
print_ln: {
  //SEG95 [45] 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:
  //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    jmp b1
  //SEG97 print_ln::@1
  b1:
  //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 
    lda print_line_cursor
    clc
    adc #$28
    sta print_line_cursor
    bcc !+
    inc print_line_cursor+1
  !:
  //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda print_line_cursor+1
    cmp print_char_cursor+1
    bcc b1_from_b1
    bne !+
    lda print_line_cursor
    cmp print_char_cursor
    bcc b1_from_b1
  !:
    jmp breturn
  //SEG100 print_ln::@return
  breturn:
  //SEG101 [48] return 
    rts
}
//SEG102 print_sword
// Print a signed word as HEX
// print_sword(signed word zeropage(5) w)
print_sword: {
    .label w = 5
  //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 
    lda w+1
    bpl b1_from_print_sword
  //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2]
  b2_from_print_sword:
    jmp b2
  //SEG105 print_sword::@2
  b2:
  //SEG106 [52] call print_char 
  //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char]
  print_char_from_b2:
  //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy 
  //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp b4
  //SEG110 print_sword::@4
  b4:
  //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 
    sec
    lda w
    eor #$ff
    adc #0
    sta w
    lda w+1
    eor #$ff
    adc #0
    sta w+1
  //SEG112 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1]
  b1_from_print_sword:
  b1_from_b4:
  //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy 
  //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy 
    jmp b1
  //SEG115 print_sword::@1
  b1:
  //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6
  //SEG117 [56] call print_word 
  //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word]
  print_word_from_b1:
  //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy 
  //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy 
    jsr print_word
    jmp breturn
  //SEG121 print_sword::@return
  breturn:
  //SEG122 [57] return 
    rts
}
//SEG123 print_word
// Print a word as HEX
// print_word(word zeropage(5) w)
print_word: {
    .label w = 5
  //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 
    lda w+1
    sta print_byte.b
  //SEG125 [60] call print_byte 
  //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
  //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy 
  //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp b1
  //SEG129 print_word::@1
  b1:
  //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 
    lda w
    sta print_byte.b
  //SEG131 [62] call print_byte 
  //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from_b1:
  //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy 
  //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    jmp breturn
  //SEG135 print_word::@return
  breturn:
  //SEG136 [63] return 
    rts
}
//SEG137 print_byte
// Print a byte as HEX
// print_byte(byte zeropage(7) b)
print_byte: {
    .label b = 7
  //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 
    lda b
    lsr
    lsr
    lsr
    lsr
  //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
  //SEG140 [67] call print_char 
  //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
  //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy 
  //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    jmp b1
  //SEG144 print_byte::@1
  b1:
  //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 
    lda #$f
    and b
  //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
  //SEG147 [70] call print_char 
  //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from_b1:
  //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy 
  //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    jmp breturn
  //SEG151 print_byte::@return
  breturn:
  //SEG152 [71] return 
    rts
}
//SEG153 print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
  //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
  //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
    jmp breturn
  //SEG156 print_char::@return
  breturn:
  //SEG157 [75] return 
    rts
}
//SEG158 print_str
// Print a zero-terminated string
// print_str(byte* zeropage(5) str)
print_str: {
    .label str = 5
  //SEG159 [77] 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:
  //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp b1
  //SEG162 print_str::@1
  b1:
  //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
    jmp breturn
  //SEG164 print_str::@return
  breturn:
  //SEG165 [79] return 
    rts
  //SEG166 print_str::@2
  b2:
  //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
  //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
  //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1_from_b2
}
//SEG170 div16s
// Perform division on two signed 16-bit numbers
// Returns dividend/divisor.
// The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// div16s(signed word zeropage(5) dividend, signed word zeropage($13) divisor)
div16s: {
    .label return = $e
    .label dividend = 5
    .label divisor = $13
  //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 
    lda dividend
    sta divr16s.dividend
    lda dividend+1
    sta divr16s.dividend+1
  //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 
    lda divisor
    sta divr16s.divisor
    lda divisor+1
    sta divr16s.divisor+1
  //SEG173 [85] call divr16s 
    jsr divr16s
  //SEG174 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
    jmp b2
  //SEG175 div16s::@2
  b2:
  //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3
    jmp breturn
  //SEG177 div16s::@return
  breturn:
  //SEG178 [88] return 
    rts
}
//SEG179 divr16s
// Perform division on two signed 16-bit numbers with an initial remainder.
// Returns dividend/divisor. The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// divr16s(signed word zeropage(8) dividend, signed word zeropage($c) divisor)
divr16s: {
    .const rem = 0
    .label _5 = 8
    .label _11 = $c
    .label resultu = $e
    .label return = $e
    .label dividend = 8
    .label divisor = $c
    .label dividendu = 8
    .label divisoru = $c
    .label remu = $a
  //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 
    lda dividend+1
    bmi b1
    jmp b17
  //SEG181 divr16s::@17
  b17:
  //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0
  //SEG183 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
  b2_from_b17:
  //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 
    lda #<rem
    sta remu
    lda #>rem
    sta remu+1
  //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy 
  //SEG186 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 
    ldy #0
    jmp b2
  //SEG187 divr16s::@2
  b2:
  //SEG188 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 
    lda divisor+1
    bmi b3
    jmp b18
  //SEG189 divr16s::@18
  b18:
  //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
  //SEG191 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
  b4_from_b18:
  b4_from_b3:
  //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy 
  //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy 
    jmp b4
  //SEG194 divr16s::@4
  b4:
  //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3
  //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3
  //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3
  //SEG198 [98] call divr16u 
  //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
  divr16u_from_b4:
  //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy 
  //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy 
  //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy 
    jsr divr16u
  //SEG203 [99] (word) divr16u::return#3 ← (word) divr16u::return#0
    jmp b15
  //SEG204 divr16s::@15
  b15:
  //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3
  //SEG206 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 
    cpy #0
    beq b19
    jmp b11
  //SEG207 divr16s::@11
  b11:
  //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 
    sec
    lda rem16s
    eor #$ff
    adc #0
    sta rem16s
    lda rem16s+1
    eor #$ff
    adc #0
    sta rem16s+1
  //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 
    sec
    lda return
    eor #$ff
    adc #0
    sta return
    lda return+1
    eor #$ff
    adc #0
    sta return+1
  //SEG210 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
  breturn_from_b11:
  breturn_from_b19:
  //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy 
  //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy 
    jmp breturn
  //SEG213 divr16s::@return
  breturn:
  //SEG214 [105] return 
    rts
  //SEG215 divr16s::@19
  b19:
  //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
  //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1
    jmp breturn_from_b19
  //SEG218 divr16s::@3
  b3:
  //SEG219 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 
    sec
    lda _11
    eor #$ff
    adc #0
    sta _11
    lda _11+1
    eor #$ff
    adc #0
    sta _11+1
  //SEG220 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 
    tya
    eor #1
    tay
  //SEG221 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
    jmp b4_from_b3
  //SEG222 divr16s::@1
  b1:
  //SEG223 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 
    sec
    lda _5
    eor #$ff
    adc #0
    sta _5
    lda _5+1
    eor #$ff
    adc #0
    sta _5+1
  //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5
  //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
  b2_from_b1:
  //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 
    lda #<-rem
    sta remu
    lda #>-rem
    sta remu+1
  //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy 
  //SEG228 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 
    ldy #1
    jmp b2
}
//SEG229 divr16u
// Performs division on two 16 bit unsigned words and an initial remainder
// Returns the quotient dividend/divisor.
// The final remainder will be set into the global variable rem16u
// Implemented using simple binary division
// divr16u(word zeropage(8) dividend, word zeropage($c) divisor, word zeropage($a) rem)
divr16u: {
    .label rem = $a
    .label dividend = 8
    .label quotient = $e
    .label return = $e
    .label divisor = $c
  //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
  b1_from_divr16u:
  //SEG231 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG232 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta quotient
    lda #>0
    sta quotient+1
  //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy 
  //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy 
    jmp b1
  //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
  b1_from_b3:
  //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy 
  //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy 
  //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy 
  //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy 
    jmp b1
  //SEG240 divr16u::@1
  b1:
  //SEG241 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl rem
    rol rem+1
  //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 
    lda dividend+1
  //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 
    and #$80
  //SEG244 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b2_from_b1
    jmp b4
  //SEG245 divr16u::@4
  b4:
  //SEG246 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 
    lda #1
    ora rem
    sta rem
  //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy 
    jmp b2
  //SEG249 divr16u::@2
  b2:
  //SEG250 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl dividend
    rol dividend+1
  //SEG251 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl quotient
    rol quotient+1
  //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 
    lda rem+1
    cmp divisor+1
    bcc b3_from_b2
    bne !+
    lda rem
    cmp divisor
    bcc b3_from_b2
  !:
    jmp b5
  //SEG253 divr16u::@5
  b5:
  //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 
    inc quotient
    bne !+
    inc quotient+1
  !:
  //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 
    lda rem
    sec
    sbc divisor
    sta rem
    lda rem+1
    sbc divisor+1
    sta rem+1
  //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
  b3_from_b2:
  b3_from_b5:
  //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy 
  //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy 
    jmp b3
  //SEG259 divr16u::@3
  b3:
  //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG261 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$10
    bne b1_from_b3
    jmp b6
  //SEG262 divr16u::@6
  b6:
  //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11
    jmp breturn
  //SEG264 divr16u::@return
  breturn:
  //SEG265 [130] return 
    rts
}
//SEG266 test_8s
test_8s: {
    .label dividend = 7
    .label divisor = $15
    .label res = $10
    .label i = 2
  //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1]
  b1_from_test_8s:
  //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG269 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1]
  b1_from_b11:
  //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy 
    jmp b1
  //SEG271 test_8s::@1
  b1:
  //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
  //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda divisors,y
    sta divisor
  //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 
    ldy dividend
  //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 
    ldx divisor
  //SEG276 [137] call div8s 
    jsr div8s
  //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2
    jmp b3
  //SEG278 test_8s::@3
  b3:
  //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa 
    sta res
  //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0
  //SEG281 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG282 [142] call print_sbyte 
  //SEG283 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte]
  print_sbyte_from_b3:
  //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy 
  //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG286 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4]
  b4_from_b3:
    jmp b4
  //SEG287 test_8s::@4
  b4:
  //SEG288 [144] call print_str 
  //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str]
  print_str_from_b4:
  //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG291 test_8s::@5
  b5:
  //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 
    lda divisor
    sta print_sbyte.b
  //SEG293 [146] call print_sbyte 
  //SEG294 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte]
  print_sbyte_from_b5:
  //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy 
  //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG297 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6]
  b6_from_b5:
    jmp b6
  //SEG298 test_8s::@6
  b6:
  //SEG299 [148] call print_str 
  //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str]
  print_str_from_b6:
  //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG302 test_8s::@7
  b7:
  //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 
    lda res
    sta print_sbyte.b
  //SEG304 [150] call print_sbyte 
  //SEG305 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte]
  print_sbyte_from_b7:
  //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy 
  //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG308 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8]
  b8_from_b7:
    jmp b8
  //SEG309 test_8s::@8
  b8:
  //SEG310 [152] call print_str 
  //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str]
  print_str_from_b8:
  //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG313 test_8s::@9
  b9:
  //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx 
    stx print_sbyte.b
  //SEG315 [154] call print_sbyte 
  //SEG316 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte]
  print_sbyte_from_b9:
  //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy 
  //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG319 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10]
  b10_from_b9:
    jmp b10
  //SEG320 test_8s::@10
  b10:
  //SEG321 [156] call print_ln 
  //SEG322 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln]
  print_ln_from_b10:
  //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy 
    jsr print_ln
    jmp b11
  //SEG324 test_8s::@11
  b11:
  //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #6
    bne b1_from_b11
    jmp breturn
  //SEG327 test_8s::@return
  breturn:
  //SEG328 [159] return 
    rts
    dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f
    divisors: .byte 5, 7, -$b, -$d, $11, $13
}
//SEG329 print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte zeropage(7) b)
print_sbyte: {
    .label b = 7
  //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 
    lda b
    bmi b1_from_print_sbyte
  //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
  b3_from_print_sbyte:
    jmp b3
  //SEG332 print_sbyte::@3
  b3:
  //SEG333 [163] call print_char 
  //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
  print_char_from_b3:
  //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy 
  //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
  //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2]
  b2_from_b3:
  b2_from_b5:
  //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy 
    jmp b2
  //SEG339 print_sbyte::@2
  b2:
  //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7
  //SEG341 [166] call print_byte 
  //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  print_byte_from_b2:
  //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
  //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
    jmp breturn
  //SEG345 print_sbyte::@return
  breturn:
  //SEG346 [167] return 
    rts
  //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  b1_from_print_sbyte:
    jmp b1
  //SEG348 print_sbyte::@1
  b1:
  //SEG349 [169] call print_char 
  //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  print_char_from_b1:
  //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy 
  //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp b5
  //SEG353 print_sbyte::@5
  b5:
  //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 
    lda b
    eor #$ff
    clc
    adc #1
    sta b
    jmp b2_from_b5
}
//SEG355 div8s
// Perform division on two signed 8-bit numbers
// Returns dividend/divisor.
// The remainder will be set into the global variable rem8s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// div8s(signed byte register(Y) dividend, signed byte register(X) divisor)
div8s: {
    .label neg = $10
  //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 
    cpy #0
    bmi b1
    jmp b16
  //SEG357 div8s::@16
  b16:
  //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0
  //SEG359 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2]
  b2_from_b16:
  //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy 
  //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta neg
    jmp b2
  //SEG362 div8s::@2
  b2:
  //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi b3
    jmp b17
  //SEG364 div8s::@17
  b17:
  //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0
  //SEG366 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4]
  b4_from_b17:
  b4_from_b3:
  //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy 
  //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy 
    jmp b4
  //SEG369 div8s::@4
  b4:
  //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy 
    tya
  //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3
  //SEG372 [179] call div8u 
  //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u]
  div8u_from_b4:
  //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy 
  //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy 
    jsr div8u
  //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0
    jmp b15
  //SEG377 div8s::@15
  b15:
  //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa 
    tay
  //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 
    lda neg
    cmp #0
    beq b18
    jmp b11
  //SEG380 div8s::@11
  b11:
  //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
  //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy 
    tya
    eor #$ff
    clc
    adc #1
  //SEG383 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return]
  breturn_from_b11:
  breturn_from_b18:
  //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy 
  //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy 
    jmp breturn
  //SEG386 div8s::@return
  breturn:
  //SEG387 [186] return 
    rts
  //SEG388 div8s::@18
  b18:
  //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy 
    tya
  //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17
    jmp breturn_from_b18
  //SEG391 div8s::@3
  b3:
  //SEG392 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
  //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 
    lda neg
    eor #1
    sta neg
  //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6
    jmp b4_from_b3
  //SEG395 div8s::@1
  b1:
  //SEG396 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy 
    tya
    eor #$ff
    clc
    adc #1
  //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuyy=vbuaa 
    tay
  //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2]
  b2_from_b1:
  //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy 
  //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 
    lda #1
    sta neg
    jmp b2
}
//SEG401 div8u
// Performs division on two 8 bit unsigned bytes
// Returns dividend/divisor.
// The remainder will be set into the global variable rem8u
// Implemented using simple binary division
// div8u(byte register(A) dividend, byte register(X) divisor)
div8u: {
  //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa 
    sta divr8u.dividend
  //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx 
    stx divr8u.divisor
  //SEG404 [197] call divr8u 
  //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u]
  divr8u_from_div8u:
    jsr divr8u
  //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 
    lda divr8u.return
    jmp b2
  //SEG407 div8u::@2
  b2:
  //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0
    jmp breturn
  //SEG409 div8u::@return
  breturn:
  //SEG410 [200] return 
    rts
}
//SEG411 divr8u
// Performs division on two 8 bit unsigned bytes and an initial remainder
// Returns dividend/divisor.
// The final remainder will be set into the global variable rem8u
// Implemented using simple binary division
// divr8u(byte zeropage($11) dividend, byte zeropage($16) divisor, byte register(Y) rem)
divr8u: {
    .label dividend = $11
    .label divisor = $16
    .label quotient = $12
    .label return = $12
  //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1]
  b1_from_divr8u:
  //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta quotient
  //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy 
  //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 
    ldy #0
    jmp b1
  //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1]
  b1_from_b3:
  //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy 
  //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy 
  //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy 
  //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy 
    jmp b1
  //SEG422 divr8u::@1
  b1:
  //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 
    tya
    asl
    tay
  //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 
    lda #$80
    and dividend
  //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b2_from_b1
    jmp b4
  //SEG426 divr8u::@4
  b4:
  //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 
    tya
    ora #1
    tay
  //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy 
    jmp b2
  //SEG430 divr8u::@2
  b2:
  //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 
    asl dividend
  //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 
    asl quotient
  //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 
    cpy divisor
    bcc b3_from_b2
    jmp b5
  //SEG434 divr8u::@5
  b5:
  //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 
    inc quotient
  //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 
    tya
    sec
    sbc divisor
    tay
  //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3]
  b3_from_b2:
  b3_from_b5:
  //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy 
  //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy 
    jmp b3
  //SEG440 divr8u::@3
  b3:
  //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #8
    bne b1_from_b3
    jmp b6
  //SEG443 divr8u::@6
  b6:
  //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy 
    tya
    tax
    jmp breturn
  //SEG445 divr8u::@return
  breturn:
  //SEG446 [217] return 
    rts
}
//SEG447 test_16u
test_16u: {
    .label dividend = 5
    .label divisor = $c
    .label res = $e
    .label i = 2
  //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1]
  b1_from_test_16u:
  //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG450 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1]
  b1_from_b11:
  //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy 
    jmp b1
  //SEG452 test_16u::@1
  b1:
  //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
    lda dividends+1,y
    sta dividend+1
  //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 
    ldy i
    lda divisors,y
    sta divisor
    lda divisors+1,y
    sta divisor+1
  //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0
  //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0
  //SEG457 [224] call div16u 
    jsr div16u
  //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0
    jmp b3
  //SEG459 test_16u::@3
  b3:
  //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2
  //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0
  //SEG462 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG463 [229] call print_word 
  //SEG464 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word]
  print_word_from_b3:
  //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy 
  //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy 
    jsr print_word
  //SEG467 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4]
  b4_from_b3:
    jmp b4
  //SEG468 test_16u::@4
  b4:
  //SEG469 [231] call print_str 
  //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str]
  print_str_from_b4:
  //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG472 test_16u::@5
  b5:
  //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 
    lda divisor
    sta print_word.w
    lda divisor+1
    sta print_word.w+1
  //SEG474 [233] call print_word 
  //SEG475 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word]
  print_word_from_b5:
  //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy 
  //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy 
    jsr print_word
  //SEG478 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6]
  b6_from_b5:
    jmp b6
  //SEG479 test_16u::@6
  b6:
  //SEG480 [235] call print_str 
  //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str]
  print_str_from_b6:
  //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG483 test_16u::@7
  b7:
  //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 
    lda res
    sta print_word.w
    lda res+1
    sta print_word.w+1
  //SEG485 [237] call print_word 
  //SEG486 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word]
  print_word_from_b7:
  //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy 
  //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy 
    jsr print_word
  //SEG489 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8]
  b8_from_b7:
    jmp b8
  //SEG490 test_16u::@8
  b8:
  //SEG491 [239] call print_str 
  //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str]
  print_str_from_b8:
  //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG494 test_16u::@9
  b9:
  //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 
    lda rem16u
    sta print_word.w
    lda rem16u+1
    sta print_word.w+1
  //SEG496 [241] call print_word 
  //SEG497 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word]
  print_word_from_b9:
  //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy 
  //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy 
    jsr print_word
  //SEG500 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10]
  b10_from_b9:
    jmp b10
  //SEG501 test_16u::@10
  b10:
  //SEG502 [243] call print_ln 
  //SEG503 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln]
  print_ln_from_b10:
  //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy 
    jsr print_ln
    jmp b11
  //SEG505 test_16u::@11
  b11:
  //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #$c
    bne b1_from_b11
    jmp breturn
  //SEG508 test_16u::@return
  breturn:
  //SEG509 [246] return 
    rts
    dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
    divisors: .word 5, 7, $b, $d, $11, $13
}
//SEG510 div16u
// Performs division on two 16 bit unsigned words
// Returns the quotient dividend/divisor.
// The remainder will be set into the global variable rem16u
// Implemented using simple binary division
// div16u(word zeropage(5) dividend, word zeropage($c) divisor)
div16u: {
    .label return = $e
    .label dividend = 5
    .label divisor = $c
  //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 
    lda dividend
    sta divr16u.dividend
    lda dividend+1
    sta divr16u.dividend+1
  //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0
  //SEG513 [249] call divr16u 
  //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u]
  divr16u_from_div16u:
  //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy 
  //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy 
  //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 
    lda #<0
    sta divr16u.rem
    lda #>0
    sta divr16u.rem+1
    jsr divr16u
  //SEG518 [250] (word) divr16u::return#2 ← (word) divr16u::return#0
    jmp b2
  //SEG519 div16u::@2
  b2:
  //SEG520 [251] (word) div16u::return#0 ← (word) divr16u::return#2
    jmp breturn
  //SEG521 div16u::@return
  breturn:
  //SEG522 [252] return 
    rts
}
//SEG523 test_8u
test_8u: {
    .label dividend = 7
    .label divisor = $10
    .label res = $11
    .label i = 2
  //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1]
  b1_from_test_8u:
  //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
  //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG528 test_8u::@1
  b1:
  //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
  //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy i
    lda divisors,y
    sta divisor
  //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 
    lda dividend
  //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 
    ldx divisor
  //SEG533 [259] call div8u 
  //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u]
  div8u_from_b1:
  //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy 
  //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy 
    jsr div8u
  //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0
    jmp b3
  //SEG538 test_8u::@3
  b3:
  //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa 
    sta res
  //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0
  //SEG541 [263] call print_byte 
  //SEG542 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte]
  print_byte_from_b3:
  //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy 
  //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG545 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4]
  b4_from_b3:
    jmp b4
  //SEG546 test_8u::@4
  b4:
  //SEG547 [265] call print_str 
  //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str]
  print_str_from_b4:
  //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b5
  //SEG550 test_8u::@5
  b5:
  //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 
    lda divisor
    sta print_byte.b
  //SEG552 [267] call print_byte 
  //SEG553 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte]
  print_byte_from_b5:
  //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy 
  //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG556 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6]
  b6_from_b5:
    jmp b6
  //SEG557 test_8u::@6
  b6:
  //SEG558 [269] call print_str 
  //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str]
  print_str_from_b6:
  //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b7
  //SEG561 test_8u::@7
  b7:
  //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 
    lda res
    sta print_byte.b
  //SEG563 [271] call print_byte 
  //SEG564 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte]
  print_byte_from_b7:
  //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy 
  //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG567 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8]
  b8_from_b7:
    jmp b8
  //SEG568 test_8u::@8
  b8:
  //SEG569 [273] call print_str 
  //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str]
  print_str_from_b8:
  //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
    jmp b9
  //SEG572 test_8u::@9
  b9:
  //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx 
    stx print_byte.b
  //SEG574 [275] call print_byte 
  //SEG575 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte]
  print_byte_from_b9:
  //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy 
  //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG578 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10]
  b10_from_b9:
    jmp b10
  //SEG579 test_8u::@10
  b10:
  //SEG580 [277] call print_ln 
  //SEG581 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln]
  print_ln_from_b10:
  //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy 
    jsr print_ln
    jmp b11
  //SEG583 test_8u::@11
  b11:
  //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #6
    bne b12
    jmp breturn
  //SEG586 test_8u::@return
  breturn:
  //SEG587 [280] return 
    rts
  //SEG588 test_8u::@12
  b12:
  //SEG589 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG590 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1]
  b1_from_b12:
  //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy 
  //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy 
  //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy 
    jmp b1
    dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff
    divisors: .byte 5, 7, $b, $d, $11, $13
}
//SEG594 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = 3
  //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  b1_from_print_cls:
  //SEG596 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
    jmp b1
  //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  b1_from_b1:
  //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
    jmp b1
  //SEG599 print_cls::@1
  b1:
  //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG602 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1_from_b1
    lda sc
    cmp #<$400+$3e8
    bne b1_from_b1
    jmp breturn
  //SEG603 print_cls::@return
  breturn:
  //SEG604 [287] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  str: .text " / @"
  str2: .text " @"
  str1: .text " = @"

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b32
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b1
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 b11
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp b4
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b17
Removing instruction jmp b2
Removing instruction jmp b18
Removing instruction jmp b4
Removing instruction jmp b15
Removing instruction jmp b11
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b4
Removing instruction jmp b2
Removing instruction jmp b5
Removing instruction jmp b3
Removing instruction jmp b6
Removing instruction jmp breturn
Removing instruction jmp b1
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 b11
Removing instruction jmp breturn
Removing instruction jmp b3
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b5
Removing instruction jmp b16
Removing instruction jmp b2
Removing instruction jmp b17
Removing instruction jmp b4
Removing instruction jmp b15
Removing instruction jmp b11
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b4
Removing instruction jmp b2
Removing instruction jmp b5
Removing instruction jmp b3
Removing instruction jmp b6
Removing instruction jmp breturn
Removing instruction jmp b1
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 b11
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
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 b11
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy i
Removing instruction lda i
Removing instruction ldy #0
Replacing instruction lda #<0 with TXA
Removing instruction lda #>0
Removing instruction ldy i
Replacing instruction ldx divisor with TAX
Replacing instruction lda #0 with TXA
Replacing instruction ldy #0 with TAY
Removing instruction ldy i
Removing instruction lda i
Removing instruction lda #>0
Removing instruction ldy i
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b11 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_print_sword with b1
Replacing label b1_from_b2 with b1
Replacing label breturn_from_b19 with breturn
Replacing label b4_from_b3 with b4
Replacing label b2_from_b1 with b2
Replacing label b3_from_b2 with b3
Replacing label b3_from_b2 with b3
Replacing label b1_from_b3 with b1
Replacing label b1_from_b11 with b1
Replacing label b1_from_print_sbyte with b1
Replacing label b2_from_b5 with b2
Replacing label breturn_from_b18 with breturn
Replacing label b4_from_b3 with b4
Replacing label b2_from_b1 with b2
Replacing label b3_from_b2 with b3
Replacing label b1_from_b3 with b1
Replacing label b1_from_b11 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Removing instruction b32_from_bbegin:
Removing instruction b32:
Removing instruction main_from_b32:
Removing instruction bend_from_b32:
Removing instruction b1_from_main:
Removing instruction test_8u_from_b1:
Removing instruction b2_from_b1:
Removing instruction test_16u_from_b2:
Removing instruction b3_from_b2:
Removing instruction test_8s_from_b3:
Removing instruction b4_from_b3:
Removing instruction test_16s_from_b4:
Removing instruction b1_from_b11:
Removing instruction b4_from_b3:
Removing instruction print_str_from_b4:
Removing instruction b6_from_b5:
Removing instruction print_str_from_b6:
Removing instruction b8_from_b7:
Removing instruction print_str_from_b8:
Removing instruction b10_from_b9:
Removing instruction print_ln_from_b10:
Removing instruction b1_from_print_ln:
Removing instruction b1_from_b1:
Removing instruction b2_from_print_sword:
Removing instruction print_char_from_b2:
Removing instruction b1_from_print_sword:
Removing instruction b1_from_b4:
Removing instruction print_word_from_b1:
Removing instruction b1_from_print_str:
Removing instruction b1_from_b2:
Removing instruction breturn:
Removing instruction b2_from_b17:
Removing instruction b18:
Removing instruction b4_from_b18:
Removing instruction b4_from_b3:
Removing instruction divr16u_from_b4:
Removing instruction breturn_from_b11:
Removing instruction breturn_from_b19:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b4:
Removing instruction b3_from_b2:
Removing instruction b3_from_b5:
Removing instruction breturn:
Removing instruction b1_from_b11:
Removing instruction b4_from_b3:
Removing instruction print_str_from_b4:
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_sbyte:
Removing instruction print_char_from_b3:
Removing instruction b2_from_b3:
Removing instruction b2_from_b5:
Removing instruction print_byte_from_b2:
Removing instruction b1_from_print_sbyte:
Removing instruction print_char_from_b1:
Removing instruction b2_from_b16:
Removing instruction b17:
Removing instruction b4_from_b17:
Removing instruction b4_from_b3:
Removing instruction breturn_from_b11:
Removing instruction breturn_from_b18:
Removing instruction breturn:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b4:
Removing instruction b3_from_b2:
Removing instruction b3_from_b5:
Removing instruction b1_from_b11:
Removing instruction b4_from_b3:
Removing instruction print_str_from_b4:
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 b4_from_b3:
Removing instruction print_str_from_b4:
Removing instruction b6_from_b5:
Removing instruction print_str_from_b6:
Removing instruction b8_from_b7:
Removing instruction print_str_from_b8:
Removing instruction b10_from_b9:
Removing instruction print_ln_from_b10:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction bend:
Removing instruction print_cls_from_main:
Removing instruction b1:
Removing instruction b2:
Removing instruction b3:
Removing instruction b4:
Removing instruction breturn:
Removing instruction b1_from_test_16s:
Removing instruction b3:
Removing instruction print_sword_from_b3:
Removing instruction b4:
Removing instruction b5:
Removing instruction print_sword_from_b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction print_sword_from_b7:
Removing instruction b8:
Removing instruction b9:
Removing instruction print_sword_from_b9:
Removing instruction b10:
Removing instruction b11:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b2:
Removing instruction b4:
Removing instruction breturn:
Removing instruction print_byte_from_print_word:
Removing instruction b1:
Removing instruction print_byte_from_b1:
Removing instruction breturn:
Removing instruction print_char_from_print_byte:
Removing instruction b1:
Removing instruction print_char_from_b1:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b2:
Removing instruction b17:
Removing instruction b15:
Removing instruction b11:
Removing instruction b2_from_b1:
Removing instruction b1_from_divr16u:
Removing instruction b4:
Removing instruction b5:
Removing instruction b6:
Removing instruction b1_from_test_8s:
Removing instruction b3:
Removing instruction print_sbyte_from_b3:
Removing instruction b4:
Removing instruction b5:
Removing instruction print_sbyte_from_b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction print_sbyte_from_b7:
Removing instruction b8:
Removing instruction b9:
Removing instruction print_sbyte_from_b9:
Removing instruction b10:
Removing instruction b11:
Removing instruction breturn:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b5:
Removing instruction b16:
Removing instruction div8u_from_b4:
Removing instruction b15:
Removing instruction b11:
Removing instruction b2_from_b1:
Removing instruction divr8u_from_div8u:
Removing instruction b2:
Removing instruction b1_from_divr8u:
Removing instruction b4:
Removing instruction b5:
Removing instruction b6:
Removing instruction breturn:
Removing instruction b1_from_test_16u:
Removing instruction b3:
Removing instruction print_word_from_b3:
Removing instruction b4:
Removing instruction b5:
Removing instruction print_word_from_b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction print_word_from_b7:
Removing instruction b8:
Removing instruction b9:
Removing instruction print_word_from_b9:
Removing instruction b10:
Removing instruction b11:
Removing instruction breturn:
Removing instruction divr16u_from_div16u:
Removing instruction b2:
Removing instruction b1_from_test_8u:
Removing instruction div8u_from_b1:
Removing instruction b3:
Removing instruction print_byte_from_b3:
Removing instruction b4:
Removing instruction b5:
Removing instruction print_byte_from_b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction print_byte_from_b7:
Removing instruction b8:
Removing instruction b9:
Removing instruction print_byte_from_b9:
Removing instruction b10:
Removing instruction b11:
Removing instruction breturn:
Removing instruction b1_from_b12:
Removing instruction b1_from_print_cls:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Skipping double jump to breturn in beq b19
Succesful ASM optimization Pass5DoubleJumpElimination
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Removing instruction b19:
Succesful ASM optimization Pass5UnusedLabelElimination
Removing unreachable instruction jmp breturn
Succesful ASM optimization Pass5UnreachableCodeElimination

FINAL SYMBOL TABLE
(label) @32
(label) @begin
(label) @end
(signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor)
(label) div16s::@2
(label) div16s::@return
(signed word) div16s::dividend
(signed word) div16s::dividend#0 dividend zp ZP_WORD:5 6.5
(signed word) div16s::divisor
(signed word) div16s::divisor#0 divisor zp ZP_WORD:19 6.5
(signed word) div16s::return
(signed word) div16s::return#0 return zp ZP_WORD:14 4.333333333333333
(signed word) div16s::return#2 return zp ZP_WORD:14 22.0
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
(label) div16u::@2
(label) div16u::@return
(word) div16u::dividend
(word) div16u::dividend#0 dividend zp ZP_WORD:5 6.5
(word) div16u::divisor
(word) div16u::divisor#0 divisor zp ZP_WORD:12 6.5
(word) div16u::return
(word) div16u::return#0 return zp ZP_WORD:14 4.333333333333333
(word) div16u::return#2 return zp ZP_WORD:14 22.0
(signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor)
(signed byte~) div8s::$2 reg byte a 2.0
(signed byte~) div8s::$6 reg byte x 1.0
(label) div8s::@1
(label) div8s::@11
(label) div8s::@15
(label) div8s::@16
(label) div8s::@17
(label) div8s::@18
(label) div8s::@2
(label) div8s::@3
(label) div8s::@4
(label) div8s::@return
(signed byte) div8s::dividend
(signed byte) div8s::dividend#0 reg byte y 5.0
(byte) div8s::dividendu
(byte) div8s::dividendu#3 reg byte y 0.8571428571428571
(byte~) div8s::dividendu#7 reg byte y 4.0
(byte~) div8s::dividendu#8 reg byte y 4.0
(signed byte) div8s::divisor
(signed byte) div8s::divisor#0 reg byte x 2.142857142857143
(byte) div8s::divisoru
(byte) div8s::divisoru#3 reg byte x 3.0
(byte~) div8s::divisoru#4 reg byte x 4.0
(byte~) div8s::divisoru#5 reg byte x 4.0
(byte) div8s::neg
(byte) div8s::neg#2 neg zp ZP_BYTE:16 2.0
(byte) div8s::neg#3 neg zp ZP_BYTE:16 1.0
(byte) div8s::neg#4 neg zp ZP_BYTE:16 1.0
(byte) div8s::resultu
(byte) div8s::resultu#0 reg byte y 0.6666666666666666
(signed byte) div8s::return
(signed byte) div8s::return#1 reg byte a 4.0
(signed byte) div8s::return#2 reg byte a 5.0
(signed byte) div8s::return#3 reg byte a 22.0
(signed byte~) div8s::return#7 reg byte a 2.0
(byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor)
(label) div8u::@2
(label) div8u::@return
(byte) div8u::dividend
(byte) div8u::dividend#0 reg byte a 2.0
(byte) div8u::dividend#1 reg byte a 11.0
(byte) div8u::dividend#2 reg byte a 15.0
(byte) div8u::divisor
(byte) div8u::divisor#0 reg byte x 4.0
(byte) div8u::divisor#1 reg byte x 22.0
(byte) div8u::divisor#2 reg byte x 7.5
(byte) div8u::return
(byte) div8u::return#0 reg byte a 3.75
(byte) div8u::return#2 reg byte a 4.0
(byte) div8u::return#3 reg byte a 22.0
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(signed word~) divr16s::$11 $11 zp ZP_WORD:12 1.0
(signed word~) divr16s::$5 $5 zp ZP_WORD:8 2.0
(label) divr16s::@1
(label) divr16s::@11
(label) divr16s::@15
(label) divr16s::@17
(label) divr16s::@18
(label) divr16s::@19
(label) divr16s::@2
(label) divr16s::@3
(label) divr16s::@4
(label) divr16s::@return
(signed word) divr16s::dividend
(signed word) divr16s::dividend#0 dividend zp ZP_WORD:8 2.0
(word) divr16s::dividendu
(word) divr16s::dividendu#3 dividendu zp ZP_WORD:8 0.8571428571428571
(word~) divr16s::dividendu#7 dividendu zp ZP_WORD:8 4.0
(word~) divr16s::dividendu#8 dividendu zp ZP_WORD:8 4.0
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0 divisor zp ZP_WORD:12 0.8571428571428571
(word) divr16s::divisoru
(word) divr16s::divisoru#3 divisoru zp ZP_WORD:12 3.0
(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:12 4.0
(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:12 4.0
(byte) divr16s::neg
(byte) divr16s::neg#2 reg byte y 2.0
(byte) divr16s::neg#3 reg byte y 1.0
(byte) divr16s::neg#4 reg byte y 0.8571428571428571
(signed word) divr16s::rem
(const signed word) divr16s::rem#0 rem = (byte/signed byte/word/signed word/dword/signed dword) 0
(word) divr16s::remu
(word) divr16s::remu#3 remu zp ZP_WORD:10 0.2222222222222222
(word) divr16s::resultu
(word) divr16s::resultu#0 resultu zp ZP_WORD:14 0.6666666666666666
(signed word) divr16s::return
(signed word) divr16s::return#1 return zp ZP_WORD:14 4.0
(signed word) divr16s::return#2 return zp ZP_WORD:14 2.0
(signed word) divr16s::return#3 return zp ZP_WORD:14 4.0
(signed word~) divr16s::return#7 return zp ZP_WORD:14 2.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 202.0
(byte~) divr16u::$2 reg byte a 202.0
(label) divr16u::@1
(label) divr16u::@2
(label) divr16u::@3
(label) divr16u::@4
(label) divr16u::@5
(label) divr16u::@6
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:8 25.25
(word) divr16u::dividend#1 dividend zp ZP_WORD:8 2.0
(word) divr16u::dividend#2 dividend zp ZP_WORD:8 1.3333333333333333
(word) divr16u::dividend#3 dividend zp ZP_WORD:8 43.57142857142858
(word) divr16u::dividend#5 dividend zp ZP_WORD:8 6.0
(word) divr16u::divisor
(word) divr16u::divisor#0 divisor zp ZP_WORD:12 4.0
(word) divr16u::divisor#1 divisor zp ZP_WORD:12 2.0
(word) divr16u::divisor#6 divisor zp ZP_WORD:12 12.875
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 151.5
(byte) divr16u::i#2 reg byte x 15.538461538461538
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:14 151.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:14 101.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:14 25.25
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:10 75.75
(word) divr16u::rem#1 rem zp ZP_WORD:10 202.0
(word) divr16u::rem#10 rem zp ZP_WORD:10 4.0
(word) divr16u::rem#11 rem zp ZP_WORD:10 101.66666666666667
(word) divr16u::rem#2 rem zp ZP_WORD:10 202.0
(word) divr16u::rem#4 rem zp ZP_WORD:10 4.0
(word) divr16u::rem#5 rem zp ZP_WORD:10 204.0
(word) divr16u::rem#6 rem zp ZP_WORD:10 101.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:14 43.85714285714286
(word) divr16u::return#2 return zp ZP_WORD:14 4.0
(word) divr16u::return#3 return zp ZP_WORD:14 4.0
(byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem)
(byte~) divr8u::$1 reg byte a 202.0
(label) divr8u::@1
(label) divr8u::@2
(label) divr8u::@3
(label) divr8u::@4
(label) divr8u::@5
(label) divr8u::@6
(label) divr8u::@return
(byte) divr8u::dividend
(byte) divr8u::dividend#0 dividend zp ZP_BYTE:17 1.3333333333333333
(byte) divr8u::dividend#1 dividend zp ZP_BYTE:17 25.25
(byte) divr8u::dividend#2 dividend zp ZP_BYTE:17 50.83333333333333
(byte) divr8u::divisor
(byte) divr8u::divisor#0 divisor zp ZP_BYTE:22 12.75
(byte) divr8u::i
(byte) divr8u::i#1 reg byte x 151.5
(byte) divr8u::i#2 reg byte x 16.833333333333332
(byte) divr8u::quotient
(byte) divr8u::quotient#1 quotient zp ZP_BYTE:18 151.5
(byte) divr8u::quotient#2 quotient zp ZP_BYTE:18 101.0
(byte) divr8u::quotient#3 quotient zp ZP_BYTE:18 28.857142857142858
(byte) divr8u::rem
(byte) divr8u::rem#1 reg byte y 101.0
(byte) divr8u::rem#10 reg byte y 101.66666666666667
(byte) divr8u::rem#2 reg byte y 202.0
(byte) divr8u::rem#3 reg byte y 202.0
(byte) divr8u::rem#4 reg byte y 202.0
(byte) divr8u::rem#5 reg byte y 101.0
(byte) divr8u::return
(byte) divr8u::return#0 reg byte a 4.0
(byte) divr8u::return#1 return zp ZP_BYTE:18 50.83333333333333
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@return
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte a 4.0
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#1 b zp ZP_BYTE:7 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:7 4.0
(byte) print_byte::b#3 b zp ZP_BYTE:7 22.0
(byte) print_byte::b#4 b zp ZP_BYTE:7 22.0
(byte) print_byte::b#5 b zp ZP_BYTE:7 22.0
(byte) print_byte::b#6 b zp ZP_BYTE:7 22.0
(byte) print_byte::b#7 b zp ZP_BYTE:7 13.5
(byte~) print_byte::b#9 b zp ZP_BYTE:7 4.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:8 101.0
(byte*) print_char_cursor#128 print_char_cursor zp ZP_WORD:8 15.607142857142856
(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:8 3.0
(byte*) print_char_cursor#131 print_char_cursor zp ZP_WORD:8 15.999999999999998
(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:8 12.0
(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:8 24.0
(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:8 17.333333333333332
(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:8 2.4444444444444446
(byte*~) print_char_cursor#159 print_char_cursor zp ZP_WORD:8 22.0
(byte*~) print_char_cursor#166 print_char_cursor zp ZP_WORD:8 22.0
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:8 1.9152542372881352
(byte*~) print_char_cursor#184 print_char_cursor zp ZP_WORD:8 22.0
(byte*~) print_char_cursor#188 print_char_cursor zp ZP_WORD:8 22.0
(byte*) print_char_cursor#82 print_char_cursor zp ZP_WORD:8 7.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#1 sc zp ZP_WORD:3 16.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:3 16.5
(byte[]) print_hextab
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.9099999999999993
(byte*) print_line_cursor#20 print_line_cursor zp ZP_WORD:3 204.0
(byte*) print_line_cursor#39 print_line_cursor zp ZP_WORD:3 46.0
(byte*) print_line_cursor#41 print_line_cursor zp ZP_WORD:3 0.9565217391304348
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(void()) print_sbyte((signed byte) print_sbyte::b)
(label) print_sbyte::@1
(label) print_sbyte::@2
(label) print_sbyte::@3
(label) print_sbyte::@5
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0 b zp ZP_BYTE:7 4.0
(signed byte) print_sbyte::b#1 b zp ZP_BYTE:7 11.0
(signed byte) print_sbyte::b#10 b zp ZP_BYTE:7 8.333333333333332
(signed byte) print_sbyte::b#2 b zp ZP_BYTE:7 22.0
(signed byte) print_sbyte::b#3 b zp ZP_BYTE:7 22.0
(signed byte) print_sbyte::b#4 b zp ZP_BYTE:7 22.0
(signed byte) print_sbyte::b#7 b zp ZP_BYTE:7 4.0
(byte*) print_screen
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:5 202.0
(byte*) print_str::str#13 str zp ZP_WORD:5 101.5
(byte*) print_str::str#15 str zp ZP_WORD:5 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:5 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:5 11.0
(signed word) print_sword::w#2 w zp ZP_WORD:5 22.0
(signed word) print_sword::w#3 w zp ZP_WORD:5 22.0
(signed word) print_sword::w#4 w zp ZP_WORD:5 22.0
(signed word) print_sword::w#5 w zp ZP_WORD:5 12.5
(signed word) print_sword::w#6 w zp ZP_WORD:5 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#1 w zp ZP_WORD:5 11.0
(word) print_word::w#2 w zp ZP_WORD:5 22.0
(word) print_word::w#3 w zp ZP_WORD:5 22.0
(word) print_word::w#4 w zp ZP_WORD:5 22.0
(word) print_word::w#5 w zp ZP_WORD:5 16.666666666666664
(word~) print_word::w#7 w zp ZP_WORD:5 4.0
(signed word) rem16s
(signed word) rem16s#11 rem16s zp ZP_WORD:10 0.6818181818181819
(signed word) rem16s#2 rem16s zp ZP_WORD:10 2.0
(signed word~) rem16s#37 rem16s zp ZP_WORD:10 4.0
(word) rem16u
(word) rem16u#1 rem16u zp ZP_WORD:10 0.48148148148148145
(signed byte) rem8s
(signed byte) rem8s#2 reg byte x 2.0
(signed byte) rem8s#3 reg byte x 0.8333333333333335
(signed byte~) rem8s#33 reg byte x 4.0
(byte) rem8u
(byte) rem8u#17 reg byte x 0.5
(const string) str str = (string) " / @"
(const string) str1 str1 = (string) " = @"
(const string) str2 str2 = (string) " @"
(void()) test_16s()
(label) test_16s::@1
(label) test_16s::@10
(label) test_16s::@11
(label) test_16s::@3
(label) test_16s::@4
(label) test_16s::@5
(label) test_16s::@6
(label) test_16s::@7
(label) test_16s::@8
(label) test_16s::@9
(label) test_16s::@return
(signed word) test_16s::dividend
(signed word) test_16s::dividend#0 dividend zp ZP_WORD:5 4.714285714285714
(signed word[]) test_16s::dividends
(const signed word[]) test_16s::dividends#0 dividends = { (word/signed word/dword/signed dword) 32767, (word/signed word/dword/signed dword) 32767, -(word/signed word/dword/signed dword) 32767, -(word/signed word/dword/signed dword) 32767, (word/signed word/dword/signed dword) 32767, -(word/signed word/dword/signed dword) 32767 }
(signed word) test_16s::divisor
(signed word) test_16s::divisor#0 divisor zp ZP_WORD:19 3.0
(signed word[]) test_16s::divisors
(const signed word[]) test_16s::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, -(byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, -(byte/signed byte/word/signed word/dword/signed dword) 13, -(byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
(byte) test_16s::i
(byte) test_16s::i#1 i zp ZP_BYTE:2 16.5
(byte) test_16s::i#10 i zp ZP_BYTE:2 1.76
(signed word) test_16s::res
(signed word) test_16s::res#0 res zp ZP_WORD:14 2.2
(void()) test_16u()
(label) test_16u::@1
(label) test_16u::@10
(label) test_16u::@11
(label) test_16u::@3
(label) test_16u::@4
(label) test_16u::@5
(label) test_16u::@6
(label) test_16u::@7
(label) test_16u::@8
(label) test_16u::@9
(label) test_16u::@return
(word) test_16u::dividend
(word) test_16u::dividend#0 dividend zp ZP_WORD:5 4.714285714285714
(word[]) test_16u::dividends
(const word[]) test_16u::dividends#0 dividends = { (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535 }
(word) test_16u::divisor
(word) test_16u::divisor#0 divisor zp ZP_WORD:12 3.0
(word[]) test_16u::divisors
(const word[]) test_16u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
(byte) test_16u::i
(byte) test_16u::i#1 i zp ZP_BYTE:2 16.5
(byte) test_16u::i#10 i zp ZP_BYTE:2 1.76
(word) test_16u::res
(word) test_16u::res#0 res zp ZP_WORD:14 2.2
(void()) test_8s()
(label) test_8s::@1
(label) test_8s::@10
(label) test_8s::@11
(label) test_8s::@3
(label) test_8s::@4
(label) test_8s::@5
(label) test_8s::@6
(label) test_8s::@7
(label) test_8s::@8
(label) test_8s::@9
(label) test_8s::@return
(signed byte) test_8s::dividend
(signed byte) test_8s::dividend#0 dividend zp ZP_BYTE:7 4.714285714285714
(signed byte[]) test_8s::dividends
(const signed byte[]) test_8s::dividends#0 dividends = { (byte/signed byte/word/signed word/dword/signed dword) 127, -(byte/signed byte/word/signed word/dword/signed dword) 127, -(byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127 }
(signed byte) test_8s::divisor
(signed byte) test_8s::divisor#0 divisor zp ZP_BYTE:21 3.0
(signed byte[]) test_8s::divisors
(const signed byte[]) test_8s::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, -(byte/signed byte/word/signed word/dword/signed dword) 11, -(byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
(byte) test_8s::i
(byte) test_8s::i#1 i zp ZP_BYTE:2 16.5
(byte) test_8s::i#10 i zp ZP_BYTE:2 1.76
(signed byte) test_8s::res
(signed byte) test_8s::res#0 res zp ZP_BYTE:16 2.2
(void()) test_8u()
(label) test_8u::@1
(label) test_8u::@10
(label) test_8u::@11
(label) test_8u::@12
(label) test_8u::@3
(label) test_8u::@4
(label) test_8u::@5
(label) test_8u::@6
(label) test_8u::@7
(label) test_8u::@8
(label) test_8u::@9
(label) test_8u::@return
(byte) test_8u::dividend
(byte) test_8u::dividend#0 dividend zp ZP_BYTE:7 4.714285714285714
(byte[]) test_8u::dividends
(const byte[]) test_8u::dividends#0 dividends = { (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255 }
(byte) test_8u::divisor
(byte) test_8u::divisor#0 divisor zp ZP_BYTE:16 3.3000000000000003
(byte[]) test_8u::divisors
(const byte[]) test_8u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
(byte) test_8u::i
(byte) test_8u::i#1 i zp ZP_BYTE:2 11.0
(byte) test_8u::i#10 i zp ZP_BYTE:2 1.8333333333333333
(byte) test_8u::rem
(byte) test_8u::res
(byte) test_8u::res#0 res zp ZP_BYTE:17 2.4444444444444446

zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ]
zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 print_str::str#13 print_str::str#15 print_str::str#0 ]
zp ZP_BYTE:7 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ]
reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
zp ZP_WORD:8 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::$5 ]
zp ZP_WORD:10 [ divr16s::remu#3 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16s#11 rem16s#2 rem16s#37 rem16u#1 ]
zp ZP_WORD:12 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::$11 test_16u::divisor#0 div16u::divisor#0 ]
reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 div16s::return#2 test_16s::res#0 div16s::return#0 div16u::return#2 test_16u::res#0 div16u::return#0 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ]
reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ]
zp ZP_BYTE:16 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 test_8s::res#0 test_8u::divisor#0 ]
reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ]
reg byte x [ rem8s#3 rem8s#2 rem8s#33 ]
reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ]
reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ]
reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ]
zp ZP_BYTE:17 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 test_8u::res#0 ]
zp ZP_BYTE:18 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
reg byte x [ divr8u::i#2 divr8u::i#1 ]
zp ZP_WORD:19 [ test_16s::divisor#0 div16s::divisor#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
zp ZP_BYTE:21 [ test_8s::divisor#0 ]
reg byte y [ div8s::dividend#0 ]
reg byte x [ div8s::divisor#0 ]
reg byte a [ div8s::return#3 ]
reg byte a [ div8u::return#2 ]
reg byte y [ div8s::resultu#0 ]
reg byte x [ div8s::$6 ]
reg byte a [ div8s::$2 ]
zp ZP_BYTE:22 [ divr8u::divisor#0 ]
reg byte a [ divr8u::return#0 ]
reg byte a [ div8u::return#0 ]
reg byte a [ divr8u::$1 ]
reg byte x [ rem8u#17 ]
reg byte a [ div8u::return#3 ]


FINAL ASSEMBLER
Score: 32561

//SEG0 File Comments
// Test the binary division library
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label print_char_cursor = 8
  .label print_line_cursor = 3
  .label rem16u = $a
  .label rem16s = $a
//SEG3 @begin
//SEG4 [1] phi from @begin to @32 [phi:@begin->@32]
//SEG5 @32
//SEG6 [2] call main 
//SEG7 [4] phi from @32 to main [phi:@32->main]
//SEG8 [3] phi from @32 to @end [phi:@32->@end]
//SEG9 @end
//SEG10 main
main: {
  //SEG11 [5] call print_cls 
  //SEG12 [282] phi from main to print_cls [phi:main->print_cls]
    jsr print_cls
  //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
  //SEG14 main::@1
  //SEG15 [7] call test_8u 
  //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u]
    jsr test_8u
  //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  //SEG18 main::@2
  //SEG19 [9] call test_16u 
  //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u]
    jsr test_16u
  //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  //SEG22 main::@3
  //SEG23 [11] call test_8s 
  //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s]
    jsr test_8s
  //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  //SEG26 main::@4
  //SEG27 [13] call test_16s 
  //SEG28 [15] phi from main::@4 to test_16s [phi:main::@4->test_16s]
    jsr test_16s
  //SEG29 main::@return
  //SEG30 [14] return 
    rts
}
//SEG31 test_16s
test_16s: {
    .label dividend = 5
    .label divisor = $13
    .label res = $e
    .label i = 2
  //SEG32 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1]
  //SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG34 [16] phi from test_16s::@11 to test_16s::@1 [phi:test_16s::@11->test_16s::@1]
  //SEG35 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@11->test_16s::@1#0] -- register_copy 
  //SEG36 test_16s::@1
  b1:
  //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
    lda dividends+1,y
    sta dividend+1
  //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 
    lda divisors,y
    sta divisor
    lda divisors+1,y
    sta divisor+1
  //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0
  //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0
  //SEG41 [21] call div16s 
    jsr div16s
  //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0
  //SEG43 test_16s::@3
  //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2
  //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0
  //SEG46 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG47 [26] call print_sword 
  //SEG48 [49] phi from test_16s::@3 to print_sword [phi:test_16s::@3->print_sword]
  //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@3->print_sword#0] -- register_copy 
  //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@3->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG51 [27] phi from test_16s::@3 to test_16s::@4 [phi:test_16s::@3->test_16s::@4]
  //SEG52 test_16s::@4
  //SEG53 [28] call print_str 
  //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str]
  //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG56 test_16s::@5
  //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 
    lda divisor
    sta print_sword.w
    lda divisor+1
    sta print_sword.w+1
  //SEG58 [30] call print_sword 
  //SEG59 [49] phi from test_16s::@5 to print_sword [phi:test_16s::@5->print_sword]
  //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@5->print_sword#0] -- register_copy 
  //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@5->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG62 [31] phi from test_16s::@5 to test_16s::@6 [phi:test_16s::@5->test_16s::@6]
  //SEG63 test_16s::@6
  //SEG64 [32] call print_str 
  //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str]
  //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
  //SEG67 test_16s::@7
  //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 
    lda res
    sta print_sword.w
    lda res+1
    sta print_sword.w+1
  //SEG69 [34] call print_sword 
  //SEG70 [49] phi from test_16s::@7 to print_sword [phi:test_16s::@7->print_sword]
  //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@7->print_sword#0] -- register_copy 
  //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@7->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG73 [35] phi from test_16s::@7 to test_16s::@8 [phi:test_16s::@7->test_16s::@8]
  //SEG74 test_16s::@8
  //SEG75 [36] call print_str 
  //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str]
  //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG78 test_16s::@9
  //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 
    lda rem16s
    sta print_sword.w
    lda rem16s+1
    sta print_sword.w+1
  //SEG80 [38] call print_sword 
  //SEG81 [49] phi from test_16s::@9 to print_sword [phi:test_16s::@9->print_sword]
  //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@9->print_sword#0] -- register_copy 
  //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@9->print_sword#1] -- register_copy 
    jsr print_sword
  //SEG84 [39] phi from test_16s::@9 to test_16s::@10 [phi:test_16s::@9->test_16s::@10]
  //SEG85 test_16s::@10
  //SEG86 [40] call print_ln 
  //SEG87 [44] phi from test_16s::@10 to print_ln [phi:test_16s::@10->print_ln]
  //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@10->print_ln#0] -- register_copy 
    jsr print_ln
  //SEG89 test_16s::@11
  //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 
    cmp #$c
    bne b1
  //SEG92 test_16s::@return
  //SEG93 [43] return 
    rts
    dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff
    divisors: .word 5, -7, $b, -$d, -$11, $13
}
//SEG94 print_ln
// Print a newline
print_ln: {
  //SEG95 [45] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
  //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
  //SEG97 print_ln::@1
  b1:
  //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 
    lda print_line_cursor
    clc
    adc #$28
    sta print_line_cursor
    bcc !+
    inc print_line_cursor+1
  !:
  //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda print_line_cursor+1
    cmp print_char_cursor+1
    bcc b1
    bne !+
    lda print_line_cursor
    cmp print_char_cursor
    bcc b1
  !:
  //SEG100 print_ln::@return
  //SEG101 [48] return 
    rts
}
//SEG102 print_sword
// Print a signed word as HEX
// print_sword(signed word zeropage(5) w)
print_sword: {
    .label w = 5
  //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 
    lda w+1
    bpl b1
  //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2]
  //SEG105 print_sword::@2
  //SEG106 [52] call print_char 
  //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char]
  //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy 
  //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
  //SEG110 print_sword::@4
  //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 
    sec
    lda w
    eor #$ff
    adc #0
    sta w
    lda w+1
    eor #$ff
    adc #0
    sta w+1
  //SEG112 [54] phi from print_sword print_sword::@4 to print_sword::@1 [phi:print_sword/print_sword::@4->print_sword::@1]
  //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@4->print_sword::@1#0] -- register_copy 
  //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@4->print_sword::@1#1] -- register_copy 
  //SEG115 print_sword::@1
  b1:
  //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6
  //SEG117 [56] call print_word 
  //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word]
  //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy 
  //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy 
    jsr print_word
  //SEG121 print_sword::@return
  //SEG122 [57] return 
    rts
}
//SEG123 print_word
// Print a word as HEX
// print_word(word zeropage(5) w)
print_word: {
    .label w = 5
  //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 
    lda w+1
    sta print_byte.b
  //SEG125 [60] call print_byte 
  //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte]
  //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy 
  //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG129 print_word::@1
  //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 
    lda w
    sta print_byte.b
  //SEG131 [62] call print_byte 
  //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy 
  //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG135 print_word::@return
  //SEG136 [63] return 
    rts
}
//SEG137 print_byte
// Print a byte as HEX
// print_byte(byte zeropage(7) b)
print_byte: {
    .label b = 7
  //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 
    lda b
    lsr
    lsr
    lsr
    lsr
  //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
  //SEG140 [67] call print_char 
  //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char]
  //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy 
  //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
  //SEG144 print_byte::@1
  //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 
    lda #$f
    and b
  //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
  //SEG147 [70] call print_char 
  //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy 
  //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
  //SEG151 print_byte::@return
  //SEG152 [71] return 
    rts
}
//SEG153 print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
  //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
  //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
  //SEG156 print_char::@return
  //SEG157 [75] return 
    rts
}
//SEG158 print_str
// Print a zero-terminated string
// print_str(byte* zeropage(5) str)
print_str: {
    .label str = 5
  //SEG159 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
  //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
  //SEG162 print_str::@1
  b1:
  //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
  //SEG164 print_str::@return
  //SEG165 [79] return 
    rts
  //SEG166 print_str::@2
  b2:
  //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    sta (print_char_cursor),y
  //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
  //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1
}
//SEG170 div16s
// Perform division on two signed 16-bit numbers
// Returns dividend/divisor.
// The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// div16s(signed word zeropage(5) dividend, signed word zeropage($13) divisor)
div16s: {
    .label return = $e
    .label dividend = 5
    .label divisor = $13
  //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 
    lda dividend
    sta divr16s.dividend
    lda dividend+1
    sta divr16s.dividend+1
  //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 
    lda divisor
    sta divr16s.divisor
    lda divisor+1
    sta divr16s.divisor+1
  //SEG173 [85] call divr16s 
    jsr divr16s
  //SEG174 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
  //SEG175 div16s::@2
  //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3
  //SEG177 div16s::@return
  //SEG178 [88] return 
    rts
}
//SEG179 divr16s
// Perform division on two signed 16-bit numbers with an initial remainder.
// Returns dividend/divisor. The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// divr16s(signed word zeropage(8) dividend, signed word zeropage($c) divisor)
divr16s: {
    .const rem = 0
    .label _5 = 8
    .label _11 = $c
    .label resultu = $e
    .label return = $e
    .label dividend = 8
    .label divisor = $c
    .label dividendu = 8
    .label divisoru = $c
    .label remu = $a
  //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 
    lda dividend+1
    bmi b1
  //SEG181 divr16s::@17
  //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0
  //SEG183 [91] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
  //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@17->divr16s::@2#0] -- vwuz1=vbuc1 
    lda #<rem
    sta remu
    lda #>rem
    sta remu+1
  //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@17->divr16s::@2#1] -- register_copy 
  //SEG186 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 
    ldy #0
  //SEG187 divr16s::@2
  b2:
  //SEG188 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 
    lda divisor+1
    bmi b3
  //SEG189 divr16s::@18
  //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
  //SEG191 [94] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
  //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy 
  //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy 
  //SEG194 divr16s::@4
  b4:
  //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3
  //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3
  //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3
  //SEG198 [98] call divr16u 
  //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
  //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy 
  //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy 
  //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy 
    jsr divr16u
  //SEG203 [99] (word) divr16u::return#3 ← (word) divr16u::return#0
  //SEG204 divr16s::@15
  //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3
  //SEG206 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 
    cpy #0
    beq breturn
  //SEG207 divr16s::@11
  //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 
    sec
    lda rem16s
    eor #$ff
    adc #0
    sta rem16s
    lda rem16s+1
    eor #$ff
    adc #0
    sta rem16s+1
  //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 
    sec
    lda return
    eor #$ff
    adc #0
    sta return
    lda return+1
    eor #$ff
    adc #0
    sta return+1
  //SEG210 [104] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
  //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy 
  //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy 
  //SEG213 divr16s::@return
  breturn:
  //SEG214 [105] return 
    rts
  //SEG215 divr16s::@19
  //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
  //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1
  //SEG218 divr16s::@3
  b3:
  //SEG219 [108] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 
    sec
    lda _11
    eor #$ff
    adc #0
    sta _11
    lda _11+1
    eor #$ff
    adc #0
    sta _11+1
  //SEG220 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 
    tya
    eor #1
    tay
  //SEG221 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
    jmp b4
  //SEG222 divr16s::@1
  b1:
  //SEG223 [111] (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 
    sec
    lda _5
    eor #$ff
    adc #0
    sta _5
    lda _5+1
    eor #$ff
    adc #0
    sta _5+1
  //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$5
  //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
  //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 
    lda #<-rem
    sta remu
    lda #>-rem
    sta remu+1
  //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy 
  //SEG228 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 
    ldy #1
    jmp b2
}
//SEG229 divr16u
// Performs division on two 16 bit unsigned words and an initial remainder
// Returns the quotient dividend/divisor.
// The final remainder will be set into the global variable rem16u
// Implemented using simple binary division
// divr16u(word zeropage(8) dividend, word zeropage($c) divisor, word zeropage($a) rem)
divr16u: {
    .label rem = $a
    .label dividend = 8
    .label quotient = $e
    .label return = $e
    .label divisor = $c
  //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
  //SEG231 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG232 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 
    txa
    sta quotient
    sta quotient+1
  //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy 
  //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy 
  //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
  //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy 
  //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy 
  //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy 
  //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy 
  //SEG240 divr16u::@1
  b1:
  //SEG241 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl rem
    rol rem+1
  //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 
    lda dividend+1
  //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 
    and #$80
  //SEG244 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b2
  //SEG245 divr16u::@4
  //SEG246 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 
    lda #1
    ora rem
    sta rem
  //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
  //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy 
  //SEG249 divr16u::@2
  b2:
  //SEG250 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl dividend
    rol dividend+1
  //SEG251 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl quotient
    rol quotient+1
  //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 
    lda rem+1
    cmp divisor+1
    bcc b3
    bne !+
    lda rem
    cmp divisor
    bcc b3
  !:
  //SEG253 divr16u::@5
  //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 
    inc quotient
    bne !+
    inc quotient+1
  !:
  //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 
    lda rem
    sec
    sbc divisor
    sta rem
    lda rem+1
    sbc divisor+1
    sta rem+1
  //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
  //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy 
  //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy 
  //SEG259 divr16u::@3
  b3:
  //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG261 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$10
    bne b1
  //SEG262 divr16u::@6
  //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11
  //SEG264 divr16u::@return
  //SEG265 [130] return 
    rts
}
//SEG266 test_8s
test_8s: {
    .label dividend = 7
    .label divisor = $15
    .label res = $10
    .label i = 2
  //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1]
  //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG269 [132] phi from test_8s::@11 to test_8s::@1 [phi:test_8s::@11->test_8s::@1]
  //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@11->test_8s::@1#0] -- register_copy 
  //SEG271 test_8s::@1
  b1:
  //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
  //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 
    lda divisors,y
    sta divisor
  //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 
    ldy dividend
  //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 
    tax
  //SEG276 [137] call div8s 
    jsr div8s
  //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2
  //SEG278 test_8s::@3
  //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa 
    sta res
  //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0
  //SEG281 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG282 [142] call print_sbyte 
  //SEG283 [160] phi from test_8s::@3 to print_sbyte [phi:test_8s::@3->print_sbyte]
  //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@3->print_sbyte#0] -- register_copy 
  //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@3->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG286 [143] phi from test_8s::@3 to test_8s::@4 [phi:test_8s::@3->test_8s::@4]
  //SEG287 test_8s::@4
  //SEG288 [144] call print_str 
  //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str]
  //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG291 test_8s::@5
  //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 
    lda divisor
    sta print_sbyte.b
  //SEG293 [146] call print_sbyte 
  //SEG294 [160] phi from test_8s::@5 to print_sbyte [phi:test_8s::@5->print_sbyte]
  //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@5->print_sbyte#0] -- register_copy 
  //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@5->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG297 [147] phi from test_8s::@5 to test_8s::@6 [phi:test_8s::@5->test_8s::@6]
  //SEG298 test_8s::@6
  //SEG299 [148] call print_str 
  //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str]
  //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
  //SEG302 test_8s::@7
  //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 
    lda res
    sta print_sbyte.b
  //SEG304 [150] call print_sbyte 
  //SEG305 [160] phi from test_8s::@7 to print_sbyte [phi:test_8s::@7->print_sbyte]
  //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@7->print_sbyte#0] -- register_copy 
  //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@7->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG308 [151] phi from test_8s::@7 to test_8s::@8 [phi:test_8s::@7->test_8s::@8]
  //SEG309 test_8s::@8
  //SEG310 [152] call print_str 
  //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str]
  //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG313 test_8s::@9
  //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx 
    stx print_sbyte.b
  //SEG315 [154] call print_sbyte 
  //SEG316 [160] phi from test_8s::@9 to print_sbyte [phi:test_8s::@9->print_sbyte]
  //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@9->print_sbyte#0] -- register_copy 
  //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@9->print_sbyte#1] -- register_copy 
    jsr print_sbyte
  //SEG319 [155] phi from test_8s::@9 to test_8s::@10 [phi:test_8s::@9->test_8s::@10]
  //SEG320 test_8s::@10
  //SEG321 [156] call print_ln 
  //SEG322 [44] phi from test_8s::@10 to print_ln [phi:test_8s::@10->print_ln]
  //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@10->print_ln#0] -- register_copy 
    jsr print_ln
  //SEG324 test_8s::@11
  //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #6
    bne b1
  //SEG327 test_8s::@return
  //SEG328 [159] return 
    rts
    dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f
    divisors: .byte 5, 7, -$b, -$d, $11, $13
}
//SEG329 print_sbyte
// Print a signed byte as HEX
// print_sbyte(signed byte zeropage(7) b)
print_sbyte: {
    .label b = 7
  //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 
    lda b
    bmi b1
  //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3]
  //SEG332 print_sbyte::@3
  //SEG333 [163] call print_char 
  //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char]
  //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy 
  //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
  //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@5 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2]
  //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@5->print_sbyte::@2#0] -- register_copy 
  //SEG339 print_sbyte::@2
  b2:
  //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7
  //SEG341 [166] call print_byte 
  //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
  //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG345 print_sbyte::@return
  //SEG346 [167] return 
    rts
  //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  //SEG348 print_sbyte::@1
  b1:
  //SEG349 [169] call print_char 
  //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy 
  //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
  //SEG353 print_sbyte::@5
  //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 
    lda b
    eor #$ff
    clc
    adc #1
    sta b
    jmp b2
}
//SEG355 div8s
// Perform division on two signed 8-bit numbers
// Returns dividend/divisor.
// The remainder will be set into the global variable rem8s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// div8s(signed byte register(Y) dividend, signed byte register(X) divisor)
div8s: {
    .label neg = $10
  //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 
    cpy #0
    bmi b1
  //SEG357 div8s::@16
  //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0
  //SEG359 [173] phi from div8s::@16 to div8s::@2 [phi:div8s::@16->div8s::@2]
  //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@16->div8s::@2#0] -- register_copy 
  //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@16->div8s::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta neg
  //SEG362 div8s::@2
  b2:
  //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi b3
  //SEG364 div8s::@17
  //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0
  //SEG366 [176] phi from div8s::@17 div8s::@3 to div8s::@4 [phi:div8s::@17/div8s::@3->div8s::@4]
  //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#3 [phi:div8s::@17/div8s::@3->div8s::@4#0] -- register_copy 
  //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#5 [phi:div8s::@17/div8s::@3->div8s::@4#1] -- register_copy 
  //SEG369 div8s::@4
  b4:
  //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy 
    tya
  //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3
  //SEG372 [179] call div8u 
  //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u]
  //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy 
  //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy 
    jsr div8u
  //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0
  //SEG377 div8s::@15
  //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa 
    tay
  //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@18 -- vbuz1_eq_0_then_la1 
    lda neg
    cmp #0
    beq b18
  //SEG380 div8s::@11
  //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
  //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy 
    tya
    eor #$ff
    clc
    adc #1
  //SEG383 [185] phi from div8s::@11 div8s::@18 to div8s::@return [phi:div8s::@11/div8s::@18->div8s::@return]
  //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@11/div8s::@18->div8s::@return#0] -- register_copy 
  //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@11/div8s::@18->div8s::@return#1] -- register_copy 
  //SEG386 div8s::@return
  breturn:
  //SEG387 [186] return 
    rts
  //SEG388 div8s::@18
  b18:
  //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy 
    tya
  //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17
    jmp breturn
  //SEG391 div8s::@3
  b3:
  //SEG392 [189] (signed byte~) div8s::$6 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
  //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 
    lda neg
    eor #1
    sta neg
  //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$6
    jmp b4
  //SEG395 div8s::@1
  b1:
  //SEG396 [192] (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy 
    tya
    eor #$ff
    clc
    adc #1
  //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$2 -- vbuyy=vbuaa 
    tay
  //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2]
  //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy 
  //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 
    lda #1
    sta neg
    jmp b2
}
//SEG401 div8u
// Performs division on two 8 bit unsigned bytes
// Returns dividend/divisor.
// The remainder will be set into the global variable rem8u
// Implemented using simple binary division
// div8u(byte register(A) dividend, byte register(X) divisor)
div8u: {
  //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa 
    sta divr8u.dividend
  //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx 
    stx divr8u.divisor
  //SEG404 [197] call divr8u 
  //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u]
    jsr divr8u
  //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 
    lda divr8u.return
  //SEG407 div8u::@2
  //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0
  //SEG409 div8u::@return
  //SEG410 [200] return 
    rts
}
//SEG411 divr8u
// Performs division on two 8 bit unsigned bytes and an initial remainder
// Returns dividend/divisor.
// The final remainder will be set into the global variable rem8u
// Implemented using simple binary division
// divr8u(byte zeropage($11) dividend, byte zeropage($16) divisor, byte register(Y) rem)
divr8u: {
    .label dividend = $11
    .label divisor = $16
    .label quotient = $12
    .label return = $12
  //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1]
  //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 
    txa
    sta quotient
  //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy 
  //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 
    tay
  //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1]
  //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy 
  //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy 
  //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy 
  //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy 
  //SEG422 divr8u::@1
  b1:
  //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 
    tya
    asl
    tay
  //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 
    lda #$80
    and dividend
  //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b2
  //SEG426 divr8u::@4
  //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 
    tya
    ora #1
    tay
  //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2]
  //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy 
  //SEG430 divr8u::@2
  b2:
  //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 
    asl dividend
  //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 
    asl quotient
  //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 
    cpy divisor
    bcc b3
  //SEG434 divr8u::@5
  //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 
    inc quotient
  //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 
    tya
    sec
    sbc divisor
    tay
  //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3]
  //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy 
  //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy 
  //SEG440 divr8u::@3
  b3:
  //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #8
    bne b1
  //SEG443 divr8u::@6
  //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy 
    tya
    tax
  //SEG445 divr8u::@return
  //SEG446 [217] return 
    rts
}
//SEG447 test_16u
test_16u: {
    .label dividend = 5
    .label divisor = $c
    .label res = $e
    .label i = 2
  //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1]
  //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG450 [219] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1]
  //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#0] -- register_copy 
  //SEG452 test_16u::@1
  b1:
  //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
    lda dividends+1,y
    sta dividend+1
  //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 
    lda divisors,y
    sta divisor
    lda divisors+1,y
    sta divisor+1
  //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0
  //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0
  //SEG457 [224] call div16u 
    jsr div16u
  //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0
  //SEG459 test_16u::@3
  //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2
  //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0
  //SEG462 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG463 [229] call print_word 
  //SEG464 [58] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word]
  //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@3->print_word#0] -- register_copy 
  //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@3->print_word#1] -- register_copy 
    jsr print_word
  //SEG467 [230] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4]
  //SEG468 test_16u::@4
  //SEG469 [231] call print_str 
  //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str]
  //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG472 test_16u::@5
  //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 
    lda divisor
    sta print_word.w
    lda divisor+1
    sta print_word.w+1
  //SEG474 [233] call print_word 
  //SEG475 [58] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word]
  //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@5->print_word#0] -- register_copy 
  //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@5->print_word#1] -- register_copy 
    jsr print_word
  //SEG478 [234] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6]
  //SEG479 test_16u::@6
  //SEG480 [235] call print_str 
  //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str]
  //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
  //SEG483 test_16u::@7
  //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 
    lda res
    sta print_word.w
    lda res+1
    sta print_word.w+1
  //SEG485 [237] call print_word 
  //SEG486 [58] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word]
  //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@7->print_word#0] -- register_copy 
  //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@7->print_word#1] -- register_copy 
    jsr print_word
  //SEG489 [238] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8]
  //SEG490 test_16u::@8
  //SEG491 [239] call print_str 
  //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str]
  //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG494 test_16u::@9
  //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 
    lda rem16u
    sta print_word.w
    lda rem16u+1
    sta print_word.w+1
  //SEG496 [241] call print_word 
  //SEG497 [58] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word]
  //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@9->print_word#0] -- register_copy 
  //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@9->print_word#1] -- register_copy 
    jsr print_word
  //SEG500 [242] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10]
  //SEG501 test_16u::@10
  //SEG502 [243] call print_ln 
  //SEG503 [44] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln]
  //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy 
    jsr print_ln
  //SEG505 test_16u::@11
  //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 
    cmp #$c
    bne b1
  //SEG508 test_16u::@return
  //SEG509 [246] return 
    rts
    dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
    divisors: .word 5, 7, $b, $d, $11, $13
}
//SEG510 div16u
// Performs division on two 16 bit unsigned words
// Returns the quotient dividend/divisor.
// The remainder will be set into the global variable rem16u
// Implemented using simple binary division
// div16u(word zeropage(5) dividend, word zeropage($c) divisor)
div16u: {
    .label return = $e
    .label dividend = 5
    .label divisor = $c
  //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 
    lda dividend
    sta divr16u.dividend
    lda dividend+1
    sta divr16u.dividend+1
  //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0
  //SEG513 [249] call divr16u 
  //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u]
  //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy 
  //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy 
  //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 
    lda #<0
    sta divr16u.rem
    sta divr16u.rem+1
    jsr divr16u
  //SEG518 [250] (word) divr16u::return#2 ← (word) divr16u::return#0
  //SEG519 div16u::@2
  //SEG520 [251] (word) div16u::return#0 ← (word) divr16u::return#2
  //SEG521 div16u::@return
  //SEG522 [252] return 
    rts
}
//SEG523 test_8u
test_8u: {
    .label dividend = 7
    .label divisor = $10
    .label res = $11
    .label i = 2
  //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1]
  //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta print_line_cursor
    lda #>$400
    sta print_line_cursor+1
  //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 
    lda #<$400
    sta print_char_cursor
    lda #>$400
    sta print_char_cursor+1
  //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG528 test_8u::@1
  b1:
  //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy i
    lda dividends,y
    sta dividend
  //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 
    lda divisors,y
    sta divisor
  //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 
    lda dividend
  //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 
    ldx divisor
  //SEG533 [259] call div8u 
  //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u]
  //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy 
  //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy 
    jsr div8u
  //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0
  //SEG538 test_8u::@3
  //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa 
    sta res
  //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0
  //SEG541 [263] call print_byte 
  //SEG542 [64] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte]
  //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@3->print_byte#0] -- register_copy 
  //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@3->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG545 [264] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4]
  //SEG546 test_8u::@4
  //SEG547 [265] call print_str 
  //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str]
  //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG550 test_8u::@5
  //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 
    lda divisor
    sta print_byte.b
  //SEG552 [267] call print_byte 
  //SEG553 [64] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte]
  //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@5->print_byte#0] -- register_copy 
  //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@5->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG556 [268] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6]
  //SEG557 test_8u::@6
  //SEG558 [269] call print_str 
  //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str]
  //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
  //SEG561 test_8u::@7
  //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 
    lda res
    sta print_byte.b
  //SEG563 [271] call print_byte 
  //SEG564 [64] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte]
  //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@7->print_byte#0] -- register_copy 
  //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@7->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG567 [272] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8]
  //SEG568 test_8u::@8
  //SEG569 [273] call print_str 
  //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str]
  //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG572 test_8u::@9
  //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx 
    stx print_byte.b
  //SEG574 [275] call print_byte 
  //SEG575 [64] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte]
  //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@9->print_byte#0] -- register_copy 
  //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@9->print_byte#1] -- register_copy 
    jsr print_byte
  //SEG578 [276] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10]
  //SEG579 test_8u::@10
  //SEG580 [277] call print_ln 
  //SEG581 [44] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln]
  //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@10->print_ln#0] -- register_copy 
    jsr print_ln
  //SEG583 test_8u::@11
  //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #6
    bne b12
  //SEG586 test_8u::@return
  //SEG587 [280] return 
    rts
  //SEG588 test_8u::@12
  b12:
  //SEG589 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda print_line_cursor
    sta print_char_cursor
    lda print_line_cursor+1
    sta print_char_cursor+1
  //SEG590 [254] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1]
  //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy 
  //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy 
  //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy 
    jmp b1
    dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff
    divisors: .byte 5, 7, $b, $d, $11, $13
}
//SEG594 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = 3
  //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  //SEG596 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
  //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
  //SEG599 print_cls::@1
  b1:
  //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG602 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1
    lda sc
    cmp #<$400+$3e8
    bne b1
  //SEG603 print_cls::@return
  //SEG604 [287] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  str: .text " / @"
  str2: .text " @"
  str1: .text " = @"

