@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  [4] phi()
  [5] call mulf_init 
  to:main::@11
main::@11: scope:[main]  from main
  [6] phi()
  [7] call prepareBobs 
  to:main::@12
main::@12: scope:[main]  from main::@11
  [8] phi()
  [9] call renderBobInit 
  to:main::vicSelectGfxBank1
main::vicSelectGfxBank1: scope:[main]  from main::@12
  [10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3
  to:main::vicSelectGfxBank1_toDd001
main::vicSelectGfxBank1_toDd001: scope:[main]  from main::vicSelectGfxBank1
  [11] phi()
  to:main::vicSelectGfxBank1_@1
main::vicSelectGfxBank1_@1: scope:[main]  from main::vicSelectGfxBank1_toDd001
  [12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
  to:main::toD0181
main::toD0181: scope:[main]  from main::vicSelectGfxBank1_@1
  [13] phi()
  to:main::@9
main::@9: scope:[main]  from main::toD0181
  [14] *((const byte*) D018) ← (const byte) main::toD0181_return#0
  [15] call memset 
  to:main::@1
main::@1: scope:[main]  from main::@15 main::@9
  [16] (signed word) main::rowOffsetY#10 ← phi( main::@9/(signed word) $100 main::@15/(signed word) main::rowOffsetY#1 )
  [16] (signed word) main::origX#8 ← phi( main::@9/(signed word) $a00 main::@15/(signed word) main::origX#1 )
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [18] *((const byte*) BORDERCOL) ← (byte) $f
  [19] call renderBobCleanup 
  to:main::@13
main::@13: scope:[main]  from main::@3
  [20] (signed word) main::x#4 ← (signed word) main::origX#8
  to:main::@4
main::@4: scope:[main]  from main::@13 main::@6
  [21] (byte) main::col#5 ← phi( main::@13/(byte) 0 main::@6/(byte) main::col#1 )
  [21] (byte**) renderBobCleanupNext#21 ← phi( main::@13/(const byte**) RENDERBOB_CLEANUP main::@6/(byte**) renderBobCleanupNext#13 )
  [21] (signed word) main::y#0 ← phi( main::@13/(const signed word) main::origY main::@6/(signed word) main::rowY#1 )
  [21] (signed word) main::x#0 ← phi( main::@13/(signed word) main::x#4 main::@6/(signed word) main::rowX#1 )
  [22] (signed word) main::x#7 ← (signed word) main::x#0
  [23] (signed word) main::y#6 ← (signed word) main::y#0
  to:main::@5
main::@5: scope:[main]  from main::@14 main::@4
  [24] (byte) main::row#2 ← phi( main::@14/(byte) main::row#1 main::@4/(byte) 0 )
  [24] (byte**) renderBobCleanupNext#17 ← phi( main::@14/(byte**) renderBobCleanupNext#13 main::@4/(byte**) renderBobCleanupNext#21 )
  [24] (signed word) main::y#2 ← phi( main::@14/(signed word) main::y#1 main::@4/(signed word) main::y#6 )
  [24] (signed word) main::x#2 ← phi( main::@14/(signed word) main::x#1 main::@4/(signed word) main::x#7 )
  [25] *((const byte*) BORDERCOL) ← (byte) 1
  [26] (byte) renderBob::xpos#0 ← > (signed word) main::x#2
  [27] (byte) renderBob::ypos#0 ← > (signed word) main::y#2
  [28] call renderBob 
  to:main::@14
main::@14: scope:[main]  from main::@5
  [29] (signed word) main::x#1 ← (signed word) main::x#2 + (const signed word) main::rowOffsetX
  [30] (signed word) main::y#1 ← (signed word) main::y#2 + (signed word) main::rowOffsetY#10
  [31] *((const byte*) BORDERCOL) ← (byte) 2
  [32] (byte) main::row#1 ← ++ (byte) main::row#2
  [33] if((byte) main::row#1!=(byte) 5) goto main::@5
  to:main::@6
main::@6: scope:[main]  from main::@14
  [34] (signed word) main::rowX#1 ← (signed word) main::x#0 + (const signed word) main::colOffsetX
  [35] (signed word) main::rowY#1 ← (signed word) main::y#0 + (const signed word) main::colOffsetY
  [36] (byte) main::col#1 ← ++ (byte) main::col#5
  [37] if((byte) main::col#1!=(byte) 5) goto main::@4
  to:main::@7
main::@7: scope:[main]  from main::@6
  [38] (signed word) main::origX#1 ← (signed word) main::origX#8 + (signed word) $100
  [39] (signed word) main::rowOffsetY#1 ← (signed word) main::rowOffsetY#10 + (signed word) $80
  [40] *((const byte*) BORDERCOL) ← (byte) 0
  [41] call keyboard_key_pressed 
  [42] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0
  to:main::@15
main::@15: scope:[main]  from main::@7
  [43] (byte~) main::$15 ← (byte) keyboard_key_pressed::return#2
  [44] if((byte) 0!=(byte~) main::$15) goto main::@8
  to:main::@1
main::@8: scope:[main]  from main::@15 main::@16
  [45] phi()
  [46] call keyboard_key_pressed 
  [47] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0
  to:main::@16
main::@16: scope:[main]  from main::@8
  [48] (byte~) main::$17 ← (byte) keyboard_key_pressed::return#3
  [49] if((byte) 0!=(byte~) main::$17) goto main::@8
  to:main::vicSelectGfxBank2
main::vicSelectGfxBank2: scope:[main]  from main::@16
  [50] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3
  to:main::vicSelectGfxBank2_toDd001
main::vicSelectGfxBank2_toDd001: scope:[main]  from main::vicSelectGfxBank2
  [51] phi()
  to:main::vicSelectGfxBank2_@1
main::vicSelectGfxBank2_@1: scope:[main]  from main::vicSelectGfxBank2_toDd001
  [52] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0
  to:main::toD0182
main::toD0182: scope:[main]  from main::vicSelectGfxBank2_@1
  [53] phi()
  to:main::@10
main::@10: scope:[main]  from main::toD0182
  [54] *((const byte*) D018) ← (const byte) main::toD0182_return#0
  to:main::@return
main::@return: scope:[main]  from main::@10
  [55] return 
  to:@return

(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
keyboard_key_pressed: scope:[keyboard_key_pressed]  from main::@7 main::@8
  [56] phi()
  [57] call keyboard_matrix_read 
  [58] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0
  to:keyboard_key_pressed::@1
keyboard_key_pressed::@1: scope:[keyboard_key_pressed]  from keyboard_key_pressed
  [59] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2
  [60] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0)
  to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed]  from keyboard_key_pressed::@1
  [61] return 
  to:@return

(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
keyboard_matrix_read: scope:[keyboard_matrix_read]  from keyboard_key_pressed
  [62] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0)
  [63] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B)
  to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read]  from keyboard_matrix_read
  [64] return 
  to:@return

(void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos)
renderBob: scope:[renderBob]  from main::@5
  [65] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2
  [66] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3
  [67] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1
  [68] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8)
  [69] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0
  [70] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0
  [71] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7
  [72] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2
  [73] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3
  [74] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6
  [75] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0
  [76] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER
  [77] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0)
  [78] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
  [79] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
  [80] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
  [81] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
  [82] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
  [83] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
  [84] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
  [85] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
  to:renderBob::@return
