@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call malloc 
  to:@3
@3: scope:[]  from @1
  [3] (void*) SCREEN_COPY#0 ← (void*)(byte*) malloc::mem#0
  [4] call malloc 
  to:@4
@4: scope:[]  from @3
  [5] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0
  to:@2
@2: scope:[]  from @4
  [6] phi()
  [7] call main 
  to:@end
@end: scope:[]  from @2
  [8] phi()
main: scope:[main]  from @2
  [9] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0
  [10] call init_angle_screen 
  to:main::@8
main::@8: scope:[main]  from main
  [11] (byte*) main::dst#0 ← (byte*)(void*) SCREEN_COPY#0
  to:main::@1
main::@1: scope:[main]  from main::@1 main::@8
  [12] (byte*) main::dst#2 ← phi( main::@1/(byte*) main::dst#1 main::@8/(byte*) main::dst#0 )
  [12] (byte*) main::src#2 ← phi( main::@1/(byte*) main::src#1 main::@8/(const byte*) SCREEN#0 )
  [13] *((byte*) main::dst#2) ← *((byte*) main::src#2)
  [14] (byte*) main::src#1 ← ++ (byte*) main::src#2
  [15] (byte*) main::dst#1 ← ++ (byte*) main::dst#2
  [16] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [17] (byte) main::i#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::i#1 )
  [18] (byte) main::$26 ← (byte) main::i#2 << (byte) 1
  [19] (byte) main::$27 ← (byte) main::$26 + (byte) main::i#2
  [20] (byte) main::$28 ← (byte) main::$27 << (byte) 1
  [21] (byte) main::$29 ← (byte) main::$28 + (byte) main::i#2
  [22] (byte~) main::$16 ← (byte) main::$29 << (byte) 1
  [23] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0
  [24] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0
  [25] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0
  [26] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0
  [27] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0
  [28] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0
  [29] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) main::$16) ← (byte) 0
  [30] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE
  [31] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0
  [32] (byte) main::i#1 ← ++ (byte) main::i#2
  [33] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [34] phi()
  [35] call initSprites 
  to:main::@9
main::@9: scope:[main]  from main::@3
  [36] phi()
  [37] call setupRasterIrq 
  to:main::@4
main::@4: scope:[main]  from main::@5 main::@9
  [38] phi()
  [39] call getCharToProcess 
  [40] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1
  [41] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1
  [42] (byte) getCharToProcess::return_dist#0 ← (byte) getCharToProcess::return_dist#1
  to:main::@10
main::@10: scope:[main]  from main::@4
  [43] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
  [44] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
  [45] (byte) main::center_dist#0 ← (byte) getCharToProcess::return_dist#0
  [46] if((byte) main::center_dist#0!=(const byte) NOT_FOUND#0) goto main::@5
  to:main::@6
main::@6: scope:[main]  from main::@10
  [47] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.'
  to:main::@7
main::@7: scope:[main]  from main::@6 main::@7
  [48] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7)
  to:main::@7
main::@5: scope:[main]  from main::@10
  [49] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0
  [50] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0
  [51] call startProcessing 
  to:main::@4
startProcessing: scope:[startProcessing]  from main::@5
  [52] phi()
  to:startProcessing::@1
startProcessing::@1: scope:[startProcessing]  from startProcessing startProcessing::@8
  [53] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte~) startProcessing::freeIdx#7 )
  to:startProcessing::@2
startProcessing::@2: scope:[startProcessing]  from startProcessing::@1 startProcessing::@3
  [54] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 )
  [55] (byte) startProcessing::$42 ← (byte) startProcessing::i#2 << (byte) 1
  [56] (byte) startProcessing::$43 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2
  [57] (byte) startProcessing::$44 ← (byte) startProcessing::$43 << (byte) 1
  [58] (byte) startProcessing::$45 ← (byte) startProcessing::$44 + (byte) startProcessing::i#2
  [59] (byte~) startProcessing::$30 ← (byte) startProcessing::$45 << (byte) 1
  [60] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30)!=(const byte) STATUS_FREE) goto startProcessing::@3
  to:startProcessing::@4
startProcessing::@4: scope:[startProcessing]  from startProcessing::@2 startProcessing::@9
  [61] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 )
  [62] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8
  to:startProcessing::@5
