
CONTROL FLOW GRAPH SSA

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

void long1()
long1: scope:[long1]  from main
  long1::i#0 = 0
  to:long1::@1
long1::@1: scope:[long1]  from long1 long1::@1
  long1::i#2 = phi( long1/long1::i#0, long1::@1/long1::i#1 )
  asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop  }
  long1::SCREEN[long1::i#2] = long1::i#2
  long1::i#1 = long1::i#2 + rangenext(0,$a)
  long1::$0 = long1::i#1 != rangelast(0,$a)
  if(long1::$0) goto long1::@1
  to:long1::@return
long1::@return: scope:[long1]  from long1::@1
  return 
  to:@return

void long2()
long2: scope:[long2]  from main::@1
  long2::i#0 = 0
  to:long2::@1
long2::@1: scope:[long2]  from long2 long2::@1
  long2::i#2 = phi( long2/long2::i#0, long2::@1/long2::i#1 )
  asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop  }
  long2::SCREEN[long2::i#2] = long2::i#2
  long2::i#1 = long2::i#2 + rangenext(0,$a)
  long2::$0 = long2::i#1 != rangelast(0,$a)
  if(long2::$0) goto long2::@1
  to:long2::@return
long2::@return: scope:[long2]  from long2::@1
  return 
  to:@return

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

SYMBOL TABLE SSA
void __start()
void long1()
bool long1::$0
__constant char *long1::SCREEN = (char *)$400
char long1::i
char long1::i#0
char long1::i#1
char long1::i#2
void long2()
bool long2::$0
__constant char *long2::SCREEN = (char *)$400
char long2::i
char long2::i#0
char long2::i#1
char long2::i#2
void main()

Simplifying constant pointer cast (char *) 1024
Simplifying constant pointer cast (char *) 1024
Successful SSA optimization PassNCastSimplification
Simple Condition long1::$0 [9] if(long1::i#1!=rangelast(0,$a)) goto long1::@1
Simple Condition long2::$0 [17] if(long2::i#1!=rangelast(0,$a)) goto long2::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant long1::i#0 = 0
Constant long2::i#0 = 0
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value [7] long1::i#1 = ++ long1::i#2 to ++
Resolved ranged comparison value [9] if(long1::i#1!=rangelast(0,$a)) goto long1::@1 to $b
Resolved ranged next value [15] long2::i#1 = ++ long2::i#2 to ++
Resolved ranged comparison value [17] if(long2::i#1!=rangelast(0,$a)) goto long2::@1 to $b
Removing unused procedure __start
Removing unused procedure block __start
Removing unused procedure block __start::@1
Removing unused procedure block __start::@return
Successful SSA optimization PassNEliminateEmptyStart
Adding number conversion cast (unumber) $b in [7] if(long1::i#1!=$b) goto long1::@1
Adding number conversion cast (unumber) $b in [13] if(long2::i#1!=$b) goto long2::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast $b
Simplifying constant integer cast $b
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) $b
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inlining constant with var siblings long1::i#0
Inlining constant with var siblings long2::i#0
Constant inlined long1::i#0 = 0
Constant inlined long2::i#0 = 0
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting long1::@2(between long1::@1 and long1::@1)
Added new block during phi lifting long2::@2(between long2::@1 and long2::@1)
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 long1
Adding NOP phi() at start of long2
CALL GRAPH
Calls in [main] to long1:1 long2:3 

Created 2 initial phi equivalence classes
Coalesced [13] long1::i#3 = long1::i#1
Coalesced [21] long2::i#3 = long2::i#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block label main::@2
Culled Empty Block label long1::@2
Culled Empty Block label long2::@2
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of long1
Adding NOP phi() at start of long2

FINAL CONTROL FLOW GRAPH

void main()
main: scope:[main]  from
  [0] phi()
  [1] call long1
  to:main::@1
main::@1: scope:[main]  from main
  [2] phi()
  [3] call long2
  to:main::@return
main::@return: scope:[main]  from main::@1
  [4] return 
  to:@return

void long1()
long1: scope:[long1]  from main
  [5] phi()
  to:long1::@1
long1::@1: scope:[long1]  from long1 long1::@1
  [6] long1::i#2 = phi( long1/0, long1::@1/long1::i#1 )
  asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop  }
  [8] long1::SCREEN[long1::i#2] = long1::i#2
  [9] long1::i#1 = ++ long1::i#2
  [10] if(long1::i#1!=$b) goto long1::@1
  to:long1::@return
long1::@return: scope:[long1]  from long1::@1
  [11] return 
  to:@return

void long2()
long2: scope:[long2]  from main::@1
  [12] phi()
  to:long2::@1
long2::@1: scope:[long2]  from long2 long2::@1
  [13] long2::i#2 = phi( long2/0, long2::@1/long2::i#1 )
  asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop  }
  [15] long2::SCREEN[long2::i#2] = long2::i#2
  [16] long2::i#1 = ++ long2::i#2
  [17] if(long2::i#1!=$b) goto long2::@1
  to:long2::@return
long2::@return: scope:[long2]  from long2::@1
  [18] return 
  to:@return


VARIABLE REGISTER WEIGHTS
void long1()
char long1::i
char long1::i#1 // 151.5
char long1::i#2 // 134.66666666666666
void long2()
char long2::i
char long2::i#1 // 151.5
char long2::i#2 // 134.66666666666666
void main()

Initial phi equivalence classes
[ long1::i#2 long1::i#1 ]
[ long2::i#2 long2::i#1 ]
Complete equivalence classes
[ long1::i#2 long1::i#1 ]
[ long2::i#2 long2::i#1 ]
Allocated zp[1]:2 [ long1::i#2 long1::i#1 ]
Allocated zp[1]:3 [ long2::i#2 long2::i#1 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp[1]:2 [ long1::i#2 long1::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:3 [ long2::i#2 long2::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [long1] 286.17: zp[1]:2 [ long1::i#2 long1::i#1 ] 
Uplift Scope [long2] 286.17: zp[1]:3 [ long2::i#2 long2::i#1 ] 
Uplift Scope [main] 
Uplift Scope [] 

Uplifting [long1] best 10886 combination reg byte x [ long1::i#2 long1::i#1 ] 
Uplifting [long2] best 10766 combination reg byte x [ long2::i#2 long2::i#1 ] 
Uplifting [main] best 10766 combination 
Uplifting [] best 10766 combination 

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Minimal example program generating two long jumps
  // Upstart
  // Commodore 64 PRG executable file
.file [name="longjump2.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
.segment Code
  // main
main: {
    // [1] call long1
    // [5] phi from main to long1 [phi:main->long1]
  long1_from_main:
    jsr long1
    // [2] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    jmp __b1
    // main::@1
  __b1:
    // [3] call long2
    // [12] phi from main::@1 to long2 [phi:main::@1->long2]
  long2_from___b1:
    jsr long2
    jmp __breturn
    // main::@return
  __breturn:
    // [4] return 
    rts
}
  // long1
long1: {
    .label SCREEN = $400
    // [6] phi from long1 to long1::@1 [phi:long1->long1::@1]
  __b1_from_long1:
    // [6] phi long1::i#2 = 0 [phi:long1->long1::@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // [6] phi from long1::@1 to long1::@1 [phi:long1::@1->long1::@1]
  __b1_from___b1:
    // [6] phi long1::i#2 = long1::i#1 [phi:long1::@1->long1::@1#0] -- register_copy 
    jmp __b1
    // long1::@1
  __b1:
    // asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop  }
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    // [8] long1::SCREEN[long1::i#2] = long1::i#2 -- pbuc1_derefidx_vbuxx=vbuxx 
    txa
    sta SCREEN,x
    // [9] long1::i#1 = ++ long1::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [10] if(long1::i#1!=$b) goto long1::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$b
    bne __b1_from___b1
    jmp __breturn
    // long1::@return
  __breturn:
    // [11] return 
    rts
}
  // long2
long2: {
    .label SCREEN = $400
    // [13] phi from long2 to long2::@1 [phi:long2->long2::@1]
  __b1_from_long2:
    // [13] phi long2::i#2 = 0 [phi:long2->long2::@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // [13] phi from long2::@1 to long2::@1 [phi:long2::@1->long2::@1]
  __b1_from___b1:
    // [13] phi long2::i#2 = long2::i#1 [phi:long2::@1->long2::@1#0] -- register_copy 
    jmp __b1
    // long2::@1
  __b1:
    // asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop  }
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    // [15] long2::SCREEN[long2::i#2] = long2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx 
    txa
    sta SCREEN,x
    // [16] long2::i#1 = ++ long2::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [17] if(long2::i#1!=$b) goto long2::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$b
    bne __b1_from___b1
    jmp __breturn
    // long2::@return
  __breturn:
    // [18] return 
    rts
}
  // File Data

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b1 with __b1
Removing instruction __b1_from_main:
Removing instruction long2_from___b1:
Removing instruction __b1_from___b1:
Removing instruction __b1_from___b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction long1_from_main:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b1_from_long1:
Removing instruction __breturn:
Removing instruction __b1_from_long2:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Removing instruction jmp __b1
Removing instruction jmp __b1
Succesful ASM optimization Pass5NextJumpElimination
Fixing long branch [279] bne __b1 to beq
Fixing long branch [548] bne __b1 to beq

FINAL SYMBOL TABLE
void long1()
__constant char *long1::SCREEN = (char *) 1024
char long1::i
char long1::i#1 // reg byte x 151.5
char long1::i#2 // reg byte x 134.66666666666666
void long2()
__constant char *long2::SCREEN = (char *) 1024
char long2::i
char long2::i#1 // reg byte x 151.5
char long2::i#2 // reg byte x 134.66666666666666
void main()

reg byte x [ long1::i#2 long1::i#1 ]
reg byte x [ long2::i#2 long2::i#1 ]


FINAL ASSEMBLER
Score: 10640

  // File Comments
// Minimal example program generating two long jumps
  // Upstart
  // Commodore 64 PRG executable file
.file [name="longjump2.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
.segment Code
  // main
main: {
    // long1()
    // [1] call long1
    // [5] phi from main to long1 [phi:main->long1]
    jsr long1
    // [2] phi from main to main::@1 [phi:main->main::@1]
    // main::@1
    // long2()
    // [3] call long2
    // [12] phi from main::@1 to long2 [phi:main::@1->long2]
    jsr long2
    // main::@return
    // }
    // [4] return 
    rts
}
  // long1
long1: {
    .label SCREEN = $400
    // [6] phi from long1 to long1::@1 [phi:long1->long1::@1]
    // [6] phi long1::i#2 = 0 [phi:long1->long1::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [6] phi from long1::@1 to long1::@1 [phi:long1::@1->long1::@1]
    // [6] phi long1::i#2 = long1::i#1 [phi:long1::@1->long1::@1#0] -- register_copy 
    // long1::@1
  __b1:
    // asm
    // asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop  }
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    // SCREEN[i] = i
    // [8] long1::SCREEN[long1::i#2] = long1::i#2 -- pbuc1_derefidx_vbuxx=vbuxx 
    txa
    sta SCREEN,x
    // for(byte i : 0..10)
    // [9] long1::i#1 = ++ long1::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [10] if(long1::i#1!=$b) goto long1::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$b
    beq !__b1+
    jmp __b1
  !__b1:
    // long1::@return
    // }
    // [11] return 
    rts
}
  // long2
long2: {
    .label SCREEN = $400
    // [13] phi from long2 to long2::@1 [phi:long2->long2::@1]
    // [13] phi long2::i#2 = 0 [phi:long2->long2::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [13] phi from long2::@1 to long2::@1 [phi:long2::@1->long2::@1]
    // [13] phi long2::i#2 = long2::i#1 [phi:long2::@1->long2::@1#0] -- register_copy 
    // long2::@1
  __b1:
    // asm
    // asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop  }
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    // SCREEN[i] = i
    // [15] long2::SCREEN[long2::i#2] = long2::i#2 -- pbuc1_derefidx_vbuxx=vbuxx 
    txa
    sta SCREEN,x
    // for(byte i : 0..10)
    // [16] long2::i#1 = ++ long2::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [17] if(long2::i#1!=$b) goto long2::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$b
    beq !__b1+
    jmp __b1
  !__b1:
    // long2::@return
    // }
    // [18] return 
    rts
}
  // File Data

