Inlined call call print2(screen, main::hello)
Inlined call call print2(main::$1, main::hello)
Inlined call call __init

CONTROL FLOW GRAPH SSA

void main()
main: scope:[main]  from __start::@1
  main::print21_at#0 = screen
  main::print21_msg#0 = main::hello
  to:main::print21
main::print21: scope:[main]  from main
  main::print21_at#3 = phi( main/main::print21_at#0 )
  main::print21_msg#3 = phi( main/main::print21_msg#0 )
  main::print21_j#0 = 0
  main::print21_i#0 = 0
  to:main::print21_@1
main::print21_@1: scope:[main]  from main::print21 main::print21_@2
  main::print21_j#3 = phi( main::print21/main::print21_j#0, main::print21_@2/main::print21_j#1 )
  main::print21_at#2 = phi( main::print21/main::print21_at#3, main::print21_@2/main::print21_at#1 )
  main::print21_i#2 = phi( main::print21/main::print21_i#0, main::print21_@2/main::print21_i#1 )
  main::print21_msg#1 = phi( main::print21/main::print21_msg#3, main::print21_@2/main::print21_msg#2 )
  main::print21_$0 = 0 != main::print21_msg#1[main::print21_i#2]
  if(main::print21_$0) goto main::print21_@2
  to:main::@1
main::print21_@2: scope:[main]  from main::print21_@1
  main::print21_j#2 = phi( main::print21_@1/main::print21_j#3 )
  main::print21_at#1 = phi( main::print21_@1/main::print21_at#2 )
  main::print21_i#3 = phi( main::print21_@1/main::print21_i#2 )
  main::print21_msg#2 = phi( main::print21_@1/main::print21_msg#1 )
  main::print21_at#1[main::print21_j#2] = main::print21_msg#2[main::print21_i#3]
  main::print21_j#1 = main::print21_j#2 + 2
  main::print21_i#1 = ++ main::print21_i#3
  to:main::print21_@1
main::@1: scope:[main]  from main::print21_@1
  main::$1 = screen + $50
  main::print22_at#0 = main::$1
  main::print22_msg#0 = main::hello
  to:main::print22
main::print22: scope:[main]  from main::@1
  main::print22_at#3 = phi( main::@1/main::print22_at#0 )
  main::print22_msg#3 = phi( main::@1/main::print22_msg#0 )
  main::print22_j#0 = 0
  main::print22_i#0 = 0
  to:main::print22_@1
main::print22_@1: scope:[main]  from main::print22 main::print22_@2
  main::print22_j#3 = phi( main::print22/main::print22_j#0, main::print22_@2/main::print22_j#1 )
  main::print22_at#2 = phi( main::print22/main::print22_at#3, main::print22_@2/main::print22_at#1 )
  main::print22_i#2 = phi( main::print22/main::print22_i#0, main::print22_@2/main::print22_i#1 )
  main::print22_msg#1 = phi( main::print22/main::print22_msg#3, main::print22_@2/main::print22_msg#2 )
  main::print22_$0 = 0 != main::print22_msg#1[main::print22_i#2]
  if(main::print22_$0) goto main::print22_@2
  to:main::@return
main::print22_@2: scope:[main]  from main::print22_@1
  main::print22_j#2 = phi( main::print22_@1/main::print22_j#3 )
  main::print22_at#1 = phi( main::print22_@1/main::print22_at#2 )
  main::print22_i#3 = phi( main::print22_@1/main::print22_i#2 )
  main::print22_msg#2 = phi( main::print22_@1/main::print22_msg#1 )
  main::print22_at#1[main::print22_j#2] = main::print22_msg#2[main::print22_i#3]
  main::print22_j#1 = main::print22_j#2 + 2
  main::print22_i#1 = ++ main::print22_i#3
  to:main::print22_@1
main::@return: scope:[main]  from main::print22_@1
  return 
  to:@return

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  call main
  to:__start::@2
__start::@2: scope:[__start]  from __start::@1
  to:__start::@return
__start::@return: scope:[__start]  from __start::@2
  return 
  to:@return