startProcessing::@5: scope:[startProcessing]  from startProcessing::@4
  [63] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0
  [64] (word) startProcessing::$47 ← (word~) startProcessing::$0 << (byte) 2
  [65] (word) startProcessing::$48 ← (word) startProcessing::$47 + (word~) startProcessing::$0
  [66] (word~) startProcessing::$1 ← (word) startProcessing::$48 << (byte) 3
  [67] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0
  [68] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS#0 + (word) startProcessing::offset#0
  [69] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0)
  [70] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN#0 + (word) startProcessing::offset#0
  [71] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2
  [72] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6
  [73] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$6
  [74] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0)
  [75] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0
  [76] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3
  [77] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$9
  asm { sei  }
  [79] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0
  to:startProcessing::@6
startProcessing::@6: scope:[startProcessing]  from startProcessing::@5 startProcessing::@6
  [80] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 )
  [80] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 )
  [80] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 )
  [81] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2)
  [82] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3
  [83] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2
  [84] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2
  [85] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6
  to:startProcessing::@7
startProcessing::@7: scope:[startProcessing]  from startProcessing::@6
  [86] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
  asm { cli  }
  [88] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0
  [89] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3
  [90] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$12
  [91] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4
  [92] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0
  [93] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3
  [94] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$16
  [95] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4
  [96] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2
  [97] (byte~) startProcessing::$22 ← (byte) startProcessing::freeIdx#2 << (byte) 3
  [98] (word~) startProcessing::$23 ← (word)(byte~) startProcessing::$22
  [99] (byte) startProcessing::$50 ← (byte) startProcessing::freeIdx#2 << (byte) 1
  [100] (byte) startProcessing::$51 ← (byte) startProcessing::$50 + (byte) startProcessing::freeIdx#2
  [101] (byte) startProcessing::$52 ← (byte) startProcessing::$51 << (byte) 1
  [102] (byte) startProcessing::$53 ← (byte) startProcessing::$52 + (byte) startProcessing::freeIdx#2
  [103] (byte~) startProcessing::$31 ← (byte) startProcessing::$53 << (byte) 1
  [104] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$31) ← (word) startProcessing::spriteX#0
  [105] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$31) ← (word) startProcessing::spriteY#0
  [106] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$31) ← (word~) startProcessing::$23
  [107] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$31) ← (byte) $3c
  [108] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$31) ← (byte) startProcessing::freeIdx#2
  [109] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$31) ← (byte) startProcessing::spritePtr#0
  [110] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$31) ← (byte) startProcessing::spriteCol#0
  [111] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$31) ← (const byte) STATUS_NEW
  [112] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$31) ← (byte*) startProcessing::screenPtr#0
  to:startProcessing::@return
startProcessing::@return: scope:[startProcessing]  from startProcessing::@7
  [113] return 
  to:@return
startProcessing::@8: scope:[startProcessing]  from startProcessing::@4
  [114] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2
  to:startProcessing::@1
startProcessing::@3: scope:[startProcessing]  from startProcessing::@2
  [115] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2
  [116] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2
  to:startProcessing::@9
startProcessing::@9: scope:[startProcessing]  from startProcessing::@3
  [117] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6
  to:startProcessing::@4
getCharToProcess: scope:[getCharToProcess]  from main::@4
  [118] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0
  [119] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0
  to:getCharToProcess::@1
getCharToProcess::@1: scope:[getCharToProcess]  from getCharToProcess getCharToProcess::@9
  [120] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 )
  [120] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 )
  [120] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 )
  [120] (byte) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const byte) NOT_FOUND#0 getCharToProcess::@9/(byte~) getCharToProcess::closest_dist#10 )
  [120] (byte*) getCharToProcess::dist_line#6 ← phi( getCharToProcess/(byte*) getCharToProcess::dist_line#0 getCharToProcess::@9/(byte*) getCharToProcess::dist_line#1 )
  [120] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(byte*) getCharToProcess::screen_line#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 )
  to:getCharToProcess::@2
