Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + (number) 1
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
Identified constant variable (byte*) HEAP_TOP
Identified constant variable (byte) 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) @13
Culled Empty Block (label) @14
Culled Empty Block (label) print_str::@4
Culled Empty Block (label) print_str::@3
Culled Empty Block (label) print_str::@5
Culled Empty Block (label) print_str::@6
Culled Empty Block (label) @15
Culled Empty Block (label) @16
Culled Empty Block (label) @17
Culled Empty Block (label) print_sword::@4
Culled Empty Block (label) @18
Culled Empty Block (label) print_sbyte::@4
Culled Empty Block (label) @19
Culled Empty Block (label) @20
Culled Empty Block (label) @21
Culled Empty Block (label) @22
Culled Empty Block (label) @23
Culled Empty Block (label) @24
Culled Empty Block (label) @25
Culled Empty Block (label) @26
Culled Empty Block (label) @27
Culled Empty Block (label) @28
Culled Empty Block (label) 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

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  to:@12
memset: scope:[memset]  from print_cls
  (byte) memset::c#4 ← phi( print_cls/(byte) memset::c#0 )
  (void*) memset::str#3 ← phi( print_cls/(void*) memset::str#0 )
  (word) memset::num#1 ← phi( print_cls/(word) memset::num#0 )
  (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
  (bool~) memset::$1 ← ! (bool~) memset::$0
  if((bool~) memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@4
  (void*) memset::str#1 ← phi( memset/(void*) memset::str#3 memset::@4/(void*) memset::str#4 )
  (void*) memset::return#0 ← (void*) memset::str#1
  to:memset::@return
memset::@2: scope:[memset]  from memset
  (byte) memset::c#3 ← phi( memset/(byte) memset::c#4 )
  (word) memset::num#2 ← phi( memset/(word) memset::num#1 )
  (void*) memset::str#2 ← phi( memset/(void*) memset::str#3 )
  (byte*~) memset::$2 ← ((byte*)) (void*) memset::str#2
  (byte*~) memset::$3 ← (byte*~) memset::$2 + (word) memset::num#2
  (byte*) memset::end#0 ← (byte*~) memset::$3
  (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#2
  to:memset::@4
memset::@4: scope:[memset]  from memset::@2 memset::@5
  (byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@5/(byte) memset::c#1 )
  (void*) memset::str#4 ← phi( memset::@2/(void*) memset::str#2 memset::@5/(void*) memset::str#5 )
  (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@5/(byte*) memset::end#2 )
  (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@5/(byte*) memset::dst#1 )
  (bool~) memset::$4 ← (byte*) memset::dst#2 != (byte*) memset::end#1
  if((bool~) memset::$4) goto memset::@5
  to:memset::@1
memset::@5: scope:[memset]  from memset::@4
  (void*) memset::str#5 ← phi( memset::@4/(void*) memset::str#4 )
  (byte*) memset::end#2 ← phi( memset::@4/(byte*) memset::end#1 )
  (byte*) memset::dst#3 ← phi( memset::@4/(byte*) memset::dst#2 )
  (byte) memset::c#1 ← phi( memset::@4/(byte) memset::c#2 )
  *((byte*) memset::dst#3) ← (byte) memset::c#1
  (byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
  to:memset::@4
memset::@return: scope:[memset]  from memset::@1
  (void*) memset::return#3 ← phi( memset::@1/(void*) memset::return#0 )
  (void*) memset::return#1 ← (void*) memset::return#3
  return 
  to:@return
@12: scope:[]  from @begin
  (byte*) print_screen#0 ← ((byte*)) (number) $400
  (byte*) print_line_cursor#0 ← (byte*) print_screen#0
  (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
  to:@29
print_str: scope:[print_str]  from 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
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
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
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
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
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
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
@29: scope:[]  from @12
  (byte*) print_screen#5 ← phi( @12/(byte*) print_screen#0 )
  (byte*) print_char_cursor#160 ← phi( @12/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#50 ← phi( @12/(byte*) print_line_cursor#0 )
  (byte[]) print_hextab#0 ← (const string) $0
  to:@41
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 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0)
  call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  (byte) print_byte::b#6 ← phi( print_byte/(byte) print_byte::b#5 )
  (byte*) print_char_cursor#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 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2)
  call print_char 
  to:print_byte::@2
print_byte::@2: scope:[print_byte]  from print_byte::@1
  (byte*) print_char_cursor#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
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
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
main: scope:[main]  from @41
  (byte*) print_char_cursor#150 ← phi( @41/(byte*) print_char_cursor#155 )
  (byte*) print_line_cursor#40 ← phi( @41/(byte*) print_line_cursor#45 )
  (byte*) print_screen#3 ← phi( @41/(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
testChar: scope:[testChar]  from main::@1
  (byte*) print_line_cursor#67 ← phi( main::@1/(byte*) print_line_cursor#5 )
  (byte*) print_char_cursor#151 ← phi( main::@1/(byte*) print_char_cursor#30 )
  (byte) testChar::u#0 ← (number) $e
  (byte) testChar::n#0 ← (number) $e
  (signed byte) testChar::s#0 ← (number) -$e
  (byte*) print_str::str#1 ← (const string) testChar::str
  call print_str 
  to:testChar::@1
testChar::@1: scope:[testChar]  from testChar
  (byte*) print_line_cursor#63 ← phi( testChar/(byte*) print_line_cursor#67 )
  (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 ← (byte) testChar::u#0
  call print_byte 
  to:testChar::@2
testChar::@2: scope:[testChar]  from testChar::@1
  (byte*) print_line_cursor#59 ← phi( testChar::@1/(byte*) print_line_cursor#63 )
  (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#55 ← phi( testChar::@2/(byte*) print_line_cursor#59 )
  (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 ← (byte) testChar::n#0
  call print_byte 
  to:testChar::@4
testChar::@4: scope:[testChar]  from testChar::@3
  (byte*) print_line_cursor#51 ← phi( testChar::@3/(byte*) print_line_cursor#55 )
  (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#51 )
  (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 ← (signed byte) testChar::s#0
  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
testShort: scope:[testShort]  from main::@2
  (byte*) print_line_cursor#68 ← phi( main::@2/(byte*) print_line_cursor#6 )
  (byte*) print_char_cursor#152 ← phi( main::@2/(byte*) print_char_cursor#31 )
  (word) testShort::u#0 ← (number) $578
  (signed word) testShort::n#0 ← (number) -$578
  (signed word) testShort::s#0 ← (number) -$578
  (byte*) print_str::str#2 ← (const string) testShort::str
  call print_str 
  to:testShort::@1
testShort::@1: scope:[testShort]  from testShort
  (byte*) print_line_cursor#64 ← phi( testShort/(byte*) print_line_cursor#68 )
  (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 ← (word) testShort::u#0
  call print_word 
  to:testShort::@2
testShort::@2: scope:[testShort]  from testShort::@1
  (byte*) print_line_cursor#60 ← phi( testShort::@1/(byte*) print_line_cursor#64 )
  (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#56 ← phi( testShort::@2/(byte*) print_line_cursor#60 )
  (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 ← (signed word) testShort::n#0
  call print_sword 
  to:testShort::@4
testShort::@4: scope:[testShort]  from testShort::@3
  (byte*) print_line_cursor#52 ← phi( testShort::@3/(byte*) print_line_cursor#56 )
  (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#52 )
  (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 ← (signed word) testShort::s#0
  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
testInt: scope:[testInt]  from main::@3
  (byte*) print_line_cursor#69 ← phi( main::@3/(byte*) print_line_cursor#7 )
  (byte*) print_char_cursor#153 ← phi( main::@3/(byte*) print_char_cursor#32 )
  (word) testInt::u#0 ← (number) $578
  (signed word) testInt::n#0 ← (number) -$578
  (signed word) testInt::s#0 ← (number) -$578
  (byte*) print_str::str#3 ← (const string) testInt::str
  call print_str 
  to:testInt::@1
testInt::@1: scope:[testInt]  from testInt
  (byte*) print_line_cursor#65 ← phi( testInt/(byte*) print_line_cursor#69 )
  (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 ← (word) testInt::u#0
  call print_word 
  to:testInt::@2
testInt::@2: scope:[testInt]  from testInt::@1
  (byte*) print_line_cursor#61 ← phi( testInt::@1/(byte*) print_line_cursor#65 )
  (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#57 ← phi( testInt::@2/(byte*) print_line_cursor#61 )
  (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 ← (signed word) testInt::n#0
  call print_sword 
  to:testInt::@4
testInt::@4: scope:[testInt]  from testInt::@3
  (byte*) print_line_cursor#53 ← phi( testInt::@3/(byte*) print_line_cursor#57 )
  (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#53 )
  (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 ← (signed word) testInt::s#0
  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
testLong: scope:[testLong]  from main::@4
  (byte*) print_line_cursor#70 ← phi( main::@4/(byte*) print_line_cursor#8 )
  (byte*) print_char_cursor#154 ← phi( main::@4/(byte*) print_char_cursor#33 )
  (dword) testLong::u#0 ← (number) $222e0
  (signed dword) testLong::n#0 ← (number) -$222e0
  (signed dword) testLong::s#0 ← (number) -$222e0
  (byte*) print_str::str#4 ← (const string) testLong::str
  call print_str 
  to:testLong::@1
testLong::@1: scope:[testLong]  from testLong
  (byte*) print_line_cursor#66 ← phi( testLong/(byte*) print_line_cursor#70 )
  (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 ← (dword) testLong::u#0
  call print_dword 
  to:testLong::@2
testLong::@2: scope:[testLong]  from testLong::@1
  (byte*) print_line_cursor#62 ← phi( testLong::@1/(byte*) print_line_cursor#66 )
  (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#58 ← phi( testLong::@2/(byte*) print_line_cursor#62 )
  (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 ← (signed dword) testLong::n#0
  call print_sdword 
  to:testLong::@4
testLong::@4: scope:[testLong]  from testLong::@3
  (byte*) print_line_cursor#54 ← phi( testLong::@3/(byte*) print_line_cursor#58 )
  (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#54 )
  (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 ← (signed dword) testLong::s#0
  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
@41: scope:[]  from @29
  (byte*) print_screen#4 ← phi( @29/(byte*) print_screen#5 )
  (byte*) print_char_cursor#155 ← phi( @29/(byte*) print_char_cursor#160 )
  (byte*) print_line_cursor#45 ← phi( @29/(byte*) print_line_cursor#50 )
  call main 
  to:@42
@42: scope:[]  from @41
  (byte*) print_char_cursor#135 ← phi( @41/(byte*) print_char_cursor#35 )
  (byte*) print_line_cursor#38 ← phi( @41/(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 @42

SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"z
(label) @12
(label) @29
(label) @41
(label) @42
(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#160
(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
(byte[]) print_hextab
(byte[]) print_hextab#0
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
(byte*) print_line_cursor#10
(byte*) print_line_cursor#11
(byte*) print_line_cursor#12
(byte*) print_line_cursor#13
(byte*) print_line_cursor#14
(byte*) print_line_cursor#15
(byte*) print_line_cursor#16
(byte*) print_line_cursor#17
(byte*) print_line_cursor#18
(byte*) print_line_cursor#19
(byte*) print_line_cursor#2
(byte*) print_line_cursor#20
(byte*) print_line_cursor#21
(byte*) print_line_cursor#22
(byte*) print_line_cursor#23
(byte*) print_line_cursor#24
(byte*) print_line_cursor#25
(byte*) print_line_cursor#26
(byte*) print_line_cursor#27
(byte*) print_line_cursor#28
(byte*) print_line_cursor#29
(byte*) print_line_cursor#3
(byte*) print_line_cursor#30
(byte*) print_line_cursor#31
(byte*) print_line_cursor#32
(byte*) print_line_cursor#33
(byte*) print_line_cursor#34
(byte*) print_line_cursor#35
(byte*) print_line_cursor#36
(byte*) print_line_cursor#37
(byte*) print_line_cursor#38
(byte*) print_line_cursor#39
(byte*) print_line_cursor#4
(byte*) print_line_cursor#40
(byte*) print_line_cursor#41
(byte*) print_line_cursor#42
(byte*) print_line_cursor#43
(byte*) print_line_cursor#44
(byte*) print_line_cursor#45
(byte*) print_line_cursor#46
(byte*) print_line_cursor#47
(byte*) print_line_cursor#48
(byte*) print_line_cursor#49
(byte*) print_line_cursor#5
(byte*) print_line_cursor#50
(byte*) print_line_cursor#51
(byte*) print_line_cursor#52
(byte*) print_line_cursor#53
(byte*) print_line_cursor#54
(byte*) print_line_cursor#55
(byte*) print_line_cursor#56
(byte*) print_line_cursor#57
(byte*) print_line_cursor#58
(byte*) print_line_cursor#59
(byte*) print_line_cursor#6
(byte*) print_line_cursor#60
(byte*) print_line_cursor#61
(byte*) print_line_cursor#62
(byte*) print_line_cursor#63
(byte*) print_line_cursor#64
(byte*) print_line_cursor#65
(byte*) print_line_cursor#66
(byte*) print_line_cursor#67
(byte*) print_line_cursor#68
(byte*) print_line_cursor#69
(byte*) print_line_cursor#7
(byte*) print_line_cursor#70
(byte*) print_line_cursor#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
(byte*) print_screen#5
(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
(byte) testChar::n
(byte) testChar::n#0
(signed byte) testChar::s
(signed byte) testChar::s#0
(const string) testChar::str = (string) "char: "
(byte) testChar::u
(byte) testChar::u#0
(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
(signed word) testInt::n
(signed word) testInt::n#0
(signed word) testInt::s
(signed word) testInt::s#0
(const string) testInt::str = (string) "int: "
(word) testInt::u
(word) testInt::u#0
(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
(signed dword) testLong::n
(signed dword) testLong::n#0
(signed dword) testLong::s
(signed dword) testLong::s#0
(const string) testLong::str = (string) "long: "
(dword) testLong::u
(dword) testLong::u#0
(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
(signed word) testShort::n
(signed word) testShort::n#0
(signed word) testShort::s
(signed word) testShort::s#0
(const string) testShort::str = (string) "short: "
(word) testShort::u
(word) testShort::u#0

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
Adding number conversion cast (unumber) $e in (byte) testChar::u#0 ← (number) $e
Adding number conversion cast (unumber) $e in (byte) testChar::n#0 ← (number) $e
Adding number conversion cast (snumber) -$e in (signed byte) testChar::s#0 ← (number) -$e
Adding number conversion cast (unumber) $578 in (word) testShort::u#0 ← (number) $578
Adding number conversion cast (snumber) -$578 in (signed word) testShort::n#0 ← (number) -$578
Adding number conversion cast (snumber) -$578 in (signed word) testShort::s#0 ← (number) -$578
Adding number conversion cast (unumber) $578 in (word) testInt::u#0 ← (number) $578
Adding number conversion cast (snumber) -$578 in (signed word) testInt::n#0 ← (number) -$578
Adding number conversion cast (snumber) -$578 in (signed word) testInt::s#0 ← (number) -$578
Adding number conversion cast (unumber) $222e0 in (dword) testLong::u#0 ← (number) $222e0
Adding number conversion cast (snumber) -$222e0 in (signed dword) testLong::n#0 ← (number) -$222e0
Adding number conversion cast (snumber) -$222e0 in (signed dword) testLong::s#0 ← (number) -$222e0
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400
Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#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
Inlining cast (byte) testChar::u#0 ← (unumber)(number) $e
Inlining cast (byte) testChar::n#0 ← (unumber)(number) $e
Inlining cast (signed byte) testChar::s#0 ← (snumber)(number) -$e
Inlining cast (word) testShort::u#0 ← (unumber)(number) $578
Inlining cast (signed word) testShort::n#0 ← (snumber)(number) -$578
Inlining cast (signed word) testShort::s#0 ← (snumber)(number) -$578
Inlining cast (word) testInt::u#0 ← (unumber)(number) $578
Inlining cast (signed word) testInt::n#0 ← (snumber)(number) -$578
Inlining cast (signed word) testInt::s#0 ← (snumber)(number) -$578
Inlining cast (dword) testLong::u#0 ← (unumber)(number) $222e0
Inlining cast (signed dword) testLong::n#0 ← (snumber)(number) -$222e0
Inlining cast (signed dword) testLong::s#0 ← (snumber)(number) -$222e0
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
Simplifying constant integer cast $e
Simplifying constant integer cast $e
Simplifying constant integer cast -$e
Simplifying constant integer cast $578
Simplifying constant integer cast -$578
Simplifying constant integer cast -$578
Simplifying constant integer cast $578
Simplifying constant integer cast -$578
Simplifying constant integer cast -$578
Simplifying constant integer cast $222e0
Simplifying constant integer cast -$222e0
Simplifying constant integer cast -$222e0
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
Finalized unsigned number type (byte) $e
Finalized unsigned number type (byte) $e
Finalized signed number type (signed byte) -$e
Finalized unsigned number type (word) $578
Finalized signed number type (signed word) -$578
Finalized signed number type (signed word) -$578
Finalized unsigned number type (word) $578
Finalized signed number type (signed word) -$578
Finalized signed number type (signed word) -$578
Finalized unsigned number type (dword) $222e0
Finalized signed number type (signed dword) -$222e0
Finalized signed number type (signed dword) -$222e0
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#50 (byte*) print_char_cursor#160 (byte*) print_screen#5 (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#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#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#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#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#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#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#66 (byte*) print_line_cursor#70 (byte*) print_line_cursor#62 (byte*) print_line_cursor#58 (byte*) print_line_cursor#54 (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 [3] if((word) memset::num#0<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) print_str::$0 [26] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2
Simple Condition (bool~) print_ln::$1 [39] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1
Simple Condition (bool~) print_sword::$0 [48] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1
Simple Condition (bool~) print_sbyte::$0 [72] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1
Simple Condition (bool~) print_sdword::$0 [124] 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[]) print_hextab#0 = $0
Constant (const byte) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const byte) testChar::u#0 = $e
Constant (const byte) testChar::n#0 = $e
Constant (const signed byte) testChar::s#0 = -$e
Constant (const byte*) print_str::str#1 = testChar::str
Constant (const byte) print_char::ch#8 = ' '
Constant (const byte) print_char::ch#9 = ' '
Constant (const word) testShort::u#0 = $578
Constant (const signed word) testShort::n#0 = -$578
Constant (const signed word) testShort::s#0 = -$578
Constant (const byte*) print_str::str#2 = testShort::str
Constant (const byte) print_char::ch#10 = ' '
Constant (const byte) print_char::ch#11 = ' '
Constant (const word) testInt::u#0 = $578
Constant (const signed word) testInt::n#0 = -$578
Constant (const signed word) testInt::s#0 = -$578
Constant (const byte*) print_str::str#3 = testInt::str
Constant (const byte) print_char::ch#12 = ' '
Constant (const byte) print_char::ch#13 = ' '
Constant (const dword) testLong::u#0 = $222e0
Constant (const signed dword) testLong::n#0 = -$222e0
Constant (const signed dword) testLong::s#0 = -$222e0
Constant (const byte*) print_str::str#4 = testLong::str
Constant (const byte) print_char::ch#14 = ' '
Constant (const byte) print_char::ch#15 = ' '
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) print_byte::b#3 = testChar::u#0
Constant (const byte) print_byte::b#4 = testChar::n#0
Constant (const signed byte) print_sbyte::b#1 = testChar::s#0
Constant (const word) print_word::w#3 = testShort::u#0
Constant (const signed word) print_sword::w#1 = testShort::n#0
Constant (const signed word) print_sword::w#2 = testShort::s#0
Constant (const word) print_word::w#4 = testInt::u#0
Constant (const signed word) print_sword::w#3 = testInt::n#0
Constant (const signed word) print_sword::w#4 = testInt::s#0
Constant (const dword) print_dword::dw#1 = testLong::u#0
Constant (const signed dword) print_sdword::dw#1 = testLong::n#0
Constant (const signed dword) print_sdword::dw#2 = testLong::s#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (void*)print_line_cursor#0 in [169] (void*) memset::str#0 ← (void*)(const byte*) print_line_cursor#0
Successful SSA optimization Pass2ConstantValues
if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1
if() condition always true - replacing block destination [72] if((const signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1
Successful SSA optimization Pass2ConstantIfs
Eliminating unused variable (void*) memset::return#2 and assignment [71] (void*) memset::return#2 ← (void*) memset::str#0
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 [30] (signed byte) print_sbyte::b#0 ← - (const signed byte) print_sbyte::b#1
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const signed byte) print_sbyte::b#0 = -print_sbyte::b#1
Constant (const void*) memset::str#0 = (void*)print_line_cursor#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (byte*)memset::str#0 in [0] (byte*~) memset::$2 ← (byte*)(const void*) memset::str#0
Constant value identified (byte*)memset::str#0 in [2] (byte*) memset::dst#0 ← (byte*)(const void*) memset::str#0
Constant value identified (byte)print_sbyte::b#0 in [32] (byte) print_byte::b#0 ← (byte)(const signed byte) print_sbyte::b#0
Successful SSA optimization Pass2ConstantValues
Eliminating unused constant (const byte) print_char::ch#3
Successful SSA optimization PassNEliminateUnusedVars
Constant (const byte*) memset::$2 = (byte*)memset::str#0
Constant (const byte*) memset::dst#0 = (byte*)memset::str#0
Constant (const byte) print_byte::b#0 = (byte)print_sbyte::b#0
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) memset::end#0 = memset::$2+memset::num#0
Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2LoopHeadConstantIdentification
Alias (byte*) memset::dst#1 = (byte*) memset::dst#2 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte*) memset::dst#5 (const byte*) memset::dst#0
Successful SSA optimization Pass2IdenticalPhiElimination
if() condition always true - replacing block destination [106] if((const byte*) memset::dst#0!=(const byte*) memset::end#0) goto memset::@5
Successful SSA optimization Pass2ConstantIfs
Inlining constant with var siblings (const byte*) memset::dst#0
Inlining constant with var siblings (const byte*) print_str::str#1
Inlining constant with var siblings (const byte*) print_str::str#2
Inlining constant with var siblings (const byte*) print_str::str#3
Inlining constant with var siblings (const byte*) print_str::str#4
Inlining constant with var siblings (const 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#0
Constant inlined print_char::ch#10 = (byte) ' '
Constant inlined print_sword::w#1 = (const signed word) testShort::n#0
Constant inlined print_char::ch#11 = (byte) ' '
Constant inlined print_sword::w#2 = (const signed word) testShort::s#0
Constant inlined print_char::ch#12 = (byte) ' '
Constant inlined print_sword::w#3 = (const signed word) testInt::n#0
Constant inlined $0 = (const byte[]) print_hextab#0
Constant inlined print_sword::w#4 = (const signed word) testInt::s#0
Constant inlined print_dword::dw#1 = (const dword) testLong::u#0
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#0
Constant inlined print_sdword::dw#1 = (const signed dword) testLong::n#0
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#0
Constant inlined print_byte::b#3 = (const byte) testChar::u#0
Constant inlined print_word::w#3 = (const word) testShort::u#0
Constant inlined print_word::w#4 = (const word) testInt::u#0
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 string) testLong::str
Constant inlined print_str::str#3 = (const string) testInt::str
Constant inlined print_str::str#2 = (const string) testShort::str
Constant inlined memset::dst#0 = (byte*)(const void*) memset::str#0
Constant inlined print_str::str#1 = (const string) testChar::str
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting memset::@10(between memset::@4 and memset::@5)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @12
Adding NOP phi() at start of @29
Adding NOP phi() at start of @41
Adding NOP phi() at start of @42
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::@4_1
Adding NOP phi() at start of memset::@1
CALL GRAPH
Calls in [] to main:4 
Calls in [main] to print_cls:8 testChar:10 testShort:12 testInt:14 testLong:16 
Calls in [testLong] to print_str:20 print_dword:22 print_char:24 print_sdword:26 print_char:28 print_sdword:30 print_ln:32 
Calls in [print_sdword] to print_char:46 print_dword:52 print_char:56 
Calls in [print_dword] to print_word:67 print_word:71 
Calls in [print_word] to print_byte:78 print_byte:82 
Calls in [print_byte] to print_char:90 print_char:95 
Calls in [testInt] to print_str:110 print_word:112 print_char:114 print_sword:116 print_char:118 print_sword:120 print_ln:122 
Calls in [print_sword] to print_char:128 print_word:134 print_char:138 
Calls in [testShort] to print_str:142 print_word:144 print_char:146 print_sword:148 print_char:150 print_sword:152 print_ln:154 
Calls in [testChar] to print_str:158 print_byte:160 print_char:162 print_byte:164 print_char:166 print_sbyte:168 print_ln:170 
Calls in [print_sbyte] to print_char:175 print_byte:178 
Calls in [print_cls] to memset:182 

Created 19 initial phi equivalence classes
Not coalescing [19] print_char_cursor#162 ← print_line_cursor#1
Coalesced [21] print_char_cursor#172 ← print_char_cursor#136
Coalesced [23] print_char_cursor#189 ← print_char_cursor#26
Coalesced (already) [27] print_char_cursor#190 ← print_char_cursor#26
Coalesced [31] print_line_cursor#72 ← print_line_cursor#1
Coalesced [36] print_line_cursor#74 ← print_line_cursor#39
Coalesced (already) [42] print_line_cursor#75 ← print_line_cursor#1
Coalesced (already) [45] print_char_cursor#182 ← print_char_cursor#26
Coalesced [47] print_sdword::dw#10 ← print_sdword::dw#3
Coalesced [50] print_dword::dw#4 ← print_dword::dw#0
Coalesced [51] print_char_cursor#171 ← print_char_cursor#26
Coalesced (already) [55] print_char_cursor#181 ← print_char_cursor#26
Coalesced [58] print_sdword::dw#9 ← print_sdword::dw#0
Coalesced [65] print_word::w#7 ← print_word::w#1
Coalesced [66] print_char_cursor#166 ← print_char_cursor#145
Coalesced [69] print_word::w#8 ← print_word::w#2
Coalesced (already) [70] print_char_cursor#167 ← print_char_cursor#26
Coalesced [76] print_byte::b#7 ← print_byte::b#1
Coalesced [77] print_char_cursor#174 ← print_char_cursor#144
Coalesced [80] print_byte::b#8 ← print_byte::b#2
Coalesced (already) [81] print_char_cursor#175 ← print_char_cursor#26
Coalesced [88] print_char::ch#17 ← print_char::ch#6
Coalesced (already) [89] print_char_cursor#178 ← print_char_cursor#149
Coalesced [93] print_char::ch#18 ← print_char::ch#7
Coalesced (already) [94] print_char_cursor#179 ← print_char_cursor#26
Coalesced [99] print_str::str#8 ← print_str::str#7
Coalesced [100] print_char_cursor#164 ← print_char_cursor#156
Coalesced [107] print_str::str#9 ← print_str::str#0
Coalesced [108] print_char_cursor#165 ← print_char_cursor#1
Not coalescing [109] print_char_cursor#161 ← print_line_cursor#1
Coalesced (already) [111] print_char_cursor#169 ← print_char_cursor#136
Coalesced (already) [113] print_char_cursor#187 ← print_char_cursor#26
Coalesced (already) [117] print_char_cursor#188 ← print_char_cursor#26
Coalesced (already) [121] print_line_cursor#71 ← print_line_cursor#1
Coalesced (already) [127] print_char_cursor#184 ← print_char_cursor#26
Coalesced [129] print_sword::w#12 ← print_sword::w#10
Coalesced [132] print_word::w#9 ← print_word::w#0
Coalesced (already) [133] print_char_cursor#168 ← print_char_cursor#26
Coalesced (already) [137] print_char_cursor#183 ← print_char_cursor#26
Coalesced [140] print_sword::w#11 ← print_sword::w#0
Not coalescing [141] print_char_cursor#163 ← print_line_cursor#1
Coalesced (already) [143] print_char_cursor#170 ← print_char_cursor#136
Coalesced (already) [145] print_char_cursor#191 ← print_char_cursor#26
Coalesced (already) [149] print_char_cursor#192 ← print_char_cursor#26
Coalesced (already) [153] print_line_cursor#73 ← print_line_cursor#1
Coalesced (already) [159] print_char_cursor#176 ← print_char_cursor#136
Coalesced (already) [161] print_char_cursor#185 ← print_char_cursor#26
Coalesced (already) [163] print_char_cursor#177 ← print_char_cursor#26
Coalesced (already) [165] print_char_cursor#186 ← print_char_cursor#26
Coalesced (already) [174] print_char_cursor#180 ← print_char_cursor#26
Coalesced (already) [177] print_char_cursor#173 ← print_char_cursor#26
Coalesced [194] memset::dst#6 ← memset::dst#1
Coalesced down to 10 phi equivalence classes
Culled Empty Block (label) @12
Culled Empty Block (label) @29
Culled Empty Block (label) @42
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::@4_1
Culled Empty Block (label) memset::@1
Culled Empty Block (label) memset::@10
Renumbering block @41 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()
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
testLong: scope:[testLong]  from main::@4
  [15] (byte*~) print_char_cursor#162 ← (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
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
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#0 testLong::@5/(const signed dword) testLong::s#0 )
  [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
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
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#0 )
  [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
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#0 testShort::@1/(const word) testShort::u#0 )
  [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
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#0 testChar::@3/(const byte) testChar::n#0 )
  [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4
  [64] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (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#0 + (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
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#161 testLong/(byte*~) print_char_cursor#162 testShort/(byte*~) print_char_cursor#163 )
  [70] (byte*) print_str::str#7 ← phi( testChar/(const string) testChar::str testInt/(const string) testInt::str testLong/(const string) testLong::str testShort/(const string) 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
testInt: scope:[testInt]  from main::@3
  [77] (byte*~) print_char_cursor#161 ← (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
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#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 )
  [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
testShort: scope:[testShort]  from main::@2
  [103] (byte*~) print_char_cursor#163 ← (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
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
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
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
memset: scope:[memset]  from print_cls
  [142] phi()
  to:memset::@2
memset::@2: scope:[memset]  from memset memset::@1
  [143] (byte*) memset::dst#4 ← phi( memset::@1/(byte*) memset::dst#1 memset/(byte*)(const void*) memset::str#0 )
  [144] *((byte*) memset::dst#4) ← (const byte) memset::c#0
  [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4
  to:memset::@1
memset::@1: scope:[memset]  from memset::@2
  [146] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [147] return 
  to:@return


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 16.5
(byte*) memset::dst#4 16.5
(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#161 4.0
(byte*~) print_char_cursor#162 4.0
(byte*~) print_char_cursor#163 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_hextab
(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()
(byte) testChar::n
(signed byte) testChar::s
(byte) testChar::u
(void()) testInt()
(signed word) testInt::n
(signed word) testInt::s
(word) testInt::u
(void()) testLong()
(signed dword) testLong::n
(signed dword) testLong::s
(dword) testLong::u
(void()) testShort()
(signed word) testShort::n
(signed word) testShort::s
(word) testShort::u

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#161 print_char_cursor#162 print_char_cursor#163 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#4 memset::dst#1 ]
Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ]
Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ]
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#161 print_char_cursor#162 print_char_cursor#163 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#4 memset::dst#1 ]
[ print_byte::$0 ]
[ print_byte::$2 ]
Allocated zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]
Allocated zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ]
Allocated zp ZP_BYTE:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ]
Allocated zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ]
Allocated zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ]
Allocated zp ZP_WORD: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#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ]
Allocated zp ZP_BYTE:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ]
Allocated zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ]
Allocated zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ]
Allocated zp ZP_WORD:22 [ memset::dst#4 memset::dst#1 ]
Allocated zp ZP_BYTE:24 [ print_byte::$0 ]
Allocated zp ZP_BYTE:25 [ print_byte::$2 ]

INITIAL ASM
Target platform is c64basic
  // 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#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
    // [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#162 [phi:testLong->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 zeropage(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 zeropage(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 zeropage(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 zeropage($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 zeropage($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#0 + (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#0 + (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* zeropage($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#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
    // [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#161 [phi:testInt->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 zeropage($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#163 ← (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#163 [phi:testShort->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 string) 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#0 [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#0 [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::@2 [phi:memset->memset::@2]
  b2_from_memset:
    // [143] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp b2
    // [143] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
  b2_from_b1:
    // [143] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    jmp b2
    // memset::@2
  b2:
    // [144] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp b1
    // memset::@1
  b1:
    // [146] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2_from_b1
    lda.z dst
    cmp #<end
    bne b2_from_b1
    jmp breturn
    // memset::@return
  breturn:
    // [147] return 
    rts
}
  // File Data
  print_hextab: .text "0123456789abcdef"

REGISTER UPLIFT POTENTIAL REGISTERS
Statement [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#162 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#162 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 ZP_BYTE: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 ZP_BYTE: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#161 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#161 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#161 ] ) 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#163 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#163 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#163 ] ) always clobbers reg byte a 
Statement [144] *((byte*) memset::dst#4) ← (const byte) memset::c#0 [ memset::dst#4 ] ( main:2::print_cls:5::memset:140 [ memset::dst#4 ] ) always clobbers reg byte a reg byte y 
Statement [146] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#1 ] ( main:2::print_cls:5::memset:140 [ memset::dst#1 ] ) always clobbers reg byte a 
Statement [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#162 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#162 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#161 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#161 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#161 ] ) 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#163 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#163 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#163 ] ) always clobbers reg byte a 
Statement [144] *((byte*) memset::dst#4) ← (const byte) memset::c#0 [ memset::dst#4 ] ( main:2::print_cls:5::memset:140 [ memset::dst#4 ] ) always clobbers reg byte a reg byte y 
Statement [146] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#1 ] ( main:2::print_cls:5::memset:140 [ memset::dst#1 ] ) always clobbers reg byte a 
Potential registers zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] : zp ZP_WORD:2 , 
Potential registers zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] : zp ZP_DWORD:4 , 
Potential registers zp ZP_BYTE:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ] : zp ZP_DWORD:9 , 
Potential registers zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:13 , 
Potential registers zp ZP_WORD: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#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] : zp ZP_WORD:15 , 
Potential registers zp ZP_BYTE:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:17 , reg byte x , 
Potential registers zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] : zp ZP_WORD:18 , 
Potential registers zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] : zp ZP_WORD:20 , 
Potential registers zp ZP_WORD:22 [ memset::dst#4 memset::dst#1 ] : zp ZP_WORD:22 , 
Potential registers zp ZP_BYTE:24 [ print_byte::$0 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:25 [ print_byte::$2 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [] 65.19: zp ZP_WORD: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#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] 32.83: zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] 
Uplift Scope [print_str] 35.5: zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] 
Uplift Scope [memset] 33: zp ZP_WORD:22 [ memset::dst#4 memset::dst#1 ] 
Uplift Scope [print_byte] 10: zp ZP_BYTE:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:24 [ print_byte::$0 ] 4: zp ZP_BYTE:25 [ print_byte::$2 ] 
Uplift Scope [print_word] 15.33: zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] 
Uplift Scope [print_char] 14: zp ZP_BYTE:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] 
Uplift Scope [print_sword] 9: zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] 
Uplift Scope [print_sdword] 9: zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] 
Uplift Scope [print_dword] 6: zp ZP_DWORD: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 2707 combination zp ZP_WORD: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#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] 
Uplifting [print_str] best 2707 combination zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] 
Uplifting [memset] best 2707 combination zp ZP_WORD:22 [ memset::dst#4 memset::dst#1 ] 
Uplifting [print_byte] best 2684 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 2684 combination zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] 
Uplifting [print_char] best 2636 combination reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] 
Uplifting [print_sword] best 2636 combination zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] 
Uplifting [print_sdword] best 2636 combination zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] 
Uplifting [print_dword] best 2636 combination zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ] 
Uplifting [RADIX] best 2636 combination 
Uplifting [print_ln] best 2636 combination 
Uplifting [print_sbyte] best 2636 combination 
Uplifting [print_cls] best 2636 combination 
Uplifting [main] best 2636 combination 
Uplifting [testChar] best 2636 combination 
Uplifting [testShort] best 2636 combination 
Uplifting [testInt] best 2636 combination 
Uplifting [testLong] best 2636 combination 
Coalescing zero page register [ zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] ] with [ zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] ] with [ zp ZP_WORD: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 ZP_WORD:22 [ memset::dst#4 memset::dst#1 ] ] with [ zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] ]
Allocated (was zp ZP_DWORD:4) zp ZP_DWORD:2 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ]
Allocated (was zp ZP_WORD:15) zp ZP_WORD: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#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ]
Allocated (was zp ZP_WORD:18) zp ZP_WORD: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 ZP_WORD:22) zp ZP_WORD:10 [ memset::dst#4 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#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
    // [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#162 [phi:testLong->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 zeropage(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 zeropage(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 zeropage(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#0 + (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#0 + (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* zeropage(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#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
    // [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#161 [phi:testInt->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 zeropage(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#163 ← (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#163 [phi:testShort->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 string) 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#0 [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#0 [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::@2 [phi:memset->memset::@2]
  b2_from_memset:
    // [143] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp b2
    // [143] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
  b2_from_b1:
    // [143] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    jmp b2
    // memset::@2
  b2:
    // [144] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp b1
    // memset::@1
  b1:
    // [146] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2_from_b1
    lda.z dst
    cmp #<end
    bne b2_from_b1
    jmp breturn
    // memset::@return
  breturn:
    // [147] return 
    rts
}
  // 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 b2
Removing instruction jmp b1
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_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
Replacing label b2_from_b1 with b2
Replacing label b2_from_b1 with b2
Removing instruction b1_from_bbegin:
Removing instruction b1:
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:
Removing instruction b2_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction bend:
Removing instruction print_cls_from_main:
Removing instruction b1:
Removing instruction b2:
Removing instruction b3:
Removing instruction b4:
Removing instruction 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 b2_from_memset:
Removing instruction b1:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Removing instruction jmp b2
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Succesful ASM optimization Pass5UnusedLabelElimination

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

zp ZP_DWORD: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 ZP_WORD: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#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ]
reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ]
zp ZP_WORD: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 ZP_WORD:10 [ memset::dst#4 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: 2166

  // 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#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("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#162 [phi:testLong->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 zeropage(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 zeropage(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 zeropage(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#0 + (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#0 + (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* zeropage(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#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("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#161 [phi:testInt->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 zeropage(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#163 ← (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#163 [phi:testShort->print_str#0] -- register_copy 
    // [70] phi (byte*) print_str::str#7 = (const string) 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#0 [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#0 [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#0 [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 string) 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#0 [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#0 [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::@2 [phi:memset->memset::@2]
    // [143] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    // [143] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
    // [143] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    // memset::@2
  b2:
    // *dst = c
    // [144] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [145] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // memset::@1
    // [146] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2
    lda.z dst
    cmp #<end
    bne b2
    // memset::@return
    // }
    // [147] return 
    rts
}
  // File Data
  print_hextab: .text "0123456789abcdef"