renderBob::@return: scope:[renderBob]  from renderBob
  [86] return 
  to:@return

(void()) renderBobCleanup()
renderBobCleanup: scope:[renderBobCleanup]  from main::@3
  [87] phi()
  to:renderBobCleanup::@1
renderBobCleanup::@1: scope:[renderBobCleanup]  from renderBobCleanup renderBobCleanup::@1
  [88] (byte) renderBobCleanup::i#2 ← phi( renderBobCleanup/(byte) 0 renderBobCleanup::@1/(byte) renderBobCleanup::i#1 )
  [89] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1
  [90] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1)
  [91] *((byte*) renderBobCleanup::screen#0) ← (byte) 0
  [92] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0
  [93] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0
  [94] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0
  [95] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0
  [96] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0
  [97] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0
  [98] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0
  [99] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0
  [100] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2
  [101] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1
  to:renderBobCleanup::@return
renderBobCleanup::@return: scope:[renderBobCleanup]  from renderBobCleanup::@1
  [102] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from main::@9
  [103] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [104] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
  [105] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [106] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [107] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@1

(void()) renderBobInit()
renderBobInit: scope:[renderBobInit]  from main::@12
  [109] phi()
  to:renderBobInit::@1
renderBobInit::@1: scope:[renderBobInit]  from renderBobInit renderBobInit::@1
  [110] (byte) renderBobInit::y#2 ← phi( renderBobInit/(byte) 0 renderBobInit::@1/(byte) renderBobInit::y#1 )
  [111] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2
  [112] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2
  [113] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0
  [114] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3
  [115] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1
  [116] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1
  [117] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2
  [118] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1
  to:renderBobInit::@2
renderBobInit::@2: scope:[renderBobInit]  from renderBobInit::@1 renderBobInit::@2
  [119] (byte) renderBobInit::i#2 ← phi( renderBobInit::@1/(byte) 0 renderBobInit::@2/(byte) renderBobInit::i#1 )
  [120] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1
  [121] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN
  [122] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2
  [123] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2
  to:renderBobInit::@return
renderBobInit::@return: scope:[renderBobInit]  from renderBobInit::@2
  [124] return 
  to:@return

(void()) prepareBobs()
prepareBobs: scope:[prepareBobs]  from main::@11
  [125] phi()
  [126] call progress_init 
  to:prepareBobs::@8
prepareBobs::@8: scope:[prepareBobs]  from prepareBobs
  [127] phi()
  [128] call charsetFindOrAddGlyph 
  to:prepareBobs::@1
prepareBobs::@1: scope:[prepareBobs]  from prepareBobs::@8 prepareBobs::@9
  [129] (byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::bob_table_idx#12 )
  [129] (byte) bob_charset_next_id#14 ← phi( prepareBobs::@8/(byte) bob_charset_next_id#16 prepareBobs::@9/(byte) bob_charset_next_id#30 )
  [129] (byte) progress_idx#16 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) progress_idx#31 )
  [129] (byte*) progress_cursor#15 ← phi( prepareBobs::@8/(const byte*) BASIC_SCREEN prepareBobs::@9/(byte*) progress_cursor#31 )
  [129] (byte) prepareBobs::shift_y#2 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::shift_y#1 )
  [130] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2
  to:prepareBobs::@return
prepareBobs::@return: scope:[prepareBobs]  from prepareBobs::@1
  [131] return 
  to:@return
prepareBobs::@2: scope:[prepareBobs]  from prepareBobs::@1 prepareBobs::@13
  [132] (byte) progress_idx#31 ← phi( prepareBobs::@1/(byte) progress_idx#16 prepareBobs::@13/(byte) progress_idx#25 )
  [132] (byte*) progress_cursor#31 ← phi( prepareBobs::@1/(byte*) progress_cursor#15 prepareBobs::@13/(byte*) progress_cursor#24 )
  [132] (byte) bob_charset_next_id#30 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#14 prepareBobs::@13/(byte) bob_charset_next_id#21 )
  [132] (byte) prepareBobs::bob_table_idx#12 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#6 prepareBobs::@13/(byte) prepareBobs::bob_table_idx#1 )
  [132] (byte) prepareBobs::shift_x#2 ← phi( prepareBobs::@1/(byte) 0 prepareBobs::@13/(byte) prepareBobs::shift_x#1 )
  [133] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3
  to:prepareBobs::@4
prepareBobs::@4: scope:[prepareBobs]  from prepareBobs::@2
  [134] phi()
  [135] call protoBobShiftDown 
  to:prepareBobs::@9
prepareBobs::@9: scope:[prepareBobs]  from prepareBobs::@4
  [136] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2
  to:prepareBobs::@1
prepareBobs::@3: scope:[prepareBobs]  from prepareBobs::@2
  [137] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12
  to:prepareBobs::@5
prepareBobs::@5: scope:[prepareBobs]  from prepareBobs::@11 prepareBobs::@3
  [138] (byte*) progress_cursor#24 ← phi( prepareBobs::@11/(byte*) progress_cursor#17 prepareBobs::@3/(byte*) progress_cursor#31 )
  [138] (byte) progress_idx#25 ← phi( prepareBobs::@11/(byte) progress_idx#10 prepareBobs::@3/(byte) progress_idx#31 )
  [138] (byte*) prepareBobs::bob_table#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_table#1 prepareBobs::@3/(byte*) prepareBobs::bob_table#0 )
  [138] (byte) bob_charset_next_id#21 ← phi( prepareBobs::@11/(byte) bob_charset_next_id#16 prepareBobs::@3/(byte) bob_charset_next_id#30 )
  [138] (byte*) prepareBobs::bob_glyph#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_glyph#1 prepareBobs::@3/(const byte*) PROTO_BOB )
  [138] (byte) prepareBobs::cell#2 ← phi( prepareBobs::@11/(byte) prepareBobs::cell#1 prepareBobs::@3/(byte) 0 )
  [139] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6
  to:prepareBobs::@7
prepareBobs::@7: scope:[prepareBobs]  from prepareBobs::@5
  [140] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12
  [141] call protoBobShiftRight 
  to:prepareBobs::@12
prepareBobs::@12: scope:[prepareBobs]  from prepareBobs::@7
  [142] phi()
  [143] call protoBobShiftRight 
  to:prepareBobs::@13
prepareBobs::@13: scope:[prepareBobs]  from prepareBobs::@12
  [144] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2
  to:prepareBobs::@2
prepareBobs::@6: scope:[prepareBobs]  from prepareBobs::@5
  [145] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2
  [146] call charsetFindOrAddGlyph 
  [147] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11
  to:prepareBobs::@10
prepareBobs::@10: scope:[prepareBobs]  from prepareBobs::@6
  [148] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1
  [149] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6
  [150] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8
  [151] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
  [152] call progress_inc 
  to:prepareBobs::@11
prepareBobs::@11: scope:[prepareBobs]  from prepareBobs::@10
  [153] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2
  to:prepareBobs::@5

(void()) progress_inc()
progress_inc: scope:[progress_inc]  from prepareBobs::@10
  [154] (byte) progress_idx#8 ← ++ (byte) progress_idx#25
  [155] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1
  to:progress_inc::@2
progress_inc::@2: scope:[progress_inc]  from progress_inc
  [156] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8)
  [157] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24
  to:progress_inc::@1
progress_inc::@1: scope:[progress_inc]  from progress_inc progress_inc::@2
  [158] (byte*) progress_cursor#17 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#8 )
  [158] (byte) progress_idx#10 ← phi( progress_inc/(byte) progress_idx#8 progress_inc::@2/(byte) 0 )
  [159] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10)
  to:progress_inc::@return