getCharToProcess::@2: scope:[getCharToProcess]  from getCharToProcess::@1 getCharToProcess::@10
  [121] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 )
  [121] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 )
  [121] (byte) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_dist#8 getCharToProcess::@10/(byte~) getCharToProcess::closest_dist#12 )
  [121] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 )
  [122] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11
  to:getCharToProcess::@4
getCharToProcess::@4: scope:[getCharToProcess]  from getCharToProcess::@2
  [123] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2)
  [124] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12
  to:getCharToProcess::@5
getCharToProcess::@5: scope:[getCharToProcess]  from getCharToProcess::@4
  [125] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2
  [126] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7
  to:getCharToProcess::@3
getCharToProcess::@3: scope:[getCharToProcess]  from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5
  [127] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 )
  [127] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 )
  [127] (byte) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(byte~) getCharToProcess::return_dist#5 getCharToProcess::@12/(byte~) getCharToProcess::return_dist#6 getCharToProcess::@5/(byte) getCharToProcess::dist#0 )
  [128] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2
  [129] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10
  to:getCharToProcess::@6
getCharToProcess::@6: scope:[getCharToProcess]  from getCharToProcess::@3
  [130] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28
  [131] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28
  [132] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7
  [133] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9
  to:getCharToProcess::@7
getCharToProcess::@7: scope:[getCharToProcess]  from getCharToProcess::@6
  [134] if((byte) getCharToProcess::return_dist#1==(const byte) NOT_FOUND#0) goto getCharToProcess::@return
  to:getCharToProcess::@8
getCharToProcess::@8: scope:[getCharToProcess]  from getCharToProcess::@7
  [135] (word~) getCharToProcess::$8 ← (word)(byte) getCharToProcess::return_y#1
  [136] (word) getCharToProcess::$12 ← (word~) getCharToProcess::$8 << (byte) 2
  [137] (word) getCharToProcess::$13 ← (word) getCharToProcess::$12 + (word~) getCharToProcess::$8
  [138] (word~) getCharToProcess::$9 ← (word) getCharToProcess::$13 << (byte) 3
  [139] (byte*~) getCharToProcess::$10 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$9
  [140] *((byte*~) getCharToProcess::$10 + (byte) getCharToProcess::return_x#1) ← (byte) ' '
  to:getCharToProcess::@return
getCharToProcess::@return: scope:[getCharToProcess]  from getCharToProcess::@7 getCharToProcess::@8
  [141] return 
  to:@return
getCharToProcess::@9: scope:[getCharToProcess]  from getCharToProcess::@6
  [142] (byte~) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1
  to:getCharToProcess::@1
getCharToProcess::@10: scope:[getCharToProcess]  from getCharToProcess::@3
  [143] (byte~) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1
  to:getCharToProcess::@2
getCharToProcess::@12: scope:[getCharToProcess]  from getCharToProcess::@4
  [144] (byte~) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2
  to:getCharToProcess::@3
getCharToProcess::@11: scope:[getCharToProcess]  from getCharToProcess::@2
  [145] (byte~) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2
  to:getCharToProcess::@3
setupRasterIrq: scope:[setupRasterIrq]  from main::@9
  asm { sei  }
  [147] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
  [148] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
  [149] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
  to:setupRasterIrq::@1
setupRasterIrq::@1: scope:[setupRasterIrq]  from setupRasterIrq
  [150] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f
  to:setupRasterIrq::@2
setupRasterIrq::@2: scope:[setupRasterIrq]  from setupRasterIrq::@1
  [151] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0
  [152] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
  [153] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0
  asm { cli  }
  to:setupRasterIrq::@return
setupRasterIrq::@return: scope:[setupRasterIrq]  from setupRasterIrq::@2
  [155] return 
  to:@return
initSprites: scope:[initSprites]  from main::@3
  [156] phi()
  to:initSprites::@1
initSprites::@1: scope:[initSprites]  from initSprites initSprites::@1
  [157] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 )
  [158] *((byte*) initSprites::sp#2) ← (byte) 0
  [159] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2
  [160] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1
  to:initSprites::@2
initSprites::@2: scope:[initSprites]  from initSprites::@1 initSprites::@2
  [161] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 )
  [162] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0
  [163] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2
  [164] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2
  to:initSprites::@3
initSprites::@3: scope:[initSprites]  from initSprites::@2
  [165] *((const byte*) SPRITES_MC#0) ← (byte) 0
  [166] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0
  [167] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0
  to:initSprites::@return
initSprites::@return: scope:[initSprites]  from initSprites::@3
  [168] return 
  to:@return
init_angle_screen: scope:[init_angle_screen]  from main
  [169] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c
  [170] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c
  to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen]  from init_angle_screen init_angle_screen::@3
  [171] (byte*) init_angle_screen::screen_topline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_topline#1 )
  [171] (byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
  [171] (byte) init_angle_screen::y#4 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@3/(byte) init_angle_screen::y#1 )
  to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen]  from init_angle_screen::@1 init_angle_screen::@4
  [172] (byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@1/(byte) $27 init_angle_screen::@4/(byte) init_angle_screen::xb#1 )
  [172] (byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) 0 init_angle_screen::@4/(byte) init_angle_screen::x#1 )
  [173] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1
  [174] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2
  [175] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0
  [176] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1
  [177] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0
  [178] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0
  [179] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0
  [180] call atan2_16 
  [181] (word) atan2_16::return#2 ← (word) atan2_16::return#0
  to:init_angle_screen::@4
init_angle_screen::@4: scope:[init_angle_screen]  from init_angle_screen::@2
  [182] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2
  [183] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80
  [184] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10
  [185] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
  [186] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0
  [187] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12
  [188] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
  [189] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13
  [190] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
  [191] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14
  [192] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2
  [193] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2
  [194] if((byte) init_angle_screen::x#1<(byte) $13+(byte) 1) goto init_angle_screen::@2
  to:init_angle_screen::@3
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@4
  [195] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28
  [196] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28
  [197] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#4
  [198] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1
  to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen]  from init_angle_screen::@3
  [199] return 
  to:@return
atan2_16: scope:[atan2_16]  from init_angle_screen::@2
  [200] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1
  to:atan2_16::@2
atan2_16::@2: scope:[atan2_16]  from atan2_16
  [201] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0
  to:atan2_16::@3
atan2_16::@3: scope:[atan2_16]  from atan2_16::@1 atan2_16::@2
  [202] (signed word) atan2_16::yi#0 ← phi( atan2_16::@1/(signed word~) atan2_16::yi#16 atan2_16::@2/(signed word~) atan2_16::$2 )
  [203] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4
  to:atan2_16::@5
atan2_16::@5: scope:[atan2_16]  from atan2_16::@3
  [204] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0
  to:atan2_16::@6
atan2_16::@6: scope:[atan2_16]  from atan2_16::@4 atan2_16::@5
  [205] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word~) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 )
  to:atan2_16::@10
