Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Inlined call call vicSelectGfxBank (byte*) SCREEN 
Inlined call (byte~) main::$4 ← call toD018 (byte*) SCREEN (byte*) BITMAP 
Inlined call (word~) point_init::$7 ← call abs16s (signed word) point_init::x_diff 
Inlined call (word~) point_init::$8 ← call abs16s (signed word) point_init::y_diff 

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
  (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
  (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
  (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
  (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
  (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
  (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
  (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
  (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
  (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
  (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
  (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
  (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
  (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
  (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
  (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
  (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
  (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
  (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
  (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
  (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
  (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
  (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
  (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
  (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
  (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
  (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
  (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
  (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
  (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
  (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
  (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
  (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
  (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
  (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
  (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
  (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
  (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
  (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
  (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
  (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
  (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
  (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
  (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
  (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
  (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
  (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
  (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
  (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
  (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
  (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
  (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
  (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
  (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
  (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
  (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
  (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
  (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
  (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
  (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
  to:@4
@4: scope:[]  from @begin
  (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@6
@6: scope:[]  from @4
  (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@9
divr16u: scope:[divr16u]  from divr16s::@4
  (word) divr16u::divisor#5 ← phi( divr16s::@4/(word) divr16u::divisor#0 )
  (word) divr16u::dividend#4 ← phi( divr16s::@4/(word) divr16u::dividend#1 )
  (word) divr16u::rem#9 ← phi( divr16s::@4/(word) divr16u::rem#3 )
  (word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:divr16u::@1
divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
  (byte) divr16u::i#5 ← phi( divr16u/(byte) divr16u::i#0 divr16u::@3/(byte) divr16u::i#1 )
  (word) divr16u::divisor#3 ← phi( divr16u/(word) divr16u::divisor#5 divr16u::@3/(word) divr16u::divisor#6 )
  (word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 )
  (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#4 divr16u::@3/(word) divr16u::dividend#5 )
  (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#9 divr16u::@3/(word) divr16u::rem#10 )
  (word~) divr16u::$0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) divr16u::rem#0 ← (word~) divr16u::$0
  (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
  (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
  (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16u::$4 ← ! (bool~) divr16u::$3
  if((bool~) divr16u::$4) goto divr16u::@2
  to:divr16u::@4
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  (byte) divr16u::i#3 ← phi( divr16u::@1/(byte) divr16u::i#5 divr16u::@4/(byte) divr16u::i#6 )
  (word) divr16u::divisor#1 ← phi( divr16u::@1/(word) divr16u::divisor#3 divr16u::@4/(word) divr16u::divisor#4 )
  (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
  (word) divr16u::quotient#3 ← phi( divr16u::@1/(word) divr16u::quotient#6 divr16u::@4/(word) divr16u::quotient#7 )
  (word) divr16u::dividend#3 ← phi( divr16u::@1/(word) divr16u::dividend#2 divr16u::@4/(word) divr16u::dividend#6 )
  (word~) divr16u::$6 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) divr16u::dividend#0 ← (word~) divr16u::$6
  (word~) divr16u::$7 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) divr16u::quotient#1 ← (word~) divr16u::$7
  (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1
  (bool~) divr16u::$9 ← ! (bool~) divr16u::$8
  if((bool~) divr16u::$9) goto divr16u::@3
  to:divr16u::@5
divr16u::@4: scope:[divr16u]  from divr16u::@1
  (byte) divr16u::i#6 ← phi( divr16u::@1/(byte) divr16u::i#5 )
  (word) divr16u::divisor#4 ← phi( divr16u::@1/(word) divr16u::divisor#3 )
  (word) divr16u::quotient#7 ← phi( divr16u::@1/(word) divr16u::quotient#6 )
  (word) divr16u::dividend#6 ← phi( divr16u::@1/(word) divr16u::dividend#2 )
  (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 )
  (word/dword~) divr16u::$5 ← (word) divr16u::rem#6 | (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) divr16u::rem#1 ← (word/dword~) divr16u::$5
  to:divr16u::@2
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  (word) divr16u::divisor#6 ← phi( divr16u::@2/(word) divr16u::divisor#1 divr16u::@5/(word) divr16u::divisor#2 )
  (word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
  (word) divr16u::dividend#5 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#7 )
  (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
  (byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 )
  (byte) divr16u::i#1 ← (byte) divr16u::i#2 + rangenext(0,15)
  (bool~) divr16u::$11 ← (byte) divr16u::i#1 != rangelast(0,15)
  if((bool~) divr16u::$11) goto divr16u::@1
  to:divr16u::@6
divr16u::@5: scope:[divr16u]  from divr16u::@2
  (word) divr16u::dividend#7 ← phi( divr16u::@2/(word) divr16u::dividend#0 )
  (byte) divr16u::i#4 ← phi( divr16u::@2/(byte) divr16u::i#3 )
  (word) divr16u::divisor#2 ← phi( divr16u::@2/(word) divr16u::divisor#1 )
  (word) divr16u::rem#7 ← phi( divr16u::@2/(word) divr16u::rem#5 )
  (word) divr16u::quotient#4 ← phi( divr16u::@2/(word) divr16u::quotient#1 )
  (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#4
  (word~) divr16u::$10 ← (word) divr16u::rem#7 - (word) divr16u::divisor#2
  (word) divr16u::rem#2 ← (word~) divr16u::$10
  to:divr16u::@3
divr16u::@6: scope:[divr16u]  from divr16u::@3
  (word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 )
  (word) divr16u::rem#8 ← phi( divr16u::@3/(word) divr16u::rem#10 )
  (word) rem16u#1 ← (word) divr16u::rem#8
  (word) divr16u::return#0 ← (word) divr16u::quotient#5
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@6
  (word) rem16u#10 ← phi( divr16u::@6/(word) rem16u#1 )
  (word) divr16u::return#3 ← phi( divr16u::@6/(word) divr16u::return#0 )
  (word) divr16u::return#1 ← (word) divr16u::return#3
  (word) rem16u#2 ← (word) rem16u#10
  return 
  to:@return
@9: scope:[]  from @6
  (word) rem16u#49 ← phi( @6/(word) rem16u#0 )
  (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@10
@10: scope:[]  from @9
  (word) rem16u#43 ← phi( @9/(word) rem16u#49 )
  (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@12
divr16s: scope:[divr16s]  from point_init::@4
  (word) rem16u#50 ← phi( point_init::@4/(word) rem16u#23 )
  (signed word) divr16s::divisor#6 ← phi( point_init::@4/(signed word) divr16s::divisor#0 )
  (signed word) divr16s::rem#1 ← phi( point_init::@4/(signed word) divr16s::rem#0 )
  (signed word) divr16s::dividend#1 ← phi( point_init::@4/(signed word) divr16s::dividend#0 )
  (byte) divr16s::neg#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (word) divr16s::dividendu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (word) divr16s::remu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16s::$0 ← (signed word) divr16s::dividend#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16s::$1 ← (signed word) divr16s::rem#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
  if((bool~) divr16s::$2) goto divr16s::@1
  to:divr16s::@7
divr16s::@1: scope:[divr16s]  from divr16s
  (word) rem16u#41 ← phi( divr16s/(word) rem16u#50 )
  (signed word) divr16s::divisor#4 ← phi( divr16s/(signed word) divr16s::divisor#6 )
  (signed word) divr16s::rem#2 ← phi( divr16s/(signed word) divr16s::rem#1 )
  (signed word) divr16s::dividend#2 ← phi( divr16s/(signed word) divr16s::dividend#1 )
  (signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#2
  (word~) divr16s::$6 ← ((word)) (signed word~) divr16s::$5
  (word) divr16s::dividendu#1 ← (word~) divr16s::$6
  (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#2
  (word~) divr16s::$8 ← ((word)) (signed word~) divr16s::$7
  (word) divr16s::remu#1 ← (word~) divr16s::$8
  (byte) divr16s::neg#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  to:divr16s::@2
divr16s::@7: scope:[divr16s]  from divr16s
  (word) rem16u#42 ← phi( divr16s/(word) rem16u#50 )
  (byte) divr16s::neg#7 ← phi( divr16s/(byte) divr16s::neg#0 )
  (signed word) divr16s::divisor#5 ← phi( divr16s/(signed word) divr16s::divisor#6 )
  (signed word) divr16s::rem#3 ← phi( divr16s/(signed word) divr16s::rem#1 )
  (signed word) divr16s::dividend#3 ← phi( divr16s/(signed word) divr16s::dividend#1 )
  (word~) divr16s::$3 ← ((word)) (signed word) divr16s::dividend#3
  (word) divr16s::dividendu#2 ← (word~) divr16s::$3
  (word~) divr16s::$4 ← ((word)) (signed word) divr16s::rem#3
  (word) divr16s::remu#2 ← (word~) divr16s::$4
  to:divr16s::@2
divr16s::@2: scope:[divr16s]  from divr16s::@1 divr16s::@7
  (word) rem16u#35 ← phi( divr16s::@1/(word) rem16u#41 divr16s::@7/(word) rem16u#42 )
  (word) divr16s::remu#6 ← phi( divr16s::@1/(word) divr16s::remu#1 divr16s::@7/(word) divr16s::remu#2 )
  (word) divr16s::dividendu#6 ← phi( divr16s::@1/(word) divr16s::dividendu#1 divr16s::@7/(word) divr16s::dividendu#2 )
  (byte) divr16s::neg#5 ← phi( divr16s::@1/(byte) divr16s::neg#1 divr16s::@7/(byte) divr16s::neg#7 )
  (signed word) divr16s::divisor#1 ← phi( divr16s::@1/(signed word) divr16s::divisor#4 divr16s::@7/(signed word) divr16s::divisor#5 )
  (word) divr16s::divisoru#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) divr16s::$9 ← (signed word) divr16s::divisor#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) divr16s::$9) goto divr16s::@3
  to:divr16s::@9
divr16s::@3: scope:[divr16s]  from divr16s::@2
  (word) rem16u#26 ← phi( divr16s::@2/(word) rem16u#35 )
  (word) divr16s::remu#4 ← phi( divr16s::@2/(word) divr16s::remu#6 )
  (word) divr16s::dividendu#4 ← phi( divr16s::@2/(word) divr16s::dividendu#6 )
  (byte) divr16s::neg#3 ← phi( divr16s::@2/(byte) divr16s::neg#5 )
  (signed word) divr16s::divisor#2 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 )
  (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#2
  (word~) divr16s::$12 ← ((word)) (signed word~) divr16s::$11
  (word) divr16s::divisoru#1 ← (word~) divr16s::$12
  (byte/word/dword~) divr16s::$13 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) divr16s::neg#2 ← (byte/word/dword~) divr16s::$13
  to:divr16s::@4
divr16s::@9: scope:[divr16s]  from divr16s::@2
  (byte) divr16s::neg#8 ← phi( divr16s::@2/(byte) divr16s::neg#5 )
  (word) rem16u#27 ← phi( divr16s::@2/(word) rem16u#35 )
  (word) divr16s::remu#5 ← phi( divr16s::@2/(word) divr16s::remu#6 )
  (word) divr16s::dividendu#5 ← phi( divr16s::@2/(word) divr16s::dividendu#6 )
  (signed word) divr16s::divisor#3 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 )
  (word~) divr16s::$10 ← ((word)) (signed word) divr16s::divisor#3
  (word) divr16s::divisoru#2 ← (word~) divr16s::$10
  to:divr16s::@4
divr16s::@4: scope:[divr16s]  from divr16s::@3 divr16s::@9
  (byte) divr16s::neg#6 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#8 )
  (word) rem16u#20 ← phi( divr16s::@3/(word) rem16u#26 divr16s::@9/(word) rem16u#27 )
  (word) divr16s::remu#3 ← phi( divr16s::@3/(word) divr16s::remu#4 divr16s::@9/(word) divr16s::remu#5 )
  (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#1 divr16s::@9/(word) divr16s::divisoru#2 )
  (word) divr16s::dividendu#3 ← phi( divr16s::@3/(word) divr16s::dividendu#4 divr16s::@9/(word) divr16s::dividendu#5 )
  (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
  (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
  (word) divr16u::rem#3 ← (word) divr16s::remu#3
  call divr16u 
  (word) divr16u::return#2 ← (word) divr16u::return#1
  to:divr16s::@15
divr16s::@15: scope:[divr16s]  from divr16s::@4
  (byte) divr16s::neg#4 ← phi( divr16s::@4/(byte) divr16s::neg#6 )
  (word) rem16u#11 ← phi( divr16s::@4/(word) rem16u#2 )
  (word) divr16u::return#4 ← phi( divr16s::@4/(word) divr16u::return#2 )
  (word~) divr16s::$14 ← (word) divr16u::return#4
  (word) rem16u#3 ← (word) rem16u#11
  (word) divr16s::resultu#0 ← (word~) divr16s::$14
  (bool~) divr16s::$15 ← (byte) divr16s::neg#4 == (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) divr16s::$15) goto divr16s::@5
  to:divr16s::@11
divr16s::@5: scope:[divr16s]  from divr16s::@15
  (word) divr16s::resultu#1 ← phi( divr16s::@15/(word) divr16s::resultu#0 )
  (word) rem16u#12 ← phi( divr16s::@15/(word) rem16u#3 )
  (signed word~) divr16s::$20 ← ((signed word)) (word) rem16u#12
  (signed word) rem16s#1 ← (signed word~) divr16s::$20
  (signed word~) divr16s::$21 ← ((signed word)) (word) divr16s::resultu#1
  (signed word) divr16s::return#0 ← (signed word~) divr16s::$21
  to:divr16s::@return
divr16s::@11: scope:[divr16s]  from divr16s::@15
  (word) divr16s::resultu#2 ← phi( divr16s::@15/(word) divr16s::resultu#0 )
  (word) rem16u#13 ← phi( divr16s::@15/(word) rem16u#3 )
  (signed word~) divr16s::$16 ← ((signed word)) (word) rem16u#13
  (signed word~) divr16s::$17 ← - (signed word~) divr16s::$16
  (signed word) rem16s#2 ← (signed word~) divr16s::$17
  (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#2
  (signed word~) divr16s::$19 ← - (signed word~) divr16s::$18
  (signed word) divr16s::return#1 ← (signed word~) divr16s::$19
  to:divr16s::@return
divr16s::@return: scope:[divr16s]  from divr16s::@11 divr16s::@5
  (signed word) rem16s#9 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@5/(signed word) rem16s#1 )
  (word) rem16u#14 ← phi( divr16s::@11/(word) rem16u#13 divr16s::@5/(word) rem16u#12 )
  (signed word) divr16s::return#4 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@5/(signed word) divr16s::return#0 )
  (signed word) divr16s::return#2 ← (signed word) divr16s::return#4
  (word) rem16u#4 ← (word) rem16u#14
  (signed word) rem16s#3 ← (signed word) rem16s#9
  return 
  to:@return
@12: scope:[]  from @10
  (signed word) rem16s#31 ← phi( @10/(signed word) rem16s#0 )
  (word) rem16u#40 ← phi( @10/(word) rem16u#43 )
  (byte*) BITMAP#0 ← ((byte*)) (word/dword/signed dword) 40960
  (byte*) SCREEN#0 ← ((byte*)) (word/dword/signed dword) 34816
  (byte) SIZE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) DELAY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (word[4]) x_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 }
  (byte[4]) y_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
  (word[4]) x_end#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 }
  (byte[4]) y_end#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
  (word[4]) x_cur#0 ← { fill( 4, 0) }
  (word[4]) y_cur#0 ← { fill( 4, 0) }
  (signed byte[4]) x_add#0 ← { fill( 4, 0) }
  (signed byte[4]) y_add#0 ← { fill( 4, 0) }
  (byte[4]) delay#0 ← { fill( 4, 0) }
  (byte[4]) frame#0 ← { fill( 4, 0) }
  to:@16
main: scope:[main]  from @19
  (signed word) rem16s#52 ← phi( @19/(signed word) rem16s#19 )
  (word) rem16u#66 ← phi( @19/(word) rem16u#25 )
  (byte*) BITMAP#9 ← phi( @19/(byte*) BITMAP#10 )
  (byte*) SCREEN#1 ← phi( @19/(byte*) SCREEN#4 )
  asm { sei  }
  *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0
  *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0
  (byte~) main::$0 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0
  (byte~) main::$1 ← (byte~) main::$0 | (byte) VIC_RSEL#0
  (byte/word/dword~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3
  *((byte*) D011#0) ← (byte/word/dword~) main::$2
  (byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) SCREEN#1
  to:main::vicSelectGfxBank1
main::vicSelectGfxBank1: scope:[main]  from main
  (signed word) rem16s#51 ← phi( main/(signed word) rem16s#52 )
  (word) rem16u#65 ← phi( main/(word) rem16u#66 )
  (byte*) BITMAP#8 ← phi( main/(byte*) BITMAP#9 )
  (byte*) SCREEN#12 ← phi( main/(byte*) SCREEN#1 )
  (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 )
  *((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
  (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1
  to:main::vicSelectGfxBank1_toDd001
main::vicSelectGfxBank1_toDd001: scope:[main]  from main::vicSelectGfxBank1
  (signed word) rem16s#50 ← phi( main::vicSelectGfxBank1/(signed word) rem16s#51 )
  (word) rem16u#64 ← phi( main::vicSelectGfxBank1/(word) rem16u#65 )
  (byte*) BITMAP#7 ← phi( main::vicSelectGfxBank1/(byte*) BITMAP#8 )
  (byte*) SCREEN#10 ← phi( main::vicSelectGfxBank1/(byte*) SCREEN#12 )
  (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 )
  (word) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
  (byte) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word) main::vicSelectGfxBank1_toDd001_$0#0
  (byte) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte) main::vicSelectGfxBank1_toDd001_$1#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6
  (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte) main::vicSelectGfxBank1_toDd001_$2#0
  (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0
  to:main::vicSelectGfxBank1_toDd001_@return
main::vicSelectGfxBank1_toDd001_@return: scope:[main]  from main::vicSelectGfxBank1_toDd001
  (signed word) rem16s#48 ← phi( main::vicSelectGfxBank1_toDd001/(signed word) rem16s#50 )
  (word) rem16u#62 ← phi( main::vicSelectGfxBank1_toDd001/(word) rem16u#64 )
  (byte*) BITMAP#5 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) BITMAP#7 )
  (byte*) SCREEN#7 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SCREEN#10 )
  (byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 )
  (byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2
  to:main::vicSelectGfxBank1_@1
main::vicSelectGfxBank1_@1: scope:[main]  from main::vicSelectGfxBank1_toDd001_@return
  (signed word) rem16s#46 ← phi( main::vicSelectGfxBank1_toDd001_@return/(signed word) rem16s#48 )
  (word) rem16u#60 ← phi( main::vicSelectGfxBank1_toDd001_@return/(word) rem16u#62 )
  (byte*) BITMAP#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) BITMAP#5 )
  (byte*) SCREEN#5 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SCREEN#7 )
  (byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 )
  (byte) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3
  *((byte*) CIA2_PORT_A#0) ← (byte) main::vicSelectGfxBank1_$0#0
  to:main::@15
main::@15: scope:[main]  from main::vicSelectGfxBank1_@1
  (signed word) rem16s#43 ← phi( main::vicSelectGfxBank1_@1/(signed word) rem16s#46 )
  (word) rem16u#57 ← phi( main::vicSelectGfxBank1_@1/(word) rem16u#60 )
  (byte*) BITMAP#1 ← phi( main::vicSelectGfxBank1_@1/(byte*) BITMAP#3 )
  (byte*) SCREEN#2 ← phi( main::vicSelectGfxBank1_@1/(byte*) SCREEN#5 )
  (byte*) main::toD0181_screen#0 ← (byte*) SCREEN#2
  (byte*) main::toD0181_gfx#0 ← (byte*) BITMAP#1
  to:main::toD0181
main::toD0181: scope:[main]  from main::@15
  (signed word) rem16s#41 ← phi( main::@15/(signed word) rem16s#43 )
  (word) rem16u#55 ← phi( main::@15/(word) rem16u#57 )
  (byte*) SCREEN#13 ← phi( main::@15/(byte*) SCREEN#2 )
  (byte*) BITMAP#6 ← phi( main::@15/(byte*) BITMAP#1 )
  (byte*) main::toD0181_gfx#1 ← phi( main::@15/(byte*) main::toD0181_gfx#0 )
  (byte*) main::toD0181_screen#1 ← phi( main::@15/(byte*) main::toD0181_screen#0 )
  (word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1
  (word) main::toD0181_$1#0 ← (word) main::toD0181_$0#0 & (word/signed word/dword/signed dword) 16383
  (word) main::toD0181_$2#0 ← (word) main::toD0181_$1#0 << (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) main::toD0181_$3#0 ← > (word) main::toD0181_$2#0
  (word) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1
  (byte) main::toD0181_$5#0 ← > (word) main::toD0181_$4#0
  (byte) main::toD0181_$6#0 ← (byte) main::toD0181_$5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) main::toD0181_$7#0 ← (byte) main::toD0181_$6#0 & (byte/signed byte/word/signed word/dword/signed dword) 15
  (byte) main::toD0181_$8#0 ← (byte) main::toD0181_$3#0 | (byte) main::toD0181_$7#0
  (byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0
  to:main::toD0181_@return
main::toD0181_@return: scope:[main]  from main::toD0181
  (signed word) rem16s#39 ← phi( main::toD0181/(signed word) rem16s#41 )
  (word) rem16u#53 ← phi( main::toD0181/(word) rem16u#55 )
  (byte*) SCREEN#11 ← phi( main::toD0181/(byte*) SCREEN#13 )
  (byte*) BITMAP#4 ← phi( main::toD0181/(byte*) BITMAP#6 )
  (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
  (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
  to:main::@16
main::@16: scope:[main]  from main::toD0181_@return
  (signed word) rem16s#37 ← phi( main::toD0181_@return/(signed word) rem16s#39 )
  (word) rem16u#51 ← phi( main::toD0181_@return/(word) rem16u#53 )
  (byte*) SCREEN#8 ← phi( main::toD0181_@return/(byte*) SCREEN#11 )
  (byte*) BITMAP#2 ← phi( main::toD0181_@return/(byte*) BITMAP#4 )
  (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
  (byte~) main::$4 ← (byte) main::toD0181_return#3
  *((byte*) D018#0) ← (byte~) main::$4
  (byte*) bitmap_init::bitmap#0 ← (byte*) BITMAP#2
  call bitmap_init 
  to:main::@17
main::@17: scope:[main]  from main::@16
  (signed word) rem16s#32 ← phi( main::@16/(signed word) rem16s#37 )
  (word) rem16u#44 ← phi( main::@16/(word) rem16u#51 )
  (byte*) SCREEN#6 ← phi( main::@16/(byte*) SCREEN#8 )
  call bitmap_clear 
  to:main::@18
main::@18: scope:[main]  from main::@17
  (signed word) rem16s#27 ← phi( main::@17/(signed word) rem16s#32 )
  (word) rem16u#36 ← phi( main::@17/(word) rem16u#44 )
  (byte*) SCREEN#3 ← phi( main::@17/(byte*) SCREEN#6 )
  (byte*) screen_fill::screen#0 ← (byte*) SCREEN#3
  (byte) screen_fill::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
  call screen_fill 
  to:main::@19
main::@19: scope:[main]  from main::@18
  (signed word) rem16s#20 ← phi( main::@18/(signed word) rem16s#27 )
  (word) rem16u#28 ← phi( main::@18/(word) rem16u#36 )
  (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:main::@1
main::@1: scope:[main]  from main::@19 main::@21
  (signed word) rem16s#15 ← phi( main::@19/(signed word) rem16s#20 main::@21/(signed word) rem16s#21 )
  (word) rem16u#21 ← phi( main::@19/(word) rem16u#28 main::@21/(word) rem16u#29 )
  (byte) main::i#2 ← phi( main::@19/(byte) main::i#0 main::@21/(byte) main::i#1 )
  (byte) point_init::point_idx#0 ← (byte) main::i#2
  call point_init 
  to:main::@20
main::@20: scope:[main]  from main::@1
  (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
  (signed word) rem16s#10 ← phi( main::@1/(signed word) rem16s#7 )
  (word) rem16u#15 ← phi( main::@1/(word) rem16u#8 )
  (word) rem16u#5 ← (word) rem16u#15
  (signed word) rem16s#4 ← (signed word) rem16s#10
  (byte~) main::$9 ← (byte) main::i#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  (word) bitmap_plot::x#0 ← *((word[4]) x_start#0 + (byte) main::i#3)
  (byte) bitmap_plot::y#0 ← *((byte[4]) y_start#0 + (byte~) main::$9)
  call bitmap_plot 
  to:main::@21
main::@21: scope:[main]  from main::@20
  (signed word) rem16s#21 ← phi( main::@20/(signed word) rem16s#4 )
  (word) rem16u#29 ← phi( main::@20/(word) rem16u#5 )
  (byte) main::i#4 ← phi( main::@20/(byte) main::i#3 )
  (byte) main::i#1 ← (byte) main::i#4 + (byte/signed byte/word/signed word/dword/signed dword) 2
  (bool~) main::$11 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 8
  if((bool~) main::$11) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@21 main::@7
  (signed word) rem16s#16 ← phi( main::@21/(signed word) rem16s#21 main::@7/(signed word) rem16s#22 )
  (word) rem16u#22 ← phi( main::@21/(word) rem16u#29 main::@7/(word) rem16u#30 )
  if(true) goto main::@3
  to:main::@return
main::@3: scope:[main]  from main::@2
  (signed word) rem16s#33 ← phi( main::@2/(signed word) rem16s#16 )
  (word) rem16u#45 ← phi( main::@2/(word) rem16u#22 )
  to:main::@5
main::@5: scope:[main]  from main::@3 main::@6
  (signed word) rem16s#28 ← phi( main::@3/(signed word) rem16s#33 main::@6/(signed word) rem16s#34 )
  (word) rem16u#37 ← phi( main::@3/(word) rem16u#45 main::@6/(word) rem16u#46 )
  (bool~) main::$12 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255
  if((bool~) main::$12) goto main::@6
  to:main::@7
main::@6: scope:[main]  from main::@5
  (signed word) rem16s#34 ← phi( main::@5/(signed word) rem16s#28 )
  (word) rem16u#46 ← phi( main::@5/(word) rem16u#37 )
  to:main::@5
main::@7: scope:[main]  from main::@5
  (signed word) rem16s#22 ← phi( main::@5/(signed word) rem16s#28 )
  (word) rem16u#30 ← phi( main::@5/(word) rem16u#37 )
  *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
  to:main::@2
main::@return: scope:[main]  from main::@2
  (signed word) rem16s#11 ← phi( main::@2/(signed word) rem16s#16 )
  (word) rem16u#16 ← phi( main::@2/(word) rem16u#22 )
  (word) rem16u#6 ← (word) rem16u#16
  (signed word) rem16s#5 ← (signed word) rem16s#11
  return 
  to:@return
point_init: scope:[point_init]  from main::@1
  (signed word) rem16s#49 ← phi( main::@1/(signed word) rem16s#15 )
  (word) rem16u#63 ← phi( main::@1/(word) rem16u#21 )
  (byte) point_init::point_idx#1 ← phi( main::@1/(byte) point_init::point_idx#0 )
  (byte~) point_init::$0 ← (byte) point_init::point_idx#1 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) point_init::point_idx1#0 ← (byte~) point_init::$0
  (signed word~) point_init::$1 ← ((signed word)) *((word[4]) x_end#0 + (byte) point_init::point_idx#1)
  (signed word~) point_init::$2 ← ((signed word)) *((word[4]) x_start#0 + (byte) point_init::point_idx#1)
  (signed word~) point_init::$3 ← (signed word~) point_init::$1 - (signed word~) point_init::$2
  (signed word) point_init::x_diff#0 ← (signed word~) point_init::$3
  (signed word~) point_init::$4 ← ((signed word)) *((byte[4]) y_end#0 + (byte) point_init::point_idx1#0)
  (signed word~) point_init::$5 ← ((signed word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
  (signed word~) point_init::$6 ← (signed word~) point_init::$4 - (signed word~) point_init::$5
  (signed word) point_init::y_diff#0 ← (signed word~) point_init::$6
  (signed word) point_init::abs16s1_w#0 ← (signed word) point_init::x_diff#0
  to:point_init::abs16s1
point_init::abs16s1: scope:[point_init]  from point_init
  (signed word) rem16s#47 ← phi( point_init/(signed word) rem16s#49 )
  (word) rem16u#61 ← phi( point_init/(word) rem16u#63 )
  (byte) point_init::point_idx1#16 ← phi( point_init/(byte) point_init::point_idx1#0 )
  (byte) point_init::point_idx#17 ← phi( point_init/(byte) point_init::point_idx#1 )
  (signed word) point_init::x_diff#14 ← phi( point_init/(signed word) point_init::x_diff#0 )
  (signed word) point_init::y_diff#9 ← phi( point_init/(signed word) point_init::y_diff#0 )
  (signed word) point_init::abs16s1_w#1 ← phi( point_init/(signed word) point_init::abs16s1_w#0 )
  (bool) point_init::abs16s1_$0#0 ← (signed word) point_init::abs16s1_w#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool) point_init::abs16s1_$0#0) goto point_init::abs16s1_@1
  to:point_init::abs16s1_@3
point_init::abs16s1_@1: scope:[point_init]  from point_init::abs16s1
  (signed word) rem16s#44 ← phi( point_init::abs16s1/(signed word) rem16s#47 )
  (word) rem16u#58 ← phi( point_init::abs16s1/(word) rem16u#61 )
  (byte) point_init::point_idx1#14 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 )
  (byte) point_init::point_idx#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 )
  (signed word) point_init::x_diff#12 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 )
  (signed word) point_init::y_diff#6 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 )
  (signed word) point_init::abs16s1_w#2 ← phi( point_init::abs16s1/(signed word) point_init::abs16s1_w#1 )
  (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::abs16s1_w#2
  (word) point_init::abs16s1_$3#0 ← ((word)) (signed word) point_init::abs16s1_$2#0
  (word) point_init::abs16s1_return#0 ← (word) point_init::abs16s1_$3#0
  to:point_init::abs16s1_@return
point_init::abs16s1_@3: scope:[point_init]  from point_init::abs16s1
  (signed word) rem16s#45 ← phi( point_init::abs16s1/(signed word) rem16s#47 )
  (word) rem16u#59 ← phi( point_init::abs16s1/(word) rem16u#61 )
  (byte) point_init::point_idx1#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 )
  (byte) point_init::point_idx#16 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 )
  (signed word) point_init::x_diff#13 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 )
  (signed word) point_init::y_diff#7 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 )
  (signed word) point_init::abs16s1_w#3 ← phi( point_init::abs16s1/(signed word) point_init::abs16s1_w#1 )
  (word) point_init::abs16s1_$1#0 ← ((word)) (signed word) point_init::abs16s1_w#3
  (word) point_init::abs16s1_return#1 ← (word) point_init::abs16s1_$1#0
  to:point_init::abs16s1_@return
point_init::abs16s1_@return: scope:[point_init]  from point_init::abs16s1_@1 point_init::abs16s1_@3
  (signed word) rem16s#42 ← phi( point_init::abs16s1_@1/(signed word) rem16s#44 point_init::abs16s1_@3/(signed word) rem16s#45 )
  (word) rem16u#56 ← phi( point_init::abs16s1_@1/(word) rem16u#58 point_init::abs16s1_@3/(word) rem16u#59 )
  (byte) point_init::point_idx1#13 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx1#14 point_init::abs16s1_@3/(byte) point_init::point_idx1#15 )
  (byte) point_init::point_idx#14 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx#15 point_init::abs16s1_@3/(byte) point_init::point_idx#16 )
  (signed word) point_init::x_diff#11 ← phi( point_init::abs16s1_@1/(signed word) point_init::x_diff#12 point_init::abs16s1_@3/(signed word) point_init::x_diff#13 )
  (signed word) point_init::y_diff#3 ← phi( point_init::abs16s1_@1/(signed word) point_init::y_diff#6 point_init::abs16s1_@3/(signed word) point_init::y_diff#7 )
  (word) point_init::abs16s1_return#3 ← phi( point_init::abs16s1_@1/(word) point_init::abs16s1_return#0 point_init::abs16s1_@3/(word) point_init::abs16s1_return#1 )
  (word) point_init::abs16s1_return#2 ← (word) point_init::abs16s1_return#3
  to:point_init::@9
point_init::@9: scope:[point_init]  from point_init::abs16s1_@return
  (signed word) rem16s#40 ← phi( point_init::abs16s1_@return/(signed word) rem16s#42 )
  (word) rem16u#54 ← phi( point_init::abs16s1_@return/(word) rem16u#56 )
  (byte) point_init::point_idx1#12 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx1#13 )
  (byte) point_init::point_idx#13 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx#14 )
  (signed word) point_init::x_diff#10 ← phi( point_init::abs16s1_@return/(signed word) point_init::x_diff#11 )
  (signed word) point_init::y_diff#1 ← phi( point_init::abs16s1_@return/(signed word) point_init::y_diff#3 )
  (word) point_init::abs16s1_return#4 ← phi( point_init::abs16s1_@return/(word) point_init::abs16s1_return#2 )
  (word~) point_init::$7 ← (word) point_init::abs16s1_return#4
  (signed word) point_init::abs16s2_w#0 ← (signed word) point_init::y_diff#1
  to:point_init::abs16s2
point_init::abs16s2: scope:[point_init]  from point_init::@9
  (signed word) point_init::y_diff#14 ← phi( point_init::@9/(signed word) point_init::y_diff#1 )
  (signed word) rem16s#38 ← phi( point_init::@9/(signed word) rem16s#40 )
  (word) rem16u#52 ← phi( point_init::@9/(word) rem16u#54 )
  (byte) point_init::point_idx1#11 ← phi( point_init::@9/(byte) point_init::point_idx1#12 )
  (byte) point_init::point_idx#12 ← phi( point_init::@9/(byte) point_init::point_idx#13 )
  (signed word) point_init::x_diff#9 ← phi( point_init::@9/(signed word) point_init::x_diff#10 )
  (signed word) point_init::abs16s2_w#1 ← phi( point_init::@9/(signed word) point_init::abs16s2_w#0 )
  (bool) point_init::abs16s2_$0#0 ← (signed word) point_init::abs16s2_w#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool) point_init::abs16s2_$0#0) goto point_init::abs16s2_@1
  to:point_init::abs16s2_@3
point_init::abs16s2_@1: scope:[point_init]  from point_init::abs16s2
  (signed word) point_init::y_diff#12 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 )
  (signed word) rem16s#35 ← phi( point_init::abs16s2/(signed word) rem16s#38 )
  (word) rem16u#47 ← phi( point_init::abs16s2/(word) rem16u#52 )
  (byte) point_init::point_idx1#8 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 )
  (byte) point_init::point_idx#10 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 )
  (signed word) point_init::x_diff#7 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 )
  (signed word) point_init::abs16s2_w#2 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 )
  (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::abs16s2_w#2
  (word) point_init::abs16s2_$3#0 ← ((word)) (signed word) point_init::abs16s2_$2#0
  (word) point_init::abs16s2_return#0 ← (word) point_init::abs16s2_$3#0
  to:point_init::abs16s2_@return
point_init::abs16s2_@3: scope:[point_init]  from point_init::abs16s2
  (signed word) point_init::y_diff#13 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 )
  (signed word) rem16s#36 ← phi( point_init::abs16s2/(signed word) rem16s#38 )
  (word) rem16u#48 ← phi( point_init::abs16s2/(word) rem16u#52 )
  (byte) point_init::point_idx1#9 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 )
  (byte) point_init::point_idx#11 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 )
  (signed word) point_init::x_diff#8 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 )
  (signed word) point_init::abs16s2_w#3 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 )
  (word) point_init::abs16s2_$1#0 ← ((word)) (signed word) point_init::abs16s2_w#3
  (word) point_init::abs16s2_return#1 ← (word) point_init::abs16s2_$1#0
  to:point_init::abs16s2_@return
point_init::abs16s2_@return: scope:[point_init]  from point_init::abs16s2_@1 point_init::abs16s2_@3
  (signed word) point_init::y_diff#11 ← phi( point_init::abs16s2_@1/(signed word) point_init::y_diff#12 point_init::abs16s2_@3/(signed word) point_init::y_diff#13 )
  (signed word) rem16s#29 ← phi( point_init::abs16s2_@1/(signed word) rem16s#35 point_init::abs16s2_@3/(signed word) rem16s#36 )
  (word) rem16u#38 ← phi( point_init::abs16s2_@1/(word) rem16u#47 point_init::abs16s2_@3/(word) rem16u#48 )
  (byte) point_init::point_idx1#5 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx1#8 point_init::abs16s2_@3/(byte) point_init::point_idx1#9 )
  (byte) point_init::point_idx#8 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx#10 point_init::abs16s2_@3/(byte) point_init::point_idx#11 )
  (signed word) point_init::x_diff#6 ← phi( point_init::abs16s2_@1/(signed word) point_init::x_diff#7 point_init::abs16s2_@3/(signed word) point_init::x_diff#8 )
  (word) point_init::abs16s2_return#3 ← phi( point_init::abs16s2_@1/(word) point_init::abs16s2_return#0 point_init::abs16s2_@3/(word) point_init::abs16s2_return#1 )
  (word) point_init::abs16s2_return#2 ← (word) point_init::abs16s2_return#3
  to:point_init::@10
point_init::@10: scope:[point_init]  from point_init::abs16s2_@return
  (signed word) point_init::y_diff#10 ← phi( point_init::abs16s2_@return/(signed word) point_init::y_diff#11 )
  (signed word) rem16s#23 ← phi( point_init::abs16s2_@return/(signed word) rem16s#29 )
  (word) rem16u#31 ← phi( point_init::abs16s2_@return/(word) rem16u#38 )
  (byte) point_init::point_idx1#3 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx1#5 )
  (byte) point_init::point_idx#5 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx#8 )
  (signed word) point_init::x_diff#3 ← phi( point_init::abs16s2_@return/(signed word) point_init::x_diff#6 )
  (word) point_init::abs16s2_return#4 ← phi( point_init::abs16s2_@return/(word) point_init::abs16s2_return#2 )
  (word~) point_init::$8 ← (word) point_init::abs16s2_return#4
  (bool~) point_init::$9 ← (word~) point_init::$7 > (word~) point_init::$8
  if((bool~) point_init::$9) goto point_init::@1
  to:point_init::@2
point_init::@1: scope:[point_init]  from point_init::@10
  (byte) point_init::point_idx1#10 ← phi( point_init::@10/(byte) point_init::point_idx1#3 )
  (signed word) rem16s#30 ← phi( point_init::@10/(signed word) rem16s#23 )
  (word) rem16u#39 ← phi( point_init::@10/(word) rem16u#31 )
  (signed word) point_init::y_diff#8 ← phi( point_init::@10/(signed word) point_init::y_diff#10 )
  (byte) point_init::point_idx#7 ← phi( point_init::@10/(byte) point_init::point_idx#5 )
  (signed word) point_init::x_diff#1 ← phi( point_init::@10/(signed word) point_init::x_diff#3 )
  (bool~) point_init::$10 ← (signed word) point_init::x_diff#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
  if((bool~) point_init::$10) goto point_init::@3
  to:point_init::@7
point_init::@2: scope:[point_init]  from point_init::@10 point_init::@11
  (signed word) rem16s#18 ← phi( point_init::@10/(signed word) rem16s#23 point_init::@11/(signed word) rem16s#6 )
  (word) rem16u#24 ← phi( point_init::@10/(word) rem16u#31 point_init::@11/(word) rem16u#7 )
  (byte) point_init::point_idx1#1 ← phi( point_init::@10/(byte) point_init::point_idx1#3 point_init::@11/(byte) point_init::point_idx1#2 )
  (byte) point_init::point_idx#2 ← phi( point_init::@10/(byte) point_init::point_idx#5 point_init::@11/(byte) point_init::point_idx#6 )
  (word~) point_init::$16 ← *((word[4]) x_start#0 + (byte) point_init::point_idx#2) << (byte/signed byte/word/signed word/dword/signed dword) 4
  *((word[4]) x_cur#0 + (byte) point_init::point_idx#2) ← (word~) point_init::$16
  (word~) point_init::$17 ← ((word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx1#1)
  (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4
  *((word[4]) y_cur#0 + (byte) point_init::point_idx#2) ← (word~) point_init::$18
  *((byte[4]) delay#0 + (byte) point_init::point_idx1#1) ← (byte) DELAY#0
  to:point_init::@return
point_init::@3: scope:[point_init]  from point_init::@1
  (byte) point_init::point_idx1#6 ← phi( point_init::@1/(byte) point_init::point_idx1#10 )
  (signed word) rem16s#24 ← phi( point_init::@1/(signed word) rem16s#30 )
  (word) rem16u#32 ← phi( point_init::@1/(word) rem16u#39 )
  (signed word) point_init::y_diff#4 ← phi( point_init::@1/(signed word) point_init::y_diff#8 )
  (signed word) point_init::x_diff#4 ← phi( point_init::@1/(signed word) point_init::x_diff#1 )
  (byte) point_init::point_idx#3 ← phi( point_init::@1/(byte) point_init::point_idx#7 )
  (signed byte/signed word/signed dword~) point_init::$11 ← - (byte/signed byte/word/signed word/dword/signed dword) 16
  *((signed byte[4]) x_add#0 + (byte) point_init::point_idx#3) ← (signed byte/signed word/signed dword~) point_init::$11
  to:point_init::@4
point_init::@7: scope:[point_init]  from point_init::@1
  (byte) point_init::point_idx1#7 ← phi( point_init::@1/(byte) point_init::point_idx1#10 )
  (signed word) rem16s#25 ← phi( point_init::@1/(signed word) rem16s#30 )
  (word) rem16u#33 ← phi( point_init::@1/(word) rem16u#39 )
  (signed word) point_init::y_diff#5 ← phi( point_init::@1/(signed word) point_init::y_diff#8 )
  (signed word) point_init::x_diff#5 ← phi( point_init::@1/(signed word) point_init::x_diff#1 )
  (byte) point_init::point_idx#4 ← phi( point_init::@1/(byte) point_init::point_idx#7 )
  *((signed byte[4]) x_add#0 + (byte) point_init::point_idx#4) ← (byte/signed byte/word/signed word/dword/signed dword) 16
  to:point_init::@4
point_init::@4: scope:[point_init]  from point_init::@3 point_init::@7
  (byte) point_init::point_idx#9 ← phi( point_init::@3/(byte) point_init::point_idx#3 point_init::@7/(byte) point_init::point_idx#4 )
  (byte) point_init::point_idx1#4 ← phi( point_init::@3/(byte) point_init::point_idx1#6 point_init::@7/(byte) point_init::point_idx1#7 )
  (signed word) rem16s#17 ← phi( point_init::@3/(signed word) rem16s#24 point_init::@7/(signed word) rem16s#25 )
  (word) rem16u#23 ← phi( point_init::@3/(word) rem16u#32 point_init::@7/(word) rem16u#33 )
  (signed word) point_init::y_diff#2 ← phi( point_init::@3/(signed word) point_init::y_diff#4 point_init::@7/(signed word) point_init::y_diff#5 )
  (signed word) point_init::x_diff#2 ← phi( point_init::@3/(signed word) point_init::x_diff#4 point_init::@7/(signed word) point_init::x_diff#5 )
  (signed word) divr16s::dividend#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#2
  (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#2
  call divr16s 
  (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
  to:point_init::@11
point_init::@11: scope:[point_init]  from point_init::@4
  (byte) point_init::point_idx#6 ← phi( point_init::@4/(byte) point_init::point_idx#9 )
  (byte) point_init::point_idx1#2 ← phi( point_init::@4/(byte) point_init::point_idx1#4 )
  (signed word) rem16s#12 ← phi( point_init::@4/(signed word) rem16s#3 )
  (word) rem16u#17 ← phi( point_init::@4/(word) rem16u#4 )
  (signed word) divr16s::return#5 ← phi( point_init::@4/(signed word) divr16s::return#3 )
  (signed word~) point_init::$12 ← (signed word) divr16s::return#5
  (word) rem16u#7 ← (word) rem16u#17
  (signed word) rem16s#6 ← (signed word) rem16s#12
  (signed word) point_init::x_stepf#0 ← (signed word~) point_init::$12
  (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0
  (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4
  (signed byte~) point_init::$15 ← ((signed byte)) (byte~) point_init::$14
  *((signed byte[4]) y_add#0 + (byte) point_init::point_idx1#2) ← (signed byte~) point_init::$15
  to:point_init::@2
point_init::@return: scope:[point_init]  from point_init::@2
  (signed word) rem16s#13 ← phi( point_init::@2/(signed word) rem16s#18 )
  (word) rem16u#18 ← phi( point_init::@2/(word) rem16u#24 )
  (word) rem16u#8 ← (word) rem16u#18
  (signed word) rem16s#7 ← (signed word) rem16s#13
  return 
  to:@return
screen_fill: scope:[screen_fill]  from main::@18
  (byte*) screen_fill::screen#4 ← phi( main::@18/(byte*) screen_fill::screen#0 )
  (byte) screen_fill::ch#3 ← phi( main::@18/(byte) screen_fill::ch#0 )
  (byte) screen_fill::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:screen_fill::@1
screen_fill::@1: scope:[screen_fill]  from screen_fill screen_fill::@3
  (byte) screen_fill::y#4 ← phi( screen_fill/(byte) screen_fill::y#0 screen_fill::@3/(byte) screen_fill::y#1 )
  (byte*) screen_fill::screen#3 ← phi( screen_fill/(byte*) screen_fill::screen#4 screen_fill::@3/(byte*) screen_fill::screen#5 )
  (byte) screen_fill::ch#2 ← phi( screen_fill/(byte) screen_fill::ch#3 screen_fill::@3/(byte) screen_fill::ch#4 )
  (byte) screen_fill::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:screen_fill::@2
screen_fill::@2: scope:[screen_fill]  from screen_fill::@1 screen_fill::@2
  (byte) screen_fill::y#3 ← phi( screen_fill::@1/(byte) screen_fill::y#4 screen_fill::@2/(byte) screen_fill::y#3 )
  (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte) screen_fill::x#0 screen_fill::@2/(byte) screen_fill::x#1 )
  (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 )
  (byte) screen_fill::ch#1 ← phi( screen_fill::@1/(byte) screen_fill::ch#2 screen_fill::@2/(byte) screen_fill::ch#1 )
  *((byte*) screen_fill::screen#2) ← (byte) screen_fill::ch#1
  (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2
  (byte) screen_fill::x#1 ← (byte) screen_fill::x#2 + rangenext(0,39)
  (bool~) screen_fill::$0 ← (byte) screen_fill::x#1 != rangelast(0,39)
  if((bool~) screen_fill::$0) goto screen_fill::@2
  to:screen_fill::@3
screen_fill::@3: scope:[screen_fill]  from screen_fill::@2
  (byte*) screen_fill::screen#5 ← phi( screen_fill::@2/(byte*) screen_fill::screen#1 )
  (byte) screen_fill::ch#4 ← phi( screen_fill::@2/(byte) screen_fill::ch#1 )
  (byte) screen_fill::y#2 ← phi( screen_fill::@2/(byte) screen_fill::y#3 )
  (byte) screen_fill::y#1 ← (byte) screen_fill::y#2 + rangenext(0,24)
  (bool~) screen_fill::$1 ← (byte) screen_fill::y#1 != rangelast(0,24)
  if((bool~) screen_fill::$1) goto screen_fill::@1
  to:screen_fill::@return
screen_fill::@return: scope:[screen_fill]  from screen_fill::@3
  return 
  to:@return
@16: scope:[]  from @12
  (byte*) BITMAP#11 ← phi( @12/(byte*) BITMAP#0 )
  (signed word) rem16s#26 ← phi( @12/(signed word) rem16s#31 )
  (word) rem16u#34 ← phi( @12/(word) rem16u#40 )
  (byte*) SCREEN#9 ← phi( @12/(byte*) SCREEN#0 )
  (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) }
  (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) }
  (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) }
  to:@19
bitmap_init: scope:[bitmap_init]  from main::@16
  (byte*) bitmap_init::bitmap#5 ← phi( main::@16/(byte*) bitmap_init::bitmap#0 )
  (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128
  (byte) bitmap_init::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init]  from bitmap_init bitmap_init::@2
  (byte*) bitmap_init::bitmap#3 ← phi( bitmap_init/(byte*) bitmap_init::bitmap#5 bitmap_init::@2/(byte*) bitmap_init::bitmap#2 )
  (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 )
  (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 )
  *((byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
  (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
  (bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0
  if((bool~) bitmap_init::$1) goto bitmap_init::@2
  to:bitmap_init::@5
bitmap_init::@2: scope:[bitmap_init]  from bitmap_init::@1 bitmap_init::@5
  (byte*) bitmap_init::bitmap#2 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#3 bitmap_init::@5/(byte*) bitmap_init::bitmap#4 )
  (byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@5/(byte) bitmap_init::bits#2 )
  (byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@5/(byte) bitmap_init::x#4 )
  (byte) bitmap_init::x#1 ← (byte) bitmap_init::x#3 + rangenext(0,255)
  (bool~) bitmap_init::$2 ← (byte) bitmap_init::x#1 != rangelast(0,255)
  if((bool~) bitmap_init::$2) goto bitmap_init::@1
  to:bitmap_init::@6
bitmap_init::@5: scope:[bitmap_init]  from bitmap_init::@1
  (byte*) bitmap_init::bitmap#4 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#3 )
  (byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 )
  (byte) bitmap_init::bits#2 ← (byte/word/signed word/dword/signed dword) 128
  to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init]  from bitmap_init::@2
  (byte*) bitmap_init::bitmap#1 ← phi( bitmap_init::@2/(byte*) bitmap_init::bitmap#2 )
  (byte*) bitmap_init::yoffs#0 ← (byte*) bitmap_init::bitmap#1
  (byte) bitmap_init::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init]  from bitmap_init::@4 bitmap_init::@6
  (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@6/(byte*) bitmap_init::yoffs#0 )
  (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@6/(byte) bitmap_init::y#0 )
  (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
  (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
  *((byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
  (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  *((byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
  (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
  (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7
  (bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8
  if((bool~) bitmap_init::$9) goto bitmap_init::@4
  to:bitmap_init::@7
bitmap_init::@4: scope:[bitmap_init]  from bitmap_init::@3 bitmap_init::@7
  (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
  (byte) bitmap_init::y#3 ← phi( bitmap_init::@3/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 )
  (byte) bitmap_init::y#1 ← (byte) bitmap_init::y#3 + rangenext(0,255)
  (bool~) bitmap_init::$12 ← (byte) bitmap_init::y#1 != rangelast(0,255)
  if((bool~) bitmap_init::$12) goto bitmap_init::@3
  to:bitmap_init::@return
bitmap_init::@7: scope:[bitmap_init]  from bitmap_init::@3
  (byte) bitmap_init::y#4 ← phi( bitmap_init::@3/(byte) bitmap_init::y#2 )
  (byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 )
  (word/signed word/dword/signed dword~) bitmap_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*~) bitmap_init::$11 ← (byte*) bitmap_init::yoffs#3 + (word/signed word/dword/signed dword~) bitmap_init::$10
  (byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$11
  to:bitmap_init::@4
bitmap_init::@return: scope:[bitmap_init]  from bitmap_init::@4
  return 
  to:@return
bitmap_clear: scope:[bitmap_clear]  from main::@17
  (byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi#0 + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_ylo#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) }
  (byte*) bitmap_clear::bitmap#0 ← (byte*~) bitmap_clear::$0
  (byte) bitmap_clear::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear]  from bitmap_clear bitmap_clear::@3
  (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte) bitmap_clear::y#0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
  (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*) bitmap_clear::bitmap#0 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#4 )
  (byte) bitmap_clear::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear]  from bitmap_clear::@1 bitmap_clear::@2
  (byte) bitmap_clear::y#3 ← phi( bitmap_clear::@1/(byte) bitmap_clear::y#4 bitmap_clear::@2/(byte) bitmap_clear::y#3 )
  (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte) bitmap_clear::x#0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
  (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
  *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
  (byte) bitmap_clear::x#1 ← (byte) bitmap_clear::x#2 + rangenext(0,199)
  (bool~) bitmap_clear::$1 ← (byte) bitmap_clear::x#1 != rangelast(0,199)
  if((bool~) bitmap_clear::$1) goto bitmap_clear::@2
  to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear]  from bitmap_clear::@2
  (byte*) bitmap_clear::bitmap#4 ← phi( bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
  (byte) bitmap_clear::y#2 ← phi( bitmap_clear::@2/(byte) bitmap_clear::y#3 )
  (byte) bitmap_clear::y#1 ← (byte) bitmap_clear::y#2 + rangenext(0,39)
  (bool~) bitmap_clear::$2 ← (byte) bitmap_clear::y#1 != rangelast(0,39)
  if((bool~) bitmap_clear::$2) goto bitmap_clear::@1
  to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear]  from bitmap_clear::@3
  return 
  to:@return
bitmap_plot: scope:[bitmap_plot]  from main::@20
  (word) bitmap_plot::x#1 ← phi( main::@20/(word) bitmap_plot::x#0 )
  (byte) bitmap_plot::y#1 ← phi( main::@20/(byte) bitmap_plot::y#0 )
  (byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#1), *((byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#1) }
  (byte*) bitmap_plot::plotter#0 ← (byte*~) bitmap_plot::$0
  (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (word/dword/signed dword) 65528
  (byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1
  (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#1
  *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  return 
  to:@return
@19: scope:[]  from @16
  (byte*) BITMAP#10 ← phi( @16/(byte*) BITMAP#11 )
  (signed word) rem16s#19 ← phi( @16/(signed word) rem16s#26 )
  (word) rem16u#25 ← phi( @16/(word) rem16u#34 )
  (byte*) SCREEN#4 ← phi( @16/(byte*) SCREEN#9 )
  call main 
  to:@20
@20: scope:[]  from @19
  (signed word) rem16s#14 ← phi( @19/(signed word) rem16s#5 )
  (word) rem16u#19 ← phi( @19/(word) rem16u#6 )
  (word) rem16u#9 ← (word) rem16u#19
  (signed word) rem16s#8 ← (signed word) rem16s#14
  to:@end
@end: scope:[]  from @20

SYMBOL TABLE SSA
(label) @10
(label) @12
(label) @16
(label) @19
(label) @20
(label) @4
(label) @6
(label) @9
(label) @begin
(label) @end
(byte*) BGCOL
(byte*) BGCOL#0
(byte*) BGCOL1
(byte*) BGCOL1#0
(byte*) BGCOL2
(byte*) BGCOL2#0
(byte*) BGCOL3
(byte*) BGCOL3#0
(byte*) BGCOL4
(byte*) BGCOL4#0
(byte*) BITMAP
(byte*) BITMAP#0
(byte*) BITMAP#1
(byte*) BITMAP#10
(byte*) BITMAP#11
(byte*) BITMAP#2
(byte*) BITMAP#3
(byte*) BITMAP#4
(byte*) BITMAP#5
(byte*) BITMAP#6
(byte*) BITMAP#7
(byte*) BITMAP#8
(byte*) BITMAP#9
(byte) BLACK
(byte) BLACK#0
(byte) BLUE
(byte) BLUE#0
(byte*) BORDERCOL
(byte*) BORDERCOL#0
(byte) BROWN
(byte) BROWN#0
(byte*) CHARGEN
(byte*) CHARGEN#0
(byte*) CIA1_INTERRUPT
(byte*) CIA1_INTERRUPT#0
(byte*) CIA1_PORT_A
(byte*) CIA1_PORT_A#0
(byte*) CIA1_PORT_A_DDR
(byte*) CIA1_PORT_A_DDR#0
(byte*) CIA1_PORT_B
(byte*) CIA1_PORT_B#0
(byte*) CIA1_PORT_B_DDR
(byte*) CIA1_PORT_B_DDR#0
(byte*) CIA2_INTERRUPT
(byte*) CIA2_INTERRUPT#0
(byte*) CIA2_PORT_A
(byte*) CIA2_PORT_A#0
(byte*) CIA2_PORT_A_DDR
(byte*) CIA2_PORT_A_DDR#0
(byte*) CIA2_PORT_B
(byte*) CIA2_PORT_B#0
(byte*) CIA2_PORT_B_DDR
(byte*) CIA2_PORT_B_DDR#0
(byte) CIA_INTERRUPT_CLEAR
(byte) CIA_INTERRUPT_CLEAR#0
(byte*) COLS
(byte*) COLS#0
(byte) CYAN
(byte) CYAN#0
(byte*) D011
(byte*) D011#0
(byte*) D016
(byte*) D016#0
(byte*) D018
(byte*) D018#0
(byte) DARK_GREY
(byte) DARK_GREY#0
(byte) DELAY
(byte) DELAY#0
(byte) GREEN
(byte) GREEN#0
(byte) GREY
(byte) GREY#0
(void()**) HARDWARE_IRQ
(void()**) HARDWARE_IRQ#0
(byte) IRQ_COLLISION_BG
(byte) IRQ_COLLISION_BG#0
(byte) IRQ_COLLISION_SPRITE
(byte) IRQ_COLLISION_SPRITE#0
(byte*) IRQ_ENABLE
(byte*) IRQ_ENABLE#0
(byte) IRQ_LIGHTPEN
(byte) IRQ_LIGHTPEN#0
(byte) IRQ_RASTER
(byte) IRQ_RASTER#0
(byte*) IRQ_STATUS
(byte*) IRQ_STATUS#0
(void()**) KERNEL_IRQ
(void()**) KERNEL_IRQ#0
(byte*) LIGHTPEN_X
(byte*) LIGHTPEN_X#0
(byte*) LIGHTPEN_Y
(byte*) LIGHTPEN_Y#0
(byte) LIGHT_BLUE
(byte) LIGHT_BLUE#0
(byte) LIGHT_GREEN
(byte) LIGHT_GREEN#0
(byte) LIGHT_GREY
(byte) LIGHT_GREY#0
(byte) ORANGE
(byte) ORANGE#0
(byte) PINK
(byte) PINK#0
(byte*) PROCPORT
(byte*) PROCPORT#0
(byte) PROCPORT_BASIC_KERNEL_IO
(byte) PROCPORT_BASIC_KERNEL_IO#0
(byte*) PROCPORT_DDR
(byte*) PROCPORT_DDR#0
(byte) PROCPORT_DDR_MEMORY_MASK
(byte) PROCPORT_DDR_MEMORY_MASK#0
(byte) PROCPORT_KERNEL_IO
(byte) PROCPORT_KERNEL_IO#0
(byte) PROCPORT_RAM_ALL
(byte) PROCPORT_RAM_ALL#0
(byte) PROCPORT_RAM_CHARROM
(byte) PROCPORT_RAM_CHARROM#0
(byte) PROCPORT_RAM_IO
(byte) PROCPORT_RAM_IO#0
(byte) PURPLE
(byte) PURPLE#0
(byte*) RASTER
(byte*) RASTER#0
(byte) RED
(byte) RED#0
(byte*) SCREEN
(byte*) SCREEN#0
(byte*) SCREEN#1
(byte*) SCREEN#10
(byte*) SCREEN#11
(byte*) SCREEN#12
(byte*) SCREEN#13
(byte*) SCREEN#2
(byte*) SCREEN#3
(byte*) SCREEN#4
(byte*) SCREEN#5
(byte*) SCREEN#6
(byte*) SCREEN#7
(byte*) SCREEN#8
(byte*) SCREEN#9
(byte) SIZE
(byte) SIZE#0
(byte*) SPRITES_COLS
(byte*) SPRITES_COLS#0
(byte*) SPRITES_ENABLE
(byte*) SPRITES_ENABLE#0
(byte*) SPRITES_EXPAND_X
(byte*) SPRITES_EXPAND_X#0
(byte*) SPRITES_EXPAND_Y
(byte*) SPRITES_EXPAND_Y#0
(byte*) SPRITES_MC
(byte*) SPRITES_MC#0
(byte*) SPRITES_MC1
(byte*) SPRITES_MC1#0
(byte*) SPRITES_MC2
(byte*) SPRITES_MC2#0
(byte*) SPRITES_PRIORITY
(byte*) SPRITES_PRIORITY#0
(byte*) SPRITES_XMSB
(byte*) SPRITES_XMSB#0
(byte*) SPRITES_XPOS
(byte*) SPRITES_XPOS#0
(byte*) SPRITES_YPOS
(byte*) SPRITES_YPOS#0
(word) SPRITE_PTRS
(word) SPRITE_PTRS#0
(byte) VIC_BMM
(byte) VIC_BMM#0
(byte*) VIC_CONTROL
(byte*) VIC_CONTROL#0
(byte*) VIC_CONTROL2
(byte*) VIC_CONTROL2#0
(byte) VIC_CSEL
(byte) VIC_CSEL#0
(byte) VIC_DEN
(byte) VIC_DEN#0
(byte) VIC_ECM
(byte) VIC_ECM#0
(byte) VIC_MCM
(byte) VIC_MCM#0
(byte*) VIC_MEMORY
(byte*) VIC_MEMORY#0
(byte) VIC_RSEL
(byte) VIC_RSEL#0
(byte) VIC_RST8
(byte) VIC_RST8#0
(byte) WHITE
(byte) WHITE#0
(byte) YELLOW
(byte) YELLOW#0
(void()) bitmap_clear()
(byte*~) bitmap_clear::$0
(bool~) bitmap_clear::$1
(bool~) bitmap_clear::$2
(label) bitmap_clear::@1
(label) bitmap_clear::@2
(label) bitmap_clear::@3
(label) bitmap_clear::@return
(byte*) bitmap_clear::bitmap
(byte*) bitmap_clear::bitmap#0
(byte*) bitmap_clear::bitmap#1
(byte*) bitmap_clear::bitmap#2
(byte*) bitmap_clear::bitmap#3
(byte*) bitmap_clear::bitmap#4
(byte) bitmap_clear::x
(byte) bitmap_clear::x#0
(byte) bitmap_clear::x#1
(byte) bitmap_clear::x#2
(byte) bitmap_clear::y
(byte) bitmap_clear::y#0
(byte) bitmap_clear::y#1
(byte) bitmap_clear::y#2
(byte) bitmap_clear::y#3
(byte) bitmap_clear::y#4
(void()) bitmap_init((byte*) bitmap_init::bitmap)
(bool~) bitmap_init::$0
(bool~) bitmap_init::$1
(word/signed word/dword/signed dword~) bitmap_init::$10
(byte*~) bitmap_init::$11
(bool~) bitmap_init::$12
(bool~) bitmap_init::$2
(byte~) bitmap_init::$3
(byte~) bitmap_init::$4
(byte~) bitmap_init::$5
(byte~) bitmap_init::$6
(byte~) bitmap_init::$7
(bool~) bitmap_init::$8
(bool~) bitmap_init::$9
(label) bitmap_init::@1
(label) bitmap_init::@2
(label) bitmap_init::@3
(label) bitmap_init::@4
(label) bitmap_init::@5
(label) bitmap_init::@6
(label) bitmap_init::@7
(label) bitmap_init::@return
(byte*) bitmap_init::bitmap
(byte*) bitmap_init::bitmap#0
(byte*) bitmap_init::bitmap#1
(byte*) bitmap_init::bitmap#2
(byte*) bitmap_init::bitmap#3
(byte*) bitmap_init::bitmap#4
(byte*) bitmap_init::bitmap#5
(byte) bitmap_init::bits
(byte) bitmap_init::bits#0
(byte) bitmap_init::bits#1
(byte) bitmap_init::bits#2
(byte) bitmap_init::bits#3
(byte) bitmap_init::bits#4
(byte) bitmap_init::x
(byte) bitmap_init::x#0
(byte) bitmap_init::x#1
(byte) bitmap_init::x#2
(byte) bitmap_init::x#3
(byte) bitmap_init::x#4
(byte) bitmap_init::y
(byte) bitmap_init::y#0
(byte) bitmap_init::y#1
(byte) bitmap_init::y#2
(byte) bitmap_init::y#3
(byte) bitmap_init::y#4
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#0
(byte*) bitmap_init::yoffs#1
(byte*) bitmap_init::yoffs#2
(byte*) bitmap_init::yoffs#3
(byte*) bitmap_init::yoffs#4
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(byte*~) bitmap_plot::$0
(word~) bitmap_plot::$1
(byte~) bitmap_plot::$2
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(byte*) bitmap_plot::plotter#0
(byte*) bitmap_plot::plotter#1
(word) bitmap_plot::x
(word) bitmap_plot::x#0
(word) bitmap_plot::x#1
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0
(byte) bitmap_plot::y#1
(byte[256]) bitmap_plot_bit
(byte[256]) bitmap_plot_bit#0
(byte[256]) bitmap_plot_yhi
(byte[256]) bitmap_plot_yhi#0
(byte[256]) bitmap_plot_ylo
(byte[256]) bitmap_plot_ylo#0
(byte[4]) delay
(byte[4]) delay#0
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(bool~) divr16s::$0
(bool~) divr16s::$1
(word~) divr16s::$10
(signed word~) divr16s::$11
(word~) divr16s::$12
(byte/word/dword~) divr16s::$13
(word~) divr16s::$14
(bool~) divr16s::$15
(signed word~) divr16s::$16
(signed word~) divr16s::$17
(signed word~) divr16s::$18
(signed word~) divr16s::$19
(bool~) divr16s::$2
(signed word~) divr16s::$20
(signed word~) divr16s::$21
(word~) divr16s::$3
(word~) divr16s::$4
(signed word~) divr16s::$5
(word~) divr16s::$6
(signed word~) divr16s::$7
(word~) divr16s::$8
(bool~) divr16s::$9
(label) divr16s::@1
(label) divr16s::@11
(label) divr16s::@15
(label) divr16s::@2
(label) divr16s::@3
(label) divr16s::@4
(label) divr16s::@5
(label) divr16s::@7
(label) divr16s::@9
(label) divr16s::@return
(signed word) divr16s::dividend
(signed word) divr16s::dividend#0
(signed word) divr16s::dividend#1
(signed word) divr16s::dividend#2
(signed word) divr16s::dividend#3
(word) divr16s::dividendu
(word) divr16s::dividendu#0
(word) divr16s::dividendu#1
(word) divr16s::dividendu#2
(word) divr16s::dividendu#3
(word) divr16s::dividendu#4
(word) divr16s::dividendu#5
(word) divr16s::dividendu#6
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0
(signed word) divr16s::divisor#1
(signed word) divr16s::divisor#2
(signed word) divr16s::divisor#3
(signed word) divr16s::divisor#4
(signed word) divr16s::divisor#5
(signed word) divr16s::divisor#6
(word) divr16s::divisoru
(word) divr16s::divisoru#0
(word) divr16s::divisoru#1
(word) divr16s::divisoru#2
(word) divr16s::divisoru#3
(byte) divr16s::neg
(byte) divr16s::neg#0
(byte) divr16s::neg#1
(byte) divr16s::neg#2
(byte) divr16s::neg#3
(byte) divr16s::neg#4
(byte) divr16s::neg#5
(byte) divr16s::neg#6
(byte) divr16s::neg#7
(byte) divr16s::neg#8
(signed word) divr16s::rem
(signed word) divr16s::rem#0
(signed word) divr16s::rem#1
(signed word) divr16s::rem#2
(signed word) divr16s::rem#3
(word) divr16s::remu
(word) divr16s::remu#0
(word) divr16s::remu#1
(word) divr16s::remu#2
(word) divr16s::remu#3
(word) divr16s::remu#4
(word) divr16s::remu#5
(word) divr16s::remu#6
(word) divr16s::resultu
(word) divr16s::resultu#0
(word) divr16s::resultu#1
(word) divr16s::resultu#2
(signed word) divr16s::return
(signed word) divr16s::return#0
(signed word) divr16s::return#1
(signed word) divr16s::return#2
(signed word) divr16s::return#3
(signed word) divr16s::return#4
(signed word) divr16s::return#5
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(word~) divr16u::$0
(byte~) divr16u::$1
(word~) divr16u::$10
(bool~) divr16u::$11
(byte~) divr16u::$2
(bool~) divr16u::$3
(bool~) divr16u::$4
(word/dword~) divr16u::$5
(word~) divr16u::$6
(word~) divr16u::$7
(bool~) divr16u::$8
(bool~) divr16u::$9
(label) divr16u::@1
(label) divr16u::@2
(label) divr16u::@3
(label) divr16u::@4
(label) divr16u::@5
(label) divr16u::@6
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0
(word) divr16u::dividend#1
(word) divr16u::dividend#2
(word) divr16u::dividend#3
(word) divr16u::dividend#4
(word) divr16u::dividend#5
(word) divr16u::dividend#6
(word) divr16u::dividend#7
(word) divr16u::divisor
(word) divr16u::divisor#0
(word) divr16u::divisor#1
(word) divr16u::divisor#2
(word) divr16u::divisor#3
(word) divr16u::divisor#4
(word) divr16u::divisor#5
(word) divr16u::divisor#6
(byte) divr16u::i
(byte) divr16u::i#0
(byte) divr16u::i#1
(byte) divr16u::i#2
(byte) divr16u::i#3
(byte) divr16u::i#4
(byte) divr16u::i#5
(byte) divr16u::i#6
(word) divr16u::quotient
(word) divr16u::quotient#0
(word) divr16u::quotient#1
(word) divr16u::quotient#2
(word) divr16u::quotient#3
(word) divr16u::quotient#4
(word) divr16u::quotient#5
(word) divr16u::quotient#6
(word) divr16u::quotient#7
(word) divr16u::quotient#8
(word) divr16u::rem
(word) divr16u::rem#0
(word) divr16u::rem#1
(word) divr16u::rem#10
(word) divr16u::rem#2
(word) divr16u::rem#3
(word) divr16u::rem#4
(word) divr16u::rem#5
(word) divr16u::rem#6
(word) divr16u::rem#7
(word) divr16u::rem#8
(word) divr16u::rem#9
(word) divr16u::return
(word) divr16u::return#0
(word) divr16u::return#1
(word) divr16u::return#2
(word) divr16u::return#3
(word) divr16u::return#4
(byte[4]) frame
(byte[4]) frame#0
(void()) main()
(byte~) main::$0
(byte~) main::$1
(bool~) main::$11
(bool~) main::$12
(byte/word/dword~) main::$2
(byte~) main::$4
(byte~) main::$9
(label) main::@1
(label) main::@15
(label) main::@16
(label) main::@17
(label) main::@18
(label) main::@19
(label) main::@2
(label) main::@20
(label) main::@21
(label) main::@3
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@return
(byte) main::i
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
(byte) main::i#3
(byte) main::i#4
(label) main::toD0181
(word~) main::toD0181_$0
(word) main::toD0181_$0#0
(word~) main::toD0181_$1
(word) main::toD0181_$1#0
(word~) main::toD0181_$2
(word) main::toD0181_$2#0
(byte~) main::toD0181_$3
(byte) main::toD0181_$3#0
(word~) main::toD0181_$4
(word) main::toD0181_$4#0
(byte~) main::toD0181_$5
(byte) main::toD0181_$5#0
(byte~) main::toD0181_$6
(byte) main::toD0181_$6#0
(byte~) main::toD0181_$7
(byte) main::toD0181_$7#0
(byte~) main::toD0181_$8
(byte) main::toD0181_$8#0
(label) main::toD0181_@return
(byte*) main::toD0181_gfx
(byte*) main::toD0181_gfx#0
(byte*) main::toD0181_gfx#1
(byte) main::toD0181_return
(byte) main::toD0181_return#0
(byte) main::toD0181_return#1
(byte) main::toD0181_return#2
(byte) main::toD0181_return#3
(byte*) main::toD0181_screen
(byte*) main::toD0181_screen#0
(byte*) main::toD0181_screen#1
(label) main::vicSelectGfxBank1
(byte~) main::vicSelectGfxBank1_$0
(byte) main::vicSelectGfxBank1_$0#0
(label) main::vicSelectGfxBank1_@1
(byte*) main::vicSelectGfxBank1_gfx
(byte*) main::vicSelectGfxBank1_gfx#0
(byte*) main::vicSelectGfxBank1_gfx#1
(label) main::vicSelectGfxBank1_toDd001
(word~) main::vicSelectGfxBank1_toDd001_$0
(word) main::vicSelectGfxBank1_toDd001_$0#0
(byte~) main::vicSelectGfxBank1_toDd001_$1
(byte) main::vicSelectGfxBank1_toDd001_$1#0
(byte~) main::vicSelectGfxBank1_toDd001_$2
(byte) main::vicSelectGfxBank1_toDd001_$2#0
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
(byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0
(label) main::vicSelectGfxBank1_toDd001_@return
(byte*) main::vicSelectGfxBank1_toDd001_gfx
(byte*) main::vicSelectGfxBank1_toDd001_gfx#0
(byte*) main::vicSelectGfxBank1_toDd001_gfx#1
(byte) main::vicSelectGfxBank1_toDd001_return
(byte) main::vicSelectGfxBank1_toDd001_return#0
(byte) main::vicSelectGfxBank1_toDd001_return#1
(byte) main::vicSelectGfxBank1_toDd001_return#2
(byte) main::vicSelectGfxBank1_toDd001_return#3
(void()) point_init((byte) point_init::point_idx)
(byte~) point_init::$0
(signed word~) point_init::$1
(bool~) point_init::$10
(signed byte/signed word/signed dword~) point_init::$11
(signed word~) point_init::$12
(byte~) point_init::$13
(byte~) point_init::$14
(signed byte~) point_init::$15
(word~) point_init::$16
(word~) point_init::$17
(word~) point_init::$18
(signed word~) point_init::$2
(signed word~) point_init::$3
(signed word~) point_init::$4
(signed word~) point_init::$5
(signed word~) point_init::$6
(word~) point_init::$7
(word~) point_init::$8
(bool~) point_init::$9
(label) point_init::@1
(label) point_init::@10
(label) point_init::@11
(label) point_init::@2
(label) point_init::@3
(label) point_init::@4
(label) point_init::@7
(label) point_init::@9
(label) point_init::@return
(label) point_init::abs16s1
(bool~) point_init::abs16s1_$0
(bool) point_init::abs16s1_$0#0
(word~) point_init::abs16s1_$1
(word) point_init::abs16s1_$1#0
(signed word~) point_init::abs16s1_$2
(signed word) point_init::abs16s1_$2#0
(word~) point_init::abs16s1_$3
(word) point_init::abs16s1_$3#0
(label) point_init::abs16s1_@1
(label) point_init::abs16s1_@3
(label) point_init::abs16s1_@return
(word) point_init::abs16s1_return
(word) point_init::abs16s1_return#0
(word) point_init::abs16s1_return#1
(word) point_init::abs16s1_return#2
(word) point_init::abs16s1_return#3
(word) point_init::abs16s1_return#4
(signed word) point_init::abs16s1_w
(signed word) point_init::abs16s1_w#0
(signed word) point_init::abs16s1_w#1
(signed word) point_init::abs16s1_w#2
(signed word) point_init::abs16s1_w#3
(label) point_init::abs16s2
(bool~) point_init::abs16s2_$0
(bool) point_init::abs16s2_$0#0
(word~) point_init::abs16s2_$1
(word) point_init::abs16s2_$1#0
(signed word~) point_init::abs16s2_$2
(signed word) point_init::abs16s2_$2#0
(word~) point_init::abs16s2_$3
(word) point_init::abs16s2_$3#0
(label) point_init::abs16s2_@1
(label) point_init::abs16s2_@3
(label) point_init::abs16s2_@return
(word) point_init::abs16s2_return
(word) point_init::abs16s2_return#0
(word) point_init::abs16s2_return#1
(word) point_init::abs16s2_return#2
(word) point_init::abs16s2_return#3
(word) point_init::abs16s2_return#4
(signed word) point_init::abs16s2_w
(signed word) point_init::abs16s2_w#0
(signed word) point_init::abs16s2_w#1
(signed word) point_init::abs16s2_w#2
(signed word) point_init::abs16s2_w#3
(byte) point_init::point_idx
(byte) point_init::point_idx#0
(byte) point_init::point_idx#1
(byte) point_init::point_idx#10
(byte) point_init::point_idx#11
(byte) point_init::point_idx#12
(byte) point_init::point_idx#13
(byte) point_init::point_idx#14
(byte) point_init::point_idx#15
(byte) point_init::point_idx#16
(byte) point_init::point_idx#17
(byte) point_init::point_idx#2
(byte) point_init::point_idx#3
(byte) point_init::point_idx#4
(byte) point_init::point_idx#5
(byte) point_init::point_idx#6
(byte) point_init::point_idx#7
(byte) point_init::point_idx#8
(byte) point_init::point_idx#9
(byte) point_init::point_idx1
(byte) point_init::point_idx1#0
(byte) point_init::point_idx1#1
(byte) point_init::point_idx1#10
(byte) point_init::point_idx1#11
(byte) point_init::point_idx1#12
(byte) point_init::point_idx1#13
(byte) point_init::point_idx1#14
(byte) point_init::point_idx1#15
(byte) point_init::point_idx1#16
(byte) point_init::point_idx1#2
(byte) point_init::point_idx1#3
(byte) point_init::point_idx1#4
(byte) point_init::point_idx1#5
(byte) point_init::point_idx1#6
(byte) point_init::point_idx1#7
(byte) point_init::point_idx1#8
(byte) point_init::point_idx1#9
(signed word) point_init::x_diff
(signed word) point_init::x_diff#0
(signed word) point_init::x_diff#1
(signed word) point_init::x_diff#10
(signed word) point_init::x_diff#11
(signed word) point_init::x_diff#12
(signed word) point_init::x_diff#13
(signed word) point_init::x_diff#14
(signed word) point_init::x_diff#2
(signed word) point_init::x_diff#3
(signed word) point_init::x_diff#4
(signed word) point_init::x_diff#5
(signed word) point_init::x_diff#6
(signed word) point_init::x_diff#7
(signed word) point_init::x_diff#8
(signed word) point_init::x_diff#9
(signed word) point_init::x_stepf
(signed word) point_init::x_stepf#0
(signed word) point_init::y_diff
(signed word) point_init::y_diff#0
(signed word) point_init::y_diff#1
(signed word) point_init::y_diff#10
(signed word) point_init::y_diff#11
(signed word) point_init::y_diff#12
(signed word) point_init::y_diff#13
(signed word) point_init::y_diff#14
(signed word) point_init::y_diff#2
(signed word) point_init::y_diff#3
(signed word) point_init::y_diff#4
(signed word) point_init::y_diff#5
(signed word) point_init::y_diff#6
(signed word) point_init::y_diff#7
(signed word) point_init::y_diff#8
(signed word) point_init::y_diff#9
(signed word) rem16s
(signed word) rem16s#0
(signed word) rem16s#1
(signed word) rem16s#10
(signed word) rem16s#11
(signed word) rem16s#12
(signed word) rem16s#13
(signed word) rem16s#14
(signed word) rem16s#15
(signed word) rem16s#16
(signed word) rem16s#17
(signed word) rem16s#18
(signed word) rem16s#19
(signed word) rem16s#2
(signed word) rem16s#20
(signed word) rem16s#21
(signed word) rem16s#22
(signed word) rem16s#23
(signed word) rem16s#24
(signed word) rem16s#25
(signed word) rem16s#26
(signed word) rem16s#27
(signed word) rem16s#28
(signed word) rem16s#29
(signed word) rem16s#3
(signed word) rem16s#30
(signed word) rem16s#31
(signed word) rem16s#32
(signed word) rem16s#33
(signed word) rem16s#34
(signed word) rem16s#35
(signed word) rem16s#36
(signed word) rem16s#37
(signed word) rem16s#38
(signed word) rem16s#39
(signed word) rem16s#4
(signed word) rem16s#40
(signed word) rem16s#41
(signed word) rem16s#42
(signed word) rem16s#43
(signed word) rem16s#44
(signed word) rem16s#45
(signed word) rem16s#46
(signed word) rem16s#47
(signed word) rem16s#48
(signed word) rem16s#49
(signed word) rem16s#5
(signed word) rem16s#50
(signed word) rem16s#51
(signed word) rem16s#52
(signed word) rem16s#6
(signed word) rem16s#7
(signed word) rem16s#8
(signed word) rem16s#9
(word) rem16u
(word) rem16u#0
(word) rem16u#1
(word) rem16u#10
(word) rem16u#11
(word) rem16u#12
(word) rem16u#13
(word) rem16u#14
(word) rem16u#15
(word) rem16u#16
(word) rem16u#17
(word) rem16u#18
(word) rem16u#19
(word) rem16u#2
(word) rem16u#20
(word) rem16u#21
(word) rem16u#22
(word) rem16u#23
(word) rem16u#24
(word) rem16u#25
(word) rem16u#26
(word) rem16u#27
(word) rem16u#28
(word) rem16u#29
(word) rem16u#3
(word) rem16u#30
(word) rem16u#31
(word) rem16u#32
(word) rem16u#33
(word) rem16u#34
(word) rem16u#35
(word) rem16u#36
(word) rem16u#37
(word) rem16u#38
(word) rem16u#39
(word) rem16u#4
(word) rem16u#40
(word) rem16u#41
(word) rem16u#42
(word) rem16u#43
(word) rem16u#44
(word) rem16u#45
(word) rem16u#46
(word) rem16u#47
(word) rem16u#48
(word) rem16u#49
(word) rem16u#5
(word) rem16u#50
(word) rem16u#51
(word) rem16u#52
(word) rem16u#53
(word) rem16u#54
(word) rem16u#55
(word) rem16u#56
(word) rem16u#57
(word) rem16u#58
(word) rem16u#59
(word) rem16u#6
(word) rem16u#60
(word) rem16u#61
(word) rem16u#62
(word) rem16u#63
(word) rem16u#64
(word) rem16u#65
(word) rem16u#66
(word) rem16u#7
(word) rem16u#8
(word) rem16u#9
(signed byte) rem8s
(signed byte) rem8s#0
(byte) rem8u
(byte) rem8u#0
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
(bool~) screen_fill::$0
(bool~) screen_fill::$1
(label) screen_fill::@1
(label) screen_fill::@2
(label) screen_fill::@3
(label) screen_fill::@return
(byte) screen_fill::ch
(byte) screen_fill::ch#0
(byte) screen_fill::ch#1
(byte) screen_fill::ch#2
(byte) screen_fill::ch#3
(byte) screen_fill::ch#4
(byte*) screen_fill::screen
(byte*) screen_fill::screen#0
(byte*) screen_fill::screen#1
(byte*) screen_fill::screen#2
(byte*) screen_fill::screen#3
(byte*) screen_fill::screen#4
(byte*) screen_fill::screen#5
(byte) screen_fill::x
(byte) screen_fill::x#0
(byte) screen_fill::x#1
(byte) screen_fill::x#2
(byte) screen_fill::y
(byte) screen_fill::y#0
(byte) screen_fill::y#1
(byte) screen_fill::y#2
(byte) screen_fill::y#3
(byte) screen_fill::y#4
(signed byte[4]) x_add
(signed byte[4]) x_add#0
(word[4]) x_cur
(word[4]) x_cur#0
(word[4]) x_end
(word[4]) x_end#0
(word[4]) x_start
(word[4]) x_start#0
(signed byte[4]) y_add
(signed byte[4]) y_add#0
(word[4]) y_cur
(word[4]) y_cur#0
(byte[4]) y_end
(byte[4]) y_end#0
(byte[4]) y_start
(byte[4]) y_start#0

Inversing boolean not [90] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [89] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [98] (bool~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from [97] (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1
Inversing boolean not [382] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [381] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not [402] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [401] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7
Successful SSA optimization Pass2UnaryNotSimplification
Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#6 
Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#7 
Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 
Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#6 
Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 
Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#4 
Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 
Alias (word) divr16u::rem#1 = (word/dword~) divr16u::$5 
Alias (word) divr16u::rem#5 = (word) divr16u::rem#7 
Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2 
Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 
Alias (word) divr16u::rem#2 = (word~) divr16u::$10 
Alias (word) divr16u::rem#10 = (word) divr16u::rem#8 
Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1 
Alias (word) rem16u#1 = (word) rem16u#10 (word) rem16u#2 
Alias (word) rem16u#0 = (word) rem16u#49 (word) rem16u#43 (word) rem16u#40 (word) rem16u#34 (word) rem16u#25 
Alias (signed word) divr16s::dividend#1 = (signed word) divr16s::dividend#2 (signed word) divr16s::dividend#3 
Alias (signed word) divr16s::rem#1 = (signed word) divr16s::rem#2 (signed word) divr16s::rem#3 
Alias (signed word) divr16s::divisor#4 = (signed word) divr16s::divisor#6 (signed word) divr16s::divisor#5 
Alias (word) rem16u#41 = (word) rem16u#50 (word) rem16u#42 
Alias (word) divr16s::dividendu#1 = (word~) divr16s::$6 
Alias (word) divr16s::remu#1 = (word~) divr16s::$8 
Alias (byte) divr16s::neg#0 = (byte) divr16s::neg#7 
Alias (word) divr16s::dividendu#2 = (word~) divr16s::$3 
Alias (word) divr16s::remu#2 = (word~) divr16s::$4 
Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#2 (signed word) divr16s::divisor#3 
Alias (byte) divr16s::neg#3 = (byte) divr16s::neg#5 (byte) divr16s::neg#8 
Alias (word) divr16s::dividendu#4 = (word) divr16s::dividendu#6 (word) divr16s::dividendu#5 
Alias (word) divr16s::remu#4 = (word) divr16s::remu#6 (word) divr16s::remu#5 
Alias (word) rem16u#26 = (word) rem16u#35 (word) rem16u#27 
Alias (word) divr16s::divisoru#1 = (word~) divr16s::$12 
Alias (byte) divr16s::neg#2 = (byte/word/dword~) divr16s::$13 
Alias (word) divr16s::divisoru#2 = (word~) divr16s::$10 
Alias (word) divr16u::return#2 = (word) divr16u::return#4 
Alias (byte) divr16s::neg#4 = (byte) divr16s::neg#6 
Alias (word) rem16u#11 = (word) rem16u#3 (word) rem16u#12 (word) rem16u#13 
Alias (word) divr16s::resultu#0 = (word~) divr16s::$14 (word) divr16s::resultu#1 (word) divr16s::resultu#2 
Alias (signed word) rem16s#1 = (signed word~) divr16s::$20 
Alias (signed word) divr16s::return#0 = (signed word~) divr16s::$21 
Alias (signed word) rem16s#2 = (signed word~) divr16s::$17 
Alias (signed word) divr16s::return#1 = (signed word~) divr16s::$19 
Alias (signed word) divr16s::return#2 = (signed word) divr16s::return#4 
Alias (word) rem16u#14 = (word) rem16u#4 
Alias (signed word) rem16s#3 = (signed word) rem16s#9 
Alias (signed word) rem16s#0 = (signed word) rem16s#31 (signed word) rem16s#26 (signed word) rem16s#19 
Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 
Alias (byte*) SCREEN#1 = (byte*) SCREEN#12 (byte*) SCREEN#10 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#2 (byte*) SCREEN#13 (byte*) SCREEN#11 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#3 
Alias (byte*) BITMAP#1 = (byte*) BITMAP#8 (byte*) BITMAP#9 (byte*) BITMAP#7 (byte*) BITMAP#5 (byte*) BITMAP#3 (byte*) BITMAP#6 (byte*) BITMAP#4 (byte*) BITMAP#2 
Alias (word) rem16u#28 = (word) rem16u#65 (word) rem16u#66 (word) rem16u#64 (word) rem16u#62 (word) rem16u#60 (word) rem16u#57 (word) rem16u#55 (word) rem16u#53 (word) rem16u#51 (word) rem16u#44 (word) rem16u#36 
Alias (signed word) rem16s#20 = (signed word) rem16s#51 (signed word) rem16s#52 (signed word) rem16s#50 (signed word) rem16s#48 (signed word) rem16s#46 (signed word) rem16s#43 (signed word) rem16s#41 (signed word) rem16s#39 (signed word) rem16s#37 (signed word) rem16s#32 (signed word) rem16s#27 
Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0 
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 
Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 
Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 
Alias (word) rem16u#15 = (word) rem16u#5 (word) rem16u#29 
Alias (signed word) rem16s#10 = (signed word) rem16s#4 (signed word) rem16s#21 
Alias (word) rem16u#16 = (word) rem16u#45 (word) rem16u#22 (word) rem16u#6 
Alias (signed word) rem16s#11 = (signed word) rem16s#33 (signed word) rem16s#16 (signed word) rem16s#5 
Alias (word) rem16u#30 = (word) rem16u#46 (word) rem16u#37 
Alias (signed word) rem16s#22 = (signed word) rem16s#34 (signed word) rem16s#28 
Alias (byte) point_init::point_idx1#0 = (byte~) point_init::$0 (byte) point_init::point_idx1#16 (byte) point_init::point_idx1#14 (byte) point_init::point_idx1#15 
Alias (signed word) point_init::abs16s1_w#0 = (signed word) point_init::x_diff#0 (signed word~) point_init::$3 (signed word) point_init::abs16s1_w#1 (signed word) point_init::x_diff#14 (signed word) point_init::abs16s1_w#2 (signed word) point_init::x_diff#12 (signed word) point_init::abs16s1_w#3 (signed word) point_init::x_diff#13 
Alias (signed word) point_init::y_diff#0 = (signed word~) point_init::$6 (signed word) point_init::y_diff#9 (signed word) point_init::y_diff#6 (signed word) point_init::y_diff#7 
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#17 (byte) point_init::point_idx#15 (byte) point_init::point_idx#16 
Alias (word) rem16u#58 = (word) rem16u#61 (word) rem16u#63 (word) rem16u#59 
Alias (signed word) rem16s#44 = (signed word) rem16s#47 (signed word) rem16s#49 (signed word) rem16s#45 
Alias (word) point_init::abs16s1_return#0 = (word) point_init::abs16s1_$3#0 
Alias (word) point_init::abs16s1_return#1 = (word) point_init::abs16s1_$1#0 
Alias (word) point_init::abs16s1_return#2 = (word) point_init::abs16s1_return#3 (word) point_init::abs16s1_return#4 (word~) point_init::$7 
Alias (signed word) point_init::y_diff#1 = (signed word) point_init::y_diff#3 (signed word) point_init::abs16s2_w#0 (signed word) point_init::abs16s2_w#1 (signed word) point_init::y_diff#14 (signed word) point_init::abs16s2_w#2 (signed word) point_init::y_diff#12 (signed word) point_init::abs16s2_w#3 (signed word) point_init::y_diff#13 
Alias (signed word) point_init::x_diff#10 = (signed word) point_init::x_diff#11 (signed word) point_init::x_diff#9 (signed word) point_init::x_diff#7 (signed word) point_init::x_diff#8 
Alias (byte) point_init::point_idx#10 = (byte) point_init::point_idx#13 (byte) point_init::point_idx#14 (byte) point_init::point_idx#12 (byte) point_init::point_idx#11 
Alias (byte) point_init::point_idx1#11 = (byte) point_init::point_idx1#12 (byte) point_init::point_idx1#13 (byte) point_init::point_idx1#8 (byte) point_init::point_idx1#9 
Alias (word) rem16u#47 = (word) rem16u#54 (word) rem16u#56 (word) rem16u#52 (word) rem16u#48 
Alias (signed word) rem16s#35 = (signed word) rem16s#40 (signed word) rem16s#42 (signed word) rem16s#38 (signed word) rem16s#36 
Alias (word) point_init::abs16s2_return#0 = (word) point_init::abs16s2_$3#0 
Alias (word) point_init::abs16s2_return#1 = (word) point_init::abs16s2_$1#0 
Alias (word) point_init::abs16s2_return#2 = (word) point_init::abs16s2_return#3 (word) point_init::abs16s2_return#4 (word~) point_init::$8 
Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#3 (signed word) point_init::x_diff#6 (signed word) point_init::x_diff#4 (signed word) point_init::x_diff#5 
Alias (byte) point_init::point_idx#3 = (byte) point_init::point_idx#5 (byte) point_init::point_idx#8 (byte) point_init::point_idx#7 (byte) point_init::point_idx#4 
Alias (byte) point_init::point_idx1#10 = (byte) point_init::point_idx1#3 (byte) point_init::point_idx1#5 (byte) point_init::point_idx1#6 (byte) point_init::point_idx1#7 
Alias (word) rem16u#31 = (word) rem16u#38 (word) rem16u#39 (word) rem16u#32 (word) rem16u#33 
Alias (signed word) rem16s#23 = (signed word) rem16s#29 (signed word) rem16s#30 (signed word) rem16s#24 (signed word) rem16s#25 
Alias (signed word) point_init::y_diff#10 = (signed word) point_init::y_diff#11 (signed word) point_init::y_diff#8 (signed word) point_init::y_diff#4 (signed word) point_init::y_diff#5 
Alias (signed word) divr16s::return#3 = (signed word) divr16s::return#5 
Alias (byte) point_init::point_idx1#2 = (byte) point_init::point_idx1#4 
Alias (byte) point_init::point_idx#6 = (byte) point_init::point_idx#9 
Alias (word) rem16u#17 = (word) rem16u#7 
Alias (signed word) rem16s#12 = (signed word) rem16s#6 
Alias (signed word) point_init::x_stepf#0 = (signed word~) point_init::$12 
Alias (word) rem16u#18 = (word) rem16u#24 (word) rem16u#8 
Alias (signed word) rem16s#13 = (signed word) rem16s#18 (signed word) rem16s#7 
Alias (byte) screen_fill::y#2 = (byte) screen_fill::y#3 
Alias (byte) screen_fill::ch#1 = (byte) screen_fill::ch#4 
Alias (byte*) screen_fill::screen#1 = (byte*) screen_fill::screen#5 
Alias (byte*) SCREEN#0 = (byte*) SCREEN#9 (byte*) SCREEN#4 
Alias (byte*) BITMAP#0 = (byte*) BITMAP#11 (byte*) BITMAP#10 
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 
Alias (byte*) bitmap_init::bitmap#3 = (byte*) bitmap_init::bitmap#4 
Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::yoffs#0 
Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 
Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$11 
Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0 
Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3 
Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4 
Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 
Alias (word) rem16u#19 = (word) rem16u#9 
Alias (signed word) rem16s#14 = (signed word) rem16s#8 
Successful SSA optimization Pass2AliasElimination
Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3 
Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 
Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divisor#6 
Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 
Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5 
Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#4 
Alias (word) rem16u#20 = (word) rem16u#26 (word) rem16u#41 
Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4 
Alias (word) divr16s::remu#3 = (word) divr16s::remu#4 
Alias (word) rem16u#11 = (word) rem16u#14 
Alias (signed word) point_init::y_diff#0 = (signed word) point_init::y_diff#1 (signed word) point_init::y_diff#10 (signed word) point_init::y_diff#2 
Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#10 (signed word) point_init::abs16s1_w#0 (signed word) point_init::x_diff#2 
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#10 (byte) point_init::point_idx#3 (byte) point_init::point_idx#6 
Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#11 (byte) point_init::point_idx1#10 (byte) point_init::point_idx1#2 
Alias (word) rem16u#23 = (word) rem16u#47 (word) rem16u#58 (word) rem16u#31 
Alias (signed word) rem16s#17 = (signed word) rem16s#35 (signed word) rem16s#44 (signed word) rem16s#23 
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 
Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 
Successful SSA optimization Pass2AliasElimination
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#2 
Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#1 
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (word) divr16u::divisor#1
Self Phi Eliminated (word) rem16u#30
Self Phi Eliminated (signed word) rem16s#22
Self Phi Eliminated (byte) screen_fill::ch#1
Self Phi Eliminated (byte) screen_fill::y#2
Self Phi Eliminated (byte*) bitmap_init::bitmap#1
Self Phi Eliminated (byte) bitmap_clear::y#2
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (word) divr16u::rem#9 (word) divr16u::rem#3
Redundant Phi (word) divr16u::dividend#4 (word) divr16u::dividend#1
Redundant Phi (word) divr16u::divisor#5 (word) divr16u::divisor#0
Redundant Phi (word) divr16u::divisor#1 (word) divr16u::divisor#5
Redundant Phi (signed word) divr16s::dividend#1 (signed word) divr16s::dividend#0
Redundant Phi (signed word) divr16s::rem#1 (signed word) divr16s::rem#0
Redundant Phi (signed word) divr16s::divisor#1 (signed word) divr16s::divisor#0
Redundant Phi (word) rem16u#20 (word) rem16u#23
Redundant Phi (word) rem16u#11 (word) rem16u#1
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte*) BITMAP#1 (byte*) BITMAP#0
Redundant Phi (word) rem16u#28 (word) rem16u#0
Redundant Phi (signed word) rem16s#20 (signed word) rem16s#0
Redundant Phi (word) rem16u#15 (word) rem16u#18
Redundant Phi (signed word) rem16s#10 (signed word) rem16s#13
Redundant Phi (word) rem16u#30 (word) rem16u#16
Redundant Phi (signed word) rem16s#22 (signed word) rem16s#11
Redundant Phi (byte) point_init::point_idx#1 (byte) point_init::point_idx#0
Redundant Phi (word) rem16u#23 (word) rem16u#21
Redundant Phi (signed word) rem16s#17 (signed word) rem16s#15
Redundant Phi (word) rem16u#17 (word) rem16u#11
Redundant Phi (signed word) rem16s#12 (signed word) rem16s#3
Redundant Phi (byte) screen_fill::ch#3 (byte) screen_fill::ch#0
Redundant Phi (byte*) screen_fill::screen#4 (byte*) screen_fill::screen#0
Redundant Phi (byte) screen_fill::ch#1 (byte) screen_fill::ch#2
Redundant Phi (byte) screen_fill::y#2 (byte) screen_fill::y#4
Redundant Phi (byte*) bitmap_init::bitmap#5 (byte*) bitmap_init::bitmap#0
Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#5
Redundant Phi (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4
Redundant Phi (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#0
Redundant Phi (word) bitmap_plot::x#1 (word) bitmap_plot::x#0
Redundant Phi (word) rem16u#19 (word) rem16u#16
Redundant Phi (signed word) rem16s#14 (signed word) rem16s#11
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) divr16u::$4 [91] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
Simple Condition (bool~) divr16u::$9 [99] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3
Simple Condition (bool~) divr16u::$11 [106] if((byte) divr16u::i#1!=rangelast(0,15)) goto divr16u::@1
Simple Condition (bool~) divr16s::$9 [146] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
Simple Condition (bool~) divr16s::$15 [167] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@5
Simple Condition (bool~) main::$11 [265] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1
Simple Condition (bool~) main::$12 [271] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@6
Simple Condition (bool) point_init::abs16s1_$0#0 [293] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1
Simple Condition (bool) point_init::abs16s2_$0#0 [308] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1
Simple Condition (bool~) point_init::$9 [321] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1
Simple Condition (bool~) point_init::$10 [324] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3
Simple Condition (bool~) screen_fill::$0 [365] if((byte) screen_fill::x#1!=rangelast(0,39)) goto screen_fill::@2
Simple Condition (bool~) screen_fill::$1 [369] if((byte) screen_fill::y#1!=rangelast(0,24)) goto screen_fill::@1
Simple Condition (bool~) bitmap_init::$1 [383] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2
Simple Condition (bool~) bitmap_init::$2 [387] if((byte) bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1
Simple Condition (bool~) bitmap_init::$9 [403] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
Simple Condition (bool~) bitmap_init::$12 [407] if((byte) bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3
Simple Condition (bool~) bitmap_clear::$1 [423] if((byte) bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2
Simple Condition (bool~) bitmap_clear::$2 [427] if((byte) bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting || if()-condition to two if()s [128] (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
Constant (const byte) PROCPORT_RAM_IO#0 = 53
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
Constant (const byte*) CHARGEN#0 = ((byte*))53248
Constant (const word) SPRITE_PTRS#0 = 1016
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte*) BGCOL1#0 = ((byte*))53281
Constant (const byte*) BGCOL2#0 = ((byte*))53282
Constant (const byte*) BGCOL3#0 = ((byte*))53283
Constant (const byte*) BGCOL4#0 = ((byte*))53284
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
Constant (const byte*) D011#0 = ((byte*))53265
Constant (const byte) VIC_RST8#0 = 128
Constant (const byte) VIC_ECM#0 = 64
Constant (const byte) VIC_BMM#0 = 32
Constant (const byte) VIC_DEN#0 = 16
Constant (const byte) VIC_RSEL#0 = 8
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
Constant (const byte*) D016#0 = ((byte*))53270
Constant (const byte) VIC_MCM#0 = 16
Constant (const byte) VIC_CSEL#0 = 8
Constant (const byte*) D018#0 = ((byte*))53272
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
Constant (const byte) IRQ_RASTER#0 = 1
Constant (const byte) IRQ_COLLISION_BG#0 = 2
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
Constant (const byte) IRQ_LIGHTPEN#0 = 8
Constant (const byte*) COLS#0 = ((byte*))55296
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
Constant (const byte) BLACK#0 = 0
Constant (const byte) WHITE#0 = 1
Constant (const byte) RED#0 = 2
Constant (const byte) CYAN#0 = 3
Constant (const byte) PURPLE#0 = 4
Constant (const byte) GREEN#0 = 5
Constant (const byte) BLUE#0 = 6
Constant (const byte) YELLOW#0 = 7
Constant (const byte) ORANGE#0 = 8
Constant (const byte) BROWN#0 = 9
Constant (const byte) PINK#0 = 10
Constant (const byte) DARK_GREY#0 = 11
Constant (const byte) GREY#0 = 12
Constant (const byte) LIGHT_GREEN#0 = 13
Constant (const byte) LIGHT_BLUE#0 = 14
Constant (const byte) LIGHT_GREY#0 = 15
Constant (const byte) rem8u#0 = 0
Constant (const word) rem16u#0 = 0
Constant (const word) divr16u::quotient#0 = 0
Constant (const byte) divr16u::i#0 = 0
Constant (const signed byte) rem8s#0 = 0
Constant (const signed word) rem16s#0 = 0
Constant (const byte) divr16s::neg#0 = 0
Constant (const word) divr16s::dividendu#0 = 0
Constant (const word) divr16s::remu#0 = 0
Constant (const byte) divr16s::neg#1 = 1
Constant (const word) divr16s::divisoru#0 = 0
Constant (const byte*) BITMAP#0 = ((byte*))40960
Constant (const byte*) SCREEN#0 = ((byte*))34816
Constant (const byte) SIZE#0 = 4
Constant (const byte) DELAY#0 = 8
Constant (const word[4]) x_start#0 = { 10, 20, 30, 30 }
Constant (const byte[4]) y_start#0 = { 10, 10, 10, 20 }
Constant (const word[4]) x_end#0 = { 20, 10, 20, 20 }
Constant (const byte[4]) y_end#0 = { 20, 20, 10, 20 }
Constant (const word[4]) x_cur#0 = { fill( 4, 0) }
Constant (const word[4]) y_cur#0 = { fill( 4, 0) }
Constant (const signed byte[4]) x_add#0 = { fill( 4, 0) }
Constant (const signed byte[4]) y_add#0 = { fill( 4, 0) }
Constant (const byte[4]) delay#0 = { fill( 4, 0) }
Constant (const byte[4]) frame#0 = { fill( 4, 0) }
Constant (const byte) screen_fill::ch#0 = 16
Constant (const byte) main::i#0 = 0
Constant (const signed byte/signed word/signed dword) point_init::$11 = -16
Constant (const signed word) divr16s::dividend#0 = 0
Constant (const byte) screen_fill::y#0 = 0
Constant (const byte) screen_fill::x#0 = 0
Constant (const byte[256]) bitmap_plot_ylo#0 = { fill( 256, 0) }
Constant (const byte[256]) bitmap_plot_yhi#0 = { fill( 256, 0) }
Constant (const byte[256]) bitmap_plot_bit#0 = { fill( 256, 0) }
Constant (const byte) bitmap_init::bits#0 = 128
Constant (const byte) bitmap_init::x#0 = 0
Constant (const byte) bitmap_init::bits#2 = 128
Constant (const byte) bitmap_init::y#0 = 0
Constant (const word/signed word/dword/signed dword) bitmap_init::$10 = 40*8
Constant (const byte) bitmap_clear::y#0 = 0
Constant (const byte) bitmap_clear::x#0 = 0
Successful SSA optimization Pass2ConstantIdentification
Constant (const bool) divr16s::$0 = divr16s::dividend#0<0
Constant (const signed word) divr16s::$5 = -divr16s::dividend#0
Constant (const word) divr16s::dividendu#2 = ((word))divr16s::dividend#0
Constant (const byte) main::$0 = VIC_BMM#0|VIC_DEN#0
Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = SCREEN#0
Constant (const byte*) main::toD0181_screen#0 = SCREEN#0
Constant (const byte*) main::toD0181_gfx#0 = BITMAP#0
Constant (const byte*) bitmap_init::bitmap#0 = BITMAP#0
Constant (const byte*) screen_fill::screen#0 = SCREEN#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const word) divr16s::dividendu#1 = ((word))divr16s::$5
Constant (const byte) main::$1 = main::$0|VIC_RSEL#0
Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = ((word))main::vicSelectGfxBank1_gfx#0
Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0
Constant (const word) main::toD0181_$4#0 = ((word))main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/word/dword) main::$2 = main::$1|3
Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0
Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&16383
Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0>>6
Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0<<2
Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0>>2
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0
Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0
Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&15
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [18] if((const bool) divr16s::$0) goto divr16s::@1
if() condition always true - replacing block destination [64] if(true) goto main::@3
Successful SSA optimization Pass2ConstantIfs
Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_yhi#0 + 0) w= *(bitmap_plot_ylo#0 + 0)
Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#0) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#0)
Successful SSA optimization Pass2FixInlineConstructors
Successful SSA optimization PassNEliminateUnusedVars
Eliminating Noop Cast (word) divr16s::remu#1 ← ((word)) (signed word~) divr16s::$7
Eliminating Noop Cast (word) divr16s::remu#2 ← ((word)) (signed word) divr16s::rem#0
Eliminating Noop Cast (word) divr16s::divisoru#1 ← ((word)) (signed word~) divr16s::$11
Eliminating Noop Cast (word) divr16s::divisoru#2 ← ((word)) (signed word) divr16s::divisor#0
Eliminating Noop Cast (signed word) rem16s#1 ← ((signed word)) (word) rem16u#1
Eliminating Noop Cast (signed word) divr16s::return#0 ← ((signed word)) (word) divr16s::resultu#0
Eliminating Noop Cast (signed word~) divr16s::$16 ← ((signed word)) (word) rem16u#1
Eliminating Noop Cast (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#0
Eliminating Noop Cast (signed word~) point_init::$1 ← ((signed word)) *((const word[4]) x_end#0 + (byte) point_init::point_idx#0)
Eliminating Noop Cast (signed word~) point_init::$2 ← ((signed word)) *((const word[4]) x_start#0 + (byte) point_init::point_idx#0)
Eliminating Noop Cast (word) point_init::abs16s1_return#0 ← ((word)) (signed word) point_init::abs16s1_$2#0
Eliminating Noop Cast (word) point_init::abs16s1_return#1 ← ((word)) (signed word) point_init::x_diff#1
Eliminating Noop Cast (word) point_init::abs16s2_return#0 ← ((word)) (signed word) point_init::abs16s2_$2#0
Eliminating Noop Cast (word) point_init::abs16s2_return#1 ← ((word)) (signed word) point_init::y_diff#0
Eliminating Noop Cast (signed byte~) point_init::$15 ← ((signed byte)) (byte~) point_init::$14
Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3
Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$3
Successful SSA optimization Pass2NopCastElimination
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++
Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16
Resolved ranged next value screen_fill::x#1 ← ++ screen_fill::x#2 to ++
Resolved ranged comparison value if(screen_fill::x#1!=rangelast(0,39)) goto screen_fill::@2 to (byte/signed byte/word/signed word/dword/signed dword) 40
Resolved ranged next value screen_fill::y#1 ← ++ screen_fill::y#4 to ++
Resolved ranged comparison value if(screen_fill::y#1!=rangelast(0,24)) goto screen_fill::@1 to (byte/signed byte/word/signed word/dword/signed dword) 25
Resolved ranged next value bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++
Resolved ranged comparison value if(bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++
Resolved ranged comparison value if(bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++
Resolved ranged comparison value if(bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 to (byte/word/signed word/dword/signed dword) 200
Resolved ranged next value bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++
Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40
Culled Empty Block (label) @4
Culled Empty Block (label) @6
Culled Empty Block (label) @9
Culled Empty Block (label) @10
Culled Empty Block (label) divr16s::@7
Culled Empty Block (label) divr16s::@9
Culled Empty Block (label) divr16s::@5
Culled Empty Block (label) @12
Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return
Culled Empty Block (label) main::@15
Culled Empty Block (label) main::toD0181_@return
Culled Empty Block (label) main::@19
Culled Empty Block (label) main::@3
Culled Empty Block (label) main::@6
Culled Empty Block (label) point_init::abs16s1_@3
Culled Empty Block (label) point_init::@9
Culled Empty Block (label) point_init::abs16s2_@3
Culled Empty Block (label) @16
Culled Empty Block (label) bitmap_init::@6
Culled Empty Block (label) @20
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte) screen_fill::ch#2
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) screen_fill::ch#2 (const byte) screen_fill::ch#0
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) divr16s::$1 [135] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Consolidated array index constant in *(bitmap_plot_yhi#0+0)
Consolidated array index constant in *(bitmap_plot_ylo#0+0)
Successful SSA optimization Pass2ConstantAdditionElimination
Culled Empty Block (label) main::@2
Successful SSA optimization Pass2CullEmptyBlocks
Inlining constant with var siblings (const word) divr16u::quotient#0
Inlining constant with var siblings (const byte) divr16u::i#0
Inlining constant with var siblings (const byte) divr16s::neg#0
Inlining constant with var siblings (const byte) divr16s::neg#1
Inlining constant with var siblings (const word) divr16s::dividendu#2
Inlining constant with var siblings (const word) divr16s::dividendu#1
Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) screen_fill::y#0
Inlining constant with var siblings (const byte) screen_fill::x#0
Inlining constant with var siblings (const byte*) screen_fill::screen#0
Inlining constant with var siblings (const byte) bitmap_init::bits#0
Inlining constant with var siblings (const byte) bitmap_init::x#0
Inlining constant with var siblings (const byte) bitmap_init::bits#2
Inlining constant with var siblings (const byte) bitmap_init::y#0
Inlining constant with var siblings (const byte) bitmap_clear::y#0
Inlining constant with var siblings (const byte) bitmap_clear::x#0
Inlining constant with var siblings (const word) rem16u#0
Inlining constant with var siblings (const signed word) rem16s#0
Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN#0
Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP#0
Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr16s::dividendu#1 = ((word))-(const signed word) divr16s::dividend#0
Constant inlined divr16s::dividendu#2 = ((word))(const signed word) divr16s::dividend#0
Constant inlined bitmap_init::bits#0 = (byte/word/signed word/dword/signed dword) 128
Constant inlined bitmap_init::bits#2 = (byte/word/signed word/dword/signed dword) 128
Constant inlined divr16s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined divr16s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined point_init::$11 = -(byte/signed byte/word/signed word/dword/signed dword) 16
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_init::$10 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
Constant inlined screen_fill::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) SCREEN#0
Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) SCREEN#0
Constant inlined bitmap_clear::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_clear::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined rem16s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::toD0181_$0#0 = ((word))(const byte*) SCREEN#0
Constant inlined main::toD0181_$1#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383
Constant inlined rem16u#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::toD0181_$6#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::toD0181_$7#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
Constant inlined screen_fill::screen#0 = (const byte*) SCREEN#0
Constant inlined divr16s::$5 = -(const signed word) divr16s::dividend#0
Constant inlined main::$1 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0
Constant inlined main::toD0181_$2#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::$2 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined main::toD0181_$3#0 = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::toD0181_$4#0 = ((word))(const byte*) BITMAP#0
Constant inlined main::$0 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0
Constant inlined main::toD0181_$5#0 = >((word))(const byte*) BITMAP#0
Constant inlined main::vicSelectGfxBank1_gfx#0 = (const byte*) SCREEN#0
Constant inlined bitmap_init::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined screen_fill::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_init::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_init::bitmap#0 = (const byte*) BITMAP#0
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero bitmap_plot_yhi#0+0
Simplifying constant plus zero bitmap_plot_ylo#0+0
Added new block during phi lifting main::@22(between main::@21 and main::@1)
Added new block during phi lifting point_init::@12(between point_init::abs16s1 and point_init::abs16s1_@return)
Added new block during phi lifting point_init::@13(between point_init::abs16s2 and point_init::abs16s2_@return)
Added new block during phi lifting point_init::@14(between point_init::@10 and point_init::@2)
Added new block during phi lifting divr16s::@17(between divr16s::@16 and divr16s::@2)
Fixing phi predecessor for divr16s::neg#3 to new block ( divr16s::@16 -> divr16s::@17 ) during phi lifting.
Fixing phi predecessor for divr16s::dividendu#3 to new block ( divr16s::@16 -> divr16s::@17 ) during phi lifting.
Added new block during phi lifting divr16s::@18(between divr16s::@2 and divr16s::@4)
Added new block during phi lifting divr16s::@19(between divr16s::@15 and divr16s::@return)
Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1)
Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2)
Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3)
Added new block during phi lifting screen_fill::@5(between screen_fill::@3 and screen_fill::@1)
Added new block during phi lifting screen_fill::@6(between screen_fill::@2 and screen_fill::@2)
Added new block during phi lifting bitmap_clear::@5(between bitmap_clear::@3 and bitmap_clear::@1)
Added new block during phi lifting bitmap_clear::@6(between bitmap_clear::@2 and bitmap_clear::@2)
Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1)
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2)
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3)
Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @19
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::@17
Adding NOP phi() at start of main::@18
Adding NOP phi() at start of divr16s
Adding NOP phi() at start of screen_fill
Adding NOP phi() at start of bitmap_init
Adding NOP phi() at start of bitmap_init::@5
CALL GRAPH
Calls in [] to main:2 
Calls in [main] to bitmap_init:13 bitmap_clear:15 screen_fill:17 point_init:20 bitmap_plot:24 
Calls in [point_init] to divr16s:64 
Calls in [divr16s] to divr16u:88 

Created 35 initial phi equivalence classes
Coalesced [29] main::i#5 ← main::i#1
Coalesced [30] rem16u#67 ← rem16u#18
Coalesced [31] rem16s#53 ← rem16s#13
Coalesced (already) [50] rem16u#68 ← rem16u#21
Coalesced (already) [51] rem16s#54 ← rem16s#15
Coalesced [70] rem16u#69 ← rem16u#1
Coalesced [71] rem16s#55 ← rem16s#3
Coalesced [83] divr16s::neg#10 ← divr16s::neg#3
Coalesced [94] divr16s::return#6 ← divr16s::return#1
Coalesced [95] rem16s#56 ← rem16s#2
Coalesced [103] divr16s::neg#9 ← divr16s::neg#2
Coalesced [106] divr16u::rem#11 ← divr16u::rem#3
Coalesced [107] divr16u::dividend#8 ← divr16u::dividend#1
Coalesced [114] divr16u::rem#14 ← divr16u::rem#1
Coalesced [121] divr16u::rem#16 ← divr16u::rem#2
Coalesced [122] divr16u::return#6 ← divr16u::quotient#2
Coalesced [126] rem16u#1 ← divr16u::rem#10
Coalesced [128] divr16u::rem#12 ← divr16u::rem#10
Coalesced [129] divr16u::dividend#9 ← divr16u::dividend#0
Coalesced [130] divr16u::quotient#9 ← divr16u::return#0
Coalesced [131] divr16u::i#7 ← divr16u::i#1
Coalesced [132] divr16u::rem#15 ← divr16u::rem#5
Coalesced [133] divr16u::return#5 ← divr16u::quotient#1
Coalesced [134] divr16u::rem#13 ← divr16u::rem#0
Coalesced [137] screen_fill::screen#7 ← screen_fill::screen#3
Coalesced [146] screen_fill::screen#6 ← screen_fill::screen#1
Coalesced [147] screen_fill::y#5 ← screen_fill::y#1
Coalesced (already) [148] screen_fill::screen#8 ← screen_fill::screen#1
Coalesced [149] screen_fill::x#3 ← screen_fill::x#1
Coalesced [153] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3
Coalesced [162] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1
Coalesced [163] bitmap_clear::y#5 ← bitmap_clear::y#1
Coalesced (already) [164] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1
Coalesced [165] bitmap_clear::x#3 ← bitmap_clear::x#1
Coalesced [185] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1
Coalesced [190] bitmap_init::y#5 ← bitmap_init::y#1
Coalesced [191] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4
Coalesced (already) [192] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2
Coalesced [193] bitmap_init::bits#5 ← bitmap_init::bits#4
Coalesced [194] bitmap_init::x#5 ← bitmap_init::x#1
Coalesced [195] bitmap_init::bits#6 ← bitmap_init::bits#1
Coalesced down to 23 phi equivalence classes
Culled Empty Block (label) main::@22
Culled Empty Block (label) point_init::@14
Culled Empty Block (label) divr16u::@6
Culled Empty Block (label) divr16u::@8
Culled Empty Block (label) divr16u::@10
Culled Empty Block (label) divr16u::@9
Culled Empty Block (label) screen_fill::@5
Culled Empty Block (label) screen_fill::@6
Culled Empty Block (label) bitmap_clear::@5
Culled Empty Block (label) bitmap_clear::@6
Culled Empty Block (label) bitmap_init::@5
Culled Empty Block (label) bitmap_init::@11
Culled Empty Block (label) bitmap_init::@12
Culled Empty Block (label) bitmap_init::@9
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @19
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::@17
Adding NOP phi() at start of main::@18
Adding NOP phi() at start of divr16s
Adding NOP phi() at start of divr16u
Adding NOP phi() at start of screen_fill
Adding NOP phi() at start of bitmap_init
Adding NOP phi() at start of bitmap_init::@10

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@19
@19: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @19
  [3] phi()
main: scope:[main]  from @19
  asm { sei  }
  [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
  [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
  [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
  to:main::vicSelectGfxBank1
main::vicSelectGfxBank1: scope:[main]  from main
  [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
  to:main::vicSelectGfxBank1_toDd001
main::vicSelectGfxBank1_toDd001: scope:[main]  from main::vicSelectGfxBank1
  [9] phi()
  to:main::vicSelectGfxBank1_@1
main::vicSelectGfxBank1_@1: scope:[main]  from main::vicSelectGfxBank1_toDd001
  [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
  to:main::toD0181
main::toD0181: scope:[main]  from main::vicSelectGfxBank1_@1
  [11] phi()
  to:main::@16
main::@16: scope:[main]  from main::toD0181
  [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
  [13] call bitmap_init 
  to:main::@17
main::@17: scope:[main]  from main::@16
  [14] phi()
  [15] call bitmap_clear 
  to:main::@18
main::@18: scope:[main]  from main::@17
  [16] phi()
  [17] call screen_fill 
  to:main::@1
main::@1: scope:[main]  from main::@18 main::@21
  [18] (signed word) rem16s#15 ← phi( main::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@21/(signed word) rem16s#13 )
  [18] (word) rem16u#21 ← phi( main::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@21/(word) rem16u#18 )
  [18] (byte) main::i#2 ← phi( main::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@21/(byte) main::i#1 )
  [19] (byte) point_init::point_idx#0 ← (byte) main::i#2
  [20] call point_init 
  to:main::@20
main::@20: scope:[main]  from main::@1
  [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2)
  [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9)
  [24] call bitmap_plot 
  to:main::@21
main::@21: scope:[main]  from main::@20
  [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
  [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1
  to:main::@5
main::@5: scope:[main]  from main::@21 main::@5 main::@7
  [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5
  to:main::@7
main::@7: scope:[main]  from main::@5
  [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  to:main::@5
bitmap_plot: scope:[bitmap_plot]  from main::@20
  [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
  [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528
  [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1
  [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0
  [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  [34] return 
  to:@return
point_init: scope:[point_init]  from main::@1
  [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0)
  [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0)
  [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
  [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5
  to:point_init::abs16s1
point_init::abs16s1: scope:[point_init]  from point_init
  [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1
  to:point_init::@12
point_init::@12: scope:[point_init]  from point_init::abs16s1
  [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1
  to:point_init::abs16s1_@return
point_init::abs16s1_@return: scope:[point_init]  from point_init::@12 point_init::abs16s1_@1
  [42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@12/(word~) point_init::abs16s1_return#6 )
  to:point_init::abs16s2
point_init::abs16s2: scope:[point_init]  from point_init::abs16s1_@return
  [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1
  to:point_init::@13
point_init::@13: scope:[point_init]  from point_init::abs16s2
  [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0
  to:point_init::abs16s2_@return
point_init::abs16s2_@return: scope:[point_init]  from point_init::@13 point_init::abs16s2_@1
  [45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@13/(word~) point_init::abs16s2_return#6 )
  to:point_init::@10
point_init::@10: scope:[point_init]  from point_init::abs16s2_@return
  [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1
  to:point_init::@2
point_init::@2: scope:[point_init]  from point_init::@10 point_init::@11
  [47] (signed word) rem16s#13 ← phi( point_init::@10/(signed word) rem16s#15 point_init::@11/(signed word) rem16s#3 )
  [47] (word) rem16u#18 ← phi( point_init::@10/(word) rem16u#21 point_init::@11/(word) divr16u::rem#10 )
  [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4
  [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16
  [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
  [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4
  [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18
  [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0
  to:point_init::@return
point_init::@return: scope:[point_init]  from point_init::@2
  [54] return 
  to:@return
point_init::@1: scope:[point_init]  from point_init::@10
  [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3
  to:point_init::@7
point_init::@7: scope:[point_init]  from point_init::@1
  [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16
  to:point_init::@4
point_init::@4: scope:[point_init]  from point_init::@3 point_init::@7
  [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
  [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
  [59] call divr16s 
  [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
  to:point_init::@11
point_init::@11: scope:[point_init]  from point_init::@4
  [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
  [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0
  [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4
  [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14
  to:point_init::@2
point_init::@3: scope:[point_init]  from point_init::@1
  [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16
  to:point_init::@4
point_init::abs16s2_@1: scope:[point_init]  from point_init::abs16s2
  [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0
  [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
  to:point_init::abs16s2_@return
point_init::abs16s1_@1: scope:[point_init]  from point_init::abs16s1
  [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1
  [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
  to:point_init::abs16s1_@return
divr16s: scope:[divr16s]  from point_init::@4
  [70] phi()
  to:divr16s::@16
divr16s::@16: scope:[divr16s]  from divr16s
  [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
  to:divr16s::@17
divr16s::@17: scope:[divr16s]  from divr16s::@16
  [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
  to:divr16s::@2
divr16s::@2: scope:[divr16s]  from divr16s::@1 divr16s::@17
  [73] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 )
  [73] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 )
  [73] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
  to:divr16s::@18
divr16s::@18: scope:[divr16s]  from divr16s::@2
  [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
  to:divr16s::@4
divr16s::@4: scope:[divr16s]  from divr16s::@18 divr16s::@3
  [76] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 )
  [76] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 )
  [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
  [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
  [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3
  [80] call divr16u 
  [81] (word) divr16u::return#2 ← (word) divr16u::return#0
  to:divr16s::@15
divr16s::@15: scope:[divr16s]  from divr16s::@4
  [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2
  [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19
  to:divr16s::@11
divr16s::@11: scope:[divr16s]  from divr16s::@15
  [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10
  [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
  to:divr16s::@return
divr16s::@return: scope:[divr16s]  from divr16s::@11 divr16s::@19
  [86] (signed word) rem16s#3 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@19/(signed word~) rem16s#57 )
  [86] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 )
  [87] return 
  to:@return
divr16s::@19: scope:[divr16s]  from divr16s::@15
  [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
  [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10
  to:divr16s::@return
divr16s::@3: scope:[divr16s]  from divr16s::@2
  [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0
  [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
  [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
  to:divr16s::@4
divr16s::@1: scope:[divr16s]  from divr16s::@16
  [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0
  [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
  to:divr16s::@2
divr16u: scope:[divr16u]  from divr16s::@4
  [95] phi()
  to:divr16u::@1
divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
  [96] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
  [96] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
  [96] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 )
  [96] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#10 )
  [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
  [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
  [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
  to:divr16u::@4
divr16u::@4: scope:[divr16u]  from divr16u::@1
  [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
  to:divr16u::@2
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  [102] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
  [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3
  to:divr16u::@5
divr16u::@5: scope:[divr16u]  from divr16u::@2
  [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
  [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0
  to:divr16u::@3
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  [108] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
  [108] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
  [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
  [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@3
  [111] return 
  to:@return
screen_fill: scope:[screen_fill]  from main::@18
  [112] phi()
  to:screen_fill::@1
screen_fill::@1: scope:[screen_fill]  from screen_fill screen_fill::@3
  [113] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 )
  [113] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 )
  to:screen_fill::@2
screen_fill::@2: scope:[screen_fill]  from screen_fill::@1 screen_fill::@2
  [114] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 )
  [114] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 )
  [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0
  [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2
  [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2
  [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2
  to:screen_fill::@3
screen_fill::@3: scope:[screen_fill]  from screen_fill::@2
  [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4
  [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1
  to:screen_fill::@return
screen_fill::@return: scope:[screen_fill]  from screen_fill::@3
  [121] return 
  to:@return
bitmap_clear: scope:[bitmap_clear]  from main::@17
  [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0)
  [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
  to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear]  from bitmap_clear bitmap_clear::@3
  [124] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
  [124] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 )
  to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear]  from bitmap_clear::@1 bitmap_clear::@2
  [125] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
  [125] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
  [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
  [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2
  [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2
  to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear]  from bitmap_clear::@2
  [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4
  [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1
  to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear]  from bitmap_clear::@3
  [132] return 
  to:@return
bitmap_init: scope:[bitmap_init]  from main::@16
  [133] phi()
  to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init]  from bitmap_init bitmap_init::@2
  [134] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
  [134] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 )
  [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
  [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10
  to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init]  from bitmap_init::@1 bitmap_init::@10
  [138] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 )
  [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
  [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1
  to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init]  from bitmap_init::@2 bitmap_init::@4
  [141] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 )
  [141] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
  [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
  [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
  [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
  [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
  [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
  [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
  to:bitmap_init::@7
bitmap_init::@7: scope:[bitmap_init]  from bitmap_init::@3
  [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
  to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init]  from bitmap_init::@3 bitmap_init::@7
  [151] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
  [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
  [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3
  to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init]  from bitmap_init::@4
  [154] return 
  to:@return
bitmap_init::@10: scope:[bitmap_init]  from bitmap_init::@1
  [155] phi()
  to:bitmap_init::@2


VARIABLE REGISTER WEIGHTS
(byte*) BGCOL
(byte*) BGCOL1
(byte*) BGCOL2
(byte*) BGCOL3
(byte*) BGCOL4
(byte*) BITMAP
(byte) BLACK
(byte) BLUE
(byte*) BORDERCOL
(byte) BROWN
(byte*) CHARGEN
(byte*) CIA1_INTERRUPT
(byte*) CIA1_PORT_A
(byte*) CIA1_PORT_A_DDR
(byte*) CIA1_PORT_B
(byte*) CIA1_PORT_B_DDR
(byte*) CIA2_INTERRUPT
(byte*) CIA2_PORT_A
(byte*) CIA2_PORT_A_DDR
(byte*) CIA2_PORT_B
(byte*) CIA2_PORT_B_DDR
(byte) CIA_INTERRUPT_CLEAR
(byte*) COLS
(byte) CYAN
(byte*) D011
(byte*) D016
(byte*) D018
(byte) DARK_GREY
(byte) DELAY
(byte) GREEN
(byte) GREY
(void()**) HARDWARE_IRQ
(byte) IRQ_COLLISION_BG
(byte) IRQ_COLLISION_SPRITE
(byte*) IRQ_ENABLE
(byte) IRQ_LIGHTPEN
(byte) IRQ_RASTER
(byte*) IRQ_STATUS
(void()**) KERNEL_IRQ
(byte*) LIGHTPEN_X
(byte*) LIGHTPEN_Y
(byte) LIGHT_BLUE
(byte) LIGHT_GREEN
(byte) LIGHT_GREY
(byte) ORANGE
(byte) PINK
(byte*) PROCPORT
(byte) PROCPORT_BASIC_KERNEL_IO
(byte*) PROCPORT_DDR
(byte) PROCPORT_DDR_MEMORY_MASK
(byte) PROCPORT_KERNEL_IO
(byte) PROCPORT_RAM_ALL
(byte) PROCPORT_RAM_CHARROM
(byte) PROCPORT_RAM_IO
(byte) PURPLE
(byte*) RASTER
(byte) RED
(byte*) SCREEN
(byte) SIZE
(byte*) SPRITES_COLS
(byte*) SPRITES_ENABLE
(byte*) SPRITES_EXPAND_X
(byte*) SPRITES_EXPAND_Y
(byte*) SPRITES_MC
(byte*) SPRITES_MC1
(byte*) SPRITES_MC2
(byte*) SPRITES_PRIORITY
(byte*) SPRITES_XMSB
(byte*) SPRITES_XPOS
(byte*) SPRITES_YPOS
(word) SPRITE_PTRS
(byte) VIC_BMM
(byte*) VIC_CONTROL
(byte*) VIC_CONTROL2
(byte) VIC_CSEL
(byte) VIC_DEN
(byte) VIC_ECM
(byte) VIC_MCM
(byte*) VIC_MEMORY
(byte) VIC_RSEL
(byte) VIC_RST8
(byte) WHITE
(byte) YELLOW
(void()) bitmap_clear()
(word~) bitmap_clear::$3 2.0
(byte*) bitmap_clear::bitmap
(byte*) bitmap_clear::bitmap#1 42.599999999999994
(byte*) bitmap_clear::bitmap#2 157.0
(byte*) bitmap_clear::bitmap#3 24.0
(byte*~) bitmap_clear::bitmap#5 4.0
(byte) bitmap_clear::x
(byte) bitmap_clear::x#1 151.5
(byte) bitmap_clear::x#2 67.33333333333333
(byte) bitmap_clear::y
(byte) bitmap_clear::y#1 16.5
(byte) bitmap_clear::y#4 3.6666666666666665
(void()) bitmap_init((byte*) bitmap_init::bitmap)
(byte~) bitmap_init::$3 11.0
(byte~) bitmap_init::$4 22.0
(byte~) bitmap_init::$5 22.0
(byte~) bitmap_init::$6 22.0
(byte~) bitmap_init::$7 22.0
(byte*) bitmap_init::bitmap
(byte) bitmap_init::bits
(byte) bitmap_init::bits#1 11.0
(byte) bitmap_init::bits#3 16.5
(byte) bitmap_init::bits#4 7.333333333333333
(byte) bitmap_init::x
(byte) bitmap_init::x#1 16.5
(byte) bitmap_init::x#2 5.5
(byte) bitmap_init::y
(byte) bitmap_init::y#1 16.5
(byte) bitmap_init::y#2 6.0
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 22.0
(byte*) bitmap_init::yoffs#2 6.111111111111112
(byte*) bitmap_init::yoffs#4 11.0
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 4.0
(byte~) bitmap_plot::$2 4.0
(word~) bitmap_plot::$3 1.0
(byte*) bitmap_plot::plotter
(byte*) bitmap_plot::plotter#1 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 15.0
(byte[256]) bitmap_plot_bit
(byte[256]) bitmap_plot_yhi
(byte[256]) bitmap_plot_ylo
(byte[4]) delay
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(signed word~) divr16s::$11 1.0
(signed word~) divr16s::$7 2.0
(signed word) divr16s::dividend
(word) divr16s::dividendu
(word) divr16s::dividendu#3 0.2857142857142857
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0 0.6666666666666666
(word) divr16s::divisoru
(word) divr16s::divisoru#3 3.0
(word~) divr16s::divisoru#4 4.0
(word~) divr16s::divisoru#5 4.0
(byte) divr16s::neg
(byte) divr16s::neg#2 2.0
(byte) divr16s::neg#3 1.0
(byte) divr16s::neg#4 0.8571428571428571
(signed word) divr16s::rem
(signed word) divr16s::rem#0 2.0
(word) divr16s::remu
(word) divr16s::remu#3 0.6666666666666666
(word~) divr16s::remu#7 4.0
(word~) divr16s::remu#8 4.0
(word) divr16s::resultu
(word) divr16s::resultu#0 0.6666666666666666
(signed word) divr16s::return
(signed word) divr16s::return#1 4.0
(signed word) divr16s::return#2 2.0
(signed word) divr16s::return#3 4.0
(signed word~) divr16s::return#7 2.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 202.0
(byte~) divr16u::$2 202.0
(word) divr16u::dividend
(word) divr16u::dividend#0 25.25
(word) divr16u::dividend#1 1.0
(word) divr16u::dividend#2 43.57142857142858
(word) divr16u::divisor
(word) divr16u::divisor#0 11.333333333333332
(byte) divr16u::i
(byte) divr16u::i#1 151.5
(byte) divr16u::i#2 15.538461538461538
(word) divr16u::quotient
(word) divr16u::quotient#1 151.5
(word) divr16u::quotient#2 101.0
(word) divr16u::quotient#3 25.25
(word) divr16u::rem
(word) divr16u::rem#0 75.75
(word) divr16u::rem#1 202.0
(word) divr16u::rem#10 15.25
(word) divr16u::rem#2 202.0
(word) divr16u::rem#3 2.0
(word) divr16u::rem#4 204.0
(word) divr16u::rem#5 101.0
(word) divr16u::return
(word) divr16u::return#0 61.0
(word) divr16u::return#2 4.0
(byte[4]) frame
(void()) main()
(byte~) main::$9 11.0
(byte) main::i
(byte) main::i#1 16.5
(byte) main::i#2 7.857142857142857
(word~) main::toD0181_$0
(word~) main::toD0181_$1
(word~) main::toD0181_$2
(byte~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(byte~) main::toD0181_$6
(byte~) main::toD0181_$7
(byte~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(byte*) main::toD0181_screen
(byte~) main::vicSelectGfxBank1_$0
(byte*) main::vicSelectGfxBank1_gfx
(word~) main::vicSelectGfxBank1_toDd001_$0
(byte~) main::vicSelectGfxBank1_toDd001_$1
(byte~) main::vicSelectGfxBank1_toDd001_$2
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
(byte*) main::vicSelectGfxBank1_toDd001_gfx
(byte) main::vicSelectGfxBank1_toDd001_return
(void()) point_init((byte) point_init::point_idx)
(byte~) point_init::$13 4.0
(byte~) point_init::$14 2.0
(word~) point_init::$16 4.0
(word~) point_init::$17 4.0
(word~) point_init::$18 4.0
(signed word~) point_init::$4 2.0
(signed word~) point_init::$5 4.0
(bool~) point_init::abs16s1_$0
(word~) point_init::abs16s1_$1
(signed word~) point_init::abs16s1_$2
(signed word) point_init::abs16s1_$2#0 2.0
(word~) point_init::abs16s1_$3
(word) point_init::abs16s1_return
(word) point_init::abs16s1_return#2 1.0
(word~) point_init::abs16s1_return#5 4.0
(word~) point_init::abs16s1_return#6 4.0
(signed word) point_init::abs16s1_w
(bool~) point_init::abs16s2_$0
(word~) point_init::abs16s2_$1
(signed word~) point_init::abs16s2_$2
(signed word) point_init::abs16s2_$2#0 2.0
(word~) point_init::abs16s2_$3
(word) point_init::abs16s2_return
(word) point_init::abs16s2_return#2 6.0
(word~) point_init::abs16s2_return#5 4.0
(word~) point_init::abs16s2_return#6 4.0
(signed word) point_init::abs16s2_w
(byte) point_init::point_idx
(byte) point_init::point_idx#0 0.6969696969696968
(byte) point_init::point_idx1
(byte) point_init::point_idx1#0 0.36363636363636365
(signed word) point_init::x_diff
(signed word) point_init::x_diff#1 0.5555555555555556
(signed word) point_init::x_stepf
(signed word) point_init::x_stepf#0 4.0
(signed word) point_init::y_diff
(signed word) point_init::y_diff#0 0.5
(signed word) rem16s
(signed word) rem16s#13 0.9999999999999999
(signed word) rem16s#15 0.7222222222222223
(signed word) rem16s#2 2.0
(signed word) rem16s#3 0.75
(signed word~) rem16s#57 4.0
(word) rem16u
(word) rem16u#18 0.9999999999999999
(word) rem16u#21 0.7222222222222223
(signed byte) rem8s
(byte) rem8u
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
(byte) screen_fill::ch
(byte*) screen_fill::screen
(byte*) screen_fill::screen#1 42.599999999999994
(byte*) screen_fill::screen#2 157.0
(byte*) screen_fill::screen#3 22.0
(byte) screen_fill::x
(byte) screen_fill::x#1 151.5
(byte) screen_fill::x#2 67.33333333333333
(byte) screen_fill::y
(byte) screen_fill::y#1 16.5
(byte) screen_fill::y#4 3.6666666666666665
(signed byte[4]) x_add
(word[4]) x_cur
(word[4]) x_end
(word[4]) x_start
(signed byte[4]) y_add
(word[4]) y_cur
(byte[4]) y_end
(byte[4]) y_start

Initial phi equivalence classes
[ main::i#2 main::i#1 ]
[ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ]
[ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
[ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
[ divr16s::dividendu#3 ]
[ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
[ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
[ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
[ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
[ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
[ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
[ divr16u::i#2 divr16u::i#1 ]
[ screen_fill::y#4 screen_fill::y#1 ]
[ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
[ screen_fill::x#2 screen_fill::x#1 ]
[ bitmap_clear::y#4 bitmap_clear::y#1 ]
[ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
[ bitmap_clear::x#2 bitmap_clear::x#1 ]
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
[ bitmap_init::x#2 bitmap_init::x#1 ]
[ bitmap_init::y#2 bitmap_init::y#1 ]
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
Added variable point_init::point_idx#0 to zero page equivalence class [ point_init::point_idx#0 ]
Added variable main::$9 to zero page equivalence class [ main::$9 ]
Added variable bitmap_plot::x#0 to zero page equivalence class [ bitmap_plot::x#0 ]
Added variable bitmap_plot::y#0 to zero page equivalence class [ bitmap_plot::y#0 ]
Added variable bitmap_plot::$3 to zero page equivalence class [ bitmap_plot::$3 ]
Added variable bitmap_plot::$1 to zero page equivalence class [ bitmap_plot::$1 ]
Added variable bitmap_plot::plotter#1 to zero page equivalence class [ bitmap_plot::plotter#1 ]
Added variable bitmap_plot::$2 to zero page equivalence class [ bitmap_plot::$2 ]
Added variable point_init::point_idx1#0 to zero page equivalence class [ point_init::point_idx1#0 ]
Added variable point_init::x_diff#1 to zero page equivalence class [ point_init::x_diff#1 ]
Added variable point_init::$4 to zero page equivalence class [ point_init::$4 ]
Added variable point_init::$5 to zero page equivalence class [ point_init::$5 ]
Added variable point_init::y_diff#0 to zero page equivalence class [ point_init::y_diff#0 ]
Added variable point_init::$16 to zero page equivalence class [ point_init::$16 ]
Added variable point_init::$17 to zero page equivalence class [ point_init::$17 ]
Added variable point_init::$18 to zero page equivalence class [ point_init::$18 ]
Added variable divr16s::divisor#0 to zero page equivalence class [ divr16s::divisor#0 ]
Added variable divr16s::rem#0 to zero page equivalence class [ divr16s::rem#0 ]
Added variable divr16s::return#3 to zero page equivalence class [ divr16s::return#3 ]
Added variable point_init::x_stepf#0 to zero page equivalence class [ point_init::x_stepf#0 ]
Added variable point_init::$13 to zero page equivalence class [ point_init::$13 ]
Added variable point_init::$14 to zero page equivalence class [ point_init::$14 ]
Added variable point_init::abs16s2_$2#0 to zero page equivalence class [ point_init::abs16s2_$2#0 ]
Added variable point_init::abs16s1_$2#0 to zero page equivalence class [ point_init::abs16s1_$2#0 ]
Added variable divr16u::divisor#0 to zero page equivalence class [ divr16u::divisor#0 ]
Added variable divr16u::return#2 to zero page equivalence class [ divr16u::return#2 ]
Added variable divr16s::resultu#0 to zero page equivalence class [ divr16s::resultu#0 ]
Added variable divr16s::$11 to zero page equivalence class [ divr16s::$11 ]
Added variable divr16s::$7 to zero page equivalence class [ divr16s::$7 ]
Added variable divr16u::$1 to zero page equivalence class [ divr16u::$1 ]
Added variable divr16u::$2 to zero page equivalence class [ divr16u::$2 ]
Added variable bitmap_clear::$3 to zero page equivalence class [ bitmap_clear::$3 ]
Added variable bitmap_init::$3 to zero page equivalence class [ bitmap_init::$3 ]
Added variable bitmap_init::$4 to zero page equivalence class [ bitmap_init::$4 ]
Added variable bitmap_init::$5 to zero page equivalence class [ bitmap_init::$5 ]
Added variable bitmap_init::$6 to zero page equivalence class [ bitmap_init::$6 ]
Added variable bitmap_init::$7 to zero page equivalence class [ bitmap_init::$7 ]
Complete equivalence classes
[ main::i#2 main::i#1 ]
[ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ]
[ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
[ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
[ divr16s::dividendu#3 ]
[ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
[ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
[ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
[ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
[ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
[ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
[ divr16u::i#2 divr16u::i#1 ]
[ screen_fill::y#4 screen_fill::y#1 ]
[ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
[ screen_fill::x#2 screen_fill::x#1 ]
[ bitmap_clear::y#4 bitmap_clear::y#1 ]
[ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
[ bitmap_clear::x#2 bitmap_clear::x#1 ]
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
[ bitmap_init::x#2 bitmap_init::x#1 ]
[ bitmap_init::y#2 bitmap_init::y#1 ]
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
[ point_init::point_idx#0 ]
[ main::$9 ]
[ bitmap_plot::x#0 ]
[ bitmap_plot::y#0 ]
[ bitmap_plot::$3 ]
[ bitmap_plot::$1 ]
[ bitmap_plot::plotter#1 ]
[ bitmap_plot::$2 ]
[ point_init::point_idx1#0 ]
[ point_init::x_diff#1 ]
[ point_init::$4 ]
[ point_init::$5 ]
[ point_init::y_diff#0 ]
[ point_init::$16 ]
[ point_init::$17 ]
[ point_init::$18 ]
[ divr16s::divisor#0 ]
[ divr16s::rem#0 ]
[ divr16s::return#3 ]
[ point_init::x_stepf#0 ]
[ point_init::$13 ]
[ point_init::$14 ]
[ point_init::abs16s2_$2#0 ]
[ point_init::abs16s1_$2#0 ]
[ divr16u::divisor#0 ]
[ divr16u::return#2 ]
[ divr16s::resultu#0 ]
[ divr16s::$11 ]
[ divr16s::$7 ]
[ divr16u::$1 ]
[ divr16u::$2 ]
[ bitmap_clear::$3 ]
[ bitmap_init::$3 ]
[ bitmap_init::$4 ]
[ bitmap_init::$5 ]
[ bitmap_init::$6 ]
[ bitmap_init::$7 ]
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ]
Allocated zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
Allocated zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
Allocated zp ZP_WORD:9 [ divr16s::dividendu#3 ]
Allocated zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
Allocated zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
Allocated zp ZP_BYTE:15 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
Allocated zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
Allocated zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
Allocated zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
Allocated zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
Allocated zp ZP_BYTE:24 [ divr16u::i#2 divr16u::i#1 ]
Allocated zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ]
Allocated zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
Allocated zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ]
Allocated zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Allocated zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
Allocated zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
Allocated zp ZP_BYTE:33 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
Allocated zp ZP_BYTE:34 [ bitmap_init::x#2 bitmap_init::x#1 ]
Allocated zp ZP_BYTE:35 [ bitmap_init::y#2 bitmap_init::y#1 ]
Allocated zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
Allocated zp ZP_BYTE:38 [ point_init::point_idx#0 ]
Allocated zp ZP_BYTE:39 [ main::$9 ]
Allocated zp ZP_WORD:40 [ bitmap_plot::x#0 ]
Allocated zp ZP_BYTE:42 [ bitmap_plot::y#0 ]
Allocated zp ZP_WORD:43 [ bitmap_plot::$3 ]
Allocated zp ZP_WORD:45 [ bitmap_plot::$1 ]
Allocated zp ZP_WORD:47 [ bitmap_plot::plotter#1 ]
Allocated zp ZP_BYTE:49 [ bitmap_plot::$2 ]
Allocated zp ZP_BYTE:50 [ point_init::point_idx1#0 ]
Allocated zp ZP_WORD:51 [ point_init::x_diff#1 ]
Allocated zp ZP_WORD:53 [ point_init::$4 ]
Allocated zp ZP_WORD:55 [ point_init::$5 ]
Allocated zp ZP_WORD:57 [ point_init::y_diff#0 ]
Allocated zp ZP_WORD:59 [ point_init::$16 ]
Allocated zp ZP_WORD:61 [ point_init::$17 ]
Allocated zp ZP_WORD:63 [ point_init::$18 ]
Allocated zp ZP_WORD:65 [ divr16s::divisor#0 ]
Allocated zp ZP_WORD:67 [ divr16s::rem#0 ]
Allocated zp ZP_WORD:69 [ divr16s::return#3 ]
Allocated zp ZP_WORD:71 [ point_init::x_stepf#0 ]
Allocated zp ZP_BYTE:73 [ point_init::$13 ]
Allocated zp ZP_BYTE:74 [ point_init::$14 ]
Allocated zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ]
Allocated zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ]
Allocated zp ZP_WORD:79 [ divr16u::divisor#0 ]
Allocated zp ZP_WORD:81 [ divr16u::return#2 ]
Allocated zp ZP_WORD:83 [ divr16s::resultu#0 ]
Allocated zp ZP_WORD:85 [ divr16s::$11 ]
Allocated zp ZP_WORD:87 [ divr16s::$7 ]
Allocated zp ZP_BYTE:89 [ divr16u::$1 ]
Allocated zp ZP_BYTE:90 [ divr16u::$2 ]
Allocated zp ZP_WORD:91 [ bitmap_clear::$3 ]
Allocated zp ZP_BYTE:93 [ bitmap_init::$3 ]
Allocated zp ZP_BYTE:94 [ bitmap_init::$4 ]
Allocated zp ZP_BYTE:95 [ bitmap_init::$5 ]
Allocated zp ZP_BYTE:96 [ bitmap_init::$6 ]
Allocated zp ZP_BYTE:97 [ bitmap_init::$7 ]

INITIAL ASM
//SEG0 File Comments
// Animated lines drawn on a single color bitmap
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  // Processor port data direction register
  .label PROCPORT_DDR = 0
  // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
  .const PROCPORT_DDR_MEMORY_MASK = 7
  // Processor Port Register controlling RAM/ROM configuration and the datasette
  .label PROCPORT = 1
  // RAM in $A000, $E000 I/O in $D000
  .const PROCPORT_RAM_IO = $35
  .label RASTER = $d012
  .label BORDERCOL = $d020
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label D018 = $d018
  // CIA#2 Port A: Serial bus, RS-232, VIC memory bank
  .label CIA2_PORT_A = $dd00
  // CIA #2 Port A data direction register.
  .label CIA2_PORT_A_DDR = $dd02
  .label BITMAP = $a000
  .label SCREEN = $8800
  // The delay between pixels
  .const DELAY = 8
  .label rem16s = 3
  .label rem16u = $12
//SEG3 @begin
bbegin:
//SEG4 [1] phi from @begin to @19 [phi:@begin->@19]
b19_from_bbegin:
  jmp b19
//SEG5 @19
b19:
//SEG6 [2] call main 
  jsr main
//SEG7 [3] phi from @19 to @end [phi:@19->@end]
bend_from_b19:
  jmp bend
//SEG8 @end
bend:
//SEG9 main
main: {
    .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
    .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
    .label _9 = $27
    .label i = 2
  //SEG10 asm { sei  }
    sei
  //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 
    // Disable normal interrupt
    // Disable kernal & basic
    lda #PROCPORT_DDR_MEMORY_MASK
    sta PROCPORT_DDR
  //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 
    lda #PROCPORT_RAM_IO
    sta PROCPORT
  //SEG13 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
    jmp vicSelectGfxBank1
  //SEG14 main::vicSelectGfxBank1
  vicSelectGfxBank1:
  //SEG15 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 
    lda #3
    sta CIA2_PORT_A_DDR
  //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
  vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
    jmp vicSelectGfxBank1_toDd001
  //SEG17 main::vicSelectGfxBank1_toDd001
  vicSelectGfxBank1_toDd001:
    jmp vicSelectGfxBank1_b1
  //SEG18 main::vicSelectGfxBank1_@1
  vicSelectGfxBank1_b1:
  //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 
    lda #vicSelectGfxBank1_toDd001_return
    sta CIA2_PORT_A
  //SEG20 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
  toD0181_from_vicSelectGfxBank1_b1:
    jmp toD0181
  //SEG21 main::toD0181
  toD0181:
    jmp b16
  //SEG22 main::@16
  b16:
  //SEG23 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
  //SEG24 [13] call bitmap_init 
  //SEG25 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
  bitmap_init_from_b16:
    jsr bitmap_init
  //SEG26 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
  b17_from_b16:
    jmp b17
  //SEG27 main::@17
  b17:
  //SEG28 [15] call bitmap_clear 
    jsr bitmap_clear
  //SEG29 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
  b18_from_b17:
    jmp b18
  //SEG30 main::@18
  b18:
  //SEG31 [17] call screen_fill 
  //SEG32 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
  screen_fill_from_b18:
    jsr screen_fill
  //SEG33 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
  b1_from_b18:
  //SEG34 [18] phi (signed word) rem16s#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vwsz1=vbuc1 
    lda #<0
    sta rem16s
    lda #>0
    sta rem16s+1
  //SEG35 [18] phi (word) rem16u#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta rem16u
    lda #>0
    sta rem16u+1
  //SEG36 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG37 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
  b1_from_b21:
  //SEG38 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy 
  //SEG39 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy 
  //SEG40 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy 
    jmp b1
  //SEG41 main::@1
  b1:
  //SEG42 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 -- vbuz1=vbuz2 
    lda i
    sta point_init.point_idx
  //SEG43 [20] call point_init 
    jsr point_init
    jmp b20
  //SEG44 main::@20
  b20:
  //SEG45 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 
    lda i
    lsr
    sta _9
  //SEG46 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 
    ldy i
    lda x_start,y
    sta bitmap_plot.x
    lda x_start+1,y
    sta bitmap_plot.x+1
  //SEG47 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy _9
    lda y_start,y
    sta bitmap_plot.y
  //SEG48 [24] call bitmap_plot 
    jsr bitmap_plot
    jmp b21
  //SEG49 main::@21
  b21:
  //SEG50 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG51 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b1_from_b21
    jmp b5
  //SEG52 main::@5
  b5:
  //SEG53 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b5
    jmp b7
  //SEG54 main::@7
  b7:
  //SEG55 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    jmp b5
}
//SEG56 bitmap_plot
// Plot a single dot in the bitmap
// bitmap_plot(word zeropage($28) x, byte zeropage($2a) y)
bitmap_plot: {
    .label _1 = $2d
    .label _2 = $31
    .label x = $28
    .label y = $2a
    .label plotter = $2f
    .label _3 = $2b
  //SEG57 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 
    ldy y
    lda bitmap_plot_yhi,y
    sta _3+1
    lda bitmap_plot_ylo,y
    sta _3
  //SEG58 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 
    lda x
    and #<$fff8
    sta _1
    lda x+1
    and #>$fff8
    sta _1+1
  //SEG59 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 
    lda _3
    clc
    adc _1
    sta plotter
    lda _3+1
    adc _1+1
    sta plotter+1
  //SEG60 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2 
    lda x
    sta _2
  //SEG61 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 
    ldy #0
    lda (plotter),y
    ldy _2
    ora bitmap_plot_bit,y
    ldy #0
    sta (plotter),y
    jmp breturn
  //SEG62 bitmap_plot::@return
  breturn:
  //SEG63 [34] return 
    rts
}
//SEG64 point_init
// Initialize the points to be animated
// point_init(byte zeropage($26) point_idx)
point_init: {
    .label _4 = $35
    .label _5 = $37
    .label _13 = $49
    .label _14 = $4a
    .label _16 = $3b
    .label _17 = $3d
    .label _18 = $3f
    .label point_idx = $26
    .label point_idx1 = $32
    .label y_diff = $39
    .label abs16s1__2 = $4d
    .label abs16s1_return = 5
    .label abs16s2__2 = $4b
    .label abs16s2_return = 7
    .label x_stepf = $47
    .label x_diff = $33
  //SEG65 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 
    lda point_idx
    lsr
    sta point_idx1
  //SEG66 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 
    ldy point_idx
    sec
    lda x_end,y
    sbc x_start,y
    sta x_diff
    lda x_end+1,y
    sbc x_start+1,y
    sta x_diff+1
  //SEG67 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 
    ldy point_idx1
    lda y_end,y
    sta _4
    lda #0
    sta _4+1
  //SEG68 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 
    ldy point_idx1
    lda y_start,y
    sta _5
    lda #0
    sta _5+1
  //SEG69 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz2_minus_vwsz3 
    lda _4
    sec
    sbc _5
    sta y_diff
    lda _4+1
    sbc _5+1
    sta y_diff+1
    jmp abs16s1
  //SEG70 point_init::abs16s1
  abs16s1:
  //SEG71 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 
    lda x_diff+1
    bmi abs16s1_b1
    jmp b12
  //SEG72 point_init::@12
  b12:
  //SEG73 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 
    lda x_diff
    sta abs16s1_return
    lda x_diff+1
    sta abs16s1_return+1
  //SEG74 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
  abs16s1_breturn_from_b12:
  abs16s1_breturn_from_abs16s1_b1:
  //SEG75 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy 
    jmp abs16s1_breturn
  //SEG76 point_init::abs16s1_@return
  abs16s1_breturn:
    jmp abs16s2
  //SEG77 point_init::abs16s2
  abs16s2:
  //SEG78 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 
    lda y_diff+1
    bmi abs16s2_b1
    jmp b13
  //SEG79 point_init::@13
  b13:
  //SEG80 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 
    lda y_diff
    sta abs16s2_return
    lda y_diff+1
    sta abs16s2_return+1
  //SEG81 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
  abs16s2_breturn_from_b13:
  abs16s2_breturn_from_abs16s2_b1:
  //SEG82 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy 
    jmp abs16s2_breturn
  //SEG83 point_init::abs16s2_@return
  abs16s2_breturn:
    jmp b10
  //SEG84 point_init::@10
  b10:
  //SEG85 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 
    lda abs16s2_return+1
    cmp abs16s1_return+1
    bne !+
    lda abs16s2_return
    cmp abs16s1_return
  !:
    bcc b1
    beq b1
  //SEG86 [47] phi from point_init::@10 point_init::@11 to point_init::@2 [phi:point_init::@10/point_init::@11->point_init::@2]
  b2_from_b10:
  b2_from_b11:
  //SEG87 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy 
  //SEG88 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy 
    jmp b2
  //SEG89 point_init::@2
  b2:
  //SEG90 [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 
    ldy point_idx
    lda x_start,y
    sta _16
    lda x_start+1,y
    sta _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
  //SEG91 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 
    ldy point_idx
    lda _16
    sta x_cur,y
    lda _16+1
    sta x_cur+1,y
  //SEG92 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy point_idx1
    lda y_start,y
    sta _17
    lda #0
    sta _17+1
  //SEG93 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_rol_4 
    lda _17
    asl
    sta _18
    lda _17+1
    rol
    sta _18+1
    asl _18
    rol _18+1
    asl _18
    rol _18+1
    asl _18
    rol _18+1
  //SEG94 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 
    ldy point_idx
    lda _18
    sta y_cur,y
    lda _18+1
    sta y_cur+1,y
  //SEG95 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 
    ldy point_idx1
    lda #DELAY
    sta delay,y
    jmp breturn
  //SEG96 point_init::@return
  breturn:
  //SEG97 [54] return 
    rts
  //SEG98 point_init::@1
  b1:
  //SEG99 [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 
    // X is driver - abs(y/x) is < 1
    lda x_diff+1
    bmi b3
    jmp b7
  //SEG100 point_init::@7
  b7:
  //SEG101 [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 
    // x add = 1.0
    ldy point_idx
    lda #$10
    sta x_add,y
    jmp b4
  //SEG102 point_init::@4
  b4:
  //SEG103 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2 
    lda x_diff
    sta divr16s.divisor
    lda x_diff+1
    sta divr16s.divisor+1
  //SEG104 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 
    lda y_diff
    sta divr16s.rem
    lda y_diff+1
    sta divr16s.rem+1
  //SEG105 [59] call divr16s 
  //SEG106 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
  divr16s_from_b4:
    jsr divr16s
  //SEG107 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 
    lda divr16s.return
    sta divr16s.return_3
    lda divr16s.return+1
    sta divr16s.return_3+1
    jmp b11
  //SEG108 point_init::@11
  b11:
  //SEG109 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 
    lda divr16s.return_3
    sta x_stepf
    lda divr16s.return_3+1
    sta x_stepf+1
  //SEG110 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 
    lda x_stepf+1
    sta _13
  //SEG111 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 
    lda _13
    lsr
    lsr
    lsr
    lsr
    sta _14
  //SEG112 [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsz2 
    lda _14
    ldy point_idx1
    sta y_add,y
    jmp b2_from_b11
  //SEG113 point_init::@3
  b3:
  //SEG114 [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 
    // x add = -1.0
    ldy point_idx
    lda #-$10
    sta x_add,y
    jmp b4
  //SEG115 point_init::abs16s2_@1
  abs16s2_b1:
  //SEG116 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 
    sec
    lda y_diff
    eor #$ff
    adc #0
    sta abs16s2__2
    lda y_diff+1
    eor #$ff
    adc #0
    sta abs16s2__2+1
  //SEG117 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 -- vwuz1=vwuz2 
    lda abs16s2__2
    sta abs16s2_return
    lda abs16s2__2+1
    sta abs16s2_return+1
    jmp abs16s2_breturn_from_abs16s2_b1
  //SEG118 point_init::abs16s1_@1
  abs16s1_b1:
  //SEG119 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 
    sec
    lda x_diff
    eor #$ff
    adc #0
    sta abs16s1__2
    lda x_diff+1
    eor #$ff
    adc #0
    sta abs16s1__2+1
  //SEG120 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 -- vwuz1=vwuz2 
    lda abs16s1__2
    sta abs16s1_return
    lda abs16s1__2+1
    sta abs16s1_return+1
    jmp abs16s1_breturn_from_abs16s1_b1
}
//SEG121 divr16s
// Perform division on two signed 16-bit numbers with an initial remainder.
// Returns dividend/divisor. The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// divr16s(signed word zeropage($41) divisor, signed word zeropage($43) rem)
divr16s: {
    .const dividend = 0
    .label _7 = $57
    .label _11 = $55
    .label neg = $f
    .label resultu = $53
    .label return = $10
    .label divisor = $41
    .label rem = $43
    .label return_3 = $45
    .label dividendu = 9
    .label divisoru = $d
    .label remu = $b
    jmp b16
  //SEG122 divr16s::@16
  b16:
  //SEG123 [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 
    lda rem+1
    bmi b1
    jmp b17
  //SEG124 divr16s::@17
  b17:
  //SEG125 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 
    lda rem
    sta remu
    lda rem+1
    sta remu+1
  //SEG126 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
  b2_from_b17:
  //SEG127 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy 
  //SEG128 [73] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 
    lda #<dividend
    sta dividendu
    lda #>dividend
    sta dividendu+1
  //SEG129 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuz1=vbuc1 
    lda #0
    sta neg
    jmp b2
  //SEG130 divr16s::@2
  b2:
  //SEG131 [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 
    lda divisor+1
    bmi b3
    jmp b18
  //SEG132 divr16s::@18
  b18:
  //SEG133 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 
    lda divisor
    sta divisoru
    lda divisor+1
    sta divisoru+1
  //SEG134 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
  b4_from_b18:
  b4_from_b3:
  //SEG135 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy 
  //SEG136 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy 
    jmp b4
  //SEG137 divr16s::@4
  b4:
  //SEG138 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 
    lda dividendu
    sta divr16u.dividend
    lda dividendu+1
    sta divr16u.dividend+1
  //SEG139 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 
    lda divisoru
    sta divr16u.divisor
    lda divisoru+1
    sta divr16u.divisor+1
  //SEG140 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 
    lda remu
    sta divr16u.rem
    lda remu+1
    sta divr16u.rem+1
  //SEG141 [80] call divr16u 
  //SEG142 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
  divr16u_from_b4:
    jsr divr16u
  //SEG143 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 
    lda divr16u.return
    sta divr16u.return_2
    lda divr16u.return+1
    sta divr16u.return_2+1
    jmp b15
  //SEG144 divr16s::@15
  b15:
  //SEG145 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 
    lda divr16u.return_2
    sta resultu
    lda divr16u.return_2+1
    sta resultu+1
  //SEG146 [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuz1_eq_0_then_la1 
    lda neg
    cmp #0
    beq b19
    jmp b11
  //SEG147 divr16s::@11
  b11:
  //SEG148 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 
    sec
    lda divr16u.rem
    eor #$ff
    adc #0
    sta rem16s
    lda divr16u.rem+1
    eor #$ff
    adc #0
    sta rem16s+1
  //SEG149 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 
    sec
    lda resultu
    eor #$ff
    adc #0
    sta return
    lda resultu+1
    eor #$ff
    adc #0
    sta return+1
  //SEG150 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
  breturn_from_b11:
  breturn_from_b19:
  //SEG151 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy 
  //SEG152 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy 
    jmp breturn
  //SEG153 divr16s::@return
  breturn:
  //SEG154 [87] return 
    rts
  //SEG155 divr16s::@19
  b19:
  //SEG156 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 
    lda resultu
    sta return
    lda resultu+1
    sta return+1
  //SEG157 [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 -- vwsz1=vwsz2 
    lda divr16u.rem
    sta rem16s
    lda divr16u.rem+1
    sta rem16s+1
    jmp breturn_from_b19
  //SEG158 divr16s::@3
  b3:
  //SEG159 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 
    sec
    lda divisor
    eor #$ff
    adc #0
    sta _11
    lda divisor+1
    eor #$ff
    adc #0
    sta _11+1
  //SEG160 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 
    lda neg
    eor #1
    sta neg
  //SEG161 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 -- vwuz1=vwuz2 
    lda _11
    sta divisoru
    lda _11+1
    sta divisoru+1
    jmp b4_from_b3
  //SEG162 divr16s::@1
  b1:
  //SEG163 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 
    sec
    lda rem
    eor #$ff
    adc #0
    sta _7
    lda rem+1
    eor #$ff
    adc #0
    sta _7+1
  //SEG164 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 -- vwuz1=vwuz2 
    lda _7
    sta remu
    lda _7+1
    sta remu+1
  //SEG165 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
  b2_from_b1:
  //SEG166 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy 
  //SEG167 [73] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 
    lda #<-dividend
    sta dividendu
    lda #>-dividend
    sta dividendu+1
  //SEG168 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 
    lda #1
    sta neg
    jmp b2
}
//SEG169 divr16u
// Performs division on two 16 bit unsigned words and an initial remainder
// Returns the quotient dividend/divisor.
// The final remainder will be set into the global variable rem16u
// Implemented using simple binary division
// divr16u(word zeropage($14) dividend, word zeropage($4f) divisor, word zeropage($12) rem)
divr16u: {
    .label _1 = $59
    .label _2 = $5a
    .label rem = $12
    .label dividend = $14
    .label quotient = $16
    .label i = $18
    .label return = $16
    .label divisor = $4f
    .label return_2 = $51
  //SEG170 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
  b1_from_divr16u:
  //SEG171 [96] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG172 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta quotient
    lda #>0
    sta quotient+1
  //SEG173 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy 
  //SEG174 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy 
    jmp b1
  //SEG175 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
  b1_from_b3:
  //SEG176 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy 
  //SEG177 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy 
  //SEG178 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy 
  //SEG179 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy 
    jmp b1
  //SEG180 divr16u::@1
  b1:
  //SEG181 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl rem
    rol rem+1
  //SEG182 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 
    lda dividend+1
    sta _1
  //SEG183 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 
    lda #$80
    and _1
    sta _2
  //SEG184 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 
    lda _2
    cmp #0
    beq b2_from_b1
    jmp b4
  //SEG185 divr16u::@4
  b4:
  //SEG186 [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 
    lda #1
    ora rem
    sta rem
  //SEG187 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG188 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy 
    jmp b2
  //SEG189 divr16u::@2
  b2:
  //SEG190 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl dividend
    rol dividend+1
  //SEG191 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl quotient
    rol quotient+1
  //SEG192 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 
    lda rem+1
    cmp divisor+1
    bcc b3_from_b2
    bne !+
    lda rem
    cmp divisor
    bcc b3_from_b2
  !:
    jmp b5
  //SEG193 divr16u::@5
  b5:
  //SEG194 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 
    inc quotient
    bne !+
    inc quotient+1
  !:
  //SEG195 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda rem
    sec
    sbc divisor
    sta rem
    lda rem+1
    sbc divisor+1
    sta rem+1
  //SEG196 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
  b3_from_b2:
  b3_from_b5:
  //SEG197 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy 
  //SEG198 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy 
    jmp b3
  //SEG199 divr16u::@3
  b3:
  //SEG200 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG201 [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #$10
    bne b1_from_b3
    jmp breturn
  //SEG202 divr16u::@return
  breturn:
  //SEG203 [111] return 
    rts
}
//SEG204 screen_fill
// Fill the screen with a specific char
// screen_fill(byte* zeropage($1a) screen)
screen_fill: {
    .const ch = $10
    .label screen = $1a
    .label x = $1c
    .label y = $19
  //SEG205 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
  b1_from_screen_fill:
  //SEG206 [113] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
  //SEG207 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta screen
    lda #>SCREEN
    sta screen+1
    jmp b1
  //SEG208 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
  b1_from_b3:
  //SEG209 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy 
  //SEG210 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy 
    jmp b1
  //SEG211 screen_fill::@1
  b1:
  //SEG212 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
  b2_from_b1:
  //SEG213 [114] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta x
  //SEG214 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy 
    jmp b2
  //SEG215 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
  b2_from_b2:
  //SEG216 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy 
  //SEG217 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy 
    jmp b2
  //SEG218 screen_fill::@2
  b2:
  //SEG219 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (screen),y
  //SEG220 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 
    inc screen
    bne !+
    inc screen+1
  !:
  //SEG221 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1 
    inc x
  //SEG222 [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda x
    cmp #$28
    bne b2_from_b2
    jmp b3
  //SEG223 screen_fill::@3
  b3:
  //SEG224 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 
    inc y
  //SEG225 [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda y
    cmp #$19
    bne b1_from_b3
    jmp breturn
  //SEG226 screen_fill::@return
  breturn:
  //SEG227 [121] return 
    rts
}
//SEG228 bitmap_clear
// Clear all graphics on the bitmap
bitmap_clear: {
    .label bitmap = $1e
    .label x = $20
    .label y = $1d
    .label _3 = $5b
  //SEG229 [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda bitmap_plot_ylo
    sta _3
    lda bitmap_plot_yhi
    sta _3+1
  //SEG230 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 
    lda _3
    sta bitmap
    lda _3+1
    sta bitmap+1
  //SEG231 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
  b1_from_bitmap_clear:
  //SEG232 [124] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
  //SEG233 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy 
    jmp b1
  //SEG234 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
  b1_from_b3:
  //SEG235 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy 
  //SEG236 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy 
    jmp b1
  //SEG237 bitmap_clear::@1
  b1:
  //SEG238 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
  b2_from_b1:
  //SEG239 [125] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta x
  //SEG240 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy 
    jmp b2
  //SEG241 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
  b2_from_b2:
  //SEG242 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy 
  //SEG243 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy 
    jmp b2
  //SEG244 bitmap_clear::@2
  b2:
  //SEG245 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 
    lda #0
    ldy #0
    sta (bitmap),y
  //SEG246 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 
    inc bitmap
    bne !+
    inc bitmap+1
  !:
  //SEG247 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 
    inc x
  //SEG248 [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda x
    cmp #$c8
    bne b2_from_b2
    jmp b3
  //SEG249 bitmap_clear::@3
  b3:
  //SEG250 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 
    inc y
  //SEG251 [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda y
    cmp #$28
    bne b1_from_b3
    jmp breturn
  //SEG252 bitmap_clear::@return
  breturn:
  //SEG253 [132] return 
    rts
}
//SEG254 bitmap_init
bitmap_init: {
    .label _3 = $5d
    .label _4 = $5e
    .label _5 = $5f
    .label _6 = $60
    .label _7 = $61
    .label bits = $21
    .label x = $22
    .label y = $23
    .label yoffs = $24
  //SEG255 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
  b1_from_bitmap_init:
  //SEG256 [134] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta x
  //SEG257 [134] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 
    lda #$80
    sta bits
    jmp b1
  //SEG258 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
  b1_from_b2:
  //SEG259 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy 
  //SEG260 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy 
    jmp b1
  //SEG261 bitmap_init::@1
  b1:
  //SEG262 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda bits
    ldy x
    sta bitmap_plot_bit,y
  //SEG263 [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 
    lsr bits
  //SEG264 [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 
    lda bits
    cmp #0
    bne b10_from_b1
  //SEG265 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
  b2_from_b1:
  //SEG266 [138] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 
    lda #$80
    sta bits
    jmp b2
  //SEG267 bitmap_init::@2
  b2:
  //SEG268 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 
    inc x
  //SEG269 [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 
    lda x
    cmp #0
    bne b1_from_b2
  //SEG270 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
  b3_from_b2:
  //SEG271 [141] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta yoffs
    lda #>BITMAP
    sta yoffs+1
  //SEG272 [141] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 
    lda #0
    sta y
    jmp b3
  //SEG273 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
  b3_from_b4:
  //SEG274 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy 
  //SEG275 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy 
    jmp b3
  //SEG276 bitmap_init::@3
  b3:
  //SEG277 [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 
    lda #7
    and y
    sta _3
  //SEG278 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 
    lda yoffs
    sta _4
  //SEG279 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 
    lda _3
    ora _4
    sta _5
  //SEG280 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda _5
    ldy y
    sta bitmap_plot_ylo,y
  //SEG281 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 
    lda yoffs+1
    sta _6
  //SEG282 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda _6
    ldy y
    sta bitmap_plot_yhi,y
  //SEG283 [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 
    lda #7
    and y
    sta _7
  //SEG284 [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 
    lda _7
    cmp #7
    bne b4_from_b3
    jmp b7
  //SEG285 bitmap_init::@7
  b7:
  //SEG286 [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 
    clc
    lda yoffs
    adc #<$28*8
    sta yoffs
    lda yoffs+1
    adc #>$28*8
    sta yoffs+1
  //SEG287 [151] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
  b4_from_b3:
  b4_from_b7:
  //SEG288 [151] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy 
    jmp b4
  //SEG289 bitmap_init::@4
  b4:
  //SEG290 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 
    inc y
  //SEG291 [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 
    lda y
    cmp #0
    bne b3_from_b4
    jmp breturn
  //SEG292 bitmap_init::@return
  breturn:
  //SEG293 [154] return 
    rts
  //SEG294 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
  b10_from_b1:
    jmp b10
  //SEG295 bitmap_init::@10
  b10:
  //SEG296 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
  b2_from_b10:
  //SEG297 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy 
    jmp b2
}
  // The coordinates of the lines to animate
  x_start: .word $a, $14, $1e, $1e
  y_start: .byte $a, $a, $a, $14
  x_end: .word $14, $a, $14, $14
  y_end: .byte $14, $14, $a, $14
  // Current x position fixed point [12.4]
  x_cur: .fill 2*4, 0
  // Current y position fixed point [12.4]
  y_cur: .fill 2*4, 0
  // X position addition per frame s[3.4]
  x_add: .fill 4, 0
  // Y position addition per frame s[3.4]
  y_add: .fill 4, 0
  // Frame delay (counted down to 0)
  delay: .fill 4, 0
  // Tables for the plotter - initialized by calling bitmap_init();
  bitmap_plot_ylo: .fill $100, 0
  bitmap_plot_yhi: .fill $100, 0
  bitmap_plot_bit: .fill $100, 0

REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp ZP_BYTE:94 [ bitmap_init::$4 ] has ALU potential.
Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 rem16u#18 rem16s#13 main::$9 ] ( main:2 [ main::i#2 rem16u#18 rem16s#13 main::$9 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 rem16u#18 rem16s#13 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 rem16u#18 rem16s#13 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ main::$9 ]
Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a 
Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a 
Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a 
Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a 
Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ point_init::point_idx#0 ]
Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ point_init::point_idx1#0 ]
Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a 
Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a 
Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a 
Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a 
Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a 
Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a 
Statement [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a 
Statement [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a 
Statement [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a 
Statement [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ rem16u#18 rem16s#13 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx1#0 ] ) always clobbers reg byte a 
Statement [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] ) always clobbers reg byte a 
Statement [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a 
Statement [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a 
Statement [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ) always clobbers reg byte a 
Statement [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ) always clobbers reg byte a 
Statement [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ) always clobbers reg byte a 
Statement [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ) always clobbers reg byte a 
Statement [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a 
Statement [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a 
Statement [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a 
Statement [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a 
Statement [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a 
Statement [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a 
Statement [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
Statement [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a 
Statement [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a 
Statement [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a 
Statement [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a 
Statement [81] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a 
Statement [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a 
Statement [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a 
Statement [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 rem16s#2 divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a 
Statement [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 ] ) always clobbers reg byte a 
Statement [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::return#7 rem16s#57 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 rem16s#57 ] ) always clobbers reg byte a 
Statement [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a 
Statement [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a 
Statement [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a 
Statement [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a 
Statement [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a 
Statement [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ divr16u::i#2 divr16u::i#1 ]
Statement [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a 
Statement [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a 
Statement [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a 
Statement [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a 
Statement [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ]
Statement [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a 
Statement [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a 
Statement [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
Statement [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ bitmap_init::y#2 bitmap_init::y#1 ]
Statement [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a 
Statement [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a 
Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 rem16u#18 rem16s#13 main::$9 ] ( main:2 [ main::i#2 rem16u#18 rem16s#13 main::$9 ] ) always clobbers reg byte a 
Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 rem16u#18 rem16s#13 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 rem16u#18 rem16s#13 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a 
Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a 
Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a 
Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a 
Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a 
Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 ] ) always clobbers reg byte a reg byte y 
Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a 
Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a 
Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a 
Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a 
Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a 
Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a 
Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a 
Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a 
Statement [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a 
Statement [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a 
Statement [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a 
Statement [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ rem16u#18 rem16s#13 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx1#0 ] ) always clobbers reg byte a 
Statement [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] ) always clobbers reg byte a 
Statement [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a 
Statement [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a 
Statement [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ) always clobbers reg byte a 
Statement [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ) always clobbers reg byte a 
Statement [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ) always clobbers reg byte a 
Statement [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ) always clobbers reg byte a 
Statement [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a 
Statement [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a 
Statement [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a 
Statement [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a 
Statement [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a 
Statement [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a 
Statement [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a 
Statement [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a 
Statement [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a 
Statement [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a 
Statement [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a 
Statement [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a 
Statement [81] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a 
Statement [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a 
Statement [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a 
Statement [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 rem16s#2 divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a 
Statement [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 ] ) always clobbers reg byte a 
Statement [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::return#7 rem16s#57 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 rem16s#57 ] ) always clobbers reg byte a 
Statement [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a 
Statement [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a 
Statement [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a 
Statement [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a 
Statement [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a 
Statement [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a 
Statement [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a 
Statement [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a 
Statement [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a 
Statement [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a 
Statement [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y 
Statement [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a 
Statement [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a 
Statement [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y 
Statement [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a 
Statement [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a 
Statement [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a 
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , 
Potential registers zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] : zp ZP_WORD:3 , 
Potential registers zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] : zp ZP_WORD:5 , 
Potential registers zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] : zp ZP_WORD:7 , 
Potential registers zp ZP_WORD:9 [ divr16s::dividendu#3 ] : zp ZP_WORD:9 , 
Potential registers zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] : zp ZP_WORD:11 , 
Potential registers zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] : zp ZP_WORD:13 , 
Potential registers zp ZP_BYTE:15 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] : zp ZP_WORD:16 , 
Potential registers zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:18 , 
Potential registers zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] : zp ZP_WORD:20 , 
Potential registers zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:22 , 
Potential registers zp ZP_BYTE:24 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] : zp ZP_BYTE:25 , reg byte x , 
Potential registers zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] : zp ZP_WORD:26 , 
Potential registers zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ] : zp ZP_BYTE:28 , reg byte x , 
Potential registers zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] : zp ZP_BYTE:29 , reg byte x , 
Potential registers zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] : zp ZP_WORD:30 , 
Potential registers zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ] : zp ZP_BYTE:32 , reg byte x , 
Potential registers zp ZP_BYTE:33 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:34 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:35 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:35 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:36 , 
Potential registers zp ZP_BYTE:38 [ point_init::point_idx#0 ] : zp ZP_BYTE:38 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:39 [ main::$9 ] : zp ZP_BYTE:39 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:40 [ bitmap_plot::x#0 ] : zp ZP_WORD:40 , 
Potential registers zp ZP_BYTE:42 [ bitmap_plot::y#0 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:43 [ bitmap_plot::$3 ] : zp ZP_WORD:43 , 
Potential registers zp ZP_WORD:45 [ bitmap_plot::$1 ] : zp ZP_WORD:45 , 
Potential registers zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:47 , 
Potential registers zp ZP_BYTE:49 [ bitmap_plot::$2 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:50 [ point_init::point_idx1#0 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:51 [ point_init::x_diff#1 ] : zp ZP_WORD:51 , 
Potential registers zp ZP_WORD:53 [ point_init::$4 ] : zp ZP_WORD:53 , 
Potential registers zp ZP_WORD:55 [ point_init::$5 ] : zp ZP_WORD:55 , 
Potential registers zp ZP_WORD:57 [ point_init::y_diff#0 ] : zp ZP_WORD:57 , 
Potential registers zp ZP_WORD:59 [ point_init::$16 ] : zp ZP_WORD:59 , 
Potential registers zp ZP_WORD:61 [ point_init::$17 ] : zp ZP_WORD:61 , 
Potential registers zp ZP_WORD:63 [ point_init::$18 ] : zp ZP_WORD:63 , 
Potential registers zp ZP_WORD:65 [ divr16s::divisor#0 ] : zp ZP_WORD:65 , 
Potential registers zp ZP_WORD:67 [ divr16s::rem#0 ] : zp ZP_WORD:67 , 
Potential registers zp ZP_WORD:69 [ divr16s::return#3 ] : zp ZP_WORD:69 , 
Potential registers zp ZP_WORD:71 [ point_init::x_stepf#0 ] : zp ZP_WORD:71 , 
Potential registers zp ZP_BYTE:73 [ point_init::$13 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:74 [ point_init::$14 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] : zp ZP_WORD:75 , 
Potential registers zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] : zp ZP_WORD:77 , 
Potential registers zp ZP_WORD:79 [ divr16u::divisor#0 ] : zp ZP_WORD:79 , 
Potential registers zp ZP_WORD:81 [ divr16u::return#2 ] : zp ZP_WORD:81 , 
Potential registers zp ZP_WORD:83 [ divr16s::resultu#0 ] : zp ZP_WORD:83 , 
Potential registers zp ZP_WORD:85 [ divr16s::$11 ] : zp ZP_WORD:85 , 
Potential registers zp ZP_WORD:87 [ divr16s::$7 ] : zp ZP_WORD:87 , 
Potential registers zp ZP_BYTE:89 [ divr16u::$1 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:90 [ divr16u::$2 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:91 [ bitmap_clear::$3 ] : zp ZP_WORD:91 , 
Potential registers zp ZP_BYTE:93 [ bitmap_init::$3 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:94 [ bitmap_init::$4 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , reg byte alu , 
Potential registers zp ZP_BYTE:95 [ bitmap_init::$5 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:96 [ bitmap_init::$6 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:97 [ bitmap_init::$7 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [divr16u] 803.72: zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 338.75: zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:89 [ divr16u::$1 ] 202: zp ZP_BYTE:90 [ divr16u::$2 ] 167.04: zp ZP_BYTE:24 [ divr16u::i#2 divr16u::i#1 ] 69.82: zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 11.33: zp ZP_WORD:79 [ divr16u::divisor#0 ] 4: zp ZP_WORD:81 [ divr16u::return#2 ] 
Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:91 [ bitmap_clear::$3 ] 
Uplift Scope [screen_fill] 221.6: zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 218.83: zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ] 20.17: zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] 
Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:33 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:35 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:34 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:94 [ bitmap_init::$4 ] 22: zp ZP_BYTE:95 [ bitmap_init::$5 ] 22: zp ZP_BYTE:96 [ bitmap_init::$6 ] 22: zp ZP_BYTE:97 [ bitmap_init::$7 ] 11: zp ZP_BYTE:93 [ bitmap_init::$3 ] 
Uplift Scope [point_init] 14: zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 9: zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 4: zp ZP_WORD:55 [ point_init::$5 ] 4: zp ZP_WORD:59 [ point_init::$16 ] 4: zp ZP_WORD:61 [ point_init::$17 ] 4: zp ZP_WORD:63 [ point_init::$18 ] 4: zp ZP_WORD:71 [ point_init::x_stepf#0 ] 4: zp ZP_BYTE:73 [ point_init::$13 ] 2: zp ZP_WORD:53 [ point_init::$4 ] 2: zp ZP_BYTE:74 [ point_init::$14 ] 2: zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] 2: zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] 0.7: zp ZP_BYTE:38 [ point_init::point_idx#0 ] 0.56: zp ZP_WORD:51 [ point_init::x_diff#1 ] 0.5: zp ZP_WORD:57 [ point_init::y_diff#0 ] 0.36: zp ZP_BYTE:50 [ point_init::point_idx1#0 ] 
Uplift Scope [divr16s] 11: zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 8.67: zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 8: zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 4: zp ZP_WORD:69 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:15 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:67 [ divr16s::rem#0 ] 2: zp ZP_WORD:87 [ divr16s::$7 ] 1: zp ZP_WORD:85 [ divr16s::$11 ] 0.67: zp ZP_WORD:65 [ divr16s::divisor#0 ] 0.67: zp ZP_WORD:83 [ divr16s::resultu#0 ] 0.29: zp ZP_WORD:9 [ divr16s::dividendu#3 ] 
Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 11: zp ZP_BYTE:39 [ main::$9 ] 
Uplift Scope [bitmap_plot] 15: zp ZP_BYTE:42 [ bitmap_plot::y#0 ] 4: zp ZP_WORD:45 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:49 [ bitmap_plot::$2 ] 3: zp ZP_WORD:40 [ bitmap_plot::x#0 ] 3: zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:43 [ bitmap_plot::$3 ] 
Uplift Scope [] 8.47: zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] 

Uplifting [divr16u] best 29845 combination zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:79 [ divr16u::divisor#0 ] zp ZP_WORD:81 [ divr16u::return#2 ] 
Uplifting [bitmap_clear] best 28945 combination zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:91 [ bitmap_clear::$3 ] 
Uplifting [screen_fill] best 28045 combination zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] 
Uplifting [bitmap_init] best 27545 combination zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:95 [ bitmap_init::$5 ] zp ZP_BYTE:96 [ bitmap_init::$6 ] zp ZP_BYTE:97 [ bitmap_init::$7 ] zp ZP_BYTE:93 [ bitmap_init::$3 ] 
Limited combination testing to 100 combinations of 61440 possible.
Uplifting [point_init] best 27533 combination zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp ZP_WORD:55 [ point_init::$5 ] zp ZP_WORD:59 [ point_init::$16 ] zp ZP_WORD:61 [ point_init::$17 ] zp ZP_WORD:63 [ point_init::$18 ] zp ZP_WORD:71 [ point_init::x_stepf#0 ] reg byte a [ point_init::$13 ] zp ZP_WORD:53 [ point_init::$4 ] reg byte a [ point_init::$14 ] zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] zp ZP_BYTE:38 [ point_init::point_idx#0 ] zp ZP_WORD:51 [ point_init::x_diff#1 ] zp ZP_WORD:57 [ point_init::y_diff#0 ] zp ZP_BYTE:50 [ point_init::point_idx1#0 ] 
Limited combination testing to 100 combinations of 144 possible.
Uplifting [divr16s] best 27522 combination zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:69 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:67 [ divr16s::rem#0 ] zp ZP_WORD:87 [ divr16s::$7 ] zp ZP_WORD:85 [ divr16s::$11 ] zp ZP_WORD:65 [ divr16s::divisor#0 ] zp ZP_WORD:83 [ divr16s::resultu#0 ] zp ZP_WORD:9 [ divr16s::dividendu#3 ] 
Uplifting [main] best 27482 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::$9 ] 
Uplifting [bitmap_plot] best 27445 combination reg byte y [ bitmap_plot::y#0 ] zp ZP_WORD:45 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:40 [ bitmap_plot::x#0 ] zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] zp ZP_WORD:43 [ bitmap_plot::$3 ] 
Uplifting [] best 27445 combination zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Uplifting [main] best 27445 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:95 [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 27385 combination reg byte a [ bitmap_init::$5 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:96 [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 27325 combination reg byte a [ bitmap_init::$6 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:97 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 27265 combination reg byte a [ bitmap_init::$7 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ]
Uplifting [screen_fill] best 27265 combination zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Uplifting [bitmap_clear] best 27265 combination zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:93 [ bitmap_init::$3 ]
Uplifting [bitmap_init] best 27265 combination zp ZP_BYTE:93 [ bitmap_init::$3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:38 [ point_init::point_idx#0 ]
Uplifting [point_init] best 27265 combination zp ZP_BYTE:38 [ point_init::point_idx#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ point_init::point_idx1#0 ]
Uplifting [point_init] best 27265 combination zp ZP_BYTE:50 [ point_init::point_idx1#0 ] 
Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:83 [ divr16s::resultu#0 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ main::i#2 main::i#1 ] ] with [ zp ZP_BYTE:38 [ point_init::point_idx#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::dividendu#3 ] ] with [ zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] ] with [ zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:67 [ divr16s::rem#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp ZP_WORD:87 [ divr16s::$7 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:65 [ divr16s::divisor#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp ZP_WORD:79 [ divr16u::divisor#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp ZP_WORD:85 [ divr16s::$11 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:69 [ divr16s::return#3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:81 [ divr16u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:91 [ bitmap_clear::$3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:43 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:53 [ point_init::$4 ] ] with [ zp ZP_WORD:57 [ point_init::y_diff#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ point_init::$17 ] ] with [ zp ZP_WORD:63 [ point_init::$18 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 ] ] with [ zp ZP_WORD:51 [ point_init::x_diff#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:71 [ point_init::x_stepf#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 ] ] with [ zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 ] ] with [ zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:93 [ bitmap_init::$3 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] ] with [ zp ZP_WORD:9 [ divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] with [ zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ]
Coalescing zero page register [ zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 ] ] with [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] with [ zp ZP_WORD:40 [ bitmap_plot::x#0 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 ] ] with [ zp ZP_WORD:55 [ point_init::$5 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 point_init::$5 ] ] with [ zp ZP_WORD:59 [ point_init::$16 ] ]
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 point_init::$5 point_init::$16 ] ] with [ zp ZP_WORD:61 [ point_init::$17 point_init::$18 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 ] ] with [ zp ZP_WORD:43 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] ]
Coalescing zero page register [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ] ] with [ zp ZP_WORD:45 [ bitmap_plot::$1 ] ]
Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ]
Allocated (was zp ZP_WORD:13) zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 bitmap_plot::$1 ]
Allocated (was zp ZP_BYTE:50) zp ZP_BYTE:13 [ point_init::point_idx1#0 ]
Allocated (was zp ZP_WORD:53) zp ZP_WORD:14 [ point_init::$4 point_init::y_diff#0 ]

ASSEMBLER BEFORE OPTIMIZATION
//SEG0 File Comments
// Animated lines drawn on a single color bitmap
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  // Processor port data direction register
  .label PROCPORT_DDR = 0
  // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
  .const PROCPORT_DDR_MEMORY_MASK = 7
  // Processor Port Register controlling RAM/ROM configuration and the datasette
  .label PROCPORT = 1
  // RAM in $A000, $E000 I/O in $D000
  .const PROCPORT_RAM_IO = $35
  .label RASTER = $d012
  .label BORDERCOL = $d020
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label D018 = $d018
  // CIA#2 Port A: Serial bus, RS-232, VIC memory bank
  .label CIA2_PORT_A = $dd00
  // CIA #2 Port A data direction register.
  .label CIA2_PORT_A_DDR = $dd02
  .label BITMAP = $a000
  .label SCREEN = $8800
  // The delay between pixels
  .const DELAY = 8
  .label rem16s = 3
  .label rem16u = 9
//SEG3 @begin
bbegin:
//SEG4 [1] phi from @begin to @19 [phi:@begin->@19]
b19_from_bbegin:
  jmp b19
//SEG5 @19
b19:
//SEG6 [2] call main 
  jsr main
//SEG7 [3] phi from @19 to @end [phi:@19->@end]
bend_from_b19:
  jmp bend
//SEG8 @end
bend:
//SEG9 main
main: {
    .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
    .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
    .label i = 2
  //SEG10 asm { sei  }
    sei
  //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 
    // Disable normal interrupt
    // Disable kernal & basic
    lda #PROCPORT_DDR_MEMORY_MASK
    sta PROCPORT_DDR
  //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 
    lda #PROCPORT_RAM_IO
    sta PROCPORT
  //SEG13 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
    jmp vicSelectGfxBank1
  //SEG14 main::vicSelectGfxBank1
  vicSelectGfxBank1:
  //SEG15 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 
    lda #3
    sta CIA2_PORT_A_DDR
  //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
  vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
    jmp vicSelectGfxBank1_toDd001
  //SEG17 main::vicSelectGfxBank1_toDd001
  vicSelectGfxBank1_toDd001:
    jmp vicSelectGfxBank1_b1
  //SEG18 main::vicSelectGfxBank1_@1
  vicSelectGfxBank1_b1:
  //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 
    lda #vicSelectGfxBank1_toDd001_return
    sta CIA2_PORT_A
  //SEG20 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
  toD0181_from_vicSelectGfxBank1_b1:
    jmp toD0181
  //SEG21 main::toD0181
  toD0181:
    jmp b16
  //SEG22 main::@16
  b16:
  //SEG23 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
  //SEG24 [13] call bitmap_init 
  //SEG25 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
  bitmap_init_from_b16:
    jsr bitmap_init
  //SEG26 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
  b17_from_b16:
    jmp b17
  //SEG27 main::@17
  b17:
  //SEG28 [15] call bitmap_clear 
    jsr bitmap_clear
  //SEG29 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
  b18_from_b17:
    jmp b18
  //SEG30 main::@18
  b18:
  //SEG31 [17] call screen_fill 
  //SEG32 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
  screen_fill_from_b18:
    jsr screen_fill
  //SEG33 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
  b1_from_b18:
  //SEG34 [18] phi (signed word) rem16s#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vwsz1=vbuc1 
    lda #<0
    sta rem16s
    lda #>0
    sta rem16s+1
  //SEG35 [18] phi (word) rem16u#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta rem16u
    lda #>0
    sta rem16u+1
  //SEG36 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG37 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
  b1_from_b21:
  //SEG38 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy 
  //SEG39 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy 
  //SEG40 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy 
    jmp b1
  //SEG41 main::@1
  b1:
  //SEG42 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2
  //SEG43 [20] call point_init 
    jsr point_init
    jmp b20
  //SEG44 main::@20
  b20:
  //SEG45 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 
    lda i
    lsr
    tax
  //SEG46 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 
    ldy i
    lda x_start,y
    sta bitmap_plot.x
    lda x_start+1,y
    sta bitmap_plot.x+1
  //SEG47 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx 
    ldy y_start,x
  //SEG48 [24] call bitmap_plot 
    jsr bitmap_plot
    jmp b21
  //SEG49 main::@21
  b21:
  //SEG50 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG51 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b1_from_b21
    jmp b5
  //SEG52 main::@5
  b5:
  //SEG53 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b5
    jmp b7
  //SEG54 main::@7
  b7:
  //SEG55 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    jmp b5
}
//SEG56 bitmap_plot
// Plot a single dot in the bitmap
// bitmap_plot(word zeropage(5) x, byte register(Y) y)
bitmap_plot: {
    .label _1 = $b
    .label x = 5
    .label plotter = 7
    .label _3 = 7
  //SEG57 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy 
    lda bitmap_plot_yhi,y
    sta _3+1
    lda bitmap_plot_ylo,y
    sta _3
  //SEG58 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 
    lda x
    and #<$fff8
    sta _1
    lda x+1
    and #>$fff8
    sta _1+1
  //SEG59 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 
    lda plotter
    clc
    adc _1
    sta plotter
    lda plotter+1
    adc _1+1
    sta plotter+1
  //SEG60 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 
    lda x
  //SEG61 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa 
    tay
    lda bitmap_plot_bit,y
    ldy #0
    ora (plotter),y
    ldy #0
    sta (plotter),y
    jmp breturn
  //SEG62 bitmap_plot::@return
  breturn:
  //SEG63 [34] return 
    rts
}
//SEG64 point_init
// Initialize the points to be animated
// point_init(byte zeropage(2) point_idx)
point_init: {
    .label _4 = $e
    .label _5 = 5
    .label _16 = 5
    .label _17 = 5
    .label _18 = 5
    .label point_idx = 2
    .label point_idx1 = $d
    .label y_diff = $e
    .label abs16s1__2 = 5
    .label abs16s1_return = 5
    .label abs16s2__2 = 7
    .label abs16s2_return = 7
    .label x_stepf = 5
    .label x_diff = $b
  //SEG65 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 
    lda point_idx
    lsr
    sta point_idx1
  //SEG66 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 
    ldy point_idx
    sec
    lda x_end,y
    sbc x_start,y
    sta x_diff
    lda x_end+1,y
    sbc x_start+1,y
    sta x_diff+1
  //SEG67 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 
    ldy point_idx1
    lda y_end,y
    sta _4
    lda #0
    sta _4+1
  //SEG68 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 
    ldy point_idx1
    lda y_start,y
    sta _5
    lda #0
    sta _5+1
  //SEG69 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 
    lda y_diff
    sec
    sbc _5
    sta y_diff
    lda y_diff+1
    sbc _5+1
    sta y_diff+1
    jmp abs16s1
  //SEG70 point_init::abs16s1
  abs16s1:
  //SEG71 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 
    lda x_diff+1
    bmi abs16s1_b1
    jmp b12
  //SEG72 point_init::@12
  b12:
  //SEG73 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 
    lda x_diff
    sta abs16s1_return
    lda x_diff+1
    sta abs16s1_return+1
  //SEG74 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
  abs16s1_breturn_from_b12:
  abs16s1_breturn_from_abs16s1_b1:
  //SEG75 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy 
    jmp abs16s1_breturn
  //SEG76 point_init::abs16s1_@return
  abs16s1_breturn:
    jmp abs16s2
  //SEG77 point_init::abs16s2
  abs16s2:
  //SEG78 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 
    lda y_diff+1
    bmi abs16s2_b1
    jmp b13
  //SEG79 point_init::@13
  b13:
  //SEG80 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 
    lda y_diff
    sta abs16s2_return
    lda y_diff+1
    sta abs16s2_return+1
  //SEG81 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
  abs16s2_breturn_from_b13:
  abs16s2_breturn_from_abs16s2_b1:
  //SEG82 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy 
    jmp abs16s2_breturn
  //SEG83 point_init::abs16s2_@return
  abs16s2_breturn:
    jmp b10
  //SEG84 point_init::@10
  b10:
  //SEG85 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 
    lda abs16s2_return+1
    cmp abs16s1_return+1
    bne !+
    lda abs16s2_return
    cmp abs16s1_return
  !:
    bcc b1
    beq b1
  //SEG86 [47] phi from point_init::@10 point_init::@11 to point_init::@2 [phi:point_init::@10/point_init::@11->point_init::@2]
  b2_from_b10:
  b2_from_b11:
  //SEG87 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy 
  //SEG88 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy 
    jmp b2
  //SEG89 point_init::@2
  b2:
  //SEG90 [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 
    ldy point_idx
    lda x_start,y
    sta _16
    lda x_start+1,y
    sta _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
  //SEG91 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 
    ldy point_idx
    lda _16
    sta x_cur,y
    lda _16+1
    sta x_cur+1,y
  //SEG92 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy point_idx1
    lda y_start,y
    sta _17
    lda #0
    sta _17+1
  //SEG93 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 
    asl _18
    rol _18+1
    asl _18
    rol _18+1
    asl _18
    rol _18+1
    asl _18
    rol _18+1
  //SEG94 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 
    ldy point_idx
    lda _18
    sta y_cur,y
    lda _18+1
    sta y_cur+1,y
  //SEG95 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 
    ldy point_idx1
    lda #DELAY
    sta delay,y
    jmp breturn
  //SEG96 point_init::@return
  breturn:
  //SEG97 [54] return 
    rts
  //SEG98 point_init::@1
  b1:
  //SEG99 [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 
    // X is driver - abs(y/x) is < 1
    lda x_diff+1
    bmi b3
    jmp b7
  //SEG100 point_init::@7
  b7:
  //SEG101 [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 
    // x add = 1.0
    ldy point_idx
    lda #$10
    sta x_add,y
    jmp b4
  //SEG102 point_init::@4
  b4:
  //SEG103 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
  //SEG104 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 
    lda y_diff
    sta divr16s.rem
    lda y_diff+1
    sta divr16s.rem+1
  //SEG105 [59] call divr16s 
  //SEG106 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
  divr16s_from_b4:
    jsr divr16s
  //SEG107 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
    jmp b11
  //SEG108 point_init::@11
  b11:
  //SEG109 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
  //SEG110 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 
    lda x_stepf+1
  //SEG111 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 
    lsr
    lsr
    lsr
    lsr
  //SEG112 [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa 
    ldy point_idx1
    sta y_add,y
    jmp b2_from_b11
  //SEG113 point_init::@3
  b3:
  //SEG114 [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 
    // x add = -1.0
    ldy point_idx
    lda #-$10
    sta x_add,y
    jmp b4
  //SEG115 point_init::abs16s2_@1
  abs16s2_b1:
  //SEG116 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 
    sec
    lda y_diff
    eor #$ff
    adc #0
    sta abs16s2__2
    lda y_diff+1
    eor #$ff
    adc #0
    sta abs16s2__2+1
  //SEG117 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
    jmp abs16s2_breturn_from_abs16s2_b1
  //SEG118 point_init::abs16s1_@1
  abs16s1_b1:
  //SEG119 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 
    sec
    lda x_diff
    eor #$ff
    adc #0
    sta abs16s1__2
    lda x_diff+1
    eor #$ff
    adc #0
    sta abs16s1__2+1
  //SEG120 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
    jmp abs16s1_breturn_from_abs16s1_b1
}
//SEG121 divr16s
// Perform division on two signed 16-bit numbers with an initial remainder.
// Returns dividend/divisor. The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// divr16s(signed word zeropage($b) divisor, signed word zeropage(9) rem)
divr16s: {
    .const dividend = 0
    .label _7 = 9
    .label _11 = $b
    .label resultu = 5
    .label return = 5
    .label divisor = $b
    .label rem = 9
    .label dividendu = 3
    .label divisoru = $b
    .label remu = 9
    jmp b16
  //SEG122 divr16s::@16
  b16:
  //SEG123 [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 
    lda rem+1
    bmi b1
    jmp b17
  //SEG124 divr16s::@17
  b17:
  //SEG125 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
  //SEG126 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
  b2_from_b17:
  //SEG127 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy 
  //SEG128 [73] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 
    lda #<dividend
    sta dividendu
    lda #>dividend
    sta dividendu+1
  //SEG129 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 
    ldy #0
    jmp b2
  //SEG130 divr16s::@2
  b2:
  //SEG131 [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 
    lda divisor+1
    bmi b3
    jmp b18
  //SEG132 divr16s::@18
  b18:
  //SEG133 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
  //SEG134 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
  b4_from_b18:
  b4_from_b3:
  //SEG135 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy 
  //SEG136 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy 
    jmp b4
  //SEG137 divr16s::@4
  b4:
  //SEG138 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
  //SEG139 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
  //SEG140 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3
  //SEG141 [80] call divr16u 
  //SEG142 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
  divr16u_from_b4:
    jsr divr16u
  //SEG143 [81] (word) divr16u::return#2 ← (word) divr16u::return#0
    jmp b15
  //SEG144 divr16s::@15
  b15:
  //SEG145 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2
  //SEG146 [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 
    cpy #0
    beq b19
    jmp b11
  //SEG147 divr16s::@11
  b11:
  //SEG148 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 
    sec
    lda divr16u.rem
    eor #$ff
    adc #0
    sta rem16s
    lda divr16u.rem+1
    eor #$ff
    adc #0
    sta rem16s+1
  //SEG149 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 
    sec
    lda return
    eor #$ff
    adc #0
    sta return
    lda return+1
    eor #$ff
    adc #0
    sta return+1
  //SEG150 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
  breturn_from_b11:
  breturn_from_b19:
  //SEG151 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy 
  //SEG152 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy 
    jmp breturn
  //SEG153 divr16s::@return
  breturn:
  //SEG154 [87] return 
    rts
  //SEG155 divr16s::@19
  b19:
  //SEG156 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
  //SEG157 [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 -- vwsz1=vwsz2 
    lda divr16u.rem
    sta rem16s
    lda divr16u.rem+1
    sta rem16s+1
    jmp breturn_from_b19
  //SEG158 divr16s::@3
  b3:
  //SEG159 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 
    sec
    lda _11
    eor #$ff
    adc #0
    sta _11
    lda _11+1
    eor #$ff
    adc #0
    sta _11+1
  //SEG160 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 
    tya
    eor #1
    tay
  //SEG161 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
    jmp b4_from_b3
  //SEG162 divr16s::@1
  b1:
  //SEG163 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 
    sec
    lda _7
    eor #$ff
    adc #0
    sta _7
    lda _7+1
    eor #$ff
    adc #0
    sta _7+1
  //SEG164 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
  //SEG165 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
  b2_from_b1:
  //SEG166 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy 
  //SEG167 [73] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 
    lda #<-dividend
    sta dividendu
    lda #>-dividend
    sta dividendu+1
  //SEG168 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 
    ldy #1
    jmp b2
}
//SEG169 divr16u
// Performs division on two 16 bit unsigned words and an initial remainder
// Returns the quotient dividend/divisor.
// The final remainder will be set into the global variable rem16u
// Implemented using simple binary division
// divr16u(word zeropage(3) dividend, word zeropage($b) divisor, word zeropage(9) rem)
divr16u: {
    .label rem = 9
    .label dividend = 3
    .label quotient = 5
    .label return = 5
    .label divisor = $b
  //SEG170 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
  b1_from_divr16u:
  //SEG171 [96] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG172 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta quotient
    lda #>0
    sta quotient+1
  //SEG173 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy 
  //SEG174 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy 
    jmp b1
  //SEG175 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
  b1_from_b3:
  //SEG176 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy 
  //SEG177 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy 
  //SEG178 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy 
  //SEG179 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy 
    jmp b1
  //SEG180 divr16u::@1
  b1:
  //SEG181 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl rem
    rol rem+1
  //SEG182 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 
    lda dividend+1
  //SEG183 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 
    and #$80
  //SEG184 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b2_from_b1
    jmp b4
  //SEG185 divr16u::@4
  b4:
  //SEG186 [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 
    lda #1
    ora rem
    sta rem
  //SEG187 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
  b2_from_b1:
  b2_from_b4:
  //SEG188 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy 
    jmp b2
  //SEG189 divr16u::@2
  b2:
  //SEG190 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl dividend
    rol dividend+1
  //SEG191 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl quotient
    rol quotient+1
  //SEG192 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 
    lda rem+1
    cmp divisor+1
    bcc b3_from_b2
    bne !+
    lda rem
    cmp divisor
    bcc b3_from_b2
  !:
    jmp b5
  //SEG193 divr16u::@5
  b5:
  //SEG194 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 
    inc quotient
    bne !+
    inc quotient+1
  !:
  //SEG195 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda rem
    sec
    sbc divisor
    sta rem
    lda rem+1
    sbc divisor+1
    sta rem+1
  //SEG196 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
  b3_from_b2:
  b3_from_b5:
  //SEG197 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy 
  //SEG198 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy 
    jmp b3
  //SEG199 divr16u::@3
  b3:
  //SEG200 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG201 [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$10
    bne b1_from_b3
    jmp breturn
  //SEG202 divr16u::@return
  breturn:
  //SEG203 [111] return 
    rts
}
//SEG204 screen_fill
// Fill the screen with a specific char
// screen_fill(byte* zeropage(3) screen)
screen_fill: {
    .const ch = $10
    .label screen = 3
    .label y = 2
  //SEG205 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
  b1_from_screen_fill:
  //SEG206 [113] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
  //SEG207 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta screen
    lda #>SCREEN
    sta screen+1
    jmp b1
  //SEG208 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
  b1_from_b3:
  //SEG209 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy 
  //SEG210 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy 
    jmp b1
  //SEG211 screen_fill::@1
  b1:
  //SEG212 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
  b2_from_b1:
  //SEG213 [114] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG214 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy 
    jmp b2
  //SEG215 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
  b2_from_b2:
  //SEG216 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy 
  //SEG217 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy 
    jmp b2
  //SEG218 screen_fill::@2
  b2:
  //SEG219 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (screen),y
  //SEG220 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 
    inc screen
    bne !+
    inc screen+1
  !:
  //SEG221 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG222 [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne b2_from_b2
    jmp b3
  //SEG223 screen_fill::@3
  b3:
  //SEG224 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 
    inc y
  //SEG225 [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda y
    cmp #$19
    bne b1_from_b3
    jmp breturn
  //SEG226 screen_fill::@return
  breturn:
  //SEG227 [121] return 
    rts
}
//SEG228 bitmap_clear
// Clear all graphics on the bitmap
bitmap_clear: {
    .label bitmap = 3
    .label y = 2
    .label _3 = 3
  //SEG229 [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda bitmap_plot_ylo
    sta _3
    lda bitmap_plot_yhi
    sta _3+1
  //SEG230 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
  //SEG231 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
  b1_from_bitmap_clear:
  //SEG232 [124] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
  //SEG233 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy 
    jmp b1
  //SEG234 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
  b1_from_b3:
  //SEG235 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy 
  //SEG236 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy 
    jmp b1
  //SEG237 bitmap_clear::@1
  b1:
  //SEG238 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
  b2_from_b1:
  //SEG239 [125] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG240 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy 
    jmp b2
  //SEG241 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
  b2_from_b2:
  //SEG242 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy 
  //SEG243 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy 
    jmp b2
  //SEG244 bitmap_clear::@2
  b2:
  //SEG245 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 
    lda #0
    ldy #0
    sta (bitmap),y
  //SEG246 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 
    inc bitmap
    bne !+
    inc bitmap+1
  !:
  //SEG247 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG248 [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$c8
    bne b2_from_b2
    jmp b3
  //SEG249 bitmap_clear::@3
  b3:
  //SEG250 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 
    inc y
  //SEG251 [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda y
    cmp #$28
    bne b1_from_b3
    jmp breturn
  //SEG252 bitmap_clear::@return
  breturn:
  //SEG253 [132] return 
    rts
}
//SEG254 bitmap_init
bitmap_init: {
    .label _3 = 2
    .label yoffs = 3
  //SEG255 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
  b1_from_bitmap_init:
  //SEG256 [134] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG257 [134] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 
    lda #$80
    jmp b1
  //SEG258 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
  b1_from_b2:
  //SEG259 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy 
  //SEG260 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy 
    jmp b1
  //SEG261 bitmap_init::@1
  b1:
  //SEG262 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_bit,x
  //SEG263 [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 
    lsr
  //SEG264 [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne b10_from_b1
  //SEG265 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
  b2_from_b1:
  //SEG266 [138] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 
    lda #$80
    jmp b2
  //SEG267 bitmap_init::@2
  b2:
  //SEG268 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG269 [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b1_from_b2
  //SEG270 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
  b3_from_b2:
  //SEG271 [141] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta yoffs
    lda #>BITMAP
    sta yoffs+1
  //SEG272 [141] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
  //SEG273 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
  b3_from_b4:
  //SEG274 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy 
  //SEG275 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy 
    jmp b3
  //SEG276 bitmap_init::@3
  b3:
  //SEG277 [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 
    txa
    and #7
    sta _3
  //SEG278 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 
    lda yoffs
  //SEG279 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa 
    ora _3
  //SEG280 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_ylo,x
  //SEG281 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 
    lda yoffs+1
  //SEG282 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_yhi,x
  //SEG283 [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #7
  //SEG284 [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 
    cmp #7
    bne b4_from_b3
    jmp b7
  //SEG285 bitmap_init::@7
  b7:
  //SEG286 [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 
    clc
    lda yoffs
    adc #<$28*8
    sta yoffs
    lda yoffs+1
    adc #>$28*8
    sta yoffs+1
  //SEG287 [151] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
  b4_from_b3:
  b4_from_b7:
  //SEG288 [151] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy 
    jmp b4
  //SEG289 bitmap_init::@4
  b4:
  //SEG290 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG291 [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b3_from_b4
    jmp breturn
  //SEG292 bitmap_init::@return
  breturn:
  //SEG293 [154] return 
    rts
  //SEG294 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
  b10_from_b1:
    jmp b10
  //SEG295 bitmap_init::@10
  b10:
  //SEG296 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
  b2_from_b10:
  //SEG297 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy 
    jmp b2
}
  // The coordinates of the lines to animate
  x_start: .word $a, $14, $1e, $1e
  y_start: .byte $a, $a, $a, $14
  x_end: .word $14, $a, $14, $14
  y_end: .byte $14, $14, $a, $14
  // Current x position fixed point [12.4]
  x_cur: .fill 2*4, 0
  // Current y position fixed point [12.4]
  y_cur: .fill 2*4, 0
  // X position addition per frame s[3.4]
  x_add: .fill 4, 0
  // Y position addition per frame s[3.4]
  y_add: .fill 4, 0
  // Frame delay (counted down to 0)
  delay: .fill 4, 0
  // Tables for the plotter - initialized by calling bitmap_init();
  bitmap_plot_ylo: .fill $100, 0
  bitmap_plot_yhi: .fill $100, 0
  bitmap_plot_bit: .fill $100, 0

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b19
Removing instruction jmp bend
Removing instruction jmp vicSelectGfxBank1
Removing instruction jmp vicSelectGfxBank1_toDd001
Removing instruction jmp vicSelectGfxBank1_b1
Removing instruction jmp toD0181
Removing instruction jmp b16
Removing instruction jmp b17
Removing instruction jmp b18
Removing instruction jmp b1
Removing instruction jmp b20
Removing instruction jmp b21
Removing instruction jmp b5
Removing instruction jmp b7
Removing instruction jmp breturn
Removing instruction jmp abs16s1
Removing instruction jmp b12
Removing instruction jmp abs16s1_breturn
Removing instruction jmp abs16s2
Removing instruction jmp b13
Removing instruction jmp abs16s2_breturn
Removing instruction jmp b10
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b7
Removing instruction jmp b4
Removing instruction jmp b11
Removing instruction jmp b16
Removing instruction jmp b17
Removing instruction jmp b2
Removing instruction jmp b18
Removing instruction jmp b4
Removing instruction jmp b15
Removing instruction jmp b11
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b4
Removing instruction jmp b2
Removing instruction jmp b5
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b7
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b10
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #>0
Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction lda #0
Removing instruction lda i
Removing instruction ldy #0
Removing instruction ldy point_idx1
Removing instruction ldy point_idx
Replacing instruction lda #<0 with TXA
Removing instruction lda #>0
Replacing instruction ldy #0 with TAY
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b21 with b1
Replacing label b2_from_b11 with b2
Replacing label abs16s2_breturn_from_abs16s2_b1 with b10
Replacing label abs16s1_breturn_from_abs16s1_b1 with abs16s2
Replacing label breturn_from_b19 with breturn
Replacing label b4_from_b3 with b4
Replacing label b2_from_b1 with b2
Replacing label b3_from_b2 with b3
Replacing label b3_from_b2 with b3
Replacing label b1_from_b3 with b1
Replacing label b2_from_b2 with b2
Replacing label b1_from_b3 with b1
Replacing label b2_from_b2 with b2
Replacing label b1_from_b3 with b1
Replacing label b10_from_b1 with b10
Replacing label b1_from_b2 with b1
Replacing label b4_from_b3 with b4
Replacing label b3_from_b4 with b3
Removing instruction b19_from_bbegin:
Removing instruction b19:
Removing instruction bend_from_b19:
Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
Removing instruction vicSelectGfxBank1_toDd001:
Removing instruction toD0181_from_vicSelectGfxBank1_b1:
Removing instruction toD0181:
Removing instruction b17_from_b16:
Removing instruction b18_from_b17:
Removing instruction screen_fill_from_b18:
Removing instruction b1_from_b21:
Removing instruction abs16s1_breturn_from_b12:
Removing instruction abs16s1_breturn_from_abs16s1_b1:
Removing instruction abs16s1_breturn:
Removing instruction abs16s2_breturn_from_b13:
Removing instruction abs16s2_breturn_from_abs16s2_b1:
Removing instruction abs16s2_breturn:
Removing instruction b2_from_b10:
Removing instruction b2_from_b11:
Removing instruction b2_from_b17:
Removing instruction b18:
Removing instruction b4_from_b18:
Removing instruction b4_from_b3:
Removing instruction divr16u_from_b4:
Removing instruction breturn_from_b11:
Removing instruction breturn_from_b19:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b4:
Removing instruction b3_from_b2:
Removing instruction b3_from_b5:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b2:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b2:
Removing instruction b1_from_b2:
Removing instruction b3_from_b4:
Removing instruction b4_from_b3:
Removing instruction b4_from_b7:
Removing instruction b10_from_b1:
Removing instruction b2_from_b10:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction bend:
Removing instruction vicSelectGfxBank1:
Removing instruction vicSelectGfxBank1_b1:
Removing instruction b16:
Removing instruction bitmap_init_from_b16:
Removing instruction b17:
Removing instruction b18:
Removing instruction b1_from_b18:
Removing instruction b20:
Removing instruction b21:
Removing instruction b7:
Removing instruction breturn:
Removing instruction abs16s1:
Removing instruction b12:
Removing instruction b13:
Removing instruction breturn:
Removing instruction b7:
Removing instruction divr16s_from_b4:
Removing instruction b11:
Removing instruction b16:
Removing instruction b17:
Removing instruction b15:
Removing instruction b11:
Removing instruction b2_from_b1:
Removing instruction b1_from_divr16u:
Removing instruction b4:
Removing instruction b5:
Removing instruction breturn:
Removing instruction b1_from_screen_fill:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b1_from_bitmap_clear:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b1_from_bitmap_init:
Removing instruction b2_from_b1:
Removing instruction b3_from_b2:
Removing instruction b7:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Skipping double jump to b2 in bne b10
Succesful ASM optimization Pass5DoubleJumpElimination
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b3
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Removing instruction b10:
Succesful ASM optimization Pass5UnusedLabelElimination
Removing unreachable instruction jmp b2
Succesful ASM optimization Pass5UnreachableCodeElimination
Fixing long branch [159] bmi abs16s1_b1 to bpl
Fixing long branch [168] bmi abs16s2_b1 to bpl

FINAL SYMBOL TABLE
(label) @19
(label) @begin
(label) @end
(byte*) BGCOL
(byte*) BGCOL1
(byte*) BGCOL2
(byte*) BGCOL3
(byte*) BGCOL4
(byte*) BITMAP
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/dword/signed dword) 40960
(byte) BLACK
(byte) BLUE
(byte*) BORDERCOL
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
(byte) BROWN
(byte*) CHARGEN
(byte*) CIA1_INTERRUPT
(byte*) CIA1_PORT_A
(byte*) CIA1_PORT_A_DDR
(byte*) CIA1_PORT_B
(byte*) CIA1_PORT_B_DDR
(byte*) CIA2_INTERRUPT
(byte*) CIA2_PORT_A
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
(byte*) CIA2_PORT_A_DDR
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
(byte*) CIA2_PORT_B
(byte*) CIA2_PORT_B_DDR
(byte) CIA_INTERRUPT_CLEAR
(byte*) COLS
(byte) CYAN
(byte*) D011
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
(byte*) D016
(byte*) D018
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
(byte) DARK_GREY
(byte) DELAY
(const byte) DELAY#0 DELAY = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte) GREEN
(byte) GREY
(void()**) HARDWARE_IRQ
(byte) IRQ_COLLISION_BG
(byte) IRQ_COLLISION_SPRITE
(byte*) IRQ_ENABLE
(byte) IRQ_LIGHTPEN
(byte) IRQ_RASTER
(byte*) IRQ_STATUS
(void()**) KERNEL_IRQ
(byte*) LIGHTPEN_X
(byte*) LIGHTPEN_Y
(byte) LIGHT_BLUE
(byte) LIGHT_GREEN
(byte) LIGHT_GREY
(byte) ORANGE
(byte) PINK
(byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
(byte) PROCPORT_BASIC_KERNEL_IO
(byte*) PROCPORT_DDR
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
(byte) PROCPORT_DDR_MEMORY_MASK
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
(byte) PROCPORT_KERNEL_IO
(byte) PROCPORT_RAM_ALL
(byte) PROCPORT_RAM_CHARROM
(byte) PROCPORT_RAM_IO
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
(byte) PURPLE
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte) RED
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 34816
(byte) SIZE
(byte*) SPRITES_COLS
(byte*) SPRITES_ENABLE
(byte*) SPRITES_EXPAND_X
(byte*) SPRITES_EXPAND_Y
(byte*) SPRITES_MC
(byte*) SPRITES_MC1
(byte*) SPRITES_MC2
(byte*) SPRITES_PRIORITY
(byte*) SPRITES_XMSB
(byte*) SPRITES_XPOS
(byte*) SPRITES_YPOS
(word) SPRITE_PTRS
(byte) VIC_BMM
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
(byte*) VIC_CONTROL
(byte*) VIC_CONTROL2
(byte) VIC_CSEL
(byte) VIC_DEN
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
(byte) VIC_ECM
(byte) VIC_MCM
(byte*) VIC_MEMORY
(byte) VIC_RSEL
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte) VIC_RST8
(byte) WHITE
(byte) YELLOW
(void()) bitmap_clear()
(word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0
(label) bitmap_clear::@1
(label) bitmap_clear::@2
(label) bitmap_clear::@3
(label) bitmap_clear::@return
(byte*) bitmap_clear::bitmap
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:3 42.599999999999994
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:3 157.0
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:3 24.0
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:3 4.0
(byte) bitmap_clear::x
(byte) bitmap_clear::x#1 reg byte x 151.5
(byte) bitmap_clear::x#2 reg byte x 67.33333333333333
(byte) bitmap_clear::y
(byte) bitmap_clear::y#1 y zp ZP_BYTE:2 16.5
(byte) bitmap_clear::y#4 y zp ZP_BYTE:2 3.6666666666666665
(void()) bitmap_init((byte*) bitmap_init::bitmap)
(byte~) bitmap_init::$3 $3 zp ZP_BYTE:2 11.0
(byte~) bitmap_init::$4 reg byte a 22.0
(byte~) bitmap_init::$5 reg byte a 22.0
(byte~) bitmap_init::$6 reg byte a 22.0
(byte~) bitmap_init::$7 reg byte a 22.0
(label) bitmap_init::@1
(label) bitmap_init::@10
(label) bitmap_init::@2
(label) bitmap_init::@3
(label) bitmap_init::@4
(label) bitmap_init::@7
(label) bitmap_init::@return
(byte*) bitmap_init::bitmap
(byte) bitmap_init::bits
(byte) bitmap_init::bits#1 reg byte a 11.0
(byte) bitmap_init::bits#3 reg byte a 16.5
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
(byte) bitmap_init::x
(byte) bitmap_init::x#1 reg byte x 16.5
(byte) bitmap_init::x#2 reg byte x 5.5
(byte) bitmap_init::y
(byte) bitmap_init::y#1 reg byte x 16.5
(byte) bitmap_init::y#2 reg byte x 6.0
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:3 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 6.111111111111112
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 11.0
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 $1 zp ZP_WORD:11 4.0
(byte~) bitmap_plot::$2 reg byte a 4.0
(word~) bitmap_plot::$3 $3 zp ZP_WORD:7 1.0
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:7 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 x zp ZP_WORD:5 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte y 15.0
(byte[256]) bitmap_plot_bit
(const byte[256]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( 256, 0) }
(byte[256]) bitmap_plot_yhi
(const byte[256]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( 256, 0) }
(byte[256]) bitmap_plot_ylo
(const byte[256]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( 256, 0) }
(byte[4]) delay
(const byte[4]) delay#0 delay = { fill( 4, 0) }
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(signed word~) divr16s::$11 $11 zp ZP_WORD:11 1.0
(signed word~) divr16s::$7 $7 zp ZP_WORD:9 2.0
(label) divr16s::@1
(label) divr16s::@11
(label) divr16s::@15
(label) divr16s::@16
(label) divr16s::@17
(label) divr16s::@18
(label) divr16s::@19
(label) divr16s::@2
(label) divr16s::@3
(label) divr16s::@4
(label) divr16s::@return
(signed word) divr16s::dividend
(const signed word) divr16s::dividend#0 dividend = (byte/signed byte/word/signed word/dword/signed dword) 0
(word) divr16s::dividendu
(word) divr16s::dividendu#3 dividendu zp ZP_WORD:3 0.2857142857142857
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0 divisor zp ZP_WORD:11 0.6666666666666666
(word) divr16s::divisoru
(word) divr16s::divisoru#3 divisoru zp ZP_WORD:11 3.0
(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:11 4.0
(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:11 4.0
(byte) divr16s::neg
(byte) divr16s::neg#2 reg byte y 2.0
(byte) divr16s::neg#3 reg byte y 1.0
(byte) divr16s::neg#4 reg byte y 0.8571428571428571
(signed word) divr16s::rem
(signed word) divr16s::rem#0 rem zp ZP_WORD:9 2.0
(word) divr16s::remu
(word) divr16s::remu#3 remu zp ZP_WORD:9 0.6666666666666666
(word~) divr16s::remu#7 remu zp ZP_WORD:9 4.0
(word~) divr16s::remu#8 remu zp ZP_WORD:9 4.0
(word) divr16s::resultu
(word) divr16s::resultu#0 resultu zp ZP_WORD:5 0.6666666666666666
(signed word) divr16s::return
(signed word) divr16s::return#1 return zp ZP_WORD:5 4.0
(signed word) divr16s::return#2 return zp ZP_WORD:5 2.0
(signed word) divr16s::return#3 return zp ZP_WORD:5 4.0
(signed word~) divr16s::return#7 return zp ZP_WORD:5 2.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 202.0
(byte~) divr16u::$2 reg byte a 202.0
(label) divr16u::@1
(label) divr16u::@2
(label) divr16u::@3
(label) divr16u::@4
(label) divr16u::@5
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:3 25.25
(word) divr16u::dividend#1 dividend zp ZP_WORD:3 1.0
(word) divr16u::dividend#2 dividend zp ZP_WORD:3 43.57142857142858
(word) divr16u::divisor
(word) divr16u::divisor#0 divisor zp ZP_WORD:11 11.333333333333332
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 151.5
(byte) divr16u::i#2 reg byte x 15.538461538461538
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:5 151.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:5 101.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:5 25.25
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:9 75.75
(word) divr16u::rem#1 rem zp ZP_WORD:9 202.0
(word) divr16u::rem#10 rem zp ZP_WORD:9 15.25
(word) divr16u::rem#2 rem zp ZP_WORD:9 202.0
(word) divr16u::rem#3 rem zp ZP_WORD:9 2.0
(word) divr16u::rem#4 rem zp ZP_WORD:9 204.0
(word) divr16u::rem#5 rem zp ZP_WORD:9 101.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:5 61.0
(word) divr16u::return#2 return zp ZP_WORD:5 4.0
(byte[4]) frame
(void()) main()
(byte~) main::$9 reg byte x 11.0
(label) main::@1
(label) main::@16
(label) main::@17
(label) main::@18
(label) main::@20
(label) main::@21
(label) main::@5
(label) main::@7
(byte) main::i
(byte) main::i#1 i zp ZP_BYTE:2 16.5
(byte) main::i#2 i zp ZP_BYTE:2 7.857142857142857
(label) main::toD0181
(word~) main::toD0181_$0
(word~) main::toD0181_$1
(word~) main::toD0181_$2
(byte~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(byte~) main::toD0181_$6
(byte~) main::toD0181_$7
(byte~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
(byte*) main::toD0181_screen
(label) main::vicSelectGfxBank1
(byte~) main::vicSelectGfxBank1_$0
(label) main::vicSelectGfxBank1_@1
(byte*) main::vicSelectGfxBank1_gfx
(label) main::vicSelectGfxBank1_toDd001
(word~) main::vicSelectGfxBank1_toDd001_$0
(byte~) main::vicSelectGfxBank1_toDd001_$1
(byte~) main::vicSelectGfxBank1_toDd001_$2
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
(byte*) main::vicSelectGfxBank1_toDd001_gfx
(byte) main::vicSelectGfxBank1_toDd001_return
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
(void()) point_init((byte) point_init::point_idx)
(byte~) point_init::$13 reg byte a 4.0
(byte~) point_init::$14 reg byte a 2.0
(word~) point_init::$16 $16 zp ZP_WORD:5 4.0
(word~) point_init::$17 $17 zp ZP_WORD:5 4.0
(word~) point_init::$18 $18 zp ZP_WORD:5 4.0
(signed word~) point_init::$4 $4 zp ZP_WORD:14 2.0
(signed word~) point_init::$5 $5 zp ZP_WORD:5 4.0
(label) point_init::@1
(label) point_init::@10
(label) point_init::@11
(label) point_init::@12
(label) point_init::@13
(label) point_init::@2
(label) point_init::@3
(label) point_init::@4
(label) point_init::@7
(label) point_init::@return
(label) point_init::abs16s1
(bool~) point_init::abs16s1_$0
(word~) point_init::abs16s1_$1
(signed word~) point_init::abs16s1_$2
(signed word) point_init::abs16s1_$2#0 abs16s1_$2 zp ZP_WORD:5 2.0
(word~) point_init::abs16s1_$3
(label) point_init::abs16s1_@1
(label) point_init::abs16s1_@return
(word) point_init::abs16s1_return
(word) point_init::abs16s1_return#2 abs16s1_return zp ZP_WORD:5 1.0
(word~) point_init::abs16s1_return#5 abs16s1_return zp ZP_WORD:5 4.0
(word~) point_init::abs16s1_return#6 abs16s1_return zp ZP_WORD:5 4.0
(signed word) point_init::abs16s1_w
(label) point_init::abs16s2
(bool~) point_init::abs16s2_$0
(word~) point_init::abs16s2_$1
(signed word~) point_init::abs16s2_$2
(signed word) point_init::abs16s2_$2#0 abs16s2_$2 zp ZP_WORD:7 2.0
(word~) point_init::abs16s2_$3
(label) point_init::abs16s2_@1
(label) point_init::abs16s2_@return
(word) point_init::abs16s2_return
(word) point_init::abs16s2_return#2 abs16s2_return zp ZP_WORD:7 6.0
(word~) point_init::abs16s2_return#5 abs16s2_return zp ZP_WORD:7 4.0
(word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:7 4.0
(signed word) point_init::abs16s2_w
(byte) point_init::point_idx
(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.6969696969696968
(byte) point_init::point_idx1
(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:13 0.36363636363636365
(signed word) point_init::x_diff
(signed word) point_init::x_diff#1 x_diff zp ZP_WORD:11 0.5555555555555556
(signed word) point_init::x_stepf
(signed word) point_init::x_stepf#0 x_stepf zp ZP_WORD:5 4.0
(signed word) point_init::y_diff
(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:14 0.5
(signed word) rem16s
(signed word) rem16s#13 rem16s zp ZP_WORD:3 0.9999999999999999
(signed word) rem16s#15 rem16s zp ZP_WORD:3 0.7222222222222223
(signed word) rem16s#2 rem16s zp ZP_WORD:3 2.0
(signed word) rem16s#3 rem16s zp ZP_WORD:3 0.75
(signed word~) rem16s#57 rem16s zp ZP_WORD:3 4.0
(word) rem16u
(word) rem16u#18 rem16u zp ZP_WORD:9 0.9999999999999999
(word) rem16u#21 rem16u zp ZP_WORD:9 0.7222222222222223
(signed byte) rem8s
(byte) rem8u
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
(label) screen_fill::@1
(label) screen_fill::@2
(label) screen_fill::@3
(label) screen_fill::@return
(byte) screen_fill::ch
(const byte) screen_fill::ch#0 ch = (byte/signed byte/word/signed word/dword/signed dword) 16
(byte*) screen_fill::screen
(byte*) screen_fill::screen#1 screen zp ZP_WORD:3 42.599999999999994
(byte*) screen_fill::screen#2 screen zp ZP_WORD:3 157.0
(byte*) screen_fill::screen#3 screen zp ZP_WORD:3 22.0
(byte) screen_fill::x
(byte) screen_fill::x#1 reg byte x 151.5
(byte) screen_fill::x#2 reg byte x 67.33333333333333
(byte) screen_fill::y
(byte) screen_fill::y#1 y zp ZP_BYTE:2 16.5
(byte) screen_fill::y#4 y zp ZP_BYTE:2 3.6666666666666665
(signed byte[4]) x_add
(const signed byte[4]) x_add#0 x_add = { fill( 4, 0) }
(word[4]) x_cur
(const word[4]) x_cur#0 x_cur = { fill( 4, 0) }
(word[4]) x_end
(const word[4]) x_end#0 x_end = { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(word[4]) x_start
(const word[4]) x_start#0 x_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 }
(signed byte[4]) y_add
(const signed byte[4]) y_add#0 y_add = { fill( 4, 0) }
(word[4]) y_cur
(const word[4]) y_cur#0 y_cur = { fill( 4, 0) }
(byte[4]) y_end
(const byte[4]) y_end#0 y_end = { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(byte[4]) y_start
(const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }

zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ]
zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 point_init::$5 point_init::$16 point_init::$17 point_init::$18 ]
zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 bitmap_plot::$3 bitmap_plot::plotter#1 ]
zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ]
zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 bitmap_plot::$1 ]
reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte x [ screen_fill::x#2 screen_fill::x#1 ]
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
reg byte x [ main::$9 ]
reg byte y [ bitmap_plot::y#0 ]
reg byte a [ bitmap_plot::$2 ]
zp ZP_BYTE:13 [ point_init::point_idx1#0 ]
zp ZP_WORD:14 [ point_init::$4 point_init::y_diff#0 ]
reg byte a [ point_init::$13 ]
reg byte a [ point_init::$14 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]
reg byte a [ bitmap_init::$7 ]


FINAL ASSEMBLER
Score: 21634

//SEG0 File Comments
// Animated lines drawn on a single color bitmap
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  // Processor port data direction register
  .label PROCPORT_DDR = 0
  // Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
  .const PROCPORT_DDR_MEMORY_MASK = 7
  // Processor Port Register controlling RAM/ROM configuration and the datasette
  .label PROCPORT = 1
  // RAM in $A000, $E000 I/O in $D000
  .const PROCPORT_RAM_IO = $35
  .label RASTER = $d012
  .label BORDERCOL = $d020
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label D018 = $d018
  // CIA#2 Port A: Serial bus, RS-232, VIC memory bank
  .label CIA2_PORT_A = $dd00
  // CIA #2 Port A data direction register.
  .label CIA2_PORT_A_DDR = $dd02
  .label BITMAP = $a000
  .label SCREEN = $8800
  // The delay between pixels
  .const DELAY = 8
  .label rem16s = 3
  .label rem16u = 9
//SEG3 @begin
//SEG4 [1] phi from @begin to @19 [phi:@begin->@19]
//SEG5 @19
//SEG6 [2] call main 
//SEG7 [3] phi from @19 to @end [phi:@19->@end]
//SEG8 @end
//SEG9 main
main: {
    .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
    .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
    .label i = 2
  //SEG10 asm { sei  }
    sei
  //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 
    // Disable normal interrupt
    // Disable kernal & basic
    lda #PROCPORT_DDR_MEMORY_MASK
    sta PROCPORT_DDR
  //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 
    lda #PROCPORT_RAM_IO
    sta PROCPORT
  //SEG13 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
  //SEG14 main::vicSelectGfxBank1
  //SEG15 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 
    lda #3
    sta CIA2_PORT_A_DDR
  //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
  //SEG17 main::vicSelectGfxBank1_toDd001
  //SEG18 main::vicSelectGfxBank1_@1
  //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 
    lda #vicSelectGfxBank1_toDd001_return
    sta CIA2_PORT_A
  //SEG20 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
  //SEG21 main::toD0181
  //SEG22 main::@16
  //SEG23 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
  //SEG24 [13] call bitmap_init 
  //SEG25 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
    jsr bitmap_init
  //SEG26 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
  //SEG27 main::@17
  //SEG28 [15] call bitmap_clear 
    jsr bitmap_clear
  //SEG29 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
  //SEG30 main::@18
  //SEG31 [17] call screen_fill 
  //SEG32 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
    jsr screen_fill
  //SEG33 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
  //SEG34 [18] phi (signed word) rem16s#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vwsz1=vbuc1 
    lda #<0
    sta rem16s
    sta rem16s+1
  //SEG35 [18] phi (word) rem16u#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#1] -- vwuz1=vbuc1 
    sta rem16u
    sta rem16u+1
  //SEG36 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#2] -- vbuz1=vbuc1 
    sta i
  //SEG37 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
  //SEG38 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy 
  //SEG39 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy 
  //SEG40 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy 
  //SEG41 main::@1
  b1:
  //SEG42 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2
  //SEG43 [20] call point_init 
    jsr point_init
  //SEG44 main::@20
  //SEG45 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 
    lda i
    lsr
    tax
  //SEG46 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 
    ldy i
    lda x_start,y
    sta bitmap_plot.x
    lda x_start+1,y
    sta bitmap_plot.x+1
  //SEG47 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx 
    ldy y_start,x
  //SEG48 [24] call bitmap_plot 
    jsr bitmap_plot
  //SEG49 main::@21
  //SEG50 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 
    lda i
    clc
    adc #2
    sta i
  //SEG51 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 
    cmp #8
    bne b1
  //SEG52 main::@5
  b5:
  //SEG53 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b5
  //SEG54 main::@7
  //SEG55 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    jmp b5
}
//SEG56 bitmap_plot
// Plot a single dot in the bitmap
// bitmap_plot(word zeropage(5) x, byte register(Y) y)
bitmap_plot: {
    .label _1 = $b
    .label x = 5
    .label plotter = 7
    .label _3 = 7
  //SEG57 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy 
    lda bitmap_plot_yhi,y
    sta _3+1
    lda bitmap_plot_ylo,y
    sta _3
  //SEG58 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 
    lda x
    and #<$fff8
    sta _1
    lda x+1
    and #>$fff8
    sta _1+1
  //SEG59 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 
    lda plotter
    clc
    adc _1
    sta plotter
    lda plotter+1
    adc _1+1
    sta plotter+1
  //SEG60 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 
    lda x
  //SEG61 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa 
    tay
    lda bitmap_plot_bit,y
    ldy #0
    ora (plotter),y
    sta (plotter),y
  //SEG62 bitmap_plot::@return
  //SEG63 [34] return 
    rts
}
//SEG64 point_init
// Initialize the points to be animated
// point_init(byte zeropage(2) point_idx)
point_init: {
    .label _4 = $e
    .label _5 = 5
    .label _16 = 5
    .label _17 = 5
    .label _18 = 5
    .label point_idx = 2
    .label point_idx1 = $d
    .label y_diff = $e
    .label abs16s1__2 = 5
    .label abs16s1_return = 5
    .label abs16s2__2 = 7
    .label abs16s2_return = 7
    .label x_stepf = 5
    .label x_diff = $b
  //SEG65 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 
    lda point_idx
    lsr
    sta point_idx1
  //SEG66 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 
    ldy point_idx
    sec
    lda x_end,y
    sbc x_start,y
    sta x_diff
    lda x_end+1,y
    sbc x_start+1,y
    sta x_diff+1
  //SEG67 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 
    ldy point_idx1
    lda y_end,y
    sta _4
    lda #0
    sta _4+1
  //SEG68 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 
    lda y_start,y
    sta _5
    lda #0
    sta _5+1
  //SEG69 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 
    lda y_diff
    sec
    sbc _5
    sta y_diff
    lda y_diff+1
    sbc _5+1
    sta y_diff+1
  //SEG70 point_init::abs16s1
  //SEG71 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 
    lda x_diff+1
    bpl !abs16s1_b1+
    jmp abs16s1_b1
  !abs16s1_b1:
  //SEG72 point_init::@12
  //SEG73 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 
    lda x_diff
    sta abs16s1_return
    lda x_diff+1
    sta abs16s1_return+1
  //SEG74 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
  //SEG75 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy 
  //SEG76 point_init::abs16s1_@return
  //SEG77 point_init::abs16s2
  abs16s2:
  //SEG78 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 
    lda y_diff+1
    bpl !abs16s2_b1+
    jmp abs16s2_b1
  !abs16s2_b1:
  //SEG79 point_init::@13
  //SEG80 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 
    lda y_diff
    sta abs16s2_return
    lda y_diff+1
    sta abs16s2_return+1
  //SEG81 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
  //SEG82 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy 
  //SEG83 point_init::abs16s2_@return
  //SEG84 point_init::@10
  b10:
  //SEG85 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 
    lda abs16s2_return+1
    cmp abs16s1_return+1
    bne !+
    lda abs16s2_return
    cmp abs16s1_return
  !:
    bcc b1
    beq b1
  //SEG86 [47] phi from point_init::@10 point_init::@11 to point_init::@2 [phi:point_init::@10/point_init::@11->point_init::@2]
  //SEG87 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy 
  //SEG88 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy 
  //SEG89 point_init::@2
  b2:
  //SEG90 [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 
    ldy point_idx
    lda x_start,y
    sta _16
    lda x_start+1,y
    sta _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
    asl _16
    rol _16+1
  //SEG91 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 
    lda _16
    sta x_cur,y
    lda _16+1
    sta x_cur+1,y
  //SEG92 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy point_idx1
    lda y_start,y
    sta _17
    lda #0
    sta _17+1
  //SEG93 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 
    asl _18
    rol _18+1
    asl _18
    rol _18+1
    asl _18
    rol _18+1
    asl _18
    rol _18+1
  //SEG94 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 
    ldy point_idx
    lda _18
    sta y_cur,y
    lda _18+1
    sta y_cur+1,y
  //SEG95 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 
    ldy point_idx1
    lda #DELAY
    sta delay,y
  //SEG96 point_init::@return
  //SEG97 [54] return 
    rts
  //SEG98 point_init::@1
  b1:
  //SEG99 [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 
    // X is driver - abs(y/x) is < 1
    lda x_diff+1
    bmi b3
  //SEG100 point_init::@7
  //SEG101 [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 
    // x add = 1.0
    ldy point_idx
    lda #$10
    sta x_add,y
  //SEG102 point_init::@4
  b4:
  //SEG103 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
  //SEG104 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 
    lda y_diff
    sta divr16s.rem
    lda y_diff+1
    sta divr16s.rem+1
  //SEG105 [59] call divr16s 
  //SEG106 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
    jsr divr16s
  //SEG107 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
  //SEG108 point_init::@11
  //SEG109 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
  //SEG110 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 
    lda x_stepf+1
  //SEG111 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 
    lsr
    lsr
    lsr
    lsr
  //SEG112 [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa 
    ldy point_idx1
    sta y_add,y
    jmp b2
  //SEG113 point_init::@3
  b3:
  //SEG114 [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 
    // x add = -1.0
    ldy point_idx
    lda #-$10
    sta x_add,y
    jmp b4
  //SEG115 point_init::abs16s2_@1
  abs16s2_b1:
  //SEG116 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 
    sec
    lda y_diff
    eor #$ff
    adc #0
    sta abs16s2__2
    lda y_diff+1
    eor #$ff
    adc #0
    sta abs16s2__2+1
  //SEG117 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
    jmp b10
  //SEG118 point_init::abs16s1_@1
  abs16s1_b1:
  //SEG119 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 
    sec
    lda x_diff
    eor #$ff
    adc #0
    sta abs16s1__2
    lda x_diff+1
    eor #$ff
    adc #0
    sta abs16s1__2+1
  //SEG120 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
    jmp abs16s2
}
//SEG121 divr16s
// Perform division on two signed 16-bit numbers with an initial remainder.
// Returns dividend/divisor. The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
// divr16s(signed word zeropage($b) divisor, signed word zeropage(9) rem)
divr16s: {
    .const dividend = 0
    .label _7 = 9
    .label _11 = $b
    .label resultu = 5
    .label return = 5
    .label divisor = $b
    .label rem = 9
    .label dividendu = 3
    .label divisoru = $b
    .label remu = 9
  //SEG122 divr16s::@16
  //SEG123 [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 
    lda rem+1
    bmi b1
  //SEG124 divr16s::@17
  //SEG125 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
  //SEG126 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
  //SEG127 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy 
  //SEG128 [73] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 
    lda #<dividend
    sta dividendu
    lda #>dividend
    sta dividendu+1
  //SEG129 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 
    ldy #0
  //SEG130 divr16s::@2
  b2:
  //SEG131 [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 
    lda divisor+1
    bmi b3
  //SEG132 divr16s::@18
  //SEG133 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
  //SEG134 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
  //SEG135 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy 
  //SEG136 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy 
  //SEG137 divr16s::@4
  b4:
  //SEG138 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
  //SEG139 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
  //SEG140 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3
  //SEG141 [80] call divr16u 
  //SEG142 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
    jsr divr16u
  //SEG143 [81] (word) divr16u::return#2 ← (word) divr16u::return#0
  //SEG144 divr16s::@15
  //SEG145 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2
  //SEG146 [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 
    cpy #0
    beq b19
  //SEG147 divr16s::@11
  //SEG148 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 
    sec
    lda divr16u.rem
    eor #$ff
    adc #0
    sta rem16s
    lda divr16u.rem+1
    eor #$ff
    adc #0
    sta rem16s+1
  //SEG149 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 
    sec
    lda return
    eor #$ff
    adc #0
    sta return
    lda return+1
    eor #$ff
    adc #0
    sta return+1
  //SEG150 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
  //SEG151 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy 
  //SEG152 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy 
  //SEG153 divr16s::@return
  breturn:
  //SEG154 [87] return 
    rts
  //SEG155 divr16s::@19
  b19:
  //SEG156 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
  //SEG157 [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 -- vwsz1=vwsz2 
    lda divr16u.rem
    sta rem16s
    lda divr16u.rem+1
    sta rem16s+1
    jmp breturn
  //SEG158 divr16s::@3
  b3:
  //SEG159 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 
    sec
    lda _11
    eor #$ff
    adc #0
    sta _11
    lda _11+1
    eor #$ff
    adc #0
    sta _11+1
  //SEG160 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 
    tya
    eor #1
    tay
  //SEG161 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
    jmp b4
  //SEG162 divr16s::@1
  b1:
  //SEG163 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 
    sec
    lda _7
    eor #$ff
    adc #0
    sta _7
    lda _7+1
    eor #$ff
    adc #0
    sta _7+1
  //SEG164 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
  //SEG165 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
  //SEG166 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy 
  //SEG167 [73] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 
    lda #<-dividend
    sta dividendu
    lda #>-dividend
    sta dividendu+1
  //SEG168 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 
    ldy #1
    jmp b2
}
//SEG169 divr16u
// Performs division on two 16 bit unsigned words and an initial remainder
// Returns the quotient dividend/divisor.
// The final remainder will be set into the global variable rem16u
// Implemented using simple binary division
// divr16u(word zeropage(3) dividend, word zeropage($b) divisor, word zeropage(9) rem)
divr16u: {
    .label rem = 9
    .label dividend = 3
    .label quotient = 5
    .label return = 5
    .label divisor = $b
  //SEG170 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
  //SEG171 [96] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG172 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 
    txa
    sta quotient
    sta quotient+1
  //SEG173 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy 
  //SEG174 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy 
  //SEG175 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
  //SEG176 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy 
  //SEG177 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy 
  //SEG178 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy 
  //SEG179 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy 
  //SEG180 divr16u::@1
  b1:
  //SEG181 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl rem
    rol rem+1
  //SEG182 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 
    lda dividend+1
  //SEG183 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 
    and #$80
  //SEG184 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b2
  //SEG185 divr16u::@4
  //SEG186 [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 
    lda #1
    ora rem
    sta rem
  //SEG187 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
  //SEG188 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy 
  //SEG189 divr16u::@2
  b2:
  //SEG190 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl dividend
    rol dividend+1
  //SEG191 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 
    asl quotient
    rol quotient+1
  //SEG192 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 
    lda rem+1
    cmp divisor+1
    bcc b3
    bne !+
    lda rem
    cmp divisor
    bcc b3
  !:
  //SEG193 divr16u::@5
  //SEG194 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 
    inc quotient
    bne !+
    inc quotient+1
  !:
  //SEG195 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda rem
    sec
    sbc divisor
    sta rem
    lda rem+1
    sbc divisor+1
    sta rem+1
  //SEG196 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
  //SEG197 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy 
  //SEG198 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy 
  //SEG199 divr16u::@3
  b3:
  //SEG200 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG201 [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$10
    bne b1
  //SEG202 divr16u::@return
  //SEG203 [111] return 
    rts
}
//SEG204 screen_fill
// Fill the screen with a specific char
// screen_fill(byte* zeropage(3) screen)
screen_fill: {
    .const ch = $10
    .label screen = 3
    .label y = 2
  //SEG205 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
  //SEG206 [113] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
  //SEG207 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta screen
    lda #>SCREEN
    sta screen+1
  //SEG208 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
  //SEG209 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy 
  //SEG210 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy 
  //SEG211 screen_fill::@1
  b1:
  //SEG212 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
  //SEG213 [114] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG214 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy 
  //SEG215 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
  //SEG216 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy 
  //SEG217 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy 
  //SEG218 screen_fill::@2
  b2:
  //SEG219 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (screen),y
  //SEG220 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 
    inc screen
    bne !+
    inc screen+1
  !:
  //SEG221 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG222 [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne b2
  //SEG223 screen_fill::@3
  //SEG224 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 
    inc y
  //SEG225 [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda y
    cmp #$19
    bne b1
  //SEG226 screen_fill::@return
  //SEG227 [121] return 
    rts
}
//SEG228 bitmap_clear
// Clear all graphics on the bitmap
bitmap_clear: {
    .label bitmap = 3
    .label y = 2
    .label _3 = 3
  //SEG229 [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda bitmap_plot_ylo
    sta _3
    lda bitmap_plot_yhi
    sta _3+1
  //SEG230 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
  //SEG231 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
  //SEG232 [124] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
  //SEG233 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy 
  //SEG234 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
  //SEG235 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy 
  //SEG236 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy 
  //SEG237 bitmap_clear::@1
  b1:
  //SEG238 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
  //SEG239 [125] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG240 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy 
  //SEG241 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
  //SEG242 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy 
  //SEG243 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy 
  //SEG244 bitmap_clear::@2
  b2:
  //SEG245 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 
    lda #0
    tay
    sta (bitmap),y
  //SEG246 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 
    inc bitmap
    bne !+
    inc bitmap+1
  !:
  //SEG247 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG248 [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$c8
    bne b2
  //SEG249 bitmap_clear::@3
  //SEG250 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 
    inc y
  //SEG251 [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda y
    cmp #$28
    bne b1
  //SEG252 bitmap_clear::@return
  //SEG253 [132] return 
    rts
}
//SEG254 bitmap_init
bitmap_init: {
    .label _3 = 2
    .label yoffs = 3
  //SEG255 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
  //SEG256 [134] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG257 [134] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 
    lda #$80
  //SEG258 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
  //SEG259 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy 
  //SEG260 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy 
  //SEG261 bitmap_init::@1
  b1:
  //SEG262 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_bit,x
  //SEG263 [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 
    lsr
  //SEG264 [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne b2
  //SEG265 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
  //SEG266 [138] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 
    lda #$80
  //SEG267 bitmap_init::@2
  b2:
  //SEG268 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG269 [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b1
  //SEG270 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
  //SEG271 [141] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta yoffs
    lda #>BITMAP
    sta yoffs+1
  //SEG272 [141] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 
    ldx #0
  //SEG273 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
  //SEG274 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy 
  //SEG275 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy 
  //SEG276 bitmap_init::@3
  b3:
  //SEG277 [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 
    txa
    and #7
    sta _3
  //SEG278 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 
    lda yoffs
  //SEG279 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa 
    ora _3
  //SEG280 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_ylo,x
  //SEG281 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 
    lda yoffs+1
  //SEG282 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_yhi,x
  //SEG283 [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #7
  //SEG284 [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 
    cmp #7
    bne b4
  //SEG285 bitmap_init::@7
  //SEG286 [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 
    clc
    lda yoffs
    adc #<$28*8
    sta yoffs
    lda yoffs+1
    adc #>$28*8
    sta yoffs+1
  //SEG287 [151] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
  //SEG288 [151] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy 
  //SEG289 bitmap_init::@4
  b4:
  //SEG290 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG291 [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b3
  //SEG292 bitmap_init::@return
  //SEG293 [154] return 
    rts
  //SEG294 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
  //SEG295 bitmap_init::@10
  //SEG296 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
  //SEG297 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy 
}
  // The coordinates of the lines to animate
  x_start: .word $a, $14, $1e, $1e
  y_start: .byte $a, $a, $a, $14
  x_end: .word $14, $a, $14, $14
  y_end: .byte $14, $14, $a, $14
  // Current x position fixed point [12.4]
  x_cur: .fill 2*4, 0
  // Current y position fixed point [12.4]
  y_cur: .fill 2*4, 0
  // X position addition per frame s[3.4]
  x_add: .fill 4, 0
  // Y position addition per frame s[3.4]
  y_add: .fill 4, 0
  // Frame delay (counted down to 0)
  delay: .fill 4, 0
  // Tables for the plotter - initialized by calling bitmap_init();
  bitmap_plot_ylo: .fill $100, 0
  bitmap_plot_yhi: .fill $100, 0
  bitmap_plot_bit: .fill $100, 0