progress_inc::@return: scope:[progress_inc]  from progress_inc::@1
  [160] return 
  to:@return

(byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset)
charsetFindOrAddGlyph: scope:[charsetFindOrAddGlyph]  from prepareBobs::@6 prepareBobs::@8
  [161] (byte*) charsetFindOrAddGlyph::glyph#10 ← phi( prepareBobs::@8/(const byte*) PROTO_BOB+(byte) $30 prepareBobs::@6/(byte*) charsetFindOrAddGlyph::glyph#1 )
  [161] (byte) bob_charset_next_id#23 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@6/(byte) bob_charset_next_id#21 )
  to:charsetFindOrAddGlyph::@1
charsetFindOrAddGlyph::@1: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph charsetFindOrAddGlyph::@6
  [162] (byte*) charsetFindOrAddGlyph::glyph_cursor#11 ← phi( charsetFindOrAddGlyph/(const byte*) BOB_CHARSET charsetFindOrAddGlyph::@6/(byte*) charsetFindOrAddGlyph::glyph_cursor#1 )
  [162] (byte) charsetFindOrAddGlyph::glyph_id#11 ← phi( charsetFindOrAddGlyph/(byte) 0 charsetFindOrAddGlyph::@6/(byte) charsetFindOrAddGlyph::glyph_id#1 )
  [163] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2
  to:charsetFindOrAddGlyph::@7