atan2_16::@10: scope:[atan2_16]  from atan2_16::@19 atan2_16::@6
  [206] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(byte) 0 )
  [206] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 )
  [206] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 )
  [206] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 )
  [207] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11
  to:atan2_16::@12
atan2_16::@12: scope:[atan2_16]  from atan2_16::@10 atan2_16::@19
  [208] (word) atan2_16::angle#6 ← phi( atan2_16::@10/(word) atan2_16::angle#12 atan2_16::@19/(word) atan2_16::angle#13 )
  [209] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1
  [210] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7
  to:atan2_16::@21
atan2_16::@21: scope:[atan2_16]  from atan2_16::@12
  [211] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1
  to:atan2_16::@7
atan2_16::@7: scope:[atan2_16]  from atan2_16::@12 atan2_16::@21
  [212] (word) atan2_16::angle#11 ← phi( atan2_16::@12/(word) atan2_16::angle#1 atan2_16::@21/(word) atan2_16::angle#4 )
  [213] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8
  to:atan2_16::@9
atan2_16::@9: scope:[atan2_16]  from atan2_16::@7
  [214] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11
  to:atan2_16::@8
atan2_16::@8: scope:[atan2_16]  from atan2_16::@7 atan2_16::@9
  [215] (word) atan2_16::return#0 ← phi( atan2_16::@9/(word) atan2_16::angle#5 atan2_16::@7/(word) atan2_16::angle#11 )
  to:atan2_16::@return
atan2_16::@return: scope:[atan2_16]  from atan2_16::@8
  [216] return 
  to:@return
