@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()

(void()) main()
main: scope:[main]  from @2
  [9] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0
  [10] call init_angle_screen 
  to:main::@9
main::@9: scope:[main]  from main
  [11] (byte*) main::dst#0 ← (byte*)(void*) SCREEN_COPY#0
  to:main::@1
main::@1: scope:[main]  from main::@2 main::@9
  [12] (byte*) main::dst#2 ← phi( main::@9/(byte*) main::dst#0 main::@2/(byte*) main::dst#1 )
  [12] (byte*) main::src#2 ← phi( main::@9/(const byte*) SCREEN main::@2/(byte*) main::src#1 )
  [13] if((byte*) main::src#2!=(const byte*) SCREEN+(word) $3e8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1 main::@3
  [14] (byte) main::i#2 ← phi( main::@1/(byte) 0 main::@3/(byte) main::i#1 )
  [15] (byte~) main::$11 ← (byte) main::i#2 << (byte) 1
  [16] (byte~) main::$12 ← (byte~) main::$11 + (byte) main::i#2
  [17] (byte~) main::$13 ← (byte~) main::$12 << (byte) 1
  [18] (byte~) main::$14 ← (byte~) main::$13 + (byte) main::i#2
  [19] (byte~) main::$10 ← (byte~) main::$14 << (byte) 1
  [20] *((const struct ProcessingSprite*) PROCESSING + (byte~) main::$10) ← memcpy(*(&(const struct ProcessingSprite) $2), struct ProcessingSprite, (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE)
  [21] (byte) main::i#1 ← ++ (byte) main::i#2
  [22] if((byte) main::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto main::@3
  to:main::@4
main::@4: scope:[main]  from main::@3
  [23] phi()
  [24] call initSprites 
  to:main::@10
main::@10: scope:[main]  from main::@4
  [25] phi()
  [26] call setupRasterIrq 
  to:main::@5
main::@5: scope:[main]  from main::@10 main::@6
  [27] phi()
  [28] call getCharToProcess 
  [29] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1
  [30] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1
  [31] (byte) getCharToProcess::return_dist#0 ← (byte) getCharToProcess::return_dist#1
  to:main::@11
main::@11: scope:[main]  from main::@5
  [32] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
  [33] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
  [34] (byte) main::center_dist#0 ← (byte) getCharToProcess::return_dist#0
  [35] if((byte) main::center_dist#0!=(const byte) NOT_FOUND) goto main::@6
  to:main::@7
main::@7: scope:[main]  from main::@11
  [36] *((const byte*) SCREEN+(word) $3e7) ← (byte) '.'
  to:main::@8
main::@8: scope:[main]  from main::@7 main::@8
  [37] *((const byte*) COLS+(word) $3e7) ← ++ *((const byte*) COLS+(word) $3e7)
  to:main::@8
main::@6: scope:[main]  from main::@11
  [38] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0
  [39] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0
  [40] call startProcessing 
  to:main::@5
main::@2: scope:[main]  from main::@1
  [41] *((byte*) main::dst#2) ← *((byte*) main::src#2)
  [42] (byte*) main::src#1 ← ++ (byte*) main::src#2
  [43] (byte*) main::dst#1 ← ++ (byte*) main::dst#2
  to:main::@1

(void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (byte) startProcessing::center_dist)
startProcessing: scope:[startProcessing]  from main::@6
  [44] phi()
  to:startProcessing::@1
startProcessing::@1: scope:[startProcessing]  from startProcessing startProcessing::@8
  [45] (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
  [46] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 )
  [47] (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 << (byte) 1
  [48] (byte~) startProcessing::$30 ← (byte~) startProcessing::$29 + (byte) startProcessing::i#2
  [49] (byte~) startProcessing::$31 ← (byte~) startProcessing::$30 << (byte) 1
  [50] (byte~) startProcessing::$32 ← (byte~) startProcessing::$31 + (byte) startProcessing::i#2
  [51] (byte~) startProcessing::$27 ← (byte~) startProcessing::$32 << (byte) 1
  [52] if(*((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$27)!=(const byte) STATUS_FREE) goto startProcessing::@3
  to:startProcessing::@4
startProcessing::@4: scope:[startProcessing]  from startProcessing::@2 startProcessing::@9
  [53] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 )
  [54] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8
  to:startProcessing::@5
startProcessing::@5: scope:[startProcessing]  from startProcessing::@4
  [55] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0
  [56] (word~) startProcessing::$34 ← (word~) startProcessing::$0 << (byte) 2
  [57] (word~) startProcessing::$35 ← (word~) startProcessing::$34 + (word~) startProcessing::$0
  [58] (word~) startProcessing::$1 ← (word~) startProcessing::$35 << (byte) 3
  [59] (word) startProcessing::offset#0 ← (word~) startProcessing::$1 + (byte) startProcessing::center_x#0
  [60] (byte*) startProcessing::colPtr#0 ← (const byte*) COLS + (word) startProcessing::offset#0
  [61] (byte) startProcessing::spriteCol#0 ← *((byte*) startProcessing::colPtr#0)
  [62] (byte*) startProcessing::screenPtr#0 ← (const byte*) SCREEN + (word) startProcessing::offset#0
  [63] (word~) startProcessing::$5 ← (word)(byte) startProcessing::freeIdx#2
  [64] (word~) startProcessing::$6 ← (word~) startProcessing::$5 << (byte) 6
  [65] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA + (word~) startProcessing::$6
  [66] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0)
  [67] (word~) startProcessing::$8 ← (word)(byte) startProcessing::ch#0
  [68] (word~) startProcessing::$9 ← (word~) startProcessing::$8 << (byte) 3
  [69] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN + (word~) startProcessing::$9
  asm { sei  }
  [71] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_CHARROM
  to:startProcessing::@6
startProcessing::@6: scope:[startProcessing]  from startProcessing::@5 startProcessing::@6
  [72] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 )
  [72] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 )
  [72] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 )
  [73] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2)
  [74] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3
  [75] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2
  [76] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2
  [77] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6
  to:startProcessing::@7
startProcessing::@7: scope:[startProcessing]  from startProcessing::@6
  [78] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO
  asm { cli  }
  [80] (word~) startProcessing::$11 ← (word)(byte) startProcessing::center_x#0
  [81] (word~) startProcessing::$12 ← (word~) startProcessing::$11 << (byte) 3
  [82] (word~) startProcessing::$13 ← (const byte) BORDER_XPOS_LEFT + (word~) startProcessing::$12
  [83] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$13 << (byte) 4
  [84] (word~) startProcessing::$15 ← (word)(byte) startProcessing::center_y#0
  [85] (word~) startProcessing::$16 ← (word~) startProcessing::$15 << (byte) 3
  [86] (word~) startProcessing::$17 ← (const byte) BORDER_YPOS_TOP + (word~) startProcessing::$16
  [87] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$17 << (byte) 4
  [88] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA/(byte) $40 + (byte) startProcessing::freeIdx#2
  [89] (byte~) startProcessing::$20 ← (byte) startProcessing::freeIdx#2 << (byte) 3
  [90] (word~) startProcessing::$21 ← (word)(byte~) startProcessing::$20
  [91] (byte~) startProcessing::$37 ← (byte) startProcessing::freeIdx#2 << (byte) 1
  [92] (byte~) startProcessing::$38 ← (byte~) startProcessing::$37 + (byte) startProcessing::freeIdx#2
  [93] (byte~) startProcessing::$39 ← (byte~) startProcessing::$38 << (byte) 1
  [94] (byte~) startProcessing::$40 ← (byte~) startProcessing::$39 + (byte) startProcessing::freeIdx#2
  [95] (byte~) startProcessing::$28 ← (byte~) startProcessing::$40 << (byte) 1
  [96] *((word*)(const struct ProcessingSprite*) PROCESSING + (byte~) startProcessing::$28) ← (word) startProcessing::spriteX#0
  [97] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$28) ← (word) startProcessing::spriteY#0
  [98] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$28) ← (word~) startProcessing::$21
  [99] *((word*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$28) ← (word) $3c
  [100] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$28) ← (byte) startProcessing::freeIdx#2
  [101] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$28) ← (byte) startProcessing::spritePtr#0
  [102] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL + (byte~) startProcessing::$28) ← (byte) startProcessing::spriteCol#0
  [103] *((byte*)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$28) ← (const byte) STATUS_NEW
  [104] *((byte**)(const struct ProcessingSprite*) PROCESSING+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$28) ← (byte*) startProcessing::screenPtr#0
  to:startProcessing::@return