charsetFindOrAddGlyph::@7: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@8
  [164] (byte) charsetFindOrAddGlyph::i1#2 ← phi( charsetFindOrAddGlyph::@8/(byte) charsetFindOrAddGlyph::i1#1 charsetFindOrAddGlyph::@1/(byte) 0 )
  [165] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8
  to:charsetFindOrAddGlyph::@9
charsetFindOrAddGlyph::@9: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@7
  [166] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23
  to:charsetFindOrAddGlyph::@return
charsetFindOrAddGlyph::@return: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9
  [167] (byte) bob_charset_next_id#16 ← phi( charsetFindOrAddGlyph::@5/(byte) bob_charset_next_id#23 charsetFindOrAddGlyph::@9/(byte) bob_charset_next_id#8 )
  [168] return 
  to:@return
charsetFindOrAddGlyph::@8: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@7
  [169] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2)
  [170] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2
  to:charsetFindOrAddGlyph::@7
charsetFindOrAddGlyph::@2: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@4
  [171] (byte) charsetFindOrAddGlyph::i#2 ← phi( charsetFindOrAddGlyph::@1/(byte) 0 charsetFindOrAddGlyph::@4/(byte) charsetFindOrAddGlyph::i#1 )
  [172] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3
  to:charsetFindOrAddGlyph::@5