atan2_16::@11: scope:[atan2_16]  from atan2_16::@10
  [217] (byte~) atan2_16::shift#5 ← (byte) atan2_16::i#2
  [218] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3
  [219] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3
  to:atan2_16::@13
atan2_16::@13: scope:[atan2_16]  from atan2_16::@11 atan2_16::@14
  [220] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
  [220] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
  [220] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
  [221] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
  to:atan2_16::@15
atan2_16::@15: scope:[atan2_16]  from atan2_16::@13
  [222] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17
  to:atan2_16::@16
atan2_16::@16: scope:[atan2_16]  from atan2_16::@15
  [223] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1
  [224] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1
  to:atan2_16::@17
atan2_16::@17: scope:[atan2_16]  from atan2_16::@15 atan2_16::@16
  [225] (signed word) atan2_16::xd#5 ← phi( atan2_16::@15/(signed word) atan2_16::xd#3 atan2_16::@16/(signed word) atan2_16::xd#2 )
  [225] (signed word) atan2_16::yd#5 ← phi( atan2_16::@15/(signed word) atan2_16::yd#3 atan2_16::@16/(signed word) atan2_16::yd#2 )
  [226] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18
  to:atan2_16::@20
atan2_16::@20: scope:[atan2_16]  from atan2_16::@17
  [227] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5
  [228] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5
  [229] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1
  [230] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24)
  to:atan2_16::@19
atan2_16::@19: scope:[atan2_16]  from atan2_16::@18 atan2_16::@20
  [231] (signed word) atan2_16::xi#8 ← phi( atan2_16::@18/(signed word) atan2_16::xi#1 atan2_16::@20/(signed word) atan2_16::xi#2 )
  [231] (word) atan2_16::angle#13 ← phi( atan2_16::@18/(word) atan2_16::angle#2 atan2_16::@20/(word) atan2_16::angle#3 )
  [231] (signed word) atan2_16::yi#8 ← phi( atan2_16::@18/(signed word) atan2_16::yi#1 atan2_16::@20/(signed word) atan2_16::yi#2 )
  [232] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2
  [233] if((byte) atan2_16::i#1==(const byte) CORDIC_ITERATIONS_16#0-(byte) 1+(byte) 1) goto atan2_16::@12
  to:atan2_16::@10
atan2_16::@18: scope:[atan2_16]  from atan2_16::@17
  [234] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5
  [235] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5
  [236] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1
  [237] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23)
  to:atan2_16::@19
atan2_16::@14: scope:[atan2_16]  from atan2_16::@13
  [238] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2
  [239] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2
  [240] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2
  to:atan2_16::@13
atan2_16::@4: scope:[atan2_16]  from atan2_16::@3
  [241] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0
  to:atan2_16::@6
atan2_16::@1: scope:[atan2_16]  from atan2_16
  [242] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0
  to:atan2_16::@3
malloc: scope:[malloc]  from @1 @3
  [243] (byte*) heap_head#5 ← phi( @1/(const byte*) HEAP_TOP#0 @3/(byte*) heap_head#1 )
  [244] (byte*) malloc::mem#0 ← (byte*) heap_head#5 - (word) $3e8
  [245] (byte*) heap_head#1 ← (byte*) malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  [246] return 
  to:@return
irqBottom: scope:[irqBottom]  from
  [247] phi()
  to:irqBottom::@1
irqBottom::@1: scope:[irqBottom]  from irqBottom
  [248] phi()
  [249] call processChars 
  to:irqBottom::@2
irqBottom::@2: scope:[irqBottom]  from irqBottom::@1
  [250] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0
  [251] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop()
  [252] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
  to:irqBottom::@return
irqBottom::@return: scope:[irqBottom]  from irqBottom::@2
  [253] return 
  to:@return
processChars: scope:[processChars]  from irqBottom::@1
  [254] phi()
  to:processChars::@1