startProcessing::@return: scope:[startProcessing]  from startProcessing::@7
  [105] return 
  to:@return
startProcessing::@8: scope:[startProcessing]  from startProcessing::@4
  [106] (byte) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2
  to:startProcessing::@1
startProcessing::@3: scope:[startProcessing]  from startProcessing::@2
  [107] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2
  [108] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto startProcessing::@2
  to:startProcessing::@9
startProcessing::@9: scope:[startProcessing]  from startProcessing::@3
  [109] (byte) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6
  to:startProcessing::@4

(struct ProcessingChar()) getCharToProcess()
getCharToProcess: scope:[getCharToProcess]  from main::@5
  [110] (byte*) getCharToProcess::screen_line#0 ← (byte*)(void*) SCREEN_COPY#0
  [111] (byte*) getCharToProcess::dist_line#0 ← (byte*)(void*) SCREEN_DIST#0
  to:getCharToProcess::@1
getCharToProcess::@1: scope:[getCharToProcess]  from getCharToProcess getCharToProcess::@9
  [112] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 )
  [112] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 )
  [112] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 )
  [112] (byte) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const byte) NOT_FOUND getCharToProcess::@9/(byte) getCharToProcess::closest_dist#10 )
  [112] (byte*) getCharToProcess::dist_line#6 ← phi( getCharToProcess/(byte*) getCharToProcess::dist_line#0 getCharToProcess::@9/(byte*) getCharToProcess::dist_line#1 )
  [112] (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
  [113] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 )
  [113] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 )
  [113] (byte) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_dist#8 getCharToProcess::@10/(byte) getCharToProcess::closest_dist#12 )
  [113] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 )
  [114] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11
  to:getCharToProcess::@4