charsetFindOrAddGlyph::@3: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@2
  [173] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4
  to:charsetFindOrAddGlyph::@5
charsetFindOrAddGlyph::@5: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@2 charsetFindOrAddGlyph::@3
  [174] (byte) charsetFindOrAddGlyph::found#2 ← phi( charsetFindOrAddGlyph::@3/(byte) 0 charsetFindOrAddGlyph::@2/(byte) 1 )
  [175] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6
  to:charsetFindOrAddGlyph::@return
charsetFindOrAddGlyph::@6: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@5
  [176] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11
  [177] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8
  to:charsetFindOrAddGlyph::@1
charsetFindOrAddGlyph::@4: scope:[charsetFindOrAddGlyph]  from charsetFindOrAddGlyph::@3
  [178] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2
  to:charsetFindOrAddGlyph::@2

(void()) protoBobShiftRight()
protoBobShiftRight: scope:[protoBobShiftRight]  from prepareBobs::@12 prepareBobs::@7
  [179] phi()
  to:protoBobShiftRight::@1
protoBobShiftRight::@1: scope:[protoBobShiftRight]  from protoBobShiftRight protoBobShiftRight::@6
  [180] (byte) protoBobShiftRight::carry#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::carry#10 )
  [180] (byte) protoBobShiftRight::j#3 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::j#10 )
  [180] (byte) protoBobShiftRight::i#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::i#1 )
  [181] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2
  to:protoBobShiftRight::@return
protoBobShiftRight::@return: scope:[protoBobShiftRight]  from protoBobShiftRight::@1
  [182] return 
  to:@return
protoBobShiftRight::@2: scope:[protoBobShiftRight]  from protoBobShiftRight::@1
  [183] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1
  [184] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3
  to:protoBobShiftRight::@4
protoBobShiftRight::@3: scope:[protoBobShiftRight]  from protoBobShiftRight::@2
  [185] phi()
  to:protoBobShiftRight::@4
protoBobShiftRight::@4: scope:[protoBobShiftRight]  from protoBobShiftRight::@2 protoBobShiftRight::@3
  [186] (byte) protoBobShiftRight::carry#1 ← phi( protoBobShiftRight::@3/(byte) $80 protoBobShiftRight::@2/(byte) 0 )
  [187] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1
  [188] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5
  [189] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6
  [190] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5
  to:protoBobShiftRight::@7