processChars::@1: scope:[processChars]  from processChars processChars::@2
  [255] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 )
  [255] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 )
  [256] (byte) processChars::$67 ← (byte) processChars::i#10 << (byte) 1
  [257] (byte) processChars::$68 ← (byte) processChars::$67 + (byte) processChars::i#10
  [258] (byte) processChars::$69 ← (byte) processChars::$68 << (byte) 1
  [259] (byte) processChars::$70 ← (byte) processChars::$69 + (byte) processChars::i#10
  [260] (byte~) processChars::$37 ← (byte) processChars::$70 << (byte) 1
  [261] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$37
  [262] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)
  [263] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE) goto processChars::@2
  to:processChars::@10
processChars::@10: scope:[processChars]  from processChars::@1
  [264] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW) goto processChars::@3
  to:processChars::@11
processChars::@11: scope:[processChars]  from processChars::@10
  [265] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' '
  [266] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0
  [267] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL)
  [268] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR)
  [269] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING
  to:processChars::@3
processChars::@3: scope:[processChars]  from processChars::@10 processChars::@11
  [270] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4
  [271] (byte~) processChars::$11 ← > (word) processChars::xpos#0
  [272] if((byte) 0!=(byte~) processChars::$11) goto processChars::@4
  to:processChars::@8
processChars::@8: scope:[processChars]  from processChars::@3
  [273] (byte~) processChars::$12 ← (byte) $ff ^ (byte) processChars::bitmask#0
  [274] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$12
  to:processChars::@5
processChars::@5: scope:[processChars]  from processChars::@4 processChars::@8
  [275] (byte~) processChars::$17 ← (byte) processChars::i#10 << (byte) 1
  [276] (byte~) processChars::$14 ← (byte)(word) processChars::xpos#0
  [277] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$17) ← (byte~) processChars::$14
  [278] (word~) processChars::$15 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4
  [279] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$15
  [280] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$17) ← (byte) processChars::ypos#0
  [281] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6
  to:processChars::@14
processChars::@14: scope:[processChars]  from processChars::@5
  [282] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6
  to:processChars::@13
processChars::@13: scope:[processChars]  from processChars::@14
  [283] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6
  to:processChars::@12
processChars::@12: scope:[processChars]  from processChars::@13
  [284] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6
  to:processChars::@9
processChars::@9: scope:[processChars]  from processChars::@12
  [285] (word~) processChars::$25 ← (word) processChars::xpos#0 >> (byte) 3
  [286] (byte~) processChars::$26 ← (byte)(word~) processChars::$25
  [287] (byte) processChars::xchar#0 ← (byte~) processChars::$26 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8
  [288] (byte~) processChars::$38 ← (byte) processChars::xchar#0 << (byte) 1
  [289] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word[$28]) VXSIN#0 + (byte~) processChars::$38)
  [290] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX)
  [291] (byte~) processChars::$30 ← (byte) processChars::ypos#0 >> (byte) 3
  [292] (byte) processChars::ychar#0 ← (byte~) processChars::$30 - (const byte) BORDER_YPOS_TOP#0/(byte) 8
  [293] (byte~) processChars::$39 ← (byte) processChars::ychar#0 << (byte) 1
  [294] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word[$19]) VYSIN#0 + (byte~) processChars::$39)
  [295] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY)
  to:processChars::@7
processChars::@7: scope:[processChars]  from processChars::@6 processChars::@9
  [296] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10
  to:processChars::@2
processChars::@2: scope:[processChars]  from processChars::@1 processChars::@7
  [297] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 )
  [298] (byte) processChars::i#1 ← ++ (byte) processChars::i#10
  [299] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1
  to:processChars::@return
processChars::@return: scope:[processChars]  from processChars::@2
  [300] return 
  to:@return
processChars::@6: scope:[processChars]  from processChars::@12 processChars::@13 processChars::@14 processChars::@5
  [301] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE
  [302] (byte~) processChars::$33 ← (byte) $ff ^ (byte) processChars::bitmask#0
  [303] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$33
  to:processChars::@7
processChars::@4: scope:[processChars]  from processChars::@3
  [304] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0
  to:processChars::@5
irqTop: scope:[irqTop]  from
  [305] phi()
  to:irqTop::@1
irqTop::@1: scope:[irqTop]  from irqTop
  [306] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0
  [307] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom()
  [308] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
  to:irqTop::@return
irqTop::@return: scope:[irqTop]  from irqTop::@1
  [309] return 
  to:@return