SYMBOL TABLE SSA
void __start()
void main()
char *main::$1
__constant char *main::hello = "hello world!"
bool main::print21_$0
char *main::print21_at
char *main::print21_at#0
char *main::print21_at#1
char *main::print21_at#2
char *main::print21_at#3
char main::print21_i
char main::print21_i#0
char main::print21_i#1
char main::print21_i#2
char main::print21_i#3
char main::print21_j
char main::print21_j#0
char main::print21_j#1
char main::print21_j#2
char main::print21_j#3
char *main::print21_msg
char *main::print21_msg#0
char *main::print21_msg#1
char *main::print21_msg#2
char *main::print21_msg#3
bool main::print22_$0
char *main::print22_at
char *main::print22_at#0
char *main::print22_at#1
char *main::print22_at#2
char *main::print22_at#3
char main::print22_i
char main::print22_i#0
char main::print22_i#1
char main::print22_i#2
char main::print22_i#3
char main::print22_j
char main::print22_j#0
char main::print22_j#1
char main::print22_j#2
char main::print22_j#3
char *main::print22_msg
char *main::print22_msg#0
char *main::print22_msg#1
char *main::print22_msg#2
char *main::print22_msg#3
__constant char *screen = (char *)$400

Adding number conversion cast (unumber) 0 in main::print21_$0 = 0 != main::print21_msg#1[main::print21_i#2]
Adding number conversion cast (unumber) 2 in main::print21_j#1 = main::print21_j#2 + 2
Adding number conversion cast (unumber) $50 in main::$1 = screen + $50
Adding number conversion cast (unumber) 0 in main::print22_$0 = 0 != main::print22_msg#1[main::print22_i#2]
Adding number conversion cast (unumber) 2 in main::print22_j#1 = main::print22_j#2 + 2
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant pointer cast (char *) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast $50
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $50
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias main::print21_msg#0 = main::print21_msg#3 
Alias main::print21_at#0 = main::print21_at#3 
Alias main::print21_msg#1 = main::print21_msg#2 
Alias main::print21_i#2 = main::print21_i#3 
Alias main::print21_at#1 = main::print21_at#2 
Alias main::print21_j#2 = main::print21_j#3 
Alias main::print22_at#0 = main::$1 main::print22_at#3 
Alias main::print22_msg#0 = main::print22_msg#3 
Alias main::print22_msg#1 = main::print22_msg#2 
Alias main::print22_i#2 = main::print22_i#3 
Alias main::print22_at#1 = main::print22_at#2 
Alias main::print22_j#2 = main::print22_j#3 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values main::print21_msg#1 main::print21_msg#0
Identical Phi Values main::print21_at#1 main::print21_at#0
Identical Phi Values main::print22_msg#1 main::print22_msg#0
Identical Phi Values main::print22_at#1 main::print22_at#0
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition main::print21_$0 [6] if(0!=main::print21_msg#0[main::print21_i#2]) goto main::print21_@2
Simple Condition main::print22_$0 [16] if(0!=main::print22_msg#0[main::print22_i#2]) goto main::print22_@2
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant right-side identified [10] main::print22_at#0 = screen + $50
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::print21_at#0 = screen
Constant main::print21_msg#0 = main::hello
Constant main::print21_j#0 = 0
Constant main::print21_i#0 = 0
Constant main::print22_at#0 = screen+$50
Constant main::print22_msg#0 = main::hello
Constant main::print22_j#0 = 0
Constant main::print22_i#0 = 0
Successful SSA optimization Pass2ConstantIdentification
Removing unused procedure __start
Removing unused procedure block __start
Removing unused procedure block __start::__init1
Removing unused procedure block __start::@1
Removing unused procedure block __start::@2
Removing unused procedure block __start::@return
Successful SSA optimization PassNEliminateEmptyStart
Inlining constant with var siblings main::print21_j#0
Inlining constant with var siblings main::print21_i#0
Inlining constant with var siblings main::print22_j#0
Inlining constant with var siblings main::print22_i#0
Constant inlined main::print22_msg#0 = main::hello
Constant inlined main::print22_i#0 = 0
Constant inlined main::print21_i#0 = 0
Constant inlined main::print22_j#0 = 0
Constant inlined main::print21_j#0 = 0
Constant inlined main::print21_at#0 = screen
Constant inlined main::print21_msg#0 = main::hello
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of main
Adding NOP phi() at start of main::print21
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::print22
CALL GRAPH

Created 4 initial phi equivalence classes
Coalesced [12] main::print22_i#4 = main::print22_i#1
Coalesced [13] main::print22_j#4 = main::print22_j#1
Coalesced [17] main::print21_i#4 = main::print21_i#1
Coalesced [18] main::print21_j#4 = main::print21_j#1
Coalesced down to 4 phi equivalence classes
Culled Empty Block label main::@1
Adding NOP phi() at start of main
Adding NOP phi() at start of main::print21
Adding NOP phi() at start of main::print22

FINAL CONTROL FLOW GRAPH

void main()
main: scope:[main]  from
  [0] phi()
  to:main::print21
main::print21: scope:[main]  from main
  [1] phi()
  to:main::print21_@1
main::print21_@1: scope:[main]  from main::print21 main::print21_@2
  [2] main::print21_j#2 = phi( main::print21/0, main::print21_@2/main::print21_j#1 )
  [2] main::print21_i#2 = phi( main::print21/0, main::print21_@2/main::print21_i#1 )
  [3] if(0!=main::hello[main::print21_i#2]) goto main::print21_@2
  to:main::print22
main::print22: scope:[main]  from main::print21_@1
  [4] phi()
  to:main::print22_@1
main::print22_@1: scope:[main]  from main::print22 main::print22_@2
  [5] main::print22_j#2 = phi( main::print22/0, main::print22_@2/main::print22_j#1 )
  [5] main::print22_i#2 = phi( main::print22/0, main::print22_@2/main::print22_i#1 )
  [6] if(0!=main::hello[main::print22_i#2]) goto main::print22_@2
  to:main::@return
main::@return: scope:[main]  from main::print22_@1
  [7] return 
  to:@return
main::print22_@2: scope:[main]  from main::print22_@1
  [8] main::print22_at#0[main::print22_j#2] = main::hello[main::print22_i#2]
  [9] main::print22_j#1 = main::print22_j#2 + 2
  [10] main::print22_i#1 = ++ main::print22_i#2
  to:main::print22_@1
main::print21_@2: scope:[main]  from main::print21_@1
  [11] screen[main::print21_j#2] = main::hello[main::print21_i#2]
  [12] main::print21_j#1 = main::print21_j#2 + 2
  [13] main::print21_i#1 = ++ main::print21_i#2
  to:main::print21_@1


VARIABLE REGISTER WEIGHTS
void main()
char *main::print21_at
char main::print21_i
char main::print21_i#1 // 22.0
char main::print21_i#2 // 11.0
char main::print21_j
char main::print21_j#1 // 11.0
char main::print21_j#2 // 11.0
char *main::print21_msg
char *main::print22_at
char main::print22_i
char main::print22_i#1 // 22.0
char main::print22_i#2 // 11.0
char main::print22_j
char main::print22_j#1 // 11.0
char main::print22_j#2 // 11.0
char *main::print22_msg

Initial phi equivalence classes
[ main::print21_i#2 main::print21_i#1 ]
[ main::print21_j#2 main::print21_j#1 ]
[ main::print22_i#2 main::print22_i#1 ]
[ main::print22_j#2 main::print22_j#1 ]
Complete equivalence classes
[ main::print21_i#2 main::print21_i#1 ]
[ main::print21_j#2 main::print21_j#1 ]
[ main::print22_i#2 main::print22_i#1 ]
[ main::print22_j#2 main::print22_j#1 ]
Allocated zp[1]:2 [ main::print21_i#2 main::print21_i#1 ]
Allocated zp[1]:3 [ main::print22_i#2 main::print22_i#1 ]
Allocated zp[1]:4 [ main::print21_j#2 main::print21_j#1 ]
Allocated zp[1]:5 [ main::print22_j#2 main::print22_j#1 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [3] if(0!=main::hello[main::print21_i#2]) goto main::print21_@2 [ main::print21_i#2 main::print21_j#2 ] (  [ main::print21_i#2 main::print21_j#2 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::print21_i#2 main::print21_i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::print21_j#2 main::print21_j#1 ]
Statement [6] if(0!=main::hello[main::print22_i#2]) goto main::print22_@2 [ main::print22_i#2 main::print22_j#2 ] (  [ main::print22_i#2 main::print22_j#2 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::print22_i#2 main::print22_i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::print22_j#2 main::print22_j#1 ]
Statement [8] main::print22_at#0[main::print22_j#2] = main::hello[main::print22_i#2] [ main::print22_i#2 main::print22_j#2 ] (  [ main::print22_i#2 main::print22_j#2 ] { }  ) always clobbers reg byte a 
Statement [11] screen[main::print21_j#2] = main::hello[main::print21_i#2] [ main::print21_i#2 main::print21_j#2 ] (  [ main::print21_i#2 main::print21_j#2 ] { }  ) always clobbers reg byte a 
Statement [3] if(0!=main::hello[main::print21_i#2]) goto main::print21_@2 [ main::print21_i#2 main::print21_j#2 ] (  [ main::print21_i#2 main::print21_j#2 ] { }  ) always clobbers reg byte a 
Statement [6] if(0!=main::hello[main::print22_i#2]) goto main::print22_@2 [ main::print22_i#2 main::print22_j#2 ] (  [ main::print22_i#2 main::print22_j#2 ] { }  ) always clobbers reg byte a 
Statement [8] main::print22_at#0[main::print22_j#2] = main::hello[main::print22_i#2] [ main::print22_i#2 main::print22_j#2 ] (  [ main::print22_i#2 main::print22_j#2 ] { }  ) always clobbers reg byte a 
Statement [11] screen[main::print21_j#2] = main::hello[main::print21_i#2] [ main::print21_i#2 main::print21_j#2 ] (  [ main::print21_i#2 main::print21_j#2 ] { }  ) always clobbers reg byte a 
Potential registers zp[1]:2 [ main::print21_i#2 main::print21_i#1 ] : zp[1]:2 , reg byte x , reg byte y , 
Potential registers zp[1]:4 [ main::print21_j#2 main::print21_j#1 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[1]:3 [ main::print22_i#2 main::print22_i#1 ] : zp[1]:3 , reg byte x , reg byte y , 
Potential registers zp[1]:5 [ main::print22_j#2 main::print22_j#1 ] : zp[1]:5 , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [main] 33: zp[1]:2 [ main::print21_i#2 main::print21_i#1 ] 33: zp[1]:3 [ main::print22_i#2 main::print22_i#1 ] 22: zp[1]:4 [ main::print21_j#2 main::print21_j#1 ] 22: zp[1]:5 [ main::print22_j#2 main::print22_j#1 ] 
Uplift Scope [] 

Uplifting [main] best 732 combination reg byte y [ main::print21_i#2 main::print21_i#1 ] reg byte y [ main::print22_i#2 main::print22_i#1 ] reg byte x [ main::print21_j#2 main::print21_j#1 ] reg byte x [ main::print22_j#2 main::print22_j#1 ] 
Uplifting [] best 732 combination 

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
  // Upstart
  // Commodore 64 PRG executable file
.file [name="helloworld2-inline.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  .label screen = $400
.segment Code
  // main
main: {
    .label print22_at = screen+$50
    // [1] phi from main to main::print21 [phi:main->main::print21]
  print21_from_main:
    jmp print21
    // main::print21
  print21:
    // [2] phi from main::print21 to main::print21_@1 [phi:main::print21->main::print21_@1]
  print21___b1_from_print21:
    // [2] phi main::print21_j#2 = 0 [phi:main::print21->main::print21_@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [2] phi main::print21_i#2 = 0 [phi:main::print21->main::print21_@1#1] -- vbuyy=vbuc1 
    ldy #0
    jmp print21___b1
    // main::print21_@1
  print21___b1:
    // [3] if(0!=main::hello[main::print21_i#2]) goto main::print21_@2 -- 0_neq_pbuc1_derefidx_vbuyy_then_la1 
    lda hello,y
    cmp #0
    bne print21___b2
    // [4] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22]
  print22_from_print21___b1:
    jmp print22
    // main::print22
  print22:
    // [5] phi from main::print22 to main::print22_@1 [phi:main::print22->main::print22_@1]
  print22___b1_from_print22:
    // [5] phi main::print22_j#2 = 0 [phi:main::print22->main::print22_@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [5] phi main::print22_i#2 = 0 [phi:main::print22->main::print22_@1#1] -- vbuyy=vbuc1 
    ldy #0
    jmp print22___b1
    // main::print22_@1
  print22___b1:
    // [6] if(0!=main::hello[main::print22_i#2]) goto main::print22_@2 -- 0_neq_pbuc1_derefidx_vbuyy_then_la1 
    lda hello,y
    cmp #0
    bne print22___b2
    jmp __breturn
    // main::@return
  __breturn:
    // [7] return 
    rts
    // main::print22_@2
  print22___b2:
    // [8] main::print22_at#0[main::print22_j#2] = main::hello[main::print22_i#2] -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy 
    lda hello,y
    sta print22_at,x
    // [9] main::print22_j#1 = main::print22_j#2 + 2 -- vbuxx=vbuxx_plus_2 
    inx
    inx
    // [10] main::print22_i#1 = ++ main::print22_i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [5] phi from main::print22_@2 to main::print22_@1 [phi:main::print22_@2->main::print22_@1]
  print22___b1_from_print22___b2:
    // [5] phi main::print22_j#2 = main::print22_j#1 [phi:main::print22_@2->main::print22_@1#0] -- register_copy 
    // [5] phi main::print22_i#2 = main::print22_i#1 [phi:main::print22_@2->main::print22_@1#1] -- register_copy 
    jmp print22___b1
    // main::print21_@2
  print21___b2:
    // [11] screen[main::print21_j#2] = main::hello[main::print21_i#2] -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy 
    lda hello,y
    sta screen,x
    // [12] main::print21_j#1 = main::print21_j#2 + 2 -- vbuxx=vbuxx_plus_2 
    inx
    inx
    // [13] main::print21_i#1 = ++ main::print21_i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [2] phi from main::print21_@2 to main::print21_@1 [phi:main::print21_@2->main::print21_@1]
  print21___b1_from_print21___b2:
    // [2] phi main::print21_j#2 = main::print21_j#1 [phi:main::print21_@2->main::print21_@1#0] -- register_copy 
    // [2] phi main::print21_i#2 = main::print21_i#1 [phi:main::print21_@2->main::print21_@1#1] -- register_copy 
    jmp print21___b1
  .segment Data
    hello: .text "hello world!"
    .byte 0
}
  // File Data

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp print21
Removing instruction jmp print21___b1
Removing instruction jmp print22
Removing instruction jmp print22___b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction print21_from_main:
Removing instruction print21___b1_from_print21:
Removing instruction print22_from_print21___b1:
Removing instruction print22___b1_from_print22:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction print21:
Removing instruction print22:
Removing instruction __breturn:
Removing instruction print22___b1_from_print22___b2:
Removing instruction print21___b1_from_print21___b2:
Succesful ASM optimization Pass5UnusedLabelElimination

FINAL SYMBOL TABLE
void main()
__constant char *main::hello = "hello world!"
char *main::print21_at
char main::print21_i
char main::print21_i#1 // reg byte y 22.0
char main::print21_i#2 // reg byte y 11.0
char main::print21_j
char main::print21_j#1 // reg byte x 11.0
char main::print21_j#2 // reg byte x 11.0
char *main::print21_msg
char *main::print22_at
__constant char *main::print22_at#0 = screen+$50 // print22_at
char main::print22_i
char main::print22_i#1 // reg byte y 22.0
char main::print22_i#2 // reg byte y 11.0
char main::print22_j
char main::print22_j#1 // reg byte x 11.0
char main::print22_j#2 // reg byte x 11.0
char *main::print22_msg
__constant char *screen = (char *) 1024

reg byte y [ main::print21_i#2 main::print21_i#1 ]
reg byte x [ main::print21_j#2 main::print21_j#1 ]
reg byte y [ main::print22_i#2 main::print22_i#1 ]
reg byte x [ main::print22_j#2 main::print22_j#1 ]


FINAL ASSEMBLER
Score: 636

  // File Comments
  // Upstart
  // Commodore 64 PRG executable file
.file [name="helloworld2-inline.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  .label screen = $400
.segment Code
  // main
main: {
    .label print22_at = screen+$50
    // [1] phi from main to main::print21 [phi:main->main::print21]
    // main::print21
    // [2] phi from main::print21 to main::print21_@1 [phi:main::print21->main::print21_@1]
    // [2] phi main::print21_j#2 = 0 [phi:main::print21->main::print21_@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [2] phi main::print21_i#2 = 0 [phi:main::print21->main::print21_@1#1] -- vbuyy=vbuc1 
    ldy #0
    // main::print21_@1
  print21___b1:
    // for(byte i=0; msg[i]; i++)
    // [3] if(0!=main::hello[main::print21_i#2]) goto main::print21_@2 -- 0_neq_pbuc1_derefidx_vbuyy_then_la1 
    lda hello,y
    cmp #0
    bne print21___b2
    // [4] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22]
    // main::print22
    // [5] phi from main::print22 to main::print22_@1 [phi:main::print22->main::print22_@1]
    // [5] phi main::print22_j#2 = 0 [phi:main::print22->main::print22_@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [5] phi main::print22_i#2 = 0 [phi:main::print22->main::print22_@1#1] -- vbuyy=vbuc1 
    ldy #0
    // main::print22_@1
  print22___b1:
    // for(byte i=0; msg[i]; i++)
    // [6] if(0!=main::hello[main::print22_i#2]) goto main::print22_@2 -- 0_neq_pbuc1_derefidx_vbuyy_then_la1 
    lda hello,y
    cmp #0
    bne print22___b2
    // main::@return
    // }
    // [7] return 
    rts
    // main::print22_@2
  print22___b2:
    // at[j] = msg[i]
    // [8] main::print22_at#0[main::print22_j#2] = main::hello[main::print22_i#2] -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy 
    lda hello,y
    sta print22_at,x
    // j += 2
    // [9] main::print22_j#1 = main::print22_j#2 + 2 -- vbuxx=vbuxx_plus_2 
    inx
    inx
    // for(byte i=0; msg[i]; i++)
    // [10] main::print22_i#1 = ++ main::print22_i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [5] phi from main::print22_@2 to main::print22_@1 [phi:main::print22_@2->main::print22_@1]
    // [5] phi main::print22_j#2 = main::print22_j#1 [phi:main::print22_@2->main::print22_@1#0] -- register_copy 
    // [5] phi main::print22_i#2 = main::print22_i#1 [phi:main::print22_@2->main::print22_@1#1] -- register_copy 
    jmp print22___b1
    // main::print21_@2
  print21___b2:
    // at[j] = msg[i]
    // [11] screen[main::print21_j#2] = main::hello[main::print21_i#2] -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy 
    lda hello,y
    sta screen,x
    // j += 2
    // [12] main::print21_j#1 = main::print21_j#2 + 2 -- vbuxx=vbuxx_plus_2 
    inx
    inx
    // for(byte i=0; msg[i]; i++)
    // [13] main::print21_i#1 = ++ main::print21_i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [2] phi from main::print21_@2 to main::print21_@1 [phi:main::print21_@2->main::print21_@1]
    // [2] phi main::print21_j#2 = main::print21_j#1 [phi:main::print21_@2->main::print21_@1#0] -- register_copy 
    // [2] phi main::print21_i#2 = main::print21_i#1 [phi:main::print21_@2->main::print21_@1#1] -- register_copy 
    jmp print21___b1
  .segment Data
    hello: .text "hello world!"
    .byte 0
}
  // File Data