protoBobShiftRight::@7: scope:[protoBobShiftRight]  from protoBobShiftRight::@4
  [191] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18
  to:protoBobShiftRight::@6
protoBobShiftRight::@6: scope:[protoBobShiftRight]  from protoBobShiftRight::@5 protoBobShiftRight::@7
  [192] (byte) protoBobShiftRight::j#10 ← phi( protoBobShiftRight::@7/(byte) protoBobShiftRight::j#2 protoBobShiftRight::@5/(byte) protoBobShiftRight::j#1 )
  [193] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2
  [194] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1
  to:protoBobShiftRight::@1
protoBobShiftRight::@5: scope:[protoBobShiftRight]  from protoBobShiftRight::@4
  [195] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f
  to:protoBobShiftRight::@6

(void()) protoBobShiftDown()
protoBobShiftDown: scope:[protoBobShiftDown]  from prepareBobs::@4
  [196] phi()
  to:protoBobShiftDown::@1
protoBobShiftDown::@1: scope:[protoBobShiftDown]  from protoBobShiftDown protoBobShiftDown::@2
  [197] (byte) protoBobShiftDown::i#2 ← phi( protoBobShiftDown/(byte) $17 protoBobShiftDown::@2/(byte) protoBobShiftDown::i#1 )
  [198] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2
  to:protoBobShiftDown::@3
protoBobShiftDown::@3: scope:[protoBobShiftDown]  from protoBobShiftDown::@1
  [199] *((const byte*) PROTO_BOB) ← (byte) 0
  [200] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0
  [201] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0
  to:protoBobShiftDown::@return
protoBobShiftDown::@return: scope:[protoBobShiftDown]  from protoBobShiftDown::@3
  [202] return 
  to:@return
protoBobShiftDown::@2: scope:[protoBobShiftDown]  from protoBobShiftDown::@1
  [203] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2)
  [204] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2)
  [205] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0
  [206] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2
  to:protoBobShiftDown::@1

(void()) progress_init((byte*) progress_init::line)
progress_init: scope:[progress_init]  from prepareBobs
  [207] phi()
  to:progress_init::@return
progress_init::@return: scope:[progress_init]  from progress_init
  [208] return 
  to:@return

(void()) mulf_init()
mulf_init: scope:[mulf_init]  from main
  [209] phi()
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@3
  [210] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
  [210] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
  [210] (word) mulf_init::sqr#4 ← phi( mulf_init/(word) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
  [210] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
  [210] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
  [211] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
  to:mulf_init::@5
mulf_init::@5: scope:[mulf_init]  from mulf_init::@1 mulf_init::@8
  [212] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff )
  [212] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi )
  [212] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 )
  [212] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo )
  [213] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6
  to:mulf_init::@7
mulf_init::@7: scope:[mulf_init]  from mulf_init::@5
  [214] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100)
  [215] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100)
  to:mulf_init::@return
mulf_init::@return: scope:[mulf_init]  from mulf_init::@7
  [216] return 
  to:@return
mulf_init::@6: scope:[mulf_init]  from mulf_init::@5
  [217] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2)
  [218] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2)
  [219] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  [220] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  [221] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9
  to:mulf_init::@8
mulf_init::@9: scope:[mulf_init]  from mulf_init::@6
  [222] phi()
  to:mulf_init::@8
mulf_init::@8: scope:[mulf_init]  from mulf_init::@6 mulf_init::@9
  [223] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 )
  [224] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
  to:mulf_init::@5
mulf_init::@2: scope:[mulf_init]  from mulf_init::@1
  [225] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  [226] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1
  [227] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3
  to:mulf_init::@4
mulf_init::@4: scope:[mulf_init]  from mulf_init::@2
  [228] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
  [229] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
  to:mulf_init::@3
mulf_init::@3: scope:[mulf_init]  from mulf_init::@2 mulf_init::@4
  [230] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 )
  [230] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 )
  [231] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3
  [232] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4
  [233] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3
  [234] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5
  [235] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  [236] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  [237] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
  to:mulf_init::@1
