Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + (number) 1
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
Identified constant variable (byte*) HEAP_TOP
Identified constant variable (byte) testChar::u
Identified constant variable (byte) testChar::n
Identified constant variable (signed byte) testChar::s
Identified constant variable (word) testShort::u
Identified constant variable (signed word) testShort::n
Identified constant variable (signed word) testShort::s
Identified constant variable (word) testInt::u
Identified constant variable (signed word) testInt::n
Identified constant variable (signed word) testInt::s
Identified constant variable (dword) testLong::u
Identified constant variable (signed dword) testLong::n
Identified constant variable (signed dword) testLong::s
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) memset::@7
Culled Empty Block (label) memset::@6
Culled Empty Block (label) memset::@8
Culled Empty Block (label) memset::@9
Culled Empty Block (label) memset::@3
Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) @5
Culled Empty Block (label) @6
Culled Empty Block (label) @7
Culled Empty Block (label) @8
Culled Empty Block (label) @9
Culled Empty Block (label) @10
Culled Empty Block (label) @11
Culled Empty Block (label) @12
Culled Empty Block (label) @14
Culled Empty Block (label) @15
Culled Empty Block (label) print_str::@4
Culled Empty Block (label) print_str::@3
Culled Empty Block (label) print_str::@5
Culled Empty Block (label) print_str::@6
Culled Empty Block (label) @16
Culled Empty Block (label) @17
Culled Empty Block (label) @18
Culled Empty Block (label) print_sword::@4
Culled Empty Block (label) @19
Culled Empty Block (label) print_sbyte::@4
Culled Empty Block (label) @20
Culled Empty Block (label) @21
Culled Empty Block (label) @22
Culled Empty Block (label) @23
Culled Empty Block (label) @24
Culled Empty Block (label) @25
Culled Empty Block (label) @26
Culled Empty Block (label) @27
Culled Empty Block (label) @28
Culled Empty Block (label) @29
Culled Empty Block (label) print_sdword::@4
Culled Empty Block (label) @30
Culled Empty Block (label) @31
Culled Empty Block (label) @32
Culled Empty Block (label) @33
Culled Empty Block (label) @34
Culled Empty Block (label) @35
Culled Empty Block (label) @36
Culled Empty Block (label) @37
Culled Empty Block (label) @38
Culled Empty Block (label) @39
Culled Empty Block (label) @40
Culled Empty Block (label) @41

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

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  (byte) memset::c#4 ← phi( print_cls/(byte) memset::c#0 )
  (void*) memset::str#3 ← phi( print_cls/(void*) memset::str#0 )
  (word) memset::num#1 ← phi( print_cls/(word) memset::num#0 )
  (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
  (bool~) memset::$1 ← ! (bool~) memset::$0
  if((bool~) memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@4
  (void*) memset::str#1 ← phi( memset/(void*) memset::str#3 memset::@4/(void*) memset::str#4 )
  (void*) memset::return#0 ← (void*) memset::str#1
  to:memset::@return
memset::@2: scope:[memset]  from memset
  (byte) memset::c#3 ← phi( memset/(byte) memset::c#4 )
  (word) memset::num#2 ← phi( memset/(word) memset::num#1 )
  (void*) memset::str#2 ← phi( memset/(void*) memset::str#3 )
  (byte*~) memset::$2 ← ((byte*)) (void*) memset::str#2
  (byte*~) memset::$3 ← (byte*~) memset::$2 + (word) memset::num#2
  (byte*) memset::end#0 ← (byte*~) memset::$3
  (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#2
  to:memset::@4
memset::@4: scope:[memset]  from memset::@2 memset::@5
  (byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@5/(byte) memset::c#1 )
  (void*) memset::str#4 ← phi( memset::@2/(void*) memset::str#2 memset::@5/(void*) memset::str#5 )
  (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@5/(byte*) memset::end#2 )
  (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@5/(byte*) memset::dst#1 )
  (bool~) memset::$4 ← (byte*) memset::dst#2 != (byte*) memset::end#1
  if((bool~) memset::$4) goto memset::@5
  to:memset::@1
memset::@5: scope:[memset]  from memset::@4
  (void*) memset::str#5 ← phi( memset::@4/(void*) memset::str#4 )
  (byte*) memset::end#2 ← phi( memset::@4/(byte*) memset::end#1 )
  (byte*) memset::dst#3 ← phi( memset::@4/(byte*) memset::dst#2 )
  (byte) memset::c#1 ← phi( memset::@4/(byte) memset::c#2 )
  *((byte*) memset::dst#3) ← (byte) memset::c#1
  (byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
  to:memset::@4
memset::@return: scope:[memset]  from memset::@1
  (void*) memset::return#3 ← phi( memset::@1/(void*) memset::return#0 )
  (void*) memset::return#1 ← (void*) memset::return#3
  return 
  to:@return
@13: scope:[]  from @begin
  (byte*) print_screen#0 ← (byte*)(number) $400
  (byte*) print_line_cursor#0 ← (byte*) print_screen#0
  (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
  to:@42

(void()) print_str((byte*) print_str::str)
print_str: scope:[print_str]  from testChar testInt testLong testShort
  (byte*) print_char_cursor#156 ← phi( testChar/(byte*) print_char_cursor#151 testInt/(byte*) print_char_cursor#153 testLong/(byte*) print_char_cursor#154 testShort/(byte*) print_char_cursor#152 )
  (byte*) print_str::str#7 ← phi( testChar/(byte*) print_str::str#1 testInt/(byte*) print_str::str#3 testLong/(byte*) print_str::str#4 testShort/(byte*) print_str::str#2 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  (byte*) print_char_cursor#136 ← phi( print_str/(byte*) print_char_cursor#156 print_str::@2/(byte*) print_char_cursor#1 )
  (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 )
  (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#5)
  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#69 ← phi( print_str::@1/(byte*) print_char_cursor#136 )
  (byte*) print_str::str#6 ← phi( print_str::@1/(byte*) print_str::str#5 )
  *((byte*) print_char_cursor#69) ← *((byte*) print_str::str#6)
  (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#69
  (byte*) print_str::str#0 ← ++ (byte*) print_str::str#6
  to:print_str::@1
print_str::@return: scope:[print_str]  from print_str::@1
  (byte*) print_char_cursor#70 ← phi( print_str::@1/(byte*) print_char_cursor#136 )
  (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#70
  return 
  to:@return

(void()) print_ln()
print_ln: scope:[print_ln]  from testChar::@6 testInt::@6 testLong::@6 testShort::@6
  (byte*) print_char_cursor#137 ← phi( testChar::@6/(byte*) print_char_cursor#41 testInt::@6/(byte*) print_char_cursor#57 testLong::@6/(byte*) print_char_cursor#65 testShort::@6/(byte*) print_char_cursor#49 )
  (byte*) print_line_cursor#39 ← phi( testChar::@6/(byte*) print_line_cursor#41 testInt::@6/(byte*) print_line_cursor#43 testLong::@6/(byte*) print_line_cursor#44 testShort::@6/(byte*) print_line_cursor#42 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  (byte*) print_char_cursor#71 ← phi( print_ln/(byte*) print_char_cursor#137 print_ln::@1/(byte*) print_char_cursor#71 )
  (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 + (number) $28
  (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0
  (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#71
  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#72 ← 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#72
  return 
  to:@return

(void()) print_sword((signed word) print_sword::w)
print_sword: scope:[print_sword]  from testInt::@3 testInt::@5 testShort::@3 testShort::@5
  (byte*) print_char_cursor#157 ← phi( testInt::@3/(byte*) print_char_cursor#54 testInt::@5/(byte*) print_char_cursor#56 testShort::@3/(byte*) print_char_cursor#46 testShort::@5/(byte*) print_char_cursor#48 )
  (signed word) print_sword::w#5 ← phi( testInt::@3/(signed word) print_sword::w#3 testInt::@5/(signed word) print_sword::w#4 testShort::@3/(signed word) print_sword::w#1 testShort::@5/(signed word) print_sword::w#2 )
  (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (number) 0
  if((bool~) print_sword::$0) goto print_sword::@1
  to:print_sword::@3
print_sword::@1: scope:[print_sword]  from print_sword
  (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#5 )
  (byte*) print_char_cursor#138 ← phi( print_sword/(byte*) print_char_cursor#157 )
  (byte) print_char::ch#0 ← (byte) '-'
  call print_char 
  to:print_sword::@5
print_sword::@5: scope:[print_sword]  from print_sword::@1
  (signed word) print_sword::w#6 ← phi( print_sword::@1/(signed word) print_sword::w#8 )
  (byte*) print_char_cursor#73 ← phi( print_sword::@1/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#73
  (signed word~) print_sword::$5 ← - (signed word) print_sword::w#6
  (signed word) print_sword::w#0 ← (signed word~) print_sword::$5
  to:print_sword::@2
print_sword::@3: scope:[print_sword]  from print_sword
  (signed word) print_sword::w#10 ← phi( print_sword/(signed word) print_sword::w#5 )
  (byte*) print_char_cursor#139 ← phi( print_sword/(byte*) print_char_cursor#157 )
  (byte) print_char::ch#1 ← (byte) ' '
  call print_char 
  to:print_sword::@6
print_sword::@6: scope:[print_sword]  from print_sword::@3
  (signed word) print_sword::w#9 ← phi( print_sword::@3/(signed word) print_sword::w#10 )
  (byte*) print_char_cursor#74 ← phi( print_sword::@3/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#74
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword::@5 print_sword::@6
  (byte*) print_char_cursor#140 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 )
  (signed word) print_sword::w#7 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#9 )
  (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#7
  (word) print_word::w#0 ← (word~) print_sword::$1
  call print_word 
  to:print_sword::@7
print_sword::@7: scope:[print_sword]  from print_sword::@2
  (byte*) print_char_cursor#75 ← phi( print_sword::@2/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#75
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@7
  (byte*) print_char_cursor#76 ← phi( print_sword::@7/(byte*) print_char_cursor#7 )
  (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#76
  return 
  to:@return

(void()) print_sbyte((signed byte) print_sbyte::b)
print_sbyte: scope:[print_sbyte]  from testChar::@5
  (byte*) print_char_cursor#158 ← phi( testChar::@5/(byte*) print_char_cursor#40 )
  (signed byte) print_sbyte::b#2 ← phi( testChar::@5/(signed byte) print_sbyte::b#1 )
  (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#2 < (number) 0
  if((bool~) print_sbyte::$0) goto print_sbyte::@1
  to:print_sbyte::@3
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte
  (signed byte) print_sbyte::b#5 ← phi( print_sbyte/(signed byte) print_sbyte::b#2 )
  (byte*) print_char_cursor#141 ← phi( print_sbyte/(byte*) print_char_cursor#158 )
  (byte) print_char::ch#2 ← (byte) '-'
  call print_char 
  to:print_sbyte::@5
print_sbyte::@5: scope:[print_sbyte]  from print_sbyte::@1
  (signed byte) print_sbyte::b#3 ← phi( print_sbyte::@1/(signed byte) print_sbyte::b#5 )
  (byte*) print_char_cursor#77 ← phi( print_sbyte::@1/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#77
  (signed byte~) print_sbyte::$5 ← - (signed byte) print_sbyte::b#3
  (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$5
  to:print_sbyte::@2
print_sbyte::@3: scope:[print_sbyte]  from print_sbyte
  (signed byte) print_sbyte::b#7 ← phi( print_sbyte/(signed byte) print_sbyte::b#2 )
  (byte*) print_char_cursor#142 ← phi( print_sbyte/(byte*) print_char_cursor#158 )
  (byte) print_char::ch#3 ← (byte) ' '
  call print_char 
  to:print_sbyte::@6
print_sbyte::@6: scope:[print_sbyte]  from print_sbyte::@3
  (signed byte) print_sbyte::b#6 ← phi( print_sbyte::@3/(signed byte) print_sbyte::b#7 )
  (byte*) print_char_cursor#78 ← phi( print_sbyte::@3/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#78
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@5 print_sbyte::@6
  (byte*) print_char_cursor#143 ← phi( print_sbyte::@5/(byte*) print_char_cursor#9 print_sbyte::@6/(byte*) print_char_cursor#10 )
  (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@6/(signed byte) print_sbyte::b#6 )
  (byte~) print_sbyte::$1 ← ((byte)) (signed byte) print_sbyte::b#4
  (byte) print_byte::b#0 ← (byte~) print_sbyte::$1
  call print_byte 
  to:print_sbyte::@7
print_sbyte::@7: scope:[print_sbyte]  from print_sbyte::@2
  (byte*) print_char_cursor#79 ← phi( print_sbyte::@2/(byte*) print_char_cursor#25 )
  (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#79
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@7
  (byte*) print_char_cursor#80 ← phi( print_sbyte::@7/(byte*) print_char_cursor#11 )
  (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#80
  return 
  to:@return

(void()) print_word((word) print_word::w)
print_word: scope:[print_word]  from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1
  (byte*) print_char_cursor#144 ← phi( print_dword/(byte*) print_char_cursor#145 print_dword::@1/(byte*) print_char_cursor#16 print_sword::@2/(byte*) print_char_cursor#140 testInt::@1/(byte*) print_char_cursor#52 testShort::@1/(byte*) print_char_cursor#44 )
  (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(word) print_word::w#4 testShort::@1/(word) print_word::w#3 )
  (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#81 ← phi( print_word/(byte*) print_char_cursor#25 )
  (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#81
  (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#82 ← phi( print_word::@1/(byte*) print_char_cursor#25 )
  (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#82
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@2
  (byte*) print_char_cursor#83 ← phi( print_word::@2/(byte*) print_char_cursor#14 )
  (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#83
  return 
  to:@return

(void()) print_dword((dword) print_dword::dw)
print_dword: scope:[print_dword]  from print_sdword::@2 testLong::@1
  (byte*) print_char_cursor#145 ← phi( print_sdword::@2/(byte*) print_char_cursor#148 testLong::@1/(byte*) print_char_cursor#60 )
  (dword) print_dword::dw#2 ← phi( print_sdword::@2/(dword) print_dword::dw#0 testLong::@1/(dword) print_dword::dw#1 )
  (word~) print_dword::$0 ← > (dword) print_dword::dw#2
  (word) print_word::w#1 ← (word~) print_dword::$0
  call print_word 
  to:print_dword::@1
print_dword::@1: scope:[print_dword]  from print_dword
  (dword) print_dword::dw#3 ← phi( print_dword/(dword) print_dword::dw#2 )
  (byte*) print_char_cursor#84 ← phi( print_dword/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#84
  (word~) print_dword::$2 ← < (dword) print_dword::dw#3
  (word) print_word::w#2 ← (word~) print_dword::$2
  call print_word 
  to:print_dword::@2
print_dword::@2: scope:[print_dword]  from print_dword::@1
  (byte*) print_char_cursor#85 ← phi( print_dword::@1/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#85
  to:print_dword::@return
print_dword::@return: scope:[print_dword]  from print_dword::@2
  (byte*) print_char_cursor#86 ← phi( print_dword::@2/(byte*) print_char_cursor#17 )
  (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#86
  return 
  to:@return

(void()) print_sdword((signed dword) print_sdword::dw)
print_sdword: scope:[print_sdword]  from testLong::@3 testLong::@5
  (byte*) print_char_cursor#159 ← phi( testLong::@3/(byte*) print_char_cursor#62 testLong::@5/(byte*) print_char_cursor#64 )
  (signed dword) print_sdword::dw#3 ← phi( testLong::@3/(signed dword) print_sdword::dw#1 testLong::@5/(signed dword) print_sdword::dw#2 )
  (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#3 < (number) 0
  if((bool~) print_sdword::$0) goto print_sdword::@1
  to:print_sdword::@3
print_sdword::@1: scope:[print_sdword]  from print_sdword
  (signed dword) print_sdword::dw#6 ← phi( print_sdword/(signed dword) print_sdword::dw#3 )
  (byte*) print_char_cursor#146 ← phi( print_sdword/(byte*) print_char_cursor#159 )
  (byte) print_char::ch#4 ← (byte) '-'
  call print_char 
  to:print_sdword::@5
print_sdword::@5: scope:[print_sdword]  from print_sdword::@1
  (signed dword) print_sdword::dw#4 ← phi( print_sdword::@1/(signed dword) print_sdword::dw#6 )
  (byte*) print_char_cursor#87 ← phi( print_sdword::@1/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#87
  (signed dword~) print_sdword::$5 ← - (signed dword) print_sdword::dw#4
  (signed dword) print_sdword::dw#0 ← (signed dword~) print_sdword::$5
  to:print_sdword::@2
print_sdword::@3: scope:[print_sdword]  from print_sdword
  (signed dword) print_sdword::dw#8 ← phi( print_sdword/(signed dword) print_sdword::dw#3 )
  (byte*) print_char_cursor#147 ← phi( print_sdword/(byte*) print_char_cursor#159 )
  (byte) print_char::ch#5 ← (byte) ' '
  call print_char 
  to:print_sdword::@6
print_sdword::@6: scope:[print_sdword]  from print_sdword::@3
  (signed dword) print_sdword::dw#7 ← phi( print_sdword::@3/(signed dword) print_sdword::dw#8 )
  (byte*) print_char_cursor#88 ← phi( print_sdword::@3/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#88
  to:print_sdword::@2
print_sdword::@2: scope:[print_sdword]  from print_sdword::@5 print_sdword::@6
  (byte*) print_char_cursor#148 ← phi( print_sdword::@5/(byte*) print_char_cursor#19 print_sdword::@6/(byte*) print_char_cursor#20 )
  (signed dword) print_sdword::dw#5 ← phi( print_sdword::@5/(signed dword) print_sdword::dw#0 print_sdword::@6/(signed dword) print_sdword::dw#7 )
  (dword~) print_sdword::$1 ← ((dword)) (signed dword) print_sdword::dw#5
  (dword) print_dword::dw#0 ← (dword~) print_sdword::$1
  call print_dword 
  to:print_sdword::@7
print_sdword::@7: scope:[print_sdword]  from print_sdword::@2
  (byte*) print_char_cursor#89 ← phi( print_sdword::@2/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#89
  to:print_sdword::@return
print_sdword::@return: scope:[print_sdword]  from print_sdword::@7
  (byte*) print_char_cursor#90 ← phi( print_sdword::@7/(byte*) print_char_cursor#21 )
  (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#90
  return 
  to:@return

(void()) print_byte((byte) print_byte::b)
print_byte: scope:[print_byte]  from print_sbyte::@2 print_word print_word::@1 testChar::@1 testChar::@3
  (byte*) print_char_cursor#149 ← phi( print_sbyte::@2/(byte*) print_char_cursor#143 print_word/(byte*) print_char_cursor#144 print_word::@1/(byte*) print_char_cursor#13 testChar::@1/(byte*) print_char_cursor#36 testChar::@3/(byte*) print_char_cursor#38 )
  (byte) print_byte::b#5 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(byte) print_byte::b#3 testChar::@3/(byte) print_byte::b#4 )
  (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (number) 4
  (byte) print_char::ch#6 ← *((const byte*) print_hextab + (byte~) print_byte::$0)
  call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  (byte) print_byte::b#6 ← phi( print_byte/(byte) print_byte::b#5 )
  (byte*) print_char_cursor#91 ← phi( print_byte/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#91
  (number~) print_byte::$2 ← (byte) print_byte::b#6 & (number) $f
  (byte) print_char::ch#7 ← *((const byte*) print_hextab + (number~) print_byte::$2)
  call print_char 
  to:print_byte::@2
print_byte::@2: scope:[print_byte]  from print_byte::@1
  (byte*) print_char_cursor#92 ← phi( print_byte::@1/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#92
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@2
  (byte*) print_char_cursor#93 ← phi( print_byte::@2/(byte*) print_char_cursor#24 )
  (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#93
  return 
  to:@return

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4
  (byte*) print_char_cursor#94 ← phi( print_byte/(byte*) print_char_cursor#149 print_byte::@1/(byte*) print_char_cursor#23 print_sbyte::@1/(byte*) print_char_cursor#141 print_sbyte::@3/(byte*) print_char_cursor#142 print_sdword::@1/(byte*) print_char_cursor#146 print_sdword::@3/(byte*) print_char_cursor#147 print_sword::@1/(byte*) print_char_cursor#138 print_sword::@3/(byte*) print_char_cursor#139 testChar::@2/(byte*) print_char_cursor#37 testChar::@4/(byte*) print_char_cursor#39 testInt::@2/(byte*) print_char_cursor#53 testInt::@4/(byte*) print_char_cursor#55 testLong::@2/(byte*) print_char_cursor#61 testLong::@4/(byte*) print_char_cursor#63 testShort::@2/(byte*) print_char_cursor#45 testShort::@4/(byte*) print_char_cursor#47 )
  (byte) print_char::ch#16 ← phi( print_byte/(byte) print_char::ch#6 print_byte::@1/(byte) print_char::ch#7 print_sbyte::@1/(byte) print_char::ch#2 print_sbyte::@3/(byte) print_char::ch#3 print_sdword::@1/(byte) print_char::ch#4 print_sdword::@3/(byte) print_char::ch#5 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 testChar::@2/(byte) print_char::ch#8 testChar::@4/(byte) print_char::ch#9 testInt::@2/(byte) print_char::ch#12 testInt::@4/(byte) print_char::ch#13 testLong::@2/(byte) print_char::ch#14 testLong::@4/(byte) print_char::ch#15 testShort::@2/(byte) print_char::ch#10 testShort::@4/(byte) print_char::ch#11 )
  *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16
  (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  (byte*) print_char_cursor#95 ← phi( print_char/(byte*) print_char_cursor#26 )
  (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#95
  return 
  to:@return

(void()) print_cls()
print_cls: scope:[print_cls]  from main
  (byte*) print_screen#1 ← phi( main/(byte*) print_screen#3 )
  (void*) memset::str#0 ← (void*)(byte*) print_screen#1
  (byte) memset::c#0 ← (byte) ' '
  (word) memset::num#0 ← (number) $3e8
  call memset 
  (void*) memset::return#2 ← (void*) memset::return#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls
  (byte*) print_screen#2 ← phi( print_cls/(byte*) print_screen#1 )
  (byte*) print_line_cursor#3 ← (byte*) print_screen#2
  (byte*) print_char_cursor#28 ← (byte*) print_line_cursor#3
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  (byte*) print_char_cursor#96 ← phi( print_cls::@1/(byte*) print_char_cursor#28 )
  (byte*) print_line_cursor#23 ← phi( print_cls::@1/(byte*) print_line_cursor#3 )
  (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#23
  (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#96
  return 
  to:@return

(void()) main()
main: scope:[main]  from @42
  (byte*) print_char_cursor#150 ← phi( @42/(byte*) print_char_cursor#155 )
  (byte*) print_line_cursor#40 ← phi( @42/(byte*) print_line_cursor#45 )
  (byte*) print_screen#3 ← phi( @42/(byte*) print_screen#4 )
  call print_cls 
  to:main::@1
main::@1: scope:[main]  from main
  (byte*) print_char_cursor#97 ← phi( main/(byte*) print_char_cursor#29 )
  (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#30 ← (byte*) print_char_cursor#97
  call testChar 
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte*) print_line_cursor#25 ← phi( main::@1/(byte*) print_line_cursor#12 )
  (byte*) print_char_cursor#98 ← phi( main::@1/(byte*) print_char_cursor#43 )
  (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#98
  (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#25
  call testShort 
  to:main::@3
main::@3: scope:[main]  from main::@2
  (byte*) print_line_cursor#26 ← phi( main::@2/(byte*) print_line_cursor#14 )
  (byte*) print_char_cursor#99 ← phi( main::@2/(byte*) print_char_cursor#51 )
  (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#99
  (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#26
  call testInt 
  to:main::@4
main::@4: scope:[main]  from main::@3
  (byte*) print_line_cursor#27 ← phi( main::@3/(byte*) print_line_cursor#16 )
  (byte*) print_char_cursor#100 ← phi( main::@3/(byte*) print_char_cursor#59 )
  (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#100
  (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#27
  call testLong 
  to:main::@5
main::@5: scope:[main]  from main::@4
  (byte*) print_line_cursor#28 ← phi( main::@4/(byte*) print_line_cursor#18 )
  (byte*) print_char_cursor#101 ← phi( main::@4/(byte*) print_char_cursor#67 )
  (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#101
  (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#28
  to:main::@return
main::@return: scope:[main]  from main::@5
  (byte*) print_char_cursor#102 ← phi( main::@5/(byte*) print_char_cursor#34 )
  (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#35 ← (byte*) print_char_cursor#102
  return 
  to:@return

(void()) testChar()
testChar: scope:[testChar]  from main::@1
  (byte*) print_line_cursor#66 ← phi( main::@1/(byte*) print_line_cursor#5 )
  (byte*) print_char_cursor#151 ← phi( main::@1/(byte*) print_char_cursor#30 )
  (byte*) print_str::str#1 ← (const byte*) testChar::str
  call print_str 
  to:testChar::@1
testChar::@1: scope:[testChar]  from testChar
  (byte*) print_line_cursor#62 ← phi( testChar/(byte*) print_line_cursor#66 )
  (byte*) print_char_cursor#103 ← phi( testChar/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#103
  (byte) print_byte::b#3 ← (const byte) testChar::u
  call print_byte 
  to:testChar::@2
testChar::@2: scope:[testChar]  from testChar::@1
  (byte*) print_line_cursor#58 ← phi( testChar::@1/(byte*) print_line_cursor#62 )
  (byte*) print_char_cursor#104 ← phi( testChar::@1/(byte*) print_char_cursor#25 )
  (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#104
  (byte) print_char::ch#8 ← (byte) ' '
  call print_char 
  to:testChar::@3
testChar::@3: scope:[testChar]  from testChar::@2
  (byte*) print_line_cursor#54 ← phi( testChar::@2/(byte*) print_line_cursor#58 )
  (byte*) print_char_cursor#105 ← phi( testChar::@2/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#105
  (byte) print_byte::b#4 ← (const byte) testChar::n
  call print_byte 
  to:testChar::@4
testChar::@4: scope:[testChar]  from testChar::@3
  (byte*) print_line_cursor#50 ← phi( testChar::@3/(byte*) print_line_cursor#54 )
  (byte*) print_char_cursor#106 ← phi( testChar::@3/(byte*) print_char_cursor#25 )
  (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#106
  (byte) print_char::ch#9 ← (byte) ' '
  call print_char 
  to:testChar::@5
testChar::@5: scope:[testChar]  from testChar::@4
  (byte*) print_line_cursor#46 ← phi( testChar::@4/(byte*) print_line_cursor#50 )
  (byte*) print_char_cursor#107 ← phi( testChar::@4/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#107
  (signed byte) print_sbyte::b#1 ← (const signed byte) testChar::s
  call print_sbyte 
  to:testChar::@6
testChar::@6: scope:[testChar]  from testChar::@5
  (byte*) print_line_cursor#41 ← phi( testChar::@5/(byte*) print_line_cursor#46 )
  (byte*) print_char_cursor#108 ← phi( testChar::@5/(byte*) print_char_cursor#12 )
  (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#108
  call print_ln 
  to:testChar::@7
testChar::@7: scope:[testChar]  from testChar::@6
  (byte*) print_char_cursor#109 ← phi( testChar::@6/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#30 ← phi( testChar::@6/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#30
  (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#109
  to:testChar::@return
testChar::@return: scope:[testChar]  from testChar::@7
  (byte*) print_line_cursor#31 ← phi( testChar::@7/(byte*) print_line_cursor#11 )
  (byte*) print_char_cursor#110 ← phi( testChar::@7/(byte*) print_char_cursor#42 )
  (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#110
  (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#31
  return 
  to:@return

(void()) testShort()
testShort: scope:[testShort]  from main::@2
  (byte*) print_line_cursor#67 ← phi( main::@2/(byte*) print_line_cursor#6 )
  (byte*) print_char_cursor#152 ← phi( main::@2/(byte*) print_char_cursor#31 )
  (byte*) print_str::str#2 ← (const byte*) testShort::str
  call print_str 
  to:testShort::@1
testShort::@1: scope:[testShort]  from testShort
  (byte*) print_line_cursor#63 ← phi( testShort/(byte*) print_line_cursor#67 )
  (byte*) print_char_cursor#111 ← phi( testShort/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#111
  (word) print_word::w#3 ← (const word) testShort::u
  call print_word 
  to:testShort::@2
testShort::@2: scope:[testShort]  from testShort::@1
  (byte*) print_line_cursor#59 ← phi( testShort::@1/(byte*) print_line_cursor#63 )
  (byte*) print_char_cursor#112 ← phi( testShort::@1/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#112
  (byte) print_char::ch#10 ← (byte) ' '
  call print_char 
  to:testShort::@3
testShort::@3: scope:[testShort]  from testShort::@2
  (byte*) print_line_cursor#55 ← phi( testShort::@2/(byte*) print_line_cursor#59 )
  (byte*) print_char_cursor#113 ← phi( testShort::@2/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#113
  (signed word) print_sword::w#1 ← (const signed word) testShort::n
  call print_sword 
  to:testShort::@4
testShort::@4: scope:[testShort]  from testShort::@3
  (byte*) print_line_cursor#51 ← phi( testShort::@3/(byte*) print_line_cursor#55 )
  (byte*) print_char_cursor#114 ← phi( testShort::@3/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#114
  (byte) print_char::ch#11 ← (byte) ' '
  call print_char 
  to:testShort::@5
testShort::@5: scope:[testShort]  from testShort::@4
  (byte*) print_line_cursor#47 ← phi( testShort::@4/(byte*) print_line_cursor#51 )
  (byte*) print_char_cursor#115 ← phi( testShort::@4/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#115
  (signed word) print_sword::w#2 ← (const signed word) testShort::s
  call print_sword 
  to:testShort::@6
testShort::@6: scope:[testShort]  from testShort::@5
  (byte*) print_line_cursor#42 ← phi( testShort::@5/(byte*) print_line_cursor#47 )
  (byte*) print_char_cursor#116 ← phi( testShort::@5/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#116
  call print_ln 
  to:testShort::@7
testShort::@7: scope:[testShort]  from testShort::@6
  (byte*) print_char_cursor#117 ← phi( testShort::@6/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#32 ← phi( testShort::@6/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#32
  (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#117
  to:testShort::@return
testShort::@return: scope:[testShort]  from testShort::@7
  (byte*) print_line_cursor#33 ← phi( testShort::@7/(byte*) print_line_cursor#13 )
  (byte*) print_char_cursor#118 ← phi( testShort::@7/(byte*) print_char_cursor#50 )
  (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#118
  (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#33
  return 
  to:@return

(void()) testInt()
testInt: scope:[testInt]  from main::@3
  (byte*) print_line_cursor#68 ← phi( main::@3/(byte*) print_line_cursor#7 )
  (byte*) print_char_cursor#153 ← phi( main::@3/(byte*) print_char_cursor#32 )
  (byte*) print_str::str#3 ← (const byte*) testInt::str
  call print_str 
  to:testInt::@1
testInt::@1: scope:[testInt]  from testInt
  (byte*) print_line_cursor#64 ← phi( testInt/(byte*) print_line_cursor#68 )
  (byte*) print_char_cursor#119 ← phi( testInt/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#119
  (word) print_word::w#4 ← (const word) testInt::u
  call print_word 
  to:testInt::@2
testInt::@2: scope:[testInt]  from testInt::@1
  (byte*) print_line_cursor#60 ← phi( testInt::@1/(byte*) print_line_cursor#64 )
  (byte*) print_char_cursor#120 ← phi( testInt::@1/(byte*) print_char_cursor#15 )
  (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#120
  (byte) print_char::ch#12 ← (byte) ' '
  call print_char 
  to:testInt::@3
testInt::@3: scope:[testInt]  from testInt::@2
  (byte*) print_line_cursor#56 ← phi( testInt::@2/(byte*) print_line_cursor#60 )
  (byte*) print_char_cursor#121 ← phi( testInt::@2/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#121
  (signed word) print_sword::w#3 ← (const signed word) testInt::n
  call print_sword 
  to:testInt::@4
testInt::@4: scope:[testInt]  from testInt::@3
  (byte*) print_line_cursor#52 ← phi( testInt::@3/(byte*) print_line_cursor#56 )
  (byte*) print_char_cursor#122 ← phi( testInt::@3/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#122
  (byte) print_char::ch#13 ← (byte) ' '
  call print_char 
  to:testInt::@5
testInt::@5: scope:[testInt]  from testInt::@4
  (byte*) print_line_cursor#48 ← phi( testInt::@4/(byte*) print_line_cursor#52 )
  (byte*) print_char_cursor#123 ← phi( testInt::@4/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#123
  (signed word) print_sword::w#4 ← (const signed word) testInt::s
  call print_sword 
  to:testInt::@6
testInt::@6: scope:[testInt]  from testInt::@5
  (byte*) print_line_cursor#43 ← phi( testInt::@5/(byte*) print_line_cursor#48 )
  (byte*) print_char_cursor#124 ← phi( testInt::@5/(byte*) print_char_cursor#8 )
  (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#124
  call print_ln 
  to:testInt::@7
testInt::@7: scope:[testInt]  from testInt::@6
  (byte*) print_char_cursor#125 ← phi( testInt::@6/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#34 ← phi( testInt::@6/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#34
  (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#125
  to:testInt::@return
testInt::@return: scope:[testInt]  from testInt::@7
  (byte*) print_line_cursor#35 ← phi( testInt::@7/(byte*) print_line_cursor#15 )
  (byte*) print_char_cursor#126 ← phi( testInt::@7/(byte*) print_char_cursor#58 )
  (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#126
  (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#35
  return 
  to:@return

(void()) testLong()
testLong: scope:[testLong]  from main::@4
  (byte*) print_line_cursor#69 ← phi( main::@4/(byte*) print_line_cursor#8 )
  (byte*) print_char_cursor#154 ← phi( main::@4/(byte*) print_char_cursor#33 )
  (byte*) print_str::str#4 ← (const byte*) testLong::str
  call print_str 
  to:testLong::@1
testLong::@1: scope:[testLong]  from testLong
  (byte*) print_line_cursor#65 ← phi( testLong/(byte*) print_line_cursor#69 )
  (byte*) print_char_cursor#127 ← phi( testLong/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#127
  (dword) print_dword::dw#1 ← (const dword) testLong::u
  call print_dword 
  to:testLong::@2
testLong::@2: scope:[testLong]  from testLong::@1
  (byte*) print_line_cursor#61 ← phi( testLong::@1/(byte*) print_line_cursor#65 )
  (byte*) print_char_cursor#128 ← phi( testLong::@1/(byte*) print_char_cursor#18 )
  (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#128
  (byte) print_char::ch#14 ← (byte) ' '
  call print_char 
  to:testLong::@3
testLong::@3: scope:[testLong]  from testLong::@2
  (byte*) print_line_cursor#57 ← phi( testLong::@2/(byte*) print_line_cursor#61 )
  (byte*) print_char_cursor#129 ← phi( testLong::@2/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#129
  (signed dword) print_sdword::dw#1 ← (const signed dword) testLong::n
  call print_sdword 
  to:testLong::@4
testLong::@4: scope:[testLong]  from testLong::@3
  (byte*) print_line_cursor#53 ← phi( testLong::@3/(byte*) print_line_cursor#57 )
  (byte*) print_char_cursor#130 ← phi( testLong::@3/(byte*) print_char_cursor#22 )
  (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#130
  (byte) print_char::ch#15 ← (byte) ' '
  call print_char 
  to:testLong::@5
testLong::@5: scope:[testLong]  from testLong::@4
  (byte*) print_line_cursor#49 ← phi( testLong::@4/(byte*) print_line_cursor#53 )
  (byte*) print_char_cursor#131 ← phi( testLong::@4/(byte*) print_char_cursor#27 )
  (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#131
  (signed dword) print_sdword::dw#2 ← (const signed dword) testLong::s
  call print_sdword 
  to:testLong::@6
testLong::@6: scope:[testLong]  from testLong::@5
  (byte*) print_line_cursor#44 ← phi( testLong::@5/(byte*) print_line_cursor#49 )
  (byte*) print_char_cursor#132 ← phi( testLong::@5/(byte*) print_char_cursor#22 )
  (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#132
  call print_ln 
  to:testLong::@7
testLong::@7: scope:[testLong]  from testLong::@6
  (byte*) print_char_cursor#133 ← phi( testLong::@6/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#36 ← phi( testLong::@6/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#36
  (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#133
  to:testLong::@return
testLong::@return: scope:[testLong]  from testLong::@7
  (byte*) print_line_cursor#37 ← phi( testLong::@7/(byte*) print_line_cursor#17 )
  (byte*) print_char_cursor#134 ← phi( testLong::@7/(byte*) print_char_cursor#66 )
  (byte*) print_char_cursor#67 ← (byte*) print_char_cursor#134
  (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#37
  return 
  to:@return
@42: scope:[]  from @13
  (byte*) print_screen#4 ← phi( @13/(byte*) print_screen#0 )
  (byte*) print_char_cursor#155 ← phi( @13/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#45 ← phi( @13/(byte*) print_line_cursor#0 )
  call main 
  to:@43
@43: scope:[]  from @42
  (byte*) print_char_cursor#135 ← phi( @42/(byte*) print_char_cursor#35 )
  (byte*) print_line_cursor#38 ← phi( @42/(byte*) print_line_cursor#10 )
  (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#38
  (byte*) print_char_cursor#68 ← (byte*) print_char_cursor#135
  to:@end
@end: scope:[]  from @43

SYMBOL TABLE SSA
(label) @13
(label) @42
(label) @43
(label) @begin
(label) @end
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
(byte*~) memset::$2
(byte*~) memset::$3
(bool~) memset::$4
(label) memset::@1
(label) memset::@2
(label) memset::@4
(label) memset::@5
(label) memset::@return
(byte) memset::c
(byte) memset::c#0
(byte) memset::c#1
(byte) memset::c#2
(byte) memset::c#3
(byte) memset::c#4
(byte*) memset::dst
(byte*) memset::dst#0
(byte*) memset::dst#1
(byte*) memset::dst#2
(byte*) memset::dst#3
(byte*) memset::end
(byte*) memset::end#0
(byte*) memset::end#1
(byte*) memset::end#2
(word) memset::num
(word) memset::num#0
(word) memset::num#1
(word) memset::num#2
(void*) memset::return
(void*) memset::return#0
(void*) memset::return#1
(void*) memset::return#2
(void*) memset::return#3
(void*) memset::str
(void*) memset::str#0
(void*) memset::str#1
(void*) memset::str#2
(void*) memset::str#3
(void*) memset::str#4
(void*) memset::str#5
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0
(number~) print_byte::$2
(label) print_byte::@1
(label) print_byte::@2
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0
(byte) print_byte::b#1
(byte) print_byte::b#2
(byte) print_byte::b#3
(byte) print_byte::b#4
(byte) print_byte::b#5
(byte) print_byte::b#6
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#0
(byte) print_char::ch#1
(byte) print_char::ch#10
(byte) print_char::ch#11
(byte) print_char::ch#12
(byte) print_char::ch#13
(byte) print_char::ch#14
(byte) print_char::ch#15
(byte) print_char::ch#16
(byte) print_char::ch#2
(byte) print_char::ch#3
(byte) print_char::ch#4
(byte) print_char::ch#5
(byte) print_char::ch#6
(byte) print_char::ch#7
(byte) print_char::ch#8
(byte) print_char::ch#9
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
(byte*) print_char_cursor#10
(byte*) print_char_cursor#100
(byte*) print_char_cursor#101
(byte*) print_char_cursor#102
(byte*) print_char_cursor#103
(byte*) print_char_cursor#104
(byte*) print_char_cursor#105
(byte*) print_char_cursor#106
(byte*) print_char_cursor#107
(byte*) print_char_cursor#108
(byte*) print_char_cursor#109
(byte*) print_char_cursor#11
(byte*) print_char_cursor#110
(byte*) print_char_cursor#111
(byte*) print_char_cursor#112
(byte*) print_char_cursor#113
(byte*) print_char_cursor#114
(byte*) print_char_cursor#115
(byte*) print_char_cursor#116
(byte*) print_char_cursor#117
(byte*) print_char_cursor#118
(byte*) print_char_cursor#119
(byte*) print_char_cursor#12
(byte*) print_char_cursor#120
(byte*) print_char_cursor#121
(byte*) print_char_cursor#122
(byte*) print_char_cursor#123
(byte*) print_char_cursor#124
(byte*) print_char_cursor#125
(byte*) print_char_cursor#126
(byte*) print_char_cursor#127
(byte*) print_char_cursor#128
(byte*) print_char_cursor#129
(byte*) print_char_cursor#13
(byte*) print_char_cursor#130
(byte*) print_char_cursor#131
(byte*) print_char_cursor#132
(byte*) print_char_cursor#133
(byte*) print_char_cursor#134
(byte*) print_char_cursor#135
(byte*) print_char_cursor#136
(byte*) print_char_cursor#137
(byte*) print_char_cursor#138
(byte*) print_char_cursor#139
(byte*) print_char_cursor#14
(byte*) print_char_cursor#140
(byte*) print_char_cursor#141
(byte*) print_char_cursor#142
(byte*) print_char_cursor#143
(byte*) print_char_cursor#144
(byte*) print_char_cursor#145
(byte*) print_char_cursor#146
(byte*) print_char_cursor#147
(byte*) print_char_cursor#148
(byte*) print_char_cursor#149
(byte*) print_char_cursor#15
(byte*) print_char_cursor#150
(byte*) print_char_cursor#151
(byte*) print_char_cursor#152
(byte*) print_char_cursor#153
(byte*) print_char_cursor#154
(byte*) print_char_cursor#155
(byte*) print_char_cursor#156
(byte*) print_char_cursor#157
(byte*) print_char_cursor#158
(byte*) print_char_cursor#159
(byte*) print_char_cursor#16
(byte*) print_char_cursor#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()
(label) print_cls::@1
(label) print_cls::@return
(void()) print_dword((dword) print_dword::dw)
(word~) print_dword::$0
(word~) print_dword::$2
(label) print_dword::@1
(label) print_dword::@2
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0
(dword) print_dword::dw#1
(dword) print_dword::dw#2
(dword) print_dword::dw#3
(const byte*) print_hextab[]  = (byte*) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
(byte*) print_line_cursor#10
(byte*) print_line_cursor#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#8
(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
(byte~) print_sbyte::$1
(signed byte~) print_sbyte::$5
(label) print_sbyte::@1
(label) print_sbyte::@2
(label) print_sbyte::@3
(label) print_sbyte::@5
(label) print_sbyte::@6
(label) print_sbyte::@7
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0
(signed byte) print_sbyte::b#1
(signed byte) print_sbyte::b#2
(signed byte) print_sbyte::b#3
(signed byte) print_sbyte::b#4
(signed byte) print_sbyte::b#5
(signed byte) print_sbyte::b#6
(signed byte) print_sbyte::b#7
(byte*) print_screen
(byte*) print_screen#0
(byte*) print_screen#1
(byte*) print_screen#2
(byte*) print_screen#3
(byte*) print_screen#4
(void()) print_sdword((signed dword) print_sdword::dw)
(bool~) print_sdword::$0
(dword~) print_sdword::$1
(signed dword~) print_sdword::$5
(label) print_sdword::@1
(label) print_sdword::@2
(label) print_sdword::@3
(label) print_sdword::@5
(label) print_sdword::@6
(label) print_sdword::@7
(label) print_sdword::@return
(signed dword) print_sdword::dw
(signed dword) print_sdword::dw#0
(signed dword) print_sdword::dw#1
(signed dword) print_sdword::dw#2
(signed dword) print_sdword::dw#3
(signed dword) print_sdword::dw#4
(signed dword) print_sdword::dw#5
(signed dword) print_sdword::dw#6
(signed dword) print_sdword::dw#7
(signed dword) print_sdword::dw#8
(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#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
(void()) print_sword((signed word) print_sword::w)
(bool~) print_sword::$0
(word~) print_sword::$1
(signed word~) print_sword::$5
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@5
(label) print_sword::@6
(label) print_sword::@7
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0
(signed word) print_sword::w#1
(signed word) print_sword::w#10
(signed word) print_sword::w#2
(signed word) print_sword::w#3
(signed word) print_sword::w#4
(signed word) print_sword::w#5
(signed word) print_sword::w#6
(signed word) print_sword::w#7
(signed word) print_sword::w#8
(signed word) print_sword::w#9
(void()) print_word((word) print_word::w)
(byte~) print_word::$0
(byte~) print_word::$2
(label) print_word::@1
(label) print_word::@2
(label) print_word::@return
(word) print_word::w
(word) print_word::w#0
(word) print_word::w#1
(word) print_word::w#2
(word) print_word::w#3
(word) print_word::w#4
(word) print_word::w#5
(word) print_word::w#6
(void()) testChar()
(label) testChar::@1
(label) testChar::@2
(label) testChar::@3
(label) testChar::@4
(label) testChar::@5
(label) testChar::@6
(label) testChar::@7
(label) testChar::@return
(const byte) testChar::n = (byte) $e
(const signed byte) testChar::s = (signed byte) -$e
(const byte*) testChar::str[(byte) 7]  = (byte*) "char: "
(const byte) testChar::u = (byte) $e
(void()) testInt()
(label) testInt::@1
(label) testInt::@2
(label) testInt::@3
(label) testInt::@4
(label) testInt::@5
(label) testInt::@6
(label) testInt::@7
(label) testInt::@return
(const signed word) testInt::n = (signed word) -$578
(const signed word) testInt::s = (signed word) -$578
(const byte*) testInt::str[(byte) 6]  = (byte*) "int: "
(const word) testInt::u = (word) $578
(void()) testLong()
(label) testLong::@1
(label) testLong::@2
(label) testLong::@3
(label) testLong::@4
(label) testLong::@5
(label) testLong::@6
(label) testLong::@7
(label) testLong::@return
(const signed dword) testLong::n = (signed dword) -$222e0
(const signed dword) testLong::s = (signed dword) -$222e0
(const byte*) testLong::str[(byte) 7]  = (byte*) "long: "
(const dword) testLong::u = (dword) $222e0
(void()) testShort()
(label) testShort::@1
(label) testShort::@2
(label) testShort::@3
(label) testShort::@4
(label) testShort::@5
(label) testShort::@6
(label) testShort::@7
(label) testShort::@return
(const signed word) testShort::n = (signed word) -$578
(const signed word) testShort::s = (signed word) -$578
(const byte*) testShort::str[(byte) 8]  = (byte*) "short: "
(const word) testShort::u = (word) $578

Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#5)
Adding number conversion cast (unumber) $28 in (byte*~) print_ln::$0 ← (byte*) print_line_cursor#20 + (number) $28
Adding number conversion cast (snumber) 0 in (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#2 < (number) 0
Adding number conversion cast (snumber) 0 in (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#3 < (number) 0
Adding number conversion cast (unumber) 4 in (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (number) 4
Adding number conversion cast (unumber) $f in (number~) print_byte::$2 ← (byte) print_byte::b#6 & (number) $f
Adding number conversion cast (unumber) print_byte::$2 in (number~) print_byte::$2 ← (byte) print_byte::b#6 & (unumber)(number) $f
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#7
Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#4
Inlining cast (dword~) print_sdword::$1 ← (dword)(signed dword) print_sdword::dw#5
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Successful SSA optimization Pass2InlineCast
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $3e8
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $28
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (word) $3e8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#6 & (byte) $f
Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0
Successful SSA optimization Pass2UnaryNotSimplification
Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 
Alias (void*) memset::str#2 = (void*) memset::str#3 
Alias (word) memset::num#1 = (word) memset::num#2 
Alias (byte) memset::c#3 = (byte) memset::c#4 
Alias (byte*) memset::end#0 = (byte*~) memset::$3 
Alias (byte) memset::c#1 = (byte) memset::c#2 
Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 
Alias (byte*) memset::end#1 = (byte*) memset::end#2 
Alias (void*) memset::str#4 = (void*) memset::str#5 
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#45 (byte*) print_char_cursor#155 (byte*) print_screen#4 
Alias (byte*) print_str::str#5 = (byte*) print_str::str#6 
Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#69 (byte*) print_char_cursor#70 (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#72 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 
Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#157 (byte*) print_char_cursor#139 
Alias (signed word) print_sword::w#10 = (signed word) print_sword::w#8 (signed word) print_sword::w#5 (signed word) print_sword::w#6 (signed word) print_sword::w#9 
Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#73 
Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 
Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#74 
Alias (word) print_word::w#0 = (word~) print_sword::$1 
Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#8 
Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#158 (byte*) print_char_cursor#142 
Alias (signed byte) print_sbyte::b#2 = (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#7 (signed byte) print_sbyte::b#6 
Alias (byte*) print_char_cursor#77 = (byte*) print_char_cursor#9 
Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#78 
Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#12 
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#13 = (byte*) print_char_cursor#81 
Alias (byte) print_byte::b#2 = (byte~) print_word::$2 
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#15 
Alias (word) print_word::w#1 = (word~) print_dword::$0 
Alias (dword) print_dword::dw#2 = (dword) print_dword::dw#3 
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#84 
Alias (word) print_word::w#2 = (word~) print_dword::$2 
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#86 (byte*) print_char_cursor#18 
Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#159 (byte*) print_char_cursor#147 
Alias (signed dword) print_sdword::dw#3 = (signed dword) print_sdword::dw#6 (signed dword) print_sdword::dw#4 (signed dword) print_sdword::dw#8 (signed dword) print_sdword::dw#7 
Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#87 
Alias (signed dword) print_sdword::dw#0 = (signed dword~) print_sdword::$5 
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#88 
Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$1 
Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#22 
Alias (byte) print_byte::b#5 = (byte) print_byte::b#6 
Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#91 
Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#92 (byte*) print_char_cursor#93 (byte*) print_char_cursor#25 
Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#95 (byte*) print_char_cursor#27 
Alias (byte*) print_line_cursor#23 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#28 (byte*) print_char_cursor#96 (byte*) print_line_cursor#4 (byte*) print_char_cursor#29 
Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#5 
Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#97 
Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#98 
Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#6 
Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#99 
Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#7 
Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#33 
Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#8 
Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#102 (byte*) print_char_cursor#35 
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 
Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#62 (byte*) print_line_cursor#66 (byte*) print_line_cursor#58 (byte*) print_line_cursor#54 (byte*) print_line_cursor#50 (byte*) print_line_cursor#46 
Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#36 
Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#37 
Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#38 
Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#39 
Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#40 
Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#41 
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#109 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#110 (byte*) print_char_cursor#43 
Alias (byte*) print_line_cursor#42 = (byte*) print_line_cursor#63 (byte*) print_line_cursor#67 (byte*) print_line_cursor#59 (byte*) print_line_cursor#55 (byte*) print_line_cursor#51 (byte*) print_line_cursor#47 
Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#44 
Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#45 
Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#46 
Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#47 
Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#48 
Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#49 
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#117 = (byte*) print_char_cursor#50 (byte*) print_char_cursor#118 (byte*) print_char_cursor#51 
Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#64 (byte*) print_line_cursor#68 (byte*) print_line_cursor#60 (byte*) print_line_cursor#56 (byte*) print_line_cursor#52 (byte*) print_line_cursor#48 
Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#52 
Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#53 
Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#54 
Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#55 
Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#56 
Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#57 
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#125 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#126 (byte*) print_char_cursor#59 
Alias (byte*) print_line_cursor#44 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#69 (byte*) print_line_cursor#61 (byte*) print_line_cursor#57 (byte*) print_line_cursor#53 (byte*) print_line_cursor#49 
Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#60 
Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#61 
Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#62 
Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#63 
Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#64 
Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#65 
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#133 = (byte*) print_char_cursor#66 (byte*) print_char_cursor#134 (byte*) print_char_cursor#67 
Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#38 
Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#68 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (word) memset::num#1 (word) memset::num#0
Identical Phi Values (void*) memset::str#2 (void*) memset::str#0
Identical Phi Values (byte) memset::c#3 (byte) memset::c#0
Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0
Identical Phi Values (void*) memset::str#4 (void*) memset::str#2
Identical Phi Values (byte) memset::c#1 (byte) memset::c#3
Identical Phi Values (byte*) print_char_cursor#71 (byte*) print_char_cursor#137
Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#14
Identical Phi Values (signed byte) print_sbyte::b#2 (signed byte) print_sbyte::b#1
Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#107
Identical Phi Values (byte*) print_char_cursor#77 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#24
Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#24
Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#24
Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_line_cursor#23 (byte*) print_screen#3
Identical Phi Values (byte*) print_screen#3 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_line_cursor#40 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_line_cursor#24 (byte*) print_line_cursor#23
Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_line_cursor#23
Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#109
Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_line_cursor#11
Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#117
Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#13
Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#125
Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#15
Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#133
Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#17
Identical Phi Values (byte*) print_char_cursor#151 (byte*) print_char_cursor#30
Identical Phi Values (byte*) print_line_cursor#41 (byte*) print_line_cursor#24
Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#136
Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#24
Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#24
Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#11
Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#152 (byte*) print_char_cursor#31
Identical Phi Values (byte*) print_line_cursor#42 (byte*) print_line_cursor#25
Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#136
Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#153 (byte*) print_char_cursor#32
Identical Phi Values (byte*) print_line_cursor#43 (byte*) print_line_cursor#26
Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#136
Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#14
Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#7
Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#154 (byte*) print_char_cursor#100
Identical Phi Values (byte*) print_line_cursor#44 (byte*) print_line_cursor#27
Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#136
Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#17
Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#130 (byte*) print_char_cursor#21
Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#132 (byte*) print_char_cursor#21
Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#133 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#10
Identical Phi Values (byte*) print_char_cursor#135 (byte*) print_char_cursor#101
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (void*) memset::return#0 (void*) memset::str#0
Identical Phi Values (byte*) print_char_cursor#137 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#140 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#26
Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#26
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) memset::$1 [2] if((word) memset::num#0<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [9] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) print_str::$0 [17] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2
Simple Condition (bool~) print_ln::$1 [26] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1
Simple Condition (bool~) print_sword::$0 [30] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1
Simple Condition (bool~) print_sbyte::$0 [45] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1
Simple Condition (bool~) print_sdword::$0 [76] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) print_line_cursor#0 = (byte*) 1024
Constant (const byte) print_char::ch#0 = '-'
Constant (const byte) print_char::ch#1 = ' '
Constant (const byte) print_char::ch#2 = '-'
Constant (const byte) print_char::ch#3 = ' '
Constant (const byte) print_char::ch#4 = '-'
Constant (const byte) print_char::ch#5 = ' '
Constant (const byte) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const byte*) print_str::str#1 = testChar::str
Constant (const byte) print_byte::b#3 = testChar::u
Constant (const byte) print_char::ch#8 = ' '
Constant (const byte) print_byte::b#4 = testChar::n
Constant (const byte) print_char::ch#9 = ' '
Constant (const signed byte) print_sbyte::b#1 = testChar::s
Constant (const byte*) print_str::str#2 = testShort::str
Constant (const word) print_word::w#3 = testShort::u
Constant (const byte) print_char::ch#10 = ' '
Constant (const signed word) print_sword::w#1 = testShort::n
Constant (const byte) print_char::ch#11 = ' '
Constant (const signed word) print_sword::w#2 = testShort::s
Constant (const byte*) print_str::str#3 = testInt::str
Constant (const word) print_word::w#4 = testInt::u
Constant (const byte) print_char::ch#12 = ' '
Constant (const signed word) print_sword::w#3 = testInt::n
Constant (const byte) print_char::ch#13 = ' '
Constant (const signed word) print_sword::w#4 = testInt::s
Constant (const byte*) print_str::str#4 = testLong::str
Constant (const dword) print_dword::dw#1 = testLong::u
Constant (const byte) print_char::ch#14 = ' '
Constant (const signed dword) print_sdword::dw#1 = testLong::n
Constant (const byte) print_char::ch#15 = ' '
Constant (const signed dword) print_sdword::dw#2 = testLong::s
Successful SSA optimization Pass2ConstantIdentification
Constant (const void*) memset::str#0 = (void*)print_line_cursor#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) memset::$2 = (byte*)memset::str#0
Constant (const byte*) memset::dst#0 = (byte*)memset::str#0
Constant (const void*) memset::return#2 = memset::str#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [2] if((const word) memset::num#0<=(byte) 0) goto memset::@1
if() condition always true - replacing block destination [45] if((const signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1
Successful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const void*) memset::return#2
Successful SSA optimization PassNEliminateUnusedVars
Removing PHI-reference to removed block (print_sbyte::@3) in block print_char
Removing PHI-reference to removed block (print_sbyte::@3) in block print_char
Removing unused block print_sbyte::@3
Removing PHI-reference to removed block (print_sbyte::@6) in block print_sbyte::@2
Removing unused block print_sbyte::@6
Successful SSA optimization Pass2EliminateUnusedBlocks
Alias (signed byte) print_sbyte::b#0 = (signed byte) print_sbyte::b#4 
Successful SSA optimization Pass2AliasElimination
Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0
Constant right-side identified [28] (signed byte) print_sbyte::b#0 ← - (const signed byte) print_sbyte::b#1
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) memset::end#0 = memset::$2+memset::num#0
Constant (const signed byte) print_sbyte::b#0 = -print_sbyte::b#1
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) print_byte::b#0 = (byte)print_sbyte::b#0
Successful SSA optimization Pass2ConstantIdentification
Eliminating unused constant (const byte) print_char::ch#3
Successful SSA optimization PassNEliminateUnusedVars
Inlining constant with var siblings (const byte*) memset::dst#0
Inlining constant with var siblings (const byte*) print_str::str#1
Inlining constant with var siblings (const byte*) print_str::str#2
Inlining constant with var siblings (const byte*) print_str::str#3
Inlining constant with var siblings (const byte*) print_str::str#4
Inlining constant with var siblings (const signed word) print_sword::w#1
Inlining constant with var siblings (const signed word) print_sword::w#2
Inlining constant with var siblings (const signed word) print_sword::w#3
Inlining constant with var siblings (const signed word) print_sword::w#4
Inlining constant with different constant siblings (const signed byte) print_sbyte::b#1
Inlining constant with var siblings (const word) print_word::w#3
Inlining constant with var siblings (const word) print_word::w#4
Inlining constant with var siblings (const dword) print_dword::dw#1
Inlining constant with var siblings (const signed dword) print_sdword::dw#1
Inlining constant with var siblings (const signed dword) print_sdword::dw#2
Inlining constant with var siblings (const byte) print_byte::b#3
Inlining constant with var siblings (const byte) print_byte::b#4
Inlining constant with var siblings (const byte) print_byte::b#0
Inlining constant with var siblings (const byte) print_char::ch#0
Inlining constant with var siblings (const byte) print_char::ch#1
Inlining constant with var siblings (const byte) print_char::ch#2
Inlining constant with var siblings (const byte) print_char::ch#4
Inlining constant with var siblings (const byte) print_char::ch#5
Inlining constant with var siblings (const byte) print_char::ch#8
Inlining constant with var siblings (const byte) print_char::ch#9
Inlining constant with var siblings (const byte) print_char::ch#10
Inlining constant with var siblings (const byte) print_char::ch#11
Inlining constant with var siblings (const byte) print_char::ch#12
Inlining constant with var siblings (const byte) print_char::ch#13
Inlining constant with var siblings (const byte) print_char::ch#14
Inlining constant with var siblings (const byte) print_char::ch#15
Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined print_char::ch#13 = (byte) ' '
Constant inlined print_char::ch#14 = (byte) ' '
Constant inlined print_char::ch#15 = (byte) ' '
Constant inlined print_sbyte::b#1 = (const signed byte) testChar::s
Constant inlined print_char::ch#10 = (byte) ' '
Constant inlined print_sword::w#1 = (const signed word) testShort::n
Constant inlined print_char::ch#11 = (byte) ' '
Constant inlined print_sword::w#2 = (const signed word) testShort::s
Constant inlined print_char::ch#12 = (byte) ' '
Constant inlined print_sword::w#3 = (const signed word) testInt::n
Constant inlined print_sword::w#4 = (const signed word) testInt::s
Constant inlined print_dword::dw#1 = (const dword) testLong::u
Constant inlined print_char::ch#9 = (byte) ' '
Constant inlined print_char::ch#8 = (byte) ' '
Constant inlined memset::$2 = (byte*)(const void*) memset::str#0
Constant inlined print_sdword::dw#2 = (const signed dword) testLong::s
Constant inlined print_sdword::dw#1 = (const signed dword) testLong::n
Constant inlined print_byte::b#0 = (byte)(const signed byte) print_sbyte::b#0
Constant inlined print_line_cursor#0 = (byte*) 1024
Constant inlined print_byte::b#4 = (const byte) testChar::n
Constant inlined print_byte::b#3 = (const byte) testChar::u
Constant inlined print_word::w#3 = (const word) testShort::u
Constant inlined print_word::w#4 = (const word) testInt::u
Constant inlined print_char::ch#2 = (byte) '-'
Constant inlined print_char::ch#5 = (byte) ' '
Constant inlined print_char::ch#4 = (byte) '-'
Constant inlined print_char::ch#1 = (byte) ' '
Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined print_str::str#4 = (const byte*) testLong::str
Constant inlined print_str::str#3 = (const byte*) testInt::str
Constant inlined print_str::str#2 = (const byte*) testShort::str
Constant inlined memset::dst#0 = (byte*)(const void*) memset::str#0
Constant inlined print_str::str#1 = (const byte*) testChar::str
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @13
Adding NOP phi() at start of @42
Adding NOP phi() at start of @43
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 main::@5
Adding NOP phi() at start of testLong::@3
Adding NOP phi() at start of testLong::@5
Adding NOP phi() at start of testLong::@7
Adding NOP phi() at start of print_ln::@2
Adding NOP phi() at start of print_sdword::@7
Adding NOP phi() at start of print_dword::@2
Adding NOP phi() at start of print_word::@2
Adding NOP phi() at start of print_byte::@2
Adding NOP phi() at start of testInt::@3
Adding NOP phi() at start of testInt::@5
Adding NOP phi() at start of testInt::@7
Adding NOP phi() at start of print_sword::@7
Adding NOP phi() at start of testShort::@3
Adding NOP phi() at start of testShort::@5
Adding NOP phi() at start of testShort::@7
Adding NOP phi() at start of testChar
Adding NOP phi() at start of testChar::@5
Adding NOP phi() at start of testChar::@6
Adding NOP phi() at start of testChar::@7
Adding NOP phi() at start of print_sbyte
Adding NOP phi() at start of print_sbyte::@5
Adding NOP phi() at start of print_sbyte::@7
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of print_cls::@1
Adding NOP phi() at start of memset
Adding NOP phi() at start of memset::@2
Adding NOP phi() at start of memset::@1
CALL GRAPH
Calls in [] to main:3 
Calls in [main] to print_cls:7 testChar:9 testShort:11 testInt:13 testLong:15 
Calls in [testLong] to print_str:19 print_dword:21 print_char:23 print_sdword:25 print_char:27 print_sdword:29 print_ln:31 
Calls in [print_sdword] to print_char:45 print_dword:51 print_char:55 
Calls in [print_dword] to print_word:66 print_word:70 
Calls in [print_word] to print_byte:77 print_byte:81 
Calls in [print_byte] to print_char:89 print_char:94 
Calls in [testInt] to print_str:109 print_word:111 print_char:113 print_sword:115 print_char:117 print_sword:119 print_ln:121 
Calls in [print_sword] to print_char:127 print_word:133 print_char:137 
Calls in [testShort] to print_str:141 print_word:143 print_char:145 print_sword:147 print_char:149 print_sword:151 print_ln:153 
Calls in [testChar] to print_str:157 print_byte:159 print_char:161 print_byte:163 print_char:165 print_sbyte:167 print_ln:169 
Calls in [print_sbyte] to print_char:174 print_byte:177 
Calls in [print_cls] to memset:181 

Created 19 initial phi equivalence classes
Not coalescing [18] print_char_cursor#161 ← print_line_cursor#1
Coalesced [20] print_char_cursor#171 ← print_char_cursor#136
Coalesced [22] print_char_cursor#188 ← print_char_cursor#26
Coalesced (already) [26] print_char_cursor#189 ← print_char_cursor#26
Coalesced [30] print_line_cursor#71 ← print_line_cursor#1
Coalesced [35] print_line_cursor#73 ← print_line_cursor#39
Coalesced (already) [41] print_line_cursor#74 ← print_line_cursor#1
Coalesced (already) [44] print_char_cursor#181 ← print_char_cursor#26
Coalesced [46] print_sdword::dw#10 ← print_sdword::dw#3
Coalesced [49] print_dword::dw#4 ← print_dword::dw#0
Coalesced [50] print_char_cursor#170 ← print_char_cursor#26
Coalesced (already) [54] print_char_cursor#180 ← print_char_cursor#26
Coalesced [57] print_sdword::dw#9 ← print_sdword::dw#0
Coalesced [64] print_word::w#7 ← print_word::w#1
Coalesced [65] print_char_cursor#165 ← print_char_cursor#145
Coalesced [68] print_word::w#8 ← print_word::w#2
Coalesced (already) [69] print_char_cursor#166 ← print_char_cursor#26
Coalesced [75] print_byte::b#7 ← print_byte::b#1
Coalesced [76] print_char_cursor#173 ← print_char_cursor#144
Coalesced [79] print_byte::b#8 ← print_byte::b#2
Coalesced (already) [80] print_char_cursor#174 ← print_char_cursor#26
Coalesced [87] print_char::ch#17 ← print_char::ch#6
Coalesced (already) [88] print_char_cursor#177 ← print_char_cursor#149
Coalesced [92] print_char::ch#18 ← print_char::ch#7
Coalesced (already) [93] print_char_cursor#178 ← print_char_cursor#26
Coalesced [98] print_str::str#8 ← print_str::str#7
Coalesced [99] print_char_cursor#163 ← print_char_cursor#156
Coalesced [106] print_str::str#9 ← print_str::str#0
Coalesced [107] print_char_cursor#164 ← print_char_cursor#1
Not coalescing [108] print_char_cursor#160 ← print_line_cursor#1
Coalesced (already) [110] print_char_cursor#168 ← print_char_cursor#136
Coalesced (already) [112] print_char_cursor#186 ← print_char_cursor#26
Coalesced (already) [116] print_char_cursor#187 ← print_char_cursor#26
Coalesced (already) [120] print_line_cursor#70 ← print_line_cursor#1
Coalesced (already) [126] print_char_cursor#183 ← print_char_cursor#26
Coalesced [128] print_sword::w#12 ← print_sword::w#10
Coalesced [131] print_word::w#9 ← print_word::w#0
Coalesced (already) [132] print_char_cursor#167 ← print_char_cursor#26
Coalesced (already) [136] print_char_cursor#182 ← print_char_cursor#26
Coalesced [139] print_sword::w#11 ← print_sword::w#0
Not coalescing [140] print_char_cursor#162 ← print_line_cursor#1
Coalesced (already) [142] print_char_cursor#169 ← print_char_cursor#136
Coalesced (already) [144] print_char_cursor#190 ← print_char_cursor#26
Coalesced (already) [148] print_char_cursor#191 ← print_char_cursor#26
Coalesced (already) [152] print_line_cursor#72 ← print_line_cursor#1
Coalesced (already) [158] print_char_cursor#175 ← print_char_cursor#136
Coalesced (already) [160] print_char_cursor#184 ← print_char_cursor#26
Coalesced (already) [162] print_char_cursor#176 ← print_char_cursor#26
Coalesced (already) [164] print_char_cursor#185 ← print_char_cursor#26
Coalesced (already) [173] print_char_cursor#179 ← print_char_cursor#26
Coalesced (already) [176] print_char_cursor#172 ← print_char_cursor#26
Coalesced [192] memset::dst#4 ← memset::dst#1
Coalesced down to 10 phi equivalence classes
Culled Empty Block (label) @13
Culled Empty Block (label) @43
Culled Empty Block (label) main::@5
Culled Empty Block (label) testLong::@7
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_sdword::@6
Culled Empty Block (label) print_sdword::@7
Culled Empty Block (label) print_dword::@2
Culled Empty Block (label) print_word::@2
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) testInt::@7
Culled Empty Block (label) print_sword::@6
Culled Empty Block (label) print_sword::@7
Culled Empty Block (label) testShort::@7
Culled Empty Block (label) testChar::@7
Culled Empty Block (label) print_sbyte::@5
Culled Empty Block (label) print_sbyte::@7
Culled Empty Block (label) print_cls::@1
Culled Empty Block (label) memset::@2
Culled Empty Block (label) memset::@1
Renumbering block @42 to @1
Renumbering block memset::@4 to memset::@1
Renumbering block memset::@5 to memset::@2
Renumbering block print_sword::@5 to print_sword::@4
Renumbering block print_sdword::@5 to print_sdword::@4
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
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 testLong::@1
Adding NOP phi() at start of testLong::@2
Adding NOP phi() at start of testLong::@3
Adding NOP phi() at start of testLong::@4
Adding NOP phi() at start of testLong::@5
Adding NOP phi() at start of testLong::@6
Adding NOP phi() at start of print_sdword::@3
Adding NOP phi() at start of print_sdword::@1
Adding NOP phi() at start of testInt::@1
Adding NOP phi() at start of testInt::@2
Adding NOP phi() at start of testInt::@3
Adding NOP phi() at start of testInt::@4
Adding NOP phi() at start of testInt::@5
Adding NOP phi() at start of testInt::@6
Adding NOP phi() at start of print_sword::@3
Adding NOP phi() at start of print_sword::@1
Adding NOP phi() at start of testShort::@1
Adding NOP phi() at start of testShort::@2
Adding NOP phi() at start of testShort::@3
Adding NOP phi() at start of testShort::@4
Adding NOP phi() at start of testShort::@5
Adding NOP phi() at start of testShort::@6
Adding NOP phi() at start of testChar
Adding NOP phi() at start of testChar::@1
Adding NOP phi() at start of testChar::@2
Adding NOP phi() at start of testChar::@3
Adding NOP phi() at start of testChar::@4
Adding NOP phi() at start of testChar::@5
Adding NOP phi() at start of testChar::@6
Adding NOP phi() at start of print_sbyte
Adding NOP phi() at start of print_sbyte::@1
Adding NOP phi() at start of print_sbyte::@2
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of memset

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  [4] phi()
  [5] call print_cls 
  to:main::@1
main::@1: scope:[main]  from main
  [6] phi()
  [7] call testChar 
  to:main::@2
main::@2: scope:[main]  from main::@1
  [8] phi()
  [9] call testShort 
  to:main::@3
main::@3: scope:[main]  from main::@2
  [10] phi()
  [11] call testInt 
  to:main::@4
main::@4: scope:[main]  from main::@3
  [12] phi()
  [13] call testLong 
  to:main::@return
main::@return: scope:[main]  from main::@4
  [14] return 
  to:@return

(void()) testLong()
testLong: scope:[testLong]  from main::@4
  [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1
  [16] call print_str 
  to:testLong::@1
testLong::@1: scope:[testLong]  from testLong
  [17] phi()
  [18] call print_dword 
  to:testLong::@2
testLong::@2: scope:[testLong]  from testLong::@1
  [19] phi()
  [20] call print_char 
  to:testLong::@3
testLong::@3: scope:[testLong]  from testLong::@2
  [21] phi()
  [22] call print_sdword 
  to:testLong::@4
testLong::@4: scope:[testLong]  from testLong::@3
  [23] phi()
  [24] call print_char 
  to:testLong::@5
testLong::@5: scope:[testLong]  from testLong::@4
  [25] phi()
  [26] call print_sdword 
  to:testLong::@6
testLong::@6: scope:[testLong]  from testLong::@5
  [27] phi()
  [28] call print_ln 
  to:testLong::@return
testLong::@return: scope:[testLong]  from testLong::@6
  [29] return 
  to:@return

(void()) print_ln()
print_ln: scope:[print_ln]  from testChar::@6 testInt::@6 testLong::@6 testShort::@6
  [30] (byte*) print_line_cursor#39 ← phi( testChar::@6/(byte*) 1024 testInt::@6/(byte*) print_line_cursor#1 testLong::@6/(byte*) print_line_cursor#1 testShort::@6/(byte*) print_line_cursor#1 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [31] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 )
  [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28
  [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [34] return 
  to:@return

(void()) print_sdword((signed dword) print_sdword::dw)
print_sdword: scope:[print_sdword]  from testLong::@3 testLong::@5
  [35] (signed dword) print_sdword::dw#3 ← phi( testLong::@3/(const signed dword) testLong::n testLong::@5/(const signed dword) testLong::s )
  [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1
  to:print_sdword::@3
print_sdword::@3: scope:[print_sdword]  from print_sdword
  [37] phi()
  [38] call print_char 
  to:print_sdword::@2
print_sdword::@2: scope:[print_sdword]  from print_sdword::@3 print_sdword::@4
  [39] (signed dword) print_sdword::dw#5 ← phi( print_sdword::@4/(signed dword) print_sdword::dw#0 print_sdword::@3/(signed dword) print_sdword::dw#3 )
  [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5
  [41] call print_dword 
  to:print_sdword::@return
print_sdword::@return: scope:[print_sdword]  from print_sdword::@2
  [42] return 
  to:@return
print_sdword::@1: scope:[print_sdword]  from print_sdword
  [43] phi()
  [44] call print_char 
  to:print_sdword::@4
print_sdword::@4: scope:[print_sdword]  from print_sdword::@1
  [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3
  to:print_sdword::@2

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4
  [46] (byte*) print_char_cursor#94 ← phi( print_byte/(byte*) print_char_cursor#149 print_byte::@1/(byte*) print_char_cursor#26 print_sbyte::@1/(byte*) print_char_cursor#26 print_sdword::@1/(byte*) print_char_cursor#26 print_sdword::@3/(byte*) print_char_cursor#26 print_sword::@1/(byte*) print_char_cursor#26 print_sword::@3/(byte*) print_char_cursor#26 testChar::@2/(byte*) print_char_cursor#26 testChar::@4/(byte*) print_char_cursor#26 testInt::@2/(byte*) print_char_cursor#26 testInt::@4/(byte*) print_char_cursor#26 testLong::@2/(byte*) print_char_cursor#26 testLong::@4/(byte*) print_char_cursor#26 testShort::@2/(byte*) print_char_cursor#26 testShort::@4/(byte*) print_char_cursor#26 )
  [46] (byte) print_char::ch#16 ← phi( print_byte/(byte) print_char::ch#6 print_byte::@1/(byte) print_char::ch#7 print_sbyte::@1/(byte) '-' print_sdword::@1/(byte) '-' print_sdword::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' )
  [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16
  [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [49] return 
  to:@return

(void()) print_dword((dword) print_dword::dw)
print_dword: scope:[print_dword]  from print_sdword::@2 testLong::@1
  [50] (byte*) print_char_cursor#145 ← phi( print_sdword::@2/(byte*) print_char_cursor#26 testLong::@1/(byte*) print_char_cursor#136 )
  [50] (dword) print_dword::dw#2 ← phi( print_sdword::@2/(dword) print_dword::dw#0 testLong::@1/(const dword) testLong::u )
  [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2
  [52] call print_word 
  to:print_dword::@1
print_dword::@1: scope:[print_dword]  from print_dword
  [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2
  [54] call print_word 
  to:print_dword::@return
print_dword::@return: scope:[print_dword]  from print_dword::@1
  [55] return 
  to:@return

(void()) print_word((word) print_word::w)
print_word: scope:[print_word]  from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1
  [56] (byte*) print_char_cursor#144 ← phi( print_dword/(byte*) print_char_cursor#145 print_dword::@1/(byte*) print_char_cursor#26 print_sword::@2/(byte*) print_char_cursor#26 testInt::@1/(byte*) print_char_cursor#136 testShort::@1/(byte*) print_char_cursor#136 )
  [56] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(const word) testInt::u testShort::@1/(const word) testShort::u )
  [57] (byte) print_byte::b#1 ← > (word) print_word::w#5
  [58] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [59] (byte) print_byte::b#2 ← < (word) print_word::w#5
  [60] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [61] return 
  to:@return

(void()) print_byte((byte) print_byte::b)
print_byte: scope:[print_byte]  from print_sbyte::@2 print_word print_word::@1 testChar::@1 testChar::@3
  [62] (byte*) print_char_cursor#149 ← phi( print_sbyte::@2/(byte*) print_char_cursor#26 print_word/(byte*) print_char_cursor#144 print_word::@1/(byte*) print_char_cursor#26 testChar::@1/(byte*) print_char_cursor#136 testChar::@3/(byte*) print_char_cursor#26 )
  [62] (byte) print_byte::b#5 ← phi( print_sbyte::@2/(byte)(const signed byte) print_sbyte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(const byte) testChar::u testChar::@3/(const byte) testChar::n )
  [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4
  [64] (byte) print_char::ch#6 ← *((const byte*) print_hextab + (byte~) print_byte::$0)
  [65] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f
  [67] (byte) print_char::ch#7 ← *((const byte*) print_hextab + (byte~) print_byte::$2)
  [68] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [69] return 
  to:@return

(void()) print_str((byte*) print_str::str)
print_str: scope:[print_str]  from testChar testInt testLong testShort
  [70] (byte*) print_char_cursor#156 ← phi( testChar/(byte*) 1024 testInt/(byte*) print_char_cursor#160 testLong/(byte*) print_char_cursor#161 testShort/(byte*) print_char_cursor#162 )
  [70] (byte*) print_str::str#7 ← phi( testChar/(const byte*) testChar::str testInt/(const byte*) testInt::str testLong/(const byte*) testLong::str testShort/(const byte*) testShort::str )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [71] (byte*) print_char_cursor#136 ← phi( print_str/(byte*) print_char_cursor#156 print_str::@2/(byte*) print_char_cursor#1 )
  [71] (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 )
  [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [73] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5)
  [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136
  [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5
  to:print_str::@1

(void()) testInt()
testInt: scope:[testInt]  from main::@3
  [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1
  [78] call print_str 
  to:testInt::@1
testInt::@1: scope:[testInt]  from testInt
  [79] phi()
  [80] call print_word 
  to:testInt::@2
testInt::@2: scope:[testInt]  from testInt::@1
  [81] phi()
  [82] call print_char 
  to:testInt::@3
testInt::@3: scope:[testInt]  from testInt::@2
  [83] phi()
  [84] call print_sword 
  to:testInt::@4
testInt::@4: scope:[testInt]  from testInt::@3
  [85] phi()
  [86] call print_char 
  to:testInt::@5
testInt::@5: scope:[testInt]  from testInt::@4
  [87] phi()
  [88] call print_sword 
  to:testInt::@6
testInt::@6: scope:[testInt]  from testInt::@5
  [89] phi()
  [90] call print_ln 
  to:testInt::@return
testInt::@return: scope:[testInt]  from testInt::@6
  [91] return 
  to:@return

(void()) print_sword((signed word) print_sword::w)
print_sword: scope:[print_sword]  from testInt::@3 testInt::@5 testShort::@3 testShort::@5
  [92] (signed word) print_sword::w#10 ← phi( testInt::@3/(const signed word) testInt::n testInt::@5/(const signed word) testInt::s testShort::@3/(const signed word) testShort::n testShort::@5/(const signed word) testShort::s )
  [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1
  to:print_sword::@3
print_sword::@3: scope:[print_sword]  from print_sword
  [94] phi()
  [95] call print_char 
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword::@3 print_sword::@4
  [96] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 )
  [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7
  [98] call print_word 
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@2
  [99] return 
  to:@return
print_sword::@1: scope:[print_sword]  from print_sword
  [100] phi()
  [101] call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@1
  [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10
  to:print_sword::@2

(void()) testShort()
testShort: scope:[testShort]  from main::@2
  [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1
  [104] call print_str 
  to:testShort::@1
testShort::@1: scope:[testShort]  from testShort
  [105] phi()
  [106] call print_word 
  to:testShort::@2
testShort::@2: scope:[testShort]  from testShort::@1
  [107] phi()
  [108] call print_char 
  to:testShort::@3
testShort::@3: scope:[testShort]  from testShort::@2
  [109] phi()
  [110] call print_sword 
  to:testShort::@4
testShort::@4: scope:[testShort]  from testShort::@3
  [111] phi()
  [112] call print_char 
  to:testShort::@5
testShort::@5: scope:[testShort]  from testShort::@4
  [113] phi()
  [114] call print_sword 
  to:testShort::@6
testShort::@6: scope:[testShort]  from testShort::@5
  [115] phi()
  [116] call print_ln 
  to:testShort::@return
testShort::@return: scope:[testShort]  from testShort::@6
  [117] return 
  to:@return

(void()) testChar()
testChar: scope:[testChar]  from main::@1
  [118] phi()
  [119] call print_str 
  to:testChar::@1
testChar::@1: scope:[testChar]  from testChar
  [120] phi()
  [121] call print_byte 
  to:testChar::@2
testChar::@2: scope:[testChar]  from testChar::@1
  [122] phi()
  [123] call print_char 
  to:testChar::@3
testChar::@3: scope:[testChar]  from testChar::@2
  [124] phi()
  [125] call print_byte 
  to:testChar::@4
testChar::@4: scope:[testChar]  from testChar::@3
  [126] phi()
  [127] call print_char 
  to:testChar::@5
testChar::@5: scope:[testChar]  from testChar::@4
  [128] phi()
  [129] call print_sbyte 
  to:testChar::@6
testChar::@6: scope:[testChar]  from testChar::@5
  [130] phi()
  [131] call print_ln 
  to:testChar::@return
testChar::@return: scope:[testChar]  from testChar::@6
  [132] return 
  to:@return

(void()) print_sbyte((signed byte) print_sbyte::b)
print_sbyte: scope:[print_sbyte]  from testChar::@5
  [133] phi()
  to:print_sbyte::@1
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte
  [134] phi()
  [135] call print_char 
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@1
  [136] phi()
  [137] call print_byte 
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@2
  [138] return 
  to:@return

(void()) print_cls()
print_cls: scope:[print_cls]  from main
  [139] phi()
  [140] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [141] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  [142] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [143] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
  [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [145] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [147] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@1


VARIABLE REGISTER WEIGHTS
(void()) main()
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(byte) memset::c
(byte*) memset::dst
(byte*) memset::dst#1 22.0
(byte*) memset::dst#2 14.666666666666666
(byte*) memset::end
(word) memset::num
(void*) memset::return
(void*) memset::str
(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#5 2.0
(void()) print_char((byte) print_char::ch)
(byte) print_char::ch
(byte) print_char::ch#16 6.0
(byte) print_char::ch#6 4.0
(byte) print_char::ch#7 4.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 11.0
(byte*) print_char_cursor#136 3.583333333333333
(byte*) print_char_cursor#144 6.0
(byte*) print_char_cursor#145 3.0
(byte*) print_char_cursor#149 3.9999999999999996
(byte*) print_char_cursor#156 8.0
(byte*) print_char_cursor#160 4.0
(byte*) print_char_cursor#161 4.0
(byte*) print_char_cursor#162 4.0
(byte*) print_char_cursor#26 0.6091954022988502
(byte*) print_char_cursor#94 17.0
(void()) print_cls()
(void()) print_dword((dword) print_dword::dw)
(dword) print_dword::dw
(dword) print_dword::dw#0 4.0
(dword) print_dword::dw#2 2.0
(byte*) print_line_cursor
(byte*) print_line_cursor#1 0.8333333333333333
(byte*) print_line_cursor#20 24.0
(byte*) print_line_cursor#39 8.0
(void()) print_ln()
(void()) print_sbyte((signed byte) print_sbyte::b)
(signed byte) print_sbyte::b
(byte*) print_screen
(void()) print_sdword((signed dword) print_sdword::dw)
(signed dword) print_sdword::dw
(signed dword) print_sdword::dw#0 4.0
(signed dword) print_sdword::dw#3 1.0
(signed dword) print_sdword::dw#5 4.0
(void()) print_str((byte*) print_str::str)
(byte*) print_str::str
(byte*) print_str::str#0 22.0
(byte*) print_str::str#5 11.5
(byte*) print_str::str#7 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#10 1.0
(signed word) print_sword::w#7 4.0
(void()) print_word((word) print_word::w)
(word) print_word::w
(word) print_word::w#0 4.0
(word) print_word::w#1 4.0
(word) print_word::w#2 4.0
(word) print_word::w#5 3.333333333333333
(void()) testChar()
(void()) testInt()
(void()) testLong()
(void()) testShort()

Initial phi equivalence classes
[ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]
[ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ]
[ print_char::ch#16 print_char::ch#6 print_char::ch#7 ]
[ print_dword::dw#2 print_dword::dw#0 ]
[ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ]
[ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ]
[ print_byte::b#5 print_byte::b#1 print_byte::b#2 ]
[ print_str::str#5 print_str::str#7 print_str::str#0 ]
[ print_sword::w#7 print_sword::w#0 print_sword::w#10 ]
[ memset::dst#2 memset::dst#1 ]
Added variable print_byte::$0 to live range equivalence class [ print_byte::$0 ]
Added variable print_byte::$2 to live range equivalence class [ print_byte::$2 ]
Complete equivalence classes
[ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]
[ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ]
[ print_char::ch#16 print_char::ch#6 print_char::ch#7 ]
[ print_dword::dw#2 print_dword::dw#0 ]
[ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ]
[ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ]
[ print_byte::b#5 print_byte::b#1 print_byte::b#2 ]
[ print_str::str#5 print_str::str#7 print_str::str#0 ]
[ print_sword::w#7 print_sword::w#0 print_sword::w#10 ]
[ memset::dst#2 memset::dst#1 ]
[ print_byte::$0 ]
[ print_byte::$2 ]
Allocated zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]
Allocated zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ]
Allocated zp[1]:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ]
Allocated zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ]
Allocated zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ]
Allocated zp[2]:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ]
Allocated zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ]
Allocated zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ]
Allocated zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ]
Allocated zp[2]:22 [ memset::dst#2 memset::dst#1 ]
Allocated zp[1]:24 [ print_byte::$0 ]
Allocated zp[1]:25 [ print_byte::$2 ]

INITIAL ASM
Target platform is c64basic / MOS6502X
  // File Comments
// Tests the different standard C types
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label print_char_cursor = $f
  .label print_line_cursor = 2
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    // [5] call print_cls 
    // [139] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
    // [6] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    jmp __b1
    // main::@1
  __b1:
    // [7] call testChar 
    // [118] phi from main::@1 to testChar [phi:main::@1->testChar]
  testChar_from___b1:
    jsr testChar
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [9] call testShort 
    jsr testShort
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  __b3_from___b2:
    jmp __b3
    // main::@3
  __b3:
    // [11] call testInt 
    jsr testInt
    // [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [13] call testLong 
    jsr testLong
    jmp __breturn
    // main::@return
  __breturn:
    // [14] return 
    rts
}
  // testLong
testLong: {
    .const u = $222e0
    .const n = -$222e0
    .const s = -$222e0
    // [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [16] call print_str 
    // [70] phi from testLong to print_str [phi:testLong->print_str]
  print_str_from_testLong:
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#161 [phi:testLong->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [17] phi from testLong to testLong::@1 [phi:testLong->testLong::@1]
  __b1_from_testLong:
    jmp __b1
    // testLong::@1
  __b1:
    // [18] call print_dword 
    // [50] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword]
  print_dword_from___b1:
    // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#136 [phi:testLong::@1->print_dword#0] -- register_copy 
    // [50] phi (dword) print_dword::dw#2 = (const dword) testLong::u [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 
    lda #<u
    sta.z print_dword.dw
    lda #>u
    sta.z print_dword.dw+1
    lda #<u>>$10
    sta.z print_dword.dw+2
    lda #>u>>$10
    sta.z print_dword.dw+3
    jsr print_dword
    // [19] phi from testLong::@1 to testLong::@2 [phi:testLong::@1->testLong::@2]
  __b2_from___b1:
    jmp __b2
    // testLong::@2
  __b2:
    // [20] call print_char 
    // [46] phi from testLong::@2 to print_char [phi:testLong::@2->print_char]
  print_char_from___b2:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [21] phi from testLong::@2 to testLong::@3 [phi:testLong::@2->testLong::@3]
  __b3_from___b2:
    jmp __b3
    // testLong::@3
  __b3:
    // [22] call print_sdword 
    // [35] phi from testLong::@3 to print_sdword [phi:testLong::@3->print_sdword]
  print_sdword_from___b3:
    // [35] phi (signed dword) print_sdword::dw#3 = (const signed dword) testLong::n [phi:testLong::@3->print_sdword#0] -- vdsz1=vdsc1 
    lda #<n
    sta.z print_sdword.dw
    lda #>n
    sta.z print_sdword.dw+1
    lda #<n>>$10
    sta.z print_sdword.dw+2
    lda #>n>>$10
    sta.z print_sdword.dw+3
    jsr print_sdword
    // [23] phi from testLong::@3 to testLong::@4 [phi:testLong::@3->testLong::@4]
  __b4_from___b3:
    jmp __b4
    // testLong::@4
  __b4:
    // [24] call print_char 
    // [46] phi from testLong::@4 to print_char [phi:testLong::@4->print_char]
  print_char_from___b4:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [25] phi from testLong::@4 to testLong::@5 [phi:testLong::@4->testLong::@5]
  __b5_from___b4:
    jmp __b5
    // testLong::@5
  __b5:
    // [26] call print_sdword 
    // [35] phi from testLong::@5 to print_sdword [phi:testLong::@5->print_sdword]
  print_sdword_from___b5:
    // [35] phi (signed dword) print_sdword::dw#3 = (const signed dword) testLong::s [phi:testLong::@5->print_sdword#0] -- vdsz1=vdsc1 
    lda #<s
    sta.z print_sdword.dw
    lda #>s
    sta.z print_sdword.dw+1
    lda #<s>>$10
    sta.z print_sdword.dw+2
    lda #>s>>$10
    sta.z print_sdword.dw+3
    jsr print_sdword
    // [27] phi from testLong::@5 to testLong::@6 [phi:testLong::@5->testLong::@6]
  __b6_from___b5:
    jmp __b6
    // testLong::@6
  __b6:
    // [28] call print_ln 
    // [30] phi from testLong::@6 to print_ln [phi:testLong::@6->print_ln]
  print_ln_from___b6:
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testLong::@6->print_ln#0] -- register_copy 
    jsr print_ln
    jmp __breturn
    // testLong::@return
  __breturn:
    // [29] return 
    rts
    str: .text "long: "
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [31] 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:
    // [31] 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
    // print_ln::@1
  __b1:
    // [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z print_line_cursor
    sta.z print_line_cursor
    bcc !+
    inc.z print_line_cursor+1
  !:
    // [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda.z print_line_cursor+1
    cmp.z print_char_cursor+1
    bcc __b1_from___b1
    bne !+
    lda.z print_line_cursor
    cmp.z print_char_cursor
    bcc __b1_from___b1
  !:
    jmp __breturn
    // print_ln::@return
  __breturn:
    // [34] return 
    rts
}
  // print_sdword
// Print a signed dword as HEX
// print_sdword(signed dword zp(4) dw)
print_sdword: {
    .label dw = 4
    // [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 
    lda.z dw+3
    bmi __b1_from_print_sdword
    // [37] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3]
  __b3_from_print_sdword:
    jmp __b3
    // print_sdword::@3
  __b3:
    // [38] call print_char 
    // [46] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char]
  print_char_from___b3:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@3->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [39] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [39] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#3 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy 
    jmp __b2
    // print_sdword::@2
  __b2:
    // [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 -- vduz1=vduz2 
    lda.z dw
    sta.z print_dword.dw
    lda.z dw+1
    sta.z print_dword.dw+1
    lda.z dw+2
    sta.z print_dword.dw+2
    lda.z dw+3
    sta.z print_dword.dw+3
    // [41] call print_dword 
    // [50] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword]
  print_dword_from___b2:
    // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#26 [phi:print_sdword::@2->print_dword#0] -- register_copy 
    // [50] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy 
    jsr print_dword
    jmp __breturn
    // print_sdword::@return
  __breturn:
    // [42] return 
    rts
    // [43] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1]
  __b1_from_print_sdword:
    jmp __b1
    // print_sdword::@1
  __b1:
    // [44] call print_char 
    // [46] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char]
  print_char_from___b1:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta.z print_char.ch
    jsr print_char
    jmp __b4
    // print_sdword::@4
  __b4:
    // [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 
    sec
    lda.z dw
    eor #$ff
    adc #0
    sta.z dw
    lda.z dw+1
    eor #$ff
    adc #0
    sta.z dw+1
    lda.z dw+2
    eor #$ff
    adc #0
    sta.z dw+2
    lda.z dw+3
    eor #$ff
    adc #0
    sta.z dw+3
    jmp __b2_from___b4
}
  // print_char
// Print a single char
// print_char(byte zp(8) ch)
print_char: {
    .label ch = 8
    // [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 -- _deref_pbuz1=vbuz2 
    lda.z ch
    ldy #0
    sta (print_char_cursor),y
    // [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp __breturn
    // print_char::@return
  __breturn:
    // [49] return 
    rts
}
  // print_dword
// Print a dword as HEX
// print_dword(dword zp(9) dw)
print_dword: {
    .label dw = 9
    // [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 
    lda.z dw+2
    sta.z print_word.w
    lda.z dw+3
    sta.z print_word.w+1
    // [52] call print_word 
    // [56] phi from print_dword to print_word [phi:print_dword->print_word]
  print_word_from_print_dword:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#145 [phi:print_dword->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy 
    jsr print_word
    jmp __b1
    // print_dword::@1
  __b1:
    // [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 -- vwuz1=_lo_vduz2 
    lda.z dw
    sta.z print_word.w
    lda.z dw+1
    sta.z print_word.w+1
    // [54] call print_word 
    // [56] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word]
  print_word_from___b1:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_dword::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_dword::@return
  __breturn:
    // [55] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp($d) w)
print_word: {
    .label w = $d
    // [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 
    lda.z w+1
    sta.z print_byte.b
    // [58] call print_byte 
    // [62] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#144 [phi:print_word->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __b1
    // print_word::@1
  __b1:
    // [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 
    lda.z w
    sta.z print_byte.b
    // [60] call print_byte 
    // [62] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from___b1:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __breturn
    // print_word::@return
  __breturn:
    // [61] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte zp($11) b)
print_byte: {
    .label __0 = $18
    .label __2 = $19
    .label b = $11
    // [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuz1=vbuz2_ror_4 
    lda.z b
    lsr
    lsr
    lsr
    lsr
    sta.z __0
    // [64] (byte) print_char::ch#6 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z __0
    lda print_hextab,y
    sta.z print_char.ch
    // [65] call print_char 
    // [46] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#149 [phi:print_byte->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#6 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    jmp __b1
    // print_byte::@1
  __b1:
    // [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 
    lda #$f
    and.z b
    sta.z __2
    // [67] (byte) print_char::ch#7 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z __2
    lda print_hextab,y
    sta.z print_char.ch
    // [68] call print_char 
    // [46] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from___b1:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#7 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    jmp __breturn
    // print_byte::@return
  __breturn:
    // [69] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp($12) str)
print_str: {
    .label str = $12
    // [71] 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:
    // [71] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#156 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [71] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp __b1
    // print_str::@1
  __b1:
    // [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne __b2
    jmp __breturn
    // print_str::@return
  __breturn:
    // [73] return 
    rts
    // print_str::@2
  __b2:
    // [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
    // [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp __b1_from___b2
}
  // testInt
testInt: {
    .const u = $578
    .const n = -$578
    .const s = -$578
    // [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [78] call print_str 
    // [70] phi from testInt to print_str [phi:testInt->print_str]
  print_str_from_testInt:
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#160 [phi:testInt->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [79] phi from testInt to testInt::@1 [phi:testInt->testInt::@1]
  __b1_from_testInt:
    jmp __b1
    // testInt::@1
  __b1:
    // [80] call print_word 
    // [56] phi from testInt::@1 to print_word [phi:testInt::@1->print_word]
  print_word_from___b1:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testInt::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (const word) testInt::u [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 
    lda #<u
    sta.z print_word.w
    lda #>u
    sta.z print_word.w+1
    jsr print_word
    // [81] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2]
  __b2_from___b1:
    jmp __b2
    // testInt::@2
  __b2:
    // [82] call print_char 
    // [46] phi from testInt::@2 to print_char [phi:testInt::@2->print_char]
  print_char_from___b2:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [83] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3]
  __b3_from___b2:
    jmp __b3
    // testInt::@3
  __b3:
    // [84] call print_sword 
    // [92] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword]
  print_sword_from___b3:
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::n [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 
    lda #<n
    sta.z print_sword.w
    lda #>n
    sta.z print_sword.w+1
    jsr print_sword
    // [85] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4]
  __b4_from___b3:
    jmp __b4
    // testInt::@4
  __b4:
    // [86] call print_char 
    // [46] phi from testInt::@4 to print_char [phi:testInt::@4->print_char]
  print_char_from___b4:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [87] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5]
  __b5_from___b4:
    jmp __b5
    // testInt::@5
  __b5:
    // [88] call print_sword 
    // [92] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword]
  print_sword_from___b5:
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::s [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 
    lda #<s
    sta.z print_sword.w
    lda #>s
    sta.z print_sword.w+1
    jsr print_sword
    // [89] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6]
  __b6_from___b5:
    jmp __b6
    // testInt::@6
  __b6:
    // [90] call print_ln 
    // [30] phi from testInt::@6 to print_ln [phi:testInt::@6->print_ln]
  print_ln_from___b6:
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testInt::@6->print_ln#0] -- register_copy 
    jsr print_ln
    jmp __breturn
    // testInt::@return
  __breturn:
    // [91] return 
    rts
    str: .text "int: "
    .byte 0
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp($14) w)
print_sword: {
    .label w = $14
    // [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1_from_print_sword
    // [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
  __b3_from_print_sword:
    jmp __b3
    // print_sword::@3
  __b3:
    // [95] call print_char 
    // [46] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
  print_char_from___b3:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [96] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    jmp __b2
    // print_sword::@2
  __b2:
    // [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 -- vwuz1=vwuz2 
    lda.z w
    sta.z print_word.w
    lda.z w+1
    sta.z print_word.w+1
    // [98] call print_word 
    // [56] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
  print_word_from___b2:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_sword::@return
  __breturn:
    // [99] return 
    rts
    // [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
  __b1_from_print_sword:
    jmp __b1
    // print_sword::@1
  __b1:
    // [101] call print_char 
    // [46] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
  print_char_from___b1:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta.z print_char.ch
    jsr print_char
    jmp __b4
    // print_sword::@4
  __b4:
    // [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 
    sec
    lda #0
    sbc.z w
    sta.z w
    lda #0
    sbc.z w+1
    sta.z w+1
    jmp __b2_from___b4
}
  // testShort
testShort: {
    .const u = $578
    .const n = -$578
    .const s = -$578
    // [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [104] call print_str 
    // [70] phi from testShort to print_str [phi:testShort->print_str]
  print_str_from_testShort:
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#162 [phi:testShort->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [105] phi from testShort to testShort::@1 [phi:testShort->testShort::@1]
  __b1_from_testShort:
    jmp __b1
    // testShort::@1
  __b1:
    // [106] call print_word 
    // [56] phi from testShort::@1 to print_word [phi:testShort::@1->print_word]
  print_word_from___b1:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testShort::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (const word) testShort::u [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 
    lda #<u
    sta.z print_word.w
    lda #>u
    sta.z print_word.w+1
    jsr print_word
    // [107] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2]
  __b2_from___b1:
    jmp __b2
    // testShort::@2
  __b2:
    // [108] call print_char 
    // [46] phi from testShort::@2 to print_char [phi:testShort::@2->print_char]
  print_char_from___b2:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [109] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3]
  __b3_from___b2:
    jmp __b3
    // testShort::@3
  __b3:
    // [110] call print_sword 
    // [92] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword]
  print_sword_from___b3:
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::n [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 
    lda #<n
    sta.z print_sword.w
    lda #>n
    sta.z print_sword.w+1
    jsr print_sword
    // [111] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4]
  __b4_from___b3:
    jmp __b4
    // testShort::@4
  __b4:
    // [112] call print_char 
    // [46] phi from testShort::@4 to print_char [phi:testShort::@4->print_char]
  print_char_from___b4:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [113] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5]
  __b5_from___b4:
    jmp __b5
    // testShort::@5
  __b5:
    // [114] call print_sword 
    // [92] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword]
  print_sword_from___b5:
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::s [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 
    lda #<s
    sta.z print_sword.w
    lda #>s
    sta.z print_sword.w+1
    jsr print_sword
    // [115] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6]
  __b6_from___b5:
    jmp __b6
    // testShort::@6
  __b6:
    // [116] call print_ln 
    // [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln]
  print_ln_from___b6:
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy 
    jsr print_ln
    jmp __breturn
    // testShort::@return
  __breturn:
    // [117] return 
    rts
    str: .text "short: "
    .byte 0
}
  // testChar
testChar: {
    .const u = $e
    .const n = $e
    .label s = -$e
    // [119] call print_str 
    // [70] phi from testChar to print_str [phi:testChar->print_str]
  print_str_from_testChar:
    // [70] phi (byte*) print_char_cursor#156 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [70] phi (byte*) print_str::str#7 = (const byte*) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [120] phi from testChar to testChar::@1 [phi:testChar->testChar::@1]
  __b1_from_testChar:
    jmp __b1
    // testChar::@1
  __b1:
    // [121] call print_byte 
    // [62] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte]
  print_byte_from___b1:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#136 [phi:testChar::@1->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (const byte) testChar::u [phi:testChar::@1->print_byte#1] -- vbuz1=vbuc1 
    lda #u
    sta.z print_byte.b
    jsr print_byte
    // [122] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2]
  __b2_from___b1:
    jmp __b2
    // testChar::@2
  __b2:
    // [123] call print_char 
    // [46] phi from testChar::@2 to print_char [phi:testChar::@2->print_char]
  print_char_from___b2:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [124] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3]
  __b3_from___b2:
    jmp __b3
    // testChar::@3
  __b3:
    // [125] call print_byte 
    // [62] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte]
  print_byte_from___b3:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:testChar::@3->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (const byte) testChar::n [phi:testChar::@3->print_byte#1] -- vbuz1=vbuc1 
    lda #n
    sta.z print_byte.b
    jsr print_byte
    // [126] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4]
  __b4_from___b3:
    jmp __b4
    // testChar::@4
  __b4:
    // [127] call print_char 
    // [46] phi from testChar::@4 to print_char [phi:testChar::@4->print_char]
  print_char_from___b4:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char.ch
    jsr print_char
    // [128] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5]
  __b5_from___b4:
    jmp __b5
    // testChar::@5
  __b5:
    // [129] call print_sbyte 
    // [133] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte]
  print_sbyte_from___b5:
    jsr print_sbyte
    // [130] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6]
  __b6_from___b5:
    jmp __b6
    // testChar::@6
  __b6:
    // [131] call print_ln 
    // [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln]
  print_ln_from___b6:
    // [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    jmp __breturn
    // testChar::@return
  __breturn:
    // [132] return 
    rts
    str: .text "char: "
    .byte 0
}
  // print_sbyte
// Print a signed byte as HEX
print_sbyte: {
    .const b = -testChar.s
    // [134] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  __b1_from_print_sbyte:
    jmp __b1
    // print_sbyte::@1
  __b1:
    // [135] call print_char 
    // [46] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  print_char_from___b1:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sbyte::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 
    lda #'-'
    sta.z print_char.ch
    jsr print_char
    // [136] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2]
  __b2_from___b1:
    jmp __b2
    // print_sbyte::@2
  __b2:
    // [137] call print_byte 
    // [62] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  print_byte_from___b2:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuz1=vbuc1 
    lda #b
    sta.z print_byte.b
    jsr print_byte
    jmp __breturn
    // print_sbyte::@return
  __breturn:
    // [138] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [140] call memset 
    // [142] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [141] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = $400
    .label end = str+num
    .label dst = $16
    // [143] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [143] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp __b1
    // memset::@1
  __b1:
    // [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne __b2
    lda.z dst
    cmp #<end
    bne __b2
    jmp __breturn
    // memset::@return
  __breturn:
    // [145] return 
    rts
    // memset::@2
  __b2:
    // [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [147] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [143] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [143] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // File Data
  print_hextab: .text "0123456789abcdef"

REGISTER UPLIFT POTENTIAL REGISTERS
Statement [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#161 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#161 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a 
Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a 
Statement [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#26 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] ) always clobbers reg byte a 
Statement [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#26 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] ) always clobbers reg byte a 
Statement [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#26 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] ) always clobbers reg byte a 
Statement [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 [ print_char_cursor#94 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:68 [ print_char_cursor#94 ] main:2::testInt:11::print_char:82 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_char:86 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_char:112 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_char:123 [ print_char_cursor#94 ] main:2::testChar:7::print_char:127 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_char:135 [ print_char_cursor#94 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ]
Statement [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ) always clobbers reg byte a 
Statement [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#26 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] ) always clobbers reg byte a 
Statement [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#26 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ]
Statement [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#26 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#26 print_byte::$2 ] ) always clobbers reg byte a 
Statement [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y 
Statement [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y 
Statement [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#160 ] ) always clobbers reg byte a 
Statement [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#26 print_sword::w#10 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] ) always clobbers reg byte a 
Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#26 print_word::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] ) always clobbers reg byte a 
Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#26 print_sword::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#162 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#162 ] ) always clobbers reg byte a 
Statement [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#161 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#161 print_line_cursor#1 ] ) always clobbers reg byte a 
Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a 
Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a 
Statement [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#26 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] ) always clobbers reg byte a 
Statement [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#26 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] ) always clobbers reg byte a 
Statement [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#26 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] ) always clobbers reg byte a 
Statement [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 [ print_char_cursor#94 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:68 [ print_char_cursor#94 ] main:2::testInt:11::print_char:82 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_char:86 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_char:112 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_char:123 [ print_char_cursor#94 ] main:2::testChar:7::print_char:127 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_char:135 [ print_char_cursor#94 ] ) always clobbers reg byte y 
Statement [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ) always clobbers reg byte a 
Statement [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#26 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] ) always clobbers reg byte a 
Statement [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ) always clobbers reg byte a 
Statement [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#26 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] ) always clobbers reg byte a 
Statement [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a 
Statement [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#26 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#26 print_byte::$2 ] ) always clobbers reg byte a 
Statement [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y 
Statement [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y 
Statement [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#160 ] ) always clobbers reg byte a 
Statement [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#26 print_sword::w#10 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] ) always clobbers reg byte a 
Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#26 print_word::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] ) always clobbers reg byte a 
Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#26 print_sword::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] ) always clobbers reg byte a 
Statement [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#162 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#162 ] ) always clobbers reg byte a 
Statement [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:140 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Potential registers zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] : zp[2]:2 , 
Potential registers zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] : zp[4]:4 , 
Potential registers zp[1]:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] : zp[4]:9 , 
Potential registers zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp[2]:13 , 
Potential registers zp[2]:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ] : zp[2]:15 , 
Potential registers zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] : zp[1]:17 , reg byte x , 
Potential registers zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] : zp[2]:18 , 
Potential registers zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] : zp[2]:20 , 
Potential registers zp[2]:22 [ memset::dst#2 memset::dst#1 ] : zp[2]:22 , 
Potential registers zp[1]:24 [ print_byte::$0 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:25 [ print_byte::$2 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [] 65.19: zp[2]:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ] 32.83: zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] 
Uplift Scope [memset] 36.67: zp[2]:22 [ memset::dst#2 memset::dst#1 ] 
Uplift Scope [print_str] 35.5: zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] 
Uplift Scope [print_byte] 10: zp[1]:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] 4: zp[1]:24 [ print_byte::$0 ] 4: zp[1]:25 [ print_byte::$2 ] 
Uplift Scope [print_word] 15.33: zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] 
Uplift Scope [print_char] 14: zp[1]:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] 
Uplift Scope [print_sword] 9: zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] 
Uplift Scope [print_sdword] 9: zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] 
Uplift Scope [print_dword] 6: zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] 
Uplift Scope [RADIX] 
Uplift Scope [print_ln] 
Uplift Scope [print_sbyte] 
Uplift Scope [print_cls] 
Uplift Scope [main] 
Uplift Scope [testChar] 
Uplift Scope [testShort] 
Uplift Scope [testInt] 
Uplift Scope [testLong] 

Uplifting [] best 2677 combination zp[2]:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ] zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] 
Uplifting [memset] best 2677 combination zp[2]:22 [ memset::dst#2 memset::dst#1 ] 
Uplifting [print_str] best 2677 combination zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] 
Uplifting [print_byte] best 2654 combination reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] 
Uplifting [print_word] best 2654 combination zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] 
Uplifting [print_char] best 2606 combination reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] 
Uplifting [print_sword] best 2606 combination zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] 
Uplifting [print_sdword] best 2606 combination zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] 
Uplifting [print_dword] best 2606 combination zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] 
Uplifting [RADIX] best 2606 combination 
Uplifting [print_ln] best 2606 combination 
Uplifting [print_sbyte] best 2606 combination 
Uplifting [print_cls] best 2606 combination 
Uplifting [main] best 2606 combination 
Uplifting [testChar] best 2606 combination 
Uplifting [testShort] best 2606 combination 
Uplifting [testInt] best 2606 combination 
Uplifting [testLong] best 2606 combination 
Coalescing zero page register [ zp[4]:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] ] with [ zp[4]:9 [ print_dword::dw#2 print_dword::dw#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp[2]:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] ] - score: 1
Coalescing zero page register [ zp[2]:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] ] with [ zp[2]:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] ]
Coalescing zero page register [ zp[2]:22 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] ]
Allocated (was zp[4]:4) zp[4]:2 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ]
Allocated (was zp[2]:15) zp[2]:6 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ]
Allocated (was zp[2]:18) zp[2]:8 [ print_str::str#5 print_str::str#7 print_str::str#0 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ]
Allocated (was zp[2]:22) zp[2]:10 [ memset::dst#2 memset::dst#1 print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Tests the different standard C types
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label print_char_cursor = 6
  .label print_line_cursor = $a
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    // [5] call print_cls 
    // [139] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
    // [6] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    jmp __b1
    // main::@1
  __b1:
    // [7] call testChar 
    // [118] phi from main::@1 to testChar [phi:main::@1->testChar]
  testChar_from___b1:
    jsr testChar
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [9] call testShort 
    jsr testShort
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  __b3_from___b2:
    jmp __b3
    // main::@3
  __b3:
    // [11] call testInt 
    jsr testInt
    // [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [13] call testLong 
    jsr testLong
    jmp __breturn
    // main::@return
  __breturn:
    // [14] return 
    rts
}
  // testLong
testLong: {
    .const u = $222e0
    .const n = -$222e0
    .const s = -$222e0
    // [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [16] call print_str 
    // [70] phi from testLong to print_str [phi:testLong->print_str]
  print_str_from_testLong:
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#161 [phi:testLong->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [17] phi from testLong to testLong::@1 [phi:testLong->testLong::@1]
  __b1_from_testLong:
    jmp __b1
    // testLong::@1
  __b1:
    // [18] call print_dword 
    // [50] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword]
  print_dword_from___b1:
    // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#136 [phi:testLong::@1->print_dword#0] -- register_copy 
    // [50] phi (dword) print_dword::dw#2 = (const dword) testLong::u [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 
    lda #<u
    sta.z print_dword.dw
    lda #>u
    sta.z print_dword.dw+1
    lda #<u>>$10
    sta.z print_dword.dw+2
    lda #>u>>$10
    sta.z print_dword.dw+3
    jsr print_dword
    // [19] phi from testLong::@1 to testLong::@2 [phi:testLong::@1->testLong::@2]
  __b2_from___b1:
    jmp __b2
    // testLong::@2
  __b2:
    // [20] call print_char 
    // [46] phi from testLong::@2 to print_char [phi:testLong::@2->print_char]
  print_char_from___b2:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [21] phi from testLong::@2 to testLong::@3 [phi:testLong::@2->testLong::@3]
  __b3_from___b2:
    jmp __b3
    // testLong::@3
  __b3:
    // [22] call print_sdword 
    // [35] phi from testLong::@3 to print_sdword [phi:testLong::@3->print_sdword]
  print_sdword_from___b3:
    // [35] phi (signed dword) print_sdword::dw#3 = (const signed dword) testLong::n [phi:testLong::@3->print_sdword#0] -- vdsz1=vdsc1 
    lda #<n
    sta.z print_sdword.dw
    lda #>n
    sta.z print_sdword.dw+1
    lda #<n>>$10
    sta.z print_sdword.dw+2
    lda #>n>>$10
    sta.z print_sdword.dw+3
    jsr print_sdword
    // [23] phi from testLong::@3 to testLong::@4 [phi:testLong::@3->testLong::@4]
  __b4_from___b3:
    jmp __b4
    // testLong::@4
  __b4:
    // [24] call print_char 
    // [46] phi from testLong::@4 to print_char [phi:testLong::@4->print_char]
  print_char_from___b4:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [25] phi from testLong::@4 to testLong::@5 [phi:testLong::@4->testLong::@5]
  __b5_from___b4:
    jmp __b5
    // testLong::@5
  __b5:
    // [26] call print_sdword 
    // [35] phi from testLong::@5 to print_sdword [phi:testLong::@5->print_sdword]
  print_sdword_from___b5:
    // [35] phi (signed dword) print_sdword::dw#3 = (const signed dword) testLong::s [phi:testLong::@5->print_sdword#0] -- vdsz1=vdsc1 
    lda #<s
    sta.z print_sdword.dw
    lda #>s
    sta.z print_sdword.dw+1
    lda #<s>>$10
    sta.z print_sdword.dw+2
    lda #>s>>$10
    sta.z print_sdword.dw+3
    jsr print_sdword
    // [27] phi from testLong::@5 to testLong::@6 [phi:testLong::@5->testLong::@6]
  __b6_from___b5:
    jmp __b6
    // testLong::@6
  __b6:
    // [28] call print_ln 
    // [30] phi from testLong::@6 to print_ln [phi:testLong::@6->print_ln]
  print_ln_from___b6:
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testLong::@6->print_ln#0] -- register_copy 
    jsr print_ln
    jmp __breturn
    // testLong::@return
  __breturn:
    // [29] return 
    rts
    str: .text "long: "
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [31] 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:
    // [31] 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
    // print_ln::@1
  __b1:
    // [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z print_line_cursor
    sta.z print_line_cursor
    bcc !+
    inc.z print_line_cursor+1
  !:
    // [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda.z print_line_cursor+1
    cmp.z print_char_cursor+1
    bcc __b1_from___b1
    bne !+
    lda.z print_line_cursor
    cmp.z print_char_cursor
    bcc __b1_from___b1
  !:
    jmp __breturn
    // print_ln::@return
  __breturn:
    // [34] return 
    rts
}
  // print_sdword
// Print a signed dword as HEX
// print_sdword(signed dword zp(2) dw)
print_sdword: {
    .label dw = 2
    // [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 
    lda.z dw+3
    bmi __b1_from_print_sdword
    // [37] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3]
  __b3_from_print_sdword:
    jmp __b3
    // print_sdword::@3
  __b3:
    // [38] call print_char 
    // [46] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char]
  print_char_from___b3:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@3->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [39] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [39] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#3 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy 
    jmp __b2
    // print_sdword::@2
  __b2:
    // [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5
    // [41] call print_dword 
    // [50] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword]
  print_dword_from___b2:
    // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#26 [phi:print_sdword::@2->print_dword#0] -- register_copy 
    // [50] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy 
    jsr print_dword
    jmp __breturn
    // print_sdword::@return
  __breturn:
    // [42] return 
    rts
    // [43] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1]
  __b1_from_print_sdword:
    jmp __b1
    // print_sdword::@1
  __b1:
    // [44] call print_char 
    // [46] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char]
  print_char_from___b1:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp __b4
    // print_sdword::@4
  __b4:
    // [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 
    sec
    lda.z dw
    eor #$ff
    adc #0
    sta.z dw
    lda.z dw+1
    eor #$ff
    adc #0
    sta.z dw+1
    lda.z dw+2
    eor #$ff
    adc #0
    sta.z dw+2
    lda.z dw+3
    eor #$ff
    adc #0
    sta.z dw+3
    jmp __b2_from___b4
}
  // print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
    // [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
    // [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp __breturn
    // print_char::@return
  __breturn:
    // [49] return 
    rts
}
  // print_dword
// Print a dword as HEX
// print_dword(dword zp(2) dw)
print_dword: {
    .label dw = 2
    // [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 
    lda.z dw+2
    sta.z print_word.w
    lda.z dw+3
    sta.z print_word.w+1
    // [52] call print_word 
    // [56] phi from print_dword to print_word [phi:print_dword->print_word]
  print_word_from_print_dword:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#145 [phi:print_dword->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy 
    jsr print_word
    jmp __b1
    // print_dword::@1
  __b1:
    // [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 -- vwuz1=_lo_vduz2 
    lda.z dw
    sta.z print_word.w
    lda.z dw+1
    sta.z print_word.w+1
    // [54] call print_word 
    // [56] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word]
  print_word_from___b1:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_dword::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_dword::@return
  __breturn:
    // [55] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp(8) w)
print_word: {
    .label w = 8
    // [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 
    lda.z w+1
    tax
    // [58] call print_byte 
    // [62] phi from print_word to print_byte [phi:print_word->print_byte]
  print_byte_from_print_word:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#144 [phi:print_word->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __b1
    // print_word::@1
  __b1:
    // [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 
    lda.z w
    tax
    // [60] call print_byte 
    // [62] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
  print_byte_from___b1:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    jmp __breturn
    // print_word::@return
  __breturn:
    // [61] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
    // [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    // [64] (byte) print_char::ch#6 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    // [65] call print_char 
    // [46] phi from print_byte to print_char [phi:print_byte->print_char]
  print_char_from_print_byte:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#149 [phi:print_byte->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#6 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    jmp __b1
    // print_byte::@1
  __b1:
    // [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // [67] (byte) print_char::ch#7 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    // [68] call print_char 
    // [46] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
  print_char_from___b1:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#7 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    jmp __breturn
    // print_byte::@return
  __breturn:
    // [69] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp(8) str)
print_str: {
    .label str = 8
    // [71] 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:
    // [71] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#156 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [71] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp __b1
    // print_str::@1
  __b1:
    // [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne __b2
    jmp __breturn
    // print_str::@return
  __breturn:
    // [73] return 
    rts
    // print_str::@2
  __b2:
    // [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (print_char_cursor),y
    // [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp __b1_from___b2
}
  // testInt
testInt: {
    .const u = $578
    .const n = -$578
    .const s = -$578
    // [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [78] call print_str 
    // [70] phi from testInt to print_str [phi:testInt->print_str]
  print_str_from_testInt:
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#160 [phi:testInt->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [79] phi from testInt to testInt::@1 [phi:testInt->testInt::@1]
  __b1_from_testInt:
    jmp __b1
    // testInt::@1
  __b1:
    // [80] call print_word 
    // [56] phi from testInt::@1 to print_word [phi:testInt::@1->print_word]
  print_word_from___b1:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testInt::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (const word) testInt::u [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 
    lda #<u
    sta.z print_word.w
    lda #>u
    sta.z print_word.w+1
    jsr print_word
    // [81] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2]
  __b2_from___b1:
    jmp __b2
    // testInt::@2
  __b2:
    // [82] call print_char 
    // [46] phi from testInt::@2 to print_char [phi:testInt::@2->print_char]
  print_char_from___b2:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [83] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3]
  __b3_from___b2:
    jmp __b3
    // testInt::@3
  __b3:
    // [84] call print_sword 
    // [92] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword]
  print_sword_from___b3:
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::n [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 
    lda #<n
    sta.z print_sword.w
    lda #>n
    sta.z print_sword.w+1
    jsr print_sword
    // [85] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4]
  __b4_from___b3:
    jmp __b4
    // testInt::@4
  __b4:
    // [86] call print_char 
    // [46] phi from testInt::@4 to print_char [phi:testInt::@4->print_char]
  print_char_from___b4:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [87] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5]
  __b5_from___b4:
    jmp __b5
    // testInt::@5
  __b5:
    // [88] call print_sword 
    // [92] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword]
  print_sword_from___b5:
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::s [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 
    lda #<s
    sta.z print_sword.w
    lda #>s
    sta.z print_sword.w+1
    jsr print_sword
    // [89] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6]
  __b6_from___b5:
    jmp __b6
    // testInt::@6
  __b6:
    // [90] call print_ln 
    // [30] phi from testInt::@6 to print_ln [phi:testInt::@6->print_ln]
  print_ln_from___b6:
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testInt::@6->print_ln#0] -- register_copy 
    jsr print_ln
    jmp __breturn
    // testInt::@return
  __breturn:
    // [91] return 
    rts
    str: .text "int: "
    .byte 0
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp(8) w)
print_sword: {
    .label w = 8
    // [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1_from_print_sword
    // [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
  __b3_from_print_sword:
    jmp __b3
    // print_sword::@3
  __b3:
    // [95] call print_char 
    // [46] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
  print_char_from___b3:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2]
  __b2_from___b3:
  __b2_from___b4:
    // [96] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    jmp __b2
    // print_sword::@2
  __b2:
    // [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7
    // [98] call print_word 
    // [56] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
  print_word_from___b2:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    jmp __breturn
    // print_sword::@return
  __breturn:
    // [99] return 
    rts
    // [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
  __b1_from_print_sword:
    jmp __b1
    // print_sword::@1
  __b1:
    // [101] call print_char 
    // [46] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
  print_char_from___b1:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    jmp __b4
    // print_sword::@4
  __b4:
    // [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 
    sec
    lda #0
    sbc.z w
    sta.z w
    lda #0
    sbc.z w+1
    sta.z w+1
    jmp __b2_from___b4
}
  // testShort
testShort: {
    .const u = $578
    .const n = -$578
    .const s = -$578
    // [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // [104] call print_str 
    // [70] phi from testShort to print_str [phi:testShort->print_str]
  print_str_from_testShort:
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#162 [phi:testShort->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [105] phi from testShort to testShort::@1 [phi:testShort->testShort::@1]
  __b1_from_testShort:
    jmp __b1
    // testShort::@1
  __b1:
    // [106] call print_word 
    // [56] phi from testShort::@1 to print_word [phi:testShort::@1->print_word]
  print_word_from___b1:
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testShort::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (const word) testShort::u [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 
    lda #<u
    sta.z print_word.w
    lda #>u
    sta.z print_word.w+1
    jsr print_word
    // [107] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2]
  __b2_from___b1:
    jmp __b2
    // testShort::@2
  __b2:
    // [108] call print_char 
    // [46] phi from testShort::@2 to print_char [phi:testShort::@2->print_char]
  print_char_from___b2:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [109] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3]
  __b3_from___b2:
    jmp __b3
    // testShort::@3
  __b3:
    // [110] call print_sword 
    // [92] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword]
  print_sword_from___b3:
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::n [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 
    lda #<n
    sta.z print_sword.w
    lda #>n
    sta.z print_sword.w+1
    jsr print_sword
    // [111] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4]
  __b4_from___b3:
    jmp __b4
    // testShort::@4
  __b4:
    // [112] call print_char 
    // [46] phi from testShort::@4 to print_char [phi:testShort::@4->print_char]
  print_char_from___b4:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [113] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5]
  __b5_from___b4:
    jmp __b5
    // testShort::@5
  __b5:
    // [114] call print_sword 
    // [92] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword]
  print_sword_from___b5:
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::s [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 
    lda #<s
    sta.z print_sword.w
    lda #>s
    sta.z print_sword.w+1
    jsr print_sword
    // [115] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6]
  __b6_from___b5:
    jmp __b6
    // testShort::@6
  __b6:
    // [116] call print_ln 
    // [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln]
  print_ln_from___b6:
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy 
    jsr print_ln
    jmp __breturn
    // testShort::@return
  __breturn:
    // [117] return 
    rts
    str: .text "short: "
    .byte 0
}
  // testChar
testChar: {
    .const u = $e
    .const n = $e
    .label s = -$e
    // [119] call print_str 
    // [70] phi from testChar to print_str [phi:testChar->print_str]
  print_str_from_testChar:
    // [70] phi (byte*) print_char_cursor#156 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [70] phi (byte*) print_str::str#7 = (const byte*) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [120] phi from testChar to testChar::@1 [phi:testChar->testChar::@1]
  __b1_from_testChar:
    jmp __b1
    // testChar::@1
  __b1:
    // [121] call print_byte 
    // [62] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte]
  print_byte_from___b1:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#136 [phi:testChar::@1->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (const byte) testChar::u [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 
    ldx #u
    jsr print_byte
    // [122] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2]
  __b2_from___b1:
    jmp __b2
    // testChar::@2
  __b2:
    // [123] call print_char 
    // [46] phi from testChar::@2 to print_char [phi:testChar::@2->print_char]
  print_char_from___b2:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [124] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3]
  __b3_from___b2:
    jmp __b3
    // testChar::@3
  __b3:
    // [125] call print_byte 
    // [62] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte]
  print_byte_from___b3:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:testChar::@3->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (const byte) testChar::n [phi:testChar::@3->print_byte#1] -- vbuxx=vbuc1 
    ldx #n
    jsr print_byte
    // [126] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4]
  __b4_from___b3:
    jmp __b4
    // testChar::@4
  __b4:
    // [127] call print_char 
    // [46] phi from testChar::@4 to print_char [phi:testChar::@4->print_char]
  print_char_from___b4:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [128] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5]
  __b5_from___b4:
    jmp __b5
    // testChar::@5
  __b5:
    // [129] call print_sbyte 
    // [133] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte]
  print_sbyte_from___b5:
    jsr print_sbyte
    // [130] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6]
  __b6_from___b5:
    jmp __b6
    // testChar::@6
  __b6:
    // [131] call print_ln 
    // [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln]
  print_ln_from___b6:
    // [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    jmp __breturn
    // testChar::@return
  __breturn:
    // [132] return 
    rts
    str: .text "char: "
    .byte 0
}
  // print_sbyte
// Print a signed byte as HEX
print_sbyte: {
    .const b = -testChar.s
    // [134] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
  __b1_from_print_sbyte:
    jmp __b1
    // print_sbyte::@1
  __b1:
    // [135] call print_char 
    // [46] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
  print_char_from___b1:
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sbyte::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    // [136] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2]
  __b2_from___b1:
    jmp __b2
    // print_sbyte::@2
  __b2:
    // [137] call print_byte 
    // [62] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
  print_byte_from___b2:
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuxx=vbuc1 
    ldx #b
    jsr print_byte
    jmp __breturn
    // print_sbyte::@return
  __breturn:
    // [138] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [140] call memset 
    // [142] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [141] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = $400
    .label end = str+num
    .label dst = $a
    // [143] phi from memset to memset::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [143] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp __b1
    // memset::@1
  __b1:
    // [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne __b2
    lda.z dst
    cmp #<end
    bne __b2
    jmp __breturn
    // memset::@return
  __breturn:
    // [145] return 
    rts
    // memset::@2
  __b2:
    // [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [147] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [143] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [143] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // File Data
  print_hextab: .text "0123456789abcdef"

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __bend
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __bbegin with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from_print_sdword with __b1
Replacing label __b2_from___b4 with __b2
Replacing label __b1_from___b2 with __b1
Replacing label __b1_from_print_sword with __b1
Replacing label __b2_from___b4 with __b2
Removing instruction __bbegin:
Removing instruction __b1_from___bbegin:
Removing instruction main_from___b1:
Removing instruction __bend_from___b1:
Removing instruction __b1_from_main:
Removing instruction testChar_from___b1:
Removing instruction __b2_from___b1:
Removing instruction __b3_from___b2:
Removing instruction __b4_from___b3:
Removing instruction __b1_from_testLong:
Removing instruction print_dword_from___b1:
Removing instruction __b2_from___b1:
Removing instruction print_char_from___b2:
Removing instruction __b3_from___b2:
Removing instruction print_sdword_from___b3:
Removing instruction __b4_from___b3:
Removing instruction print_char_from___b4:
Removing instruction __b5_from___b4:
Removing instruction print_sdword_from___b5:
Removing instruction __b6_from___b5:
Removing instruction print_ln_from___b6:
Removing instruction __b1_from_print_ln:
Removing instruction __b1_from___b1:
Removing instruction __b3_from_print_sdword:
Removing instruction print_char_from___b3:
Removing instruction __b2_from___b3:
Removing instruction __b2_from___b4:
Removing instruction print_dword_from___b2:
Removing instruction __b1_from_print_sdword:
Removing instruction print_char_from___b1:
Removing instruction __b1_from_print_str:
Removing instruction __b1_from___b2:
Removing instruction __b1_from_testInt:
Removing instruction print_word_from___b1:
Removing instruction __b2_from___b1:
Removing instruction print_char_from___b2:
Removing instruction __b3_from___b2:
Removing instruction print_sword_from___b3:
Removing instruction __b4_from___b3:
Removing instruction print_char_from___b4:
Removing instruction __b5_from___b4:
Removing instruction print_sword_from___b5:
Removing instruction __b6_from___b5:
Removing instruction print_ln_from___b6:
Removing instruction __b3_from_print_sword:
Removing instruction print_char_from___b3:
Removing instruction __b2_from___b3:
Removing instruction __b2_from___b4:
Removing instruction print_word_from___b2:
Removing instruction __b1_from_print_sword:
Removing instruction print_char_from___b1:
Removing instruction __b1_from_testShort:
Removing instruction print_word_from___b1:
Removing instruction __b2_from___b1:
Removing instruction print_char_from___b2:
Removing instruction __b3_from___b2:
Removing instruction print_sword_from___b3:
Removing instruction __b4_from___b3:
Removing instruction print_char_from___b4:
Removing instruction __b5_from___b4:
Removing instruction print_sword_from___b5:
Removing instruction __b6_from___b5:
Removing instruction print_ln_from___b6:
Removing instruction __b1_from_testChar:
Removing instruction print_byte_from___b1:
Removing instruction __b2_from___b1:
Removing instruction print_char_from___b2:
Removing instruction __b3_from___b2:
Removing instruction print_byte_from___b3:
Removing instruction __b4_from___b3:
Removing instruction print_char_from___b4:
Removing instruction __b5_from___b4:
Removing instruction print_sbyte_from___b5:
Removing instruction __b6_from___b5:
Removing instruction print_ln_from___b6:
Removing instruction __b1_from_print_sbyte:
Removing instruction print_char_from___b1:
Removing instruction __b2_from___b1:
Removing instruction print_byte_from___b2:
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 print_str_from_testLong:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction print_word_from_print_dword:
Removing instruction __b1:
Removing instruction print_word_from___b1:
Removing instruction __breturn:
Removing instruction print_byte_from_print_word:
Removing instruction __b1:
Removing instruction print_byte_from___b1:
Removing instruction __breturn:
Removing instruction print_char_from_print_byte:
Removing instruction __b1:
Removing instruction print_char_from___b1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction print_str_from_testInt:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __breturn:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b4:
Removing instruction print_str_from_testShort:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __breturn:
Removing instruction print_str_from_testChar:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __breturn:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __breturn:
Removing instruction memset_from_print_cls:
Removing instruction __breturn:
Removing instruction __b1_from_memset:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@return
(byte) memset::c
(const byte) memset::c#0 c = (byte) ' '
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:10 22.0
(byte*) memset::dst#2 dst zp[2]:10 14.666666666666666
(byte*) memset::end
(const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0
(word) memset::num
(const word) memset::num#0 num = (word) $3e8
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(byte*) 1024
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte x 4.0
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#1 reg byte x 4.0
(byte) print_byte::b#2 reg byte x 4.0
(byte) print_byte::b#5 reg byte x 2.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#16 reg byte a 6.0
(byte) print_char::ch#6 reg byte a 4.0
(byte) print_char::ch#7 reg byte a 4.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:6 11.0
(byte*) print_char_cursor#136 print_char_cursor zp[2]:6 3.583333333333333
(byte*) print_char_cursor#144 print_char_cursor zp[2]:6 6.0
(byte*) print_char_cursor#145 print_char_cursor zp[2]:6 3.0
(byte*) print_char_cursor#149 print_char_cursor zp[2]:6 3.9999999999999996
(byte*) print_char_cursor#156 print_char_cursor zp[2]:6 8.0
(byte*) print_char_cursor#160 print_char_cursor zp[2]:6 4.0
(byte*) print_char_cursor#161 print_char_cursor zp[2]:6 4.0
(byte*) print_char_cursor#162 print_char_cursor zp[2]:6 4.0
(byte*) print_char_cursor#26 print_char_cursor zp[2]:6 0.6091954022988502
(byte*) print_char_cursor#94 print_char_cursor zp[2]:6 17.0
(void()) print_cls()
(label) print_cls::@return
(void()) print_dword((dword) print_dword::dw)
(label) print_dword::@1
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp[4]:2 4.0
(dword) print_dword::dw#2 dw zp[4]:2 2.0
(const byte*) print_hextab[]  = (byte*) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:10 0.8333333333333333
(byte*) print_line_cursor#20 print_line_cursor zp[2]:10 24.0
(byte*) print_line_cursor#39 print_line_cursor zp[2]:10 8.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(void()) print_sbyte((signed byte) print_sbyte::b)
(label) print_sbyte::@1
(label) print_sbyte::@2
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(const signed byte) print_sbyte::b#0 b = -(const signed byte) testChar::s
(byte*) print_screen
(void()) print_sdword((signed dword) print_sdword::dw)
(label) print_sdword::@1
(label) print_sdword::@2
(label) print_sdword::@3
(label) print_sdword::@4
(label) print_sdword::@return
(signed dword) print_sdword::dw
(signed dword) print_sdword::dw#0 dw zp[4]:2 4.0
(signed dword) print_sdword::dw#3 dw zp[4]:2 1.0
(signed dword) print_sdword::dw#5 dw zp[4]:2 4.0
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp[2]:8 22.0
(byte*) print_str::str#5 str zp[2]:8 11.5
(byte*) print_str::str#7 str zp[2]:8 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp[2]:8 4.0
(signed word) print_sword::w#10 w zp[2]:8 1.0
(signed word) print_sword::w#7 w zp[2]:8 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word) print_word::w#0 w zp[2]:8 4.0
(word) print_word::w#1 w zp[2]:8 4.0
(word) print_word::w#2 w zp[2]:8 4.0
(word) print_word::w#5 w zp[2]:8 3.333333333333333
(void()) testChar()
(label) testChar::@1
(label) testChar::@2
(label) testChar::@3
(label) testChar::@4
(label) testChar::@5
(label) testChar::@6
(label) testChar::@return
(const byte) testChar::n = (byte) $e
(const signed byte) testChar::s = (signed byte) -$e
(const byte*) testChar::str[(byte) 7]  = (byte*) "char: "
(const byte) testChar::u = (byte) $e
(void()) testInt()
(label) testInt::@1
(label) testInt::@2
(label) testInt::@3
(label) testInt::@4
(label) testInt::@5
(label) testInt::@6
(label) testInt::@return
(const signed word) testInt::n = (signed word) -$578
(const signed word) testInt::s = (signed word) -$578
(const byte*) testInt::str[(byte) 6]  = (byte*) "int: "
(const word) testInt::u = (word) $578
(void()) testLong()
(label) testLong::@1
(label) testLong::@2
(label) testLong::@3
(label) testLong::@4
(label) testLong::@5
(label) testLong::@6
(label) testLong::@return
(const signed dword) testLong::n = (signed dword) -$222e0
(const signed dword) testLong::s = (signed dword) -$222e0
(const byte*) testLong::str[(byte) 7]  = (byte*) "long: "
(const dword) testLong::u = (dword) $222e0
(void()) testShort()
(label) testShort::@1
(label) testShort::@2
(label) testShort::@3
(label) testShort::@4
(label) testShort::@5
(label) testShort::@6
(label) testShort::@return
(const signed word) testShort::n = (signed word) -$578
(const signed word) testShort::s = (signed word) -$578
(const byte*) testShort::str[(byte) 8]  = (byte*) "short: "
(const word) testShort::u = (word) $578

zp[4]:2 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ]
reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ]
zp[2]:6 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#160 print_char_cursor#161 print_char_cursor#162 print_char_cursor#1 ]
reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ]
zp[2]:8 [ print_str::str#5 print_str::str#7 print_str::str#0 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ]
zp[2]:10 [ memset::dst#2 memset::dst#1 print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]
reg byte a [ print_byte::$0 ]
reg byte x [ print_byte::$2 ]


FINAL ASSEMBLER
Score: 2196

  // File Comments
// Tests the different standard C types
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
  // Global Constants & labels
  .label print_char_cursor = 6
  .label print_line_cursor = $a
  // @begin
  // [1] phi from @begin to @1 [phi:@begin->@1]
  // @1
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
  // [3] phi from @1 to @end [phi:@1->@end]
  // @end
  // main
main: {
    // print_cls()
    // [5] call print_cls 
    // [139] phi from main to print_cls [phi:main->print_cls]
    jsr print_cls
    // [6] phi from main to main::@1 [phi:main->main::@1]
    // main::@1
    // testChar()
    // [7] call testChar 
    // [118] phi from main::@1 to testChar [phi:main::@1->testChar]
    jsr testChar
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
    // testShort()
    // [9] call testShort 
    jsr testShort
    // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
    // main::@3
    // testInt()
    // [11] call testInt 
    jsr testInt
    // [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
    // main::@4
    // testLong()
    // [13] call testLong 
    jsr testLong
    // main::@return
    // }
    // [14] return 
    rts
}
  // testLong
testLong: {
    .const u = $222e0
    .const n = -$222e0
    .const s = -$222e0
    // [15] (byte*) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // print_str("long: ")
    // [16] call print_str 
    // [70] phi from testLong to print_str [phi:testLong->print_str]
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#161 [phi:testLong->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [17] phi from testLong to testLong::@1 [phi:testLong->testLong::@1]
    // testLong::@1
    // print_dword(u)
    // [18] call print_dword 
    // [50] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword]
    // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#136 [phi:testLong::@1->print_dword#0] -- register_copy 
    // [50] phi (dword) print_dword::dw#2 = (const dword) testLong::u [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 
    lda #<u
    sta.z print_dword.dw
    lda #>u
    sta.z print_dword.dw+1
    lda #<u>>$10
    sta.z print_dword.dw+2
    lda #>u>>$10
    sta.z print_dword.dw+3
    jsr print_dword
    // [19] phi from testLong::@1 to testLong::@2 [phi:testLong::@1->testLong::@2]
    // testLong::@2
    // print_char(' ')
    // [20] call print_char 
    // [46] phi from testLong::@2 to print_char [phi:testLong::@2->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [21] phi from testLong::@2 to testLong::@3 [phi:testLong::@2->testLong::@3]
    // testLong::@3
    // print_sdword(n)
    // [22] call print_sdword 
    // [35] phi from testLong::@3 to print_sdword [phi:testLong::@3->print_sdword]
    // [35] phi (signed dword) print_sdword::dw#3 = (const signed dword) testLong::n [phi:testLong::@3->print_sdword#0] -- vdsz1=vdsc1 
    lda #<n
    sta.z print_sdword.dw
    lda #>n
    sta.z print_sdword.dw+1
    lda #<n>>$10
    sta.z print_sdword.dw+2
    lda #>n>>$10
    sta.z print_sdword.dw+3
    jsr print_sdword
    // [23] phi from testLong::@3 to testLong::@4 [phi:testLong::@3->testLong::@4]
    // testLong::@4
    // print_char(' ')
    // [24] call print_char 
    // [46] phi from testLong::@4 to print_char [phi:testLong::@4->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [25] phi from testLong::@4 to testLong::@5 [phi:testLong::@4->testLong::@5]
    // testLong::@5
    // print_sdword(s)
    // [26] call print_sdword 
    // [35] phi from testLong::@5 to print_sdword [phi:testLong::@5->print_sdword]
    // [35] phi (signed dword) print_sdword::dw#3 = (const signed dword) testLong::s [phi:testLong::@5->print_sdword#0] -- vdsz1=vdsc1 
    lda #<s
    sta.z print_sdword.dw
    lda #>s
    sta.z print_sdword.dw+1
    lda #<s>>$10
    sta.z print_sdword.dw+2
    lda #>s>>$10
    sta.z print_sdword.dw+3
    jsr print_sdword
    // [27] phi from testLong::@5 to testLong::@6 [phi:testLong::@5->testLong::@6]
    // testLong::@6
    // print_ln()
    // [28] call print_ln 
    // [30] phi from testLong::@6 to print_ln [phi:testLong::@6->print_ln]
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testLong::@6->print_ln#0] -- register_copy 
    jsr print_ln
    // testLong::@return
    // }
    // [29] return 
    rts
    str: .text "long: "
    .byte 0
}
  // print_ln
// Print a newline
print_ln: {
    // [31] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
    // [31] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    // print_ln::@1
  __b1:
    // print_line_cursor + $28
    // [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z print_line_cursor
    sta.z print_line_cursor
    bcc !+
    inc.z print_line_cursor+1
  !:
    // while (print_line_cursor<print_char_cursor)
    // [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 
    lda.z print_line_cursor+1
    cmp.z print_char_cursor+1
    bcc __b1
    bne !+
    lda.z print_line_cursor
    cmp.z print_char_cursor
    bcc __b1
  !:
    // print_ln::@return
    // }
    // [34] return 
    rts
}
  // print_sdword
// Print a signed dword as HEX
// print_sdword(signed dword zp(2) dw)
print_sdword: {
    .label dw = 2
    // if(dw<0)
    // [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 
    lda.z dw+3
    bmi __b1
    // [37] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3]
    // print_sdword::@3
    // print_char(' ')
    // [38] call print_char 
    // [46] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@3->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [39] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2]
    // [39] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#3 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy 
    // print_sdword::@2
  __b2:
    // print_dword((dword)dw)
    // [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5
    // [41] call print_dword 
    // [50] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword]
    // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#26 [phi:print_sdword::@2->print_dword#0] -- register_copy 
    // [50] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy 
    jsr print_dword
    // print_sdword::@return
    // }
    // [42] return 
    rts
    // [43] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1]
    // print_sdword::@1
  __b1:
    // print_char('-')
    // [44] call print_char 
    // [46] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    // print_sdword::@4
    // dw = -dw
    // [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 
    sec
    lda.z dw
    eor #$ff
    adc #0
    sta.z dw
    lda.z dw+1
    eor #$ff
    adc #0
    sta.z dw+1
    lda.z dw+2
    eor #$ff
    adc #0
    sta.z dw+2
    lda.z dw+3
    eor #$ff
    adc #0
    sta.z dw+3
    jmp __b2
}
  // print_char
// Print a single char
// print_char(byte register(A) ch)
print_char: {
    // *(print_char_cursor++) = ch
    // [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (print_char_cursor),y
    // *(print_char_cursor++) = ch;
    // [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // print_char::@return
    // }
    // [49] return 
    rts
}
  // print_dword
// Print a dword as HEX
// print_dword(dword zp(2) dw)
print_dword: {
    .label dw = 2
    // print_word(>dw)
    // [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 
    lda.z dw+2
    sta.z print_word.w
    lda.z dw+3
    sta.z print_word.w+1
    // [52] call print_word 
    // [56] phi from print_dword to print_word [phi:print_dword->print_word]
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#145 [phi:print_dword->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy 
    jsr print_word
    // print_dword::@1
    // print_word(<dw)
    // [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 -- vwuz1=_lo_vduz2 
    lda.z dw
    sta.z print_word.w
    lda.z dw+1
    sta.z print_word.w+1
    // [54] call print_word 
    // [56] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word]
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_dword::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy 
    jsr print_word
    // print_dword::@return
    // }
    // [55] return 
    rts
}
  // print_word
// Print a word as HEX
// print_word(word zp(8) w)
print_word: {
    .label w = 8
    // print_byte(>w)
    // [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 
    lda.z w+1
    tax
    // [58] call print_byte 
    // [62] phi from print_word to print_byte [phi:print_word->print_byte]
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#144 [phi:print_word->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy 
    jsr print_byte
    // print_word::@1
    // print_byte(<w)
    // [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 
    lda.z w
    tax
    // [60] call print_byte 
    // [62] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_word::@1->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy 
    jsr print_byte
    // print_word::@return
    // }
    // [61] return 
    rts
}
  // print_byte
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
    // b>>4
    // [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    // print_char(print_hextab[b>>4])
    // [64] (byte) print_char::ch#6 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    // [65] call print_char 
    // [46] phi from print_byte to print_char [phi:print_byte->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#149 [phi:print_byte->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#6 [phi:print_byte->print_char#1] -- register_copy 
    jsr print_char
    // print_byte::@1
    // b&$f
    // [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // print_char(print_hextab[b&$f])
    // [67] (byte) print_char::ch#7 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    // [68] call print_char 
    // [46] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_byte::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#7 [phi:print_byte::@1->print_char#1] -- register_copy 
    jsr print_char
    // print_byte::@return
    // }
    // [69] return 
    rts
}
  // print_str
// Print a zero-terminated string
// print_str(byte* zp(8) str)
print_str: {
    .label str = 8
    // [71] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
    // [71] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#156 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
    // [71] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    // print_str::@1
  __b1:
    // while(*str)
    // [72] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne __b2
    // print_str::@return
    // }
    // [73] return 
    rts
    // print_str::@2
  __b2:
    // *(print_char_cursor++) = *(str++)
    // [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    sta (print_char_cursor),y
    // *(print_char_cursor++) = *(str++);
    // [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp __b1
}
  // testInt
testInt: {
    .const u = $578
    .const n = -$578
    .const s = -$578
    // [77] (byte*) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // print_str("int: ")
    // [78] call print_str 
    // [70] phi from testInt to print_str [phi:testInt->print_str]
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#160 [phi:testInt->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [79] phi from testInt to testInt::@1 [phi:testInt->testInt::@1]
    // testInt::@1
    // print_word(u)
    // [80] call print_word 
    // [56] phi from testInt::@1 to print_word [phi:testInt::@1->print_word]
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testInt::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (const word) testInt::u [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 
    lda #<u
    sta.z print_word.w
    lda #>u
    sta.z print_word.w+1
    jsr print_word
    // [81] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2]
    // testInt::@2
    // print_char(' ')
    // [82] call print_char 
    // [46] phi from testInt::@2 to print_char [phi:testInt::@2->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [83] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3]
    // testInt::@3
    // print_sword(n)
    // [84] call print_sword 
    // [92] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword]
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::n [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 
    lda #<n
    sta.z print_sword.w
    lda #>n
    sta.z print_sword.w+1
    jsr print_sword
    // [85] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4]
    // testInt::@4
    // print_char(' ')
    // [86] call print_char 
    // [46] phi from testInt::@4 to print_char [phi:testInt::@4->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [87] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5]
    // testInt::@5
    // print_sword(s)
    // [88] call print_sword 
    // [92] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword]
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::s [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 
    lda #<s
    sta.z print_sword.w
    lda #>s
    sta.z print_sword.w+1
    jsr print_sword
    // [89] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6]
    // testInt::@6
    // print_ln()
    // [90] call print_ln 
    // [30] phi from testInt::@6 to print_ln [phi:testInt::@6->print_ln]
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testInt::@6->print_ln#0] -- register_copy 
    jsr print_ln
    // testInt::@return
    // }
    // [91] return 
    rts
    str: .text "int: "
    .byte 0
}
  // print_sword
// Print a signed word as HEX
// print_sword(signed word zp(8) w)
print_sword: {
    .label w = 8
    // if(w<0)
    // [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 
    lda.z w+1
    bmi __b1
    // [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3]
    // print_sword::@3
    // print_char(' ')
    // [95] call print_char 
    // [46] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@3->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2]
    // [96] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy 
    // print_sword::@2
  __b2:
    // print_word((word)w)
    // [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7
    // [98] call print_word 
    // [56] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word]
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_sword::@2->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy 
    jsr print_word
    // print_sword::@return
    // }
    // [99] return 
    rts
    // [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1]
    // print_sword::@1
  __b1:
    // print_char('-')
    // [101] call print_char 
    // [46] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    // print_sword::@4
    // w = -w
    // [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 
    sec
    lda #0
    sbc.z w
    sta.z w
    lda #0
    sbc.z w+1
    sta.z w+1
    jmp __b2
}
  // testShort
testShort: {
    .const u = $578
    .const n = -$578
    .const s = -$578
    // [103] (byte*) print_char_cursor#162 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 
    lda.z print_line_cursor
    sta.z print_char_cursor
    lda.z print_line_cursor+1
    sta.z print_char_cursor+1
    // print_str("short: ")
    // [104] call print_str 
    // [70] phi from testShort to print_str [phi:testShort->print_str]
    // [70] phi (byte*) print_char_cursor#156 = (byte*) print_char_cursor#162 [phi:testShort->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const byte*) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [105] phi from testShort to testShort::@1 [phi:testShort->testShort::@1]
    // testShort::@1
    // print_word(u)
    // [106] call print_word 
    // [56] phi from testShort::@1 to print_word [phi:testShort::@1->print_word]
    // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testShort::@1->print_word#0] -- register_copy 
    // [56] phi (word) print_word::w#5 = (const word) testShort::u [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 
    lda #<u
    sta.z print_word.w
    lda #>u
    sta.z print_word.w+1
    jsr print_word
    // [107] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2]
    // testShort::@2
    // print_char(' ')
    // [108] call print_char 
    // [46] phi from testShort::@2 to print_char [phi:testShort::@2->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [109] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3]
    // testShort::@3
    // print_sword(n)
    // [110] call print_sword 
    // [92] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword]
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::n [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 
    lda #<n
    sta.z print_sword.w
    lda #>n
    sta.z print_sword.w+1
    jsr print_sword
    // [111] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4]
    // testShort::@4
    // print_char(' ')
    // [112] call print_char 
    // [46] phi from testShort::@4 to print_char [phi:testShort::@4->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [113] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5]
    // testShort::@5
    // print_sword(s)
    // [114] call print_sword 
    // [92] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword]
    // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::s [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 
    lda #<s
    sta.z print_sword.w
    lda #>s
    sta.z print_sword.w+1
    jsr print_sword
    // [115] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6]
    // testShort::@6
    // print_ln()
    // [116] call print_ln 
    // [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln]
    // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy 
    jsr print_ln
    // testShort::@return
    // }
    // [117] return 
    rts
    str: .text "short: "
    .byte 0
}
  // testChar
testChar: {
    .const u = $e
    .const n = $e
    .label s = -$e
    // print_str("char: ")
    // [119] call print_str 
    // [70] phi from testChar to print_str [phi:testChar->print_str]
    // [70] phi (byte*) print_char_cursor#156 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_char_cursor
    lda #>$400
    sta.z print_char_cursor+1
    // [70] phi (byte*) print_str::str#7 = (const byte*) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str.str
    lda #>str
    sta.z print_str.str+1
    jsr print_str
    // [120] phi from testChar to testChar::@1 [phi:testChar->testChar::@1]
    // testChar::@1
    // print_byte(u)
    // [121] call print_byte 
    // [62] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte]
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#136 [phi:testChar::@1->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (const byte) testChar::u [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 
    ldx #u
    jsr print_byte
    // [122] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2]
    // testChar::@2
    // print_char(' ')
    // [123] call print_char 
    // [46] phi from testChar::@2 to print_char [phi:testChar::@2->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@2->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [124] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3]
    // testChar::@3
    // print_byte(n)
    // [125] call print_byte 
    // [62] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte]
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:testChar::@3->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (const byte) testChar::n [phi:testChar::@3->print_byte#1] -- vbuxx=vbuc1 
    ldx #n
    jsr print_byte
    // [126] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4]
    // testChar::@4
    // print_char(' ')
    // [127] call print_char 
    // [46] phi from testChar::@4 to print_char [phi:testChar::@4->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@4->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 
    lda #' '
    jsr print_char
    // [128] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5]
    // testChar::@5
    // print_sbyte(s)
    // [129] call print_sbyte 
    // [133] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte]
    jsr print_sbyte
    // [130] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6]
    // testChar::@6
    // print_ln()
    // [131] call print_ln 
    // [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln]
    // [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 
    lda #<$400
    sta.z print_line_cursor
    lda #>$400
    sta.z print_line_cursor+1
    jsr print_ln
    // testChar::@return
    // }
    // [132] return 
    rts
    str: .text "char: "
    .byte 0
}
  // print_sbyte
// Print a signed byte as HEX
print_sbyte: {
    .const b = -testChar.s
    // [134] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1]
    // print_sbyte::@1
    // print_char('-')
    // [135] call print_char 
    // [46] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char]
    // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sbyte::@1->print_char#0] -- register_copy 
    // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 
    lda #'-'
    jsr print_char
    // [136] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2]
    // print_sbyte::@2
    // print_byte((byte)b)
    // [137] call print_byte 
    // [62] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte]
    // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_sbyte::@2->print_byte#0] -- register_copy 
    // [62] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuxx=vbuc1 
    ldx #b
    jsr print_byte
    // print_sbyte::@return
    // }
    // [138] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // memset(print_screen, ' ', 1000)
    // [140] call memset 
    // [142] phi from print_cls to memset [phi:print_cls->memset]
    jsr memset
    // print_cls::@return
    // }
    // [141] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = $400
    .label end = str+num
    .label dst = $a
    // [143] phi from memset to memset::@1 [phi:memset->memset::@1]
    // [143] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    // memset::@1
  __b1:
    // for(char* dst = str; dst!=end; dst++)
    // [144] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne __b2
    lda.z dst
    cmp #<end
    bne __b2
    // memset::@return
    // }
    // [145] return 
    rts
    // memset::@2
  __b2:
    // *dst = c
    // [146] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [147] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [143] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
    // [143] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // File Data
  print_hextab: .text "0123456789abcdef"