getCharToProcess::@4: scope:[getCharToProcess]  from getCharToProcess::@2
  [115] (byte) getCharToProcess::dist#0 ← *((byte*) getCharToProcess::dist_line#6 + (byte) getCharToProcess::x#2)
  [116] if((byte) getCharToProcess::dist#0>=(byte) getCharToProcess::closest_dist#2) goto getCharToProcess::@12
  to:getCharToProcess::@5
getCharToProcess::@5: scope:[getCharToProcess]  from getCharToProcess::@4
  [117] (byte) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2
  [118] (byte) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7
  to:getCharToProcess::@3
getCharToProcess::@3: scope:[getCharToProcess]  from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5
  [119] (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 )
  [119] (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 )
  [119] (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 )
  [120] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2
  [121] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10
  to:getCharToProcess::@6
getCharToProcess::@6: scope:[getCharToProcess]  from getCharToProcess::@3
  [122] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28
  [123] (byte*) getCharToProcess::dist_line#1 ← (byte*) getCharToProcess::dist_line#6 + (byte) $28
  [124] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7
  [125] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9
  to:getCharToProcess::@7
getCharToProcess::@7: scope:[getCharToProcess]  from getCharToProcess::@6
  [126] if((byte) getCharToProcess::return_dist#1==(const byte) NOT_FOUND) goto getCharToProcess::@return
  to:getCharToProcess::@8
getCharToProcess::@8: scope:[getCharToProcess]  from getCharToProcess::@7
  [127] (word~) getCharToProcess::$8 ← (word)(byte) getCharToProcess::return_y#1
  [128] (word~) getCharToProcess::$12 ← (word~) getCharToProcess::$8 << (byte) 2
  [129] (word~) getCharToProcess::$13 ← (word~) getCharToProcess::$12 + (word~) getCharToProcess::$8
  [130] (word~) getCharToProcess::$9 ← (word~) getCharToProcess::$13 << (byte) 3
  [131] (byte*~) getCharToProcess::$10 ← (byte*)(void*) SCREEN_COPY#0 + (word~) getCharToProcess::$9
  [132] *((byte*~) getCharToProcess::$10 + (byte) getCharToProcess::return_x#1) ← (byte) ' '
  to:getCharToProcess::@return
getCharToProcess::@return: scope:[getCharToProcess]  from getCharToProcess::@7 getCharToProcess::@8
  [133] return 
  to:@return
getCharToProcess::@9: scope:[getCharToProcess]  from getCharToProcess::@6
  [134] (byte) getCharToProcess::closest_dist#10 ← (byte) getCharToProcess::return_dist#1
  to:getCharToProcess::@1
getCharToProcess::@10: scope:[getCharToProcess]  from getCharToProcess::@3
  [135] (byte) getCharToProcess::closest_dist#12 ← (byte) getCharToProcess::return_dist#1
  to:getCharToProcess::@2
getCharToProcess::@12: scope:[getCharToProcess]  from getCharToProcess::@4
  [136] (byte) getCharToProcess::return_dist#6 ← (byte) getCharToProcess::closest_dist#2
  to:getCharToProcess::@3
getCharToProcess::@11: scope:[getCharToProcess]  from getCharToProcess::@2
  [137] (byte) getCharToProcess::return_dist#5 ← (byte) getCharToProcess::closest_dist#2
  to:getCharToProcess::@3

(void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine)
setupRasterIrq: scope:[setupRasterIrq]  from main::@10
  asm { sei  }
  [139] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK
  [140] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO
  [141] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR
  to:setupRasterIrq::@1
setupRasterIrq::@1: scope:[setupRasterIrq]  from setupRasterIrq
  [142] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) & (byte) $7f
  to:setupRasterIrq::@2
setupRasterIrq::@2: scope:[setupRasterIrq]  from setupRasterIrq::@1
  [143] *((const byte*) RASTER) ← <(const byte) RASTER_IRQ_TOP
  [144] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER
  [145] *((const void()**) HARDWARE_IRQ) ← (const void()*) setupRasterIrq::irqRoutine#0
  asm { cli  }
  to:setupRasterIrq::@return
setupRasterIrq::@return: scope:[setupRasterIrq]  from setupRasterIrq::@2
  [147] return 
  to:@return

(void()) initSprites()
initSprites: scope:[initSprites]  from main::@4
  [148] phi()
  to:initSprites::@1
initSprites::@1: scope:[initSprites]  from initSprites initSprites::@2
  [149] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA initSprites::@2/(byte*) initSprites::sp#1 )
  [150] if((byte*) initSprites::sp#2<(const byte*) SPRITE_DATA+(const byte) NUM_PROCESSING*(byte) $40) goto initSprites::@2
  to:initSprites::@3
initSprites::@3: scope:[initSprites]  from initSprites::@1 initSprites::@3
  [151] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@3/(byte) initSprites::i#1 )
  [152] *((const byte*) SPRITES_COLS + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE
  [153] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2
  [154] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@3
  to:initSprites::@4
initSprites::@4: scope:[initSprites]  from initSprites::@3
  [155] *((const byte*) SPRITES_MC) ← (byte) 0
  [156] *((const byte*) SPRITES_EXPAND_X) ← (byte) 0
  [157] *((const byte*) SPRITES_EXPAND_Y) ← (byte) 0
  to:initSprites::@return
initSprites::@return: scope:[initSprites]  from initSprites::@4
  [158] return 
  to:@return
initSprites::@2: scope:[initSprites]  from initSprites::@1
  [159] *((byte*) initSprites::sp#2) ← (byte) 0
  [160] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2
  to:initSprites::@1

(void()) init_angle_screen((byte*) init_angle_screen::screen)
init_angle_screen: scope:[init_angle_screen]  from main
  [161] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c
  [162] (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::@4
  [163] (byte*) init_angle_screen::screen_bottomline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_bottomline#1 )
  [163] (byte*) init_angle_screen::screen_topline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_topline#1 )
  [163] (byte) init_angle_screen::y#5 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@4/(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::@5
  [164] (byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@1/(byte) $27 init_angle_screen::@5/(byte) init_angle_screen::xb#1 )
  [164] (byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) 0 init_angle_screen::@5/(byte) init_angle_screen::x#1 )
  [165] if((byte) init_angle_screen::x#2<(byte) $13+(byte) 1) goto init_angle_screen::@3
  to:init_angle_screen::@4
init_angle_screen::@4: scope:[init_angle_screen]  from init_angle_screen::@2
  [166] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28
  [167] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28
  [168] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5
  [169] 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::@4
  [170] return 
  to:@return
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@2
  [171] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#2 << (byte) 1
  [172] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3
  [173] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0
  [174] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1
  [175] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0
  [176] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0
  [177] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0
  [178] call atan2_16 
  [179] (word) atan2_16::return#2 ← (word) atan2_16::return#0
  to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen]  from init_angle_screen::@3
  [180] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2
  [181] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80
  [182] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11
  [183] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
  [184] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0
  [185] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$13
  [186] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
  [187] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14
  [188] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
  [189] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$15
  [190] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2
  [191] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2
  to:init_angle_screen::@2

(word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y)
atan2_16: scope:[atan2_16]  from init_angle_screen::@3
  [192] 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
  [193] (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
  [194] (signed word) atan2_16::yi#0 ← phi( atan2_16::@1/(signed word) atan2_16::yi#16 atan2_16::@2/(signed word~) atan2_16::$2 )
  [195] 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
  [196] (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
  [197] (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
  [198] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(word) 0 )
  [198] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 )
  [198] (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 )
  [198] (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 )
  [199] 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
  [200] (word) atan2_16::angle#6 ← phi( atan2_16::@10/(word) atan2_16::angle#12 atan2_16::@19/(word) atan2_16::angle#13 )
  [201] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1
  [202] 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
  [203] (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
  [204] (word) atan2_16::angle#11 ← phi( atan2_16::@12/(word) atan2_16::angle#1 atan2_16::@21/(word) atan2_16::angle#4 )
  [205] 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
  [206] (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
  [207] (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
  [208] return 
  to:@return
atan2_16::@11: scope:[atan2_16]  from atan2_16::@10
  [209] (byte) atan2_16::shift#5 ← (byte) atan2_16::i#2
  [210] (signed word) atan2_16::xd#10 ← (signed word) atan2_16::xi#3
  [211] (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
  [212] (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 )
  [212] (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 )
  [212] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
  [213] 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
  [214] 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
  [215] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1
  [216] (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
  [217] (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 )
  [217] (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 )
  [218] 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
  [219] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5
  [220] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5
  [221] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1
  [222] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$23)
  to:atan2_16::@19
atan2_16::@19: scope:[atan2_16]  from atan2_16::@18 atan2_16::@20
  [223] (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 )
  [223] (word) atan2_16::angle#13 ← phi( atan2_16::@18/(word) atan2_16::angle#2 atan2_16::@20/(word) atan2_16::angle#3 )
  [223] (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 )
  [224] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2
  [225] if((byte) atan2_16::i#1==(const byte) CORDIC_ITERATIONS_16-(byte) 1+(byte) 1) goto atan2_16::@12
  to:atan2_16::@10
atan2_16::@18: scope:[atan2_16]  from atan2_16::@17
  [226] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5
  [227] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5
  [228] (byte~) atan2_16::$22 ← (byte) atan2_16::i#2 << (byte) 1
  [229] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word*) CORDIC_ATAN2_ANGLES_16 + (byte~) atan2_16::$22)
  to:atan2_16::@19
atan2_16::@14: scope:[atan2_16]  from atan2_16::@13
  [230] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2
  [231] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2
  [232] (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
  [233] (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
  [234] (signed word) atan2_16::yi#16 ← (signed word) atan2_16::y#0
  to:atan2_16::@3

(void*()) malloc((word) malloc::size)
malloc: scope:[malloc]  from @1 @3
  [235] (byte*) heap_head#5 ← phi( @1/(const byte*) HEAP_TOP @3/(byte*) heap_head#1 )
  [236] (byte*) malloc::mem#0 ← (byte*) heap_head#5 - (word) $3e8
  [237] (byte*) heap_head#1 ← (byte*) malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  [238] return 
  to:@return

interrupt(HARDWARE_ALL)(void()) irqBottom()
irqBottom: scope:[irqBottom]  from
  [239] phi()
  to:irqBottom::@1
irqBottom::@1: scope:[irqBottom]  from irqBottom
  [240] phi()
  [241] call processChars 
  to:irqBottom::@2
irqBottom::@2: scope:[irqBottom]  from irqBottom::@1
  [242] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_TOP
  [243] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqTop()
  [244] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER
  to:irqBottom::@return
irqBottom::@return: scope:[irqBottom]  from irqBottom::@2
  [245] return 
  to:@return

(void()) processChars()
processChars: scope:[processChars]  from irqBottom::@1
  [246] phi()
  to:processChars::@1
processChars::@1: scope:[processChars]  from processChars processChars::@2
  [247] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 )
  [247] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 )
  [248] (byte~) processChars::$62 ← (byte) processChars::i#10 << (byte) 1
  [249] (byte~) processChars::$63 ← (byte~) processChars::$62 + (byte) processChars::i#10
  [250] (byte~) processChars::$64 ← (byte~) processChars::$63 << (byte) 1
  [251] (byte~) processChars::$65 ← (byte~) processChars::$64 + (byte) processChars::i#10
  [252] (byte~) processChars::$32 ← (byte~) processChars::$65 << (byte) 1
  [253] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite*) PROCESSING + (byte~) processChars::$32
  [254] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)
  [255] 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
  [256] 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
  [257] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' '
  [258] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) | (byte) processChars::bitmask#0
  [259] *((const byte*) SPRITES_COLS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL)
  [260] *((const byte*) SCREEN+(const word) SPRITE_PTRS + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR)
  [261] *((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
  [262] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4
  [263] (byte~) processChars::$9 ← > (word) processChars::xpos#0
  [264] if((byte) 0!=(byte~) processChars::$9) goto processChars::@4
  to:processChars::@8
processChars::@8: scope:[processChars]  from processChars::@3
  [265] (byte~) processChars::$10 ← (byte) $ff ^ (byte) processChars::bitmask#0
  [266] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) & (byte~) processChars::$10
  to:processChars::@5
processChars::@5: scope:[processChars]  from processChars::@4 processChars::@8
  [267] (byte~) processChars::$15 ← (byte) processChars::i#10 << (byte) 1
  [268] (byte~) processChars::$12 ← (byte)(word) processChars::xpos#0
  [269] *((const byte*) SPRITES_XPOS + (byte~) processChars::$15) ← (byte~) processChars::$12
  [270] (word~) processChars::$13 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4
  [271] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$13
  [272] *((const byte*) SPRITES_YPOS + (byte~) processChars::$15) ← (byte) processChars::ypos#0
  [273] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST) goto processChars::@6
  to:processChars::@14
processChars::@14: scope:[processChars]  from processChars::@5
  [274] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST) goto processChars::@6
  to:processChars::@13
processChars::@13: scope:[processChars]  from processChars::@14
  [275] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST) goto processChars::@6
  to:processChars::@12
processChars::@12: scope:[processChars]  from processChars::@13
  [276] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST) goto processChars::@6
  to:processChars::@9
processChars::@9: scope:[processChars]  from processChars::@12
  [277] (word~) processChars::$23 ← (word) processChars::xpos#0 >> (byte) 3
  [278] (byte~) processChars::$24 ← (byte)(word~) processChars::$23
  [279] (byte) processChars::xchar#0 ← (byte~) processChars::$24 - (const byte) BORDER_XPOS_LEFT/(byte) 8
  [280] (byte~) processChars::$33 ← (byte) processChars::xchar#0 << (byte) 1
  [281] *((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*) VXSIN + (byte~) processChars::$33)
  [282] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX)
  [283] (byte~) processChars::$27 ← (byte) processChars::ypos#0 >> (byte) 3
  [284] (byte) processChars::ychar#0 ← (byte~) processChars::$27 - (const byte) BORDER_YPOS_TOP/(byte) 8
  [285] (byte~) processChars::$34 ← (byte) processChars::ychar#0 << (byte) 1
  [286] *((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*) VYSIN + (byte~) processChars::$34)
  [287] *((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
  [288] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10
  to:processChars::@2
processChars::@2: scope:[processChars]  from processChars::@1 processChars::@7
  [289] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 )
  [290] (byte) processChars::i#1 ← ++ (byte) processChars::i#10
  [291] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING-(byte) 1+(byte) 1) goto processChars::@1
  to:processChars::@return
processChars::@return: scope:[processChars]  from processChars::@2
  [292] return 
  to:@return
processChars::@6: scope:[processChars]  from processChars::@12 processChars::@13 processChars::@14 processChars::@5
  [293] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE
  [294] (byte~) processChars::$29 ← (byte) $ff ^ (byte) processChars::bitmask#0
  [295] *((const byte*) SPRITES_ENABLE) ← *((const byte*) SPRITES_ENABLE) & (byte~) processChars::$29
  to:processChars::@7
processChars::@4: scope:[processChars]  from processChars::@3
  [296] *((const byte*) SPRITES_XMSB) ← *((const byte*) SPRITES_XMSB) | (byte) processChars::bitmask#0
  to:processChars::@5

interrupt(HARDWARE_ALL)(void()) irqTop()
irqTop: scope:[irqTop]  from
  [297] phi()
  to:irqTop::@1
irqTop::@1: scope:[irqTop]  from irqTop
  [298] *((const byte*) RASTER) ← (const byte) RASTER_IRQ_MIDDLE
  [299] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_ALL)(void()) irqBottom()
  [300] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER
  to:irqTop::@return
irqTop::@return: scope:[irqTop]  from irqTop::@1
  [301] return 
  to:@return
