
void main()
main: scope:[main]  from
  [0] phi()
  [1] call fillscreen
  to:main::@1
main::@1: scope:[main]  from main main::@1 main::@4
  [2] current_chargen#28 = phi( main::@1/current_chargen#28, main/CHARGEN, main::@4/current_chargen#12 )
  [2] nxt#33 = phi( main::@1/nxt#33, main/TEXT, main::@4/nxt#15 )
  [2] current_bit#30 = phi( main::@1/current_bit#30, main/1, main::@4/current_bit#13 )
  [2] scroll#19 = phi( main::@1/scroll#19, main/7, main::@4/scroll#11 )
  [3] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$fe) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [4] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$ff) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [5] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = ++ *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR)
  [6] call scroll_soft
  to:main::@4
main::@4: scope:[main]  from main::@3
  [7] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = -- *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR)
  to:main::@1

void fillscreen(char *screen , char fill)
fillscreen: scope:[fillscreen]  from main
  [8] phi()
  to:fillscreen::@1
fillscreen::@1: scope:[fillscreen]  from fillscreen fillscreen::@2
  [9] fillscreen::cursor#2 = phi( fillscreen/SCREEN, fillscreen::@2/fillscreen::cursor#1 )
  [10] if(fillscreen::cursor#2<SCREEN+$3e8) goto fillscreen::@2
  to:fillscreen::@return
fillscreen::@return: scope:[fillscreen]  from fillscreen::@1
  [11] return 
  to:@return
fillscreen::@2: scope:[fillscreen]  from fillscreen::@1
  [12] *fillscreen::cursor#2 = fillscreen::fill#0
  [13] fillscreen::cursor#1 = ++ fillscreen::cursor#2
  to:fillscreen::@1

void scroll_soft()
scroll_soft: scope:[scroll_soft]  from main::@3
  [14] scroll#2 = -- scroll#19
  [15] if(scroll#2!=$ff) goto scroll_soft::@1
  to:scroll_soft::@2
scroll_soft::@2: scope:[scroll_soft]  from scroll_soft
  [16] phi()
  [17] call scroll_bit
  to:scroll_soft::@1
scroll_soft::@1: scope:[scroll_soft]  from scroll_soft scroll_soft::@2
  [18] current_chargen#12 = phi( scroll_soft/current_chargen#28, scroll_soft::@2/current_chargen#21 )
  [18] nxt#15 = phi( scroll_soft/nxt#33, scroll_soft::@2/nxt#37 )
  [18] current_bit#13 = phi( scroll_soft/current_bit#30, scroll_soft::@2/current_bit#23 )
  [18] scroll#11 = phi( scroll_soft/scroll#2, scroll_soft::@2/7 )
  [19] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = scroll#11
  to:scroll_soft::@return
scroll_soft::@return: scope:[scroll_soft]  from scroll_soft::@1
  [20] return 
  to:@return

void scroll_bit()
scroll_bit: scope:[scroll_bit]  from scroll_soft::@2
  [21] current_bit#4 = current_bit#30 >> 1
  [22] if(current_bit#4!=0) goto scroll_bit::@1
  to:scroll_bit::@2
scroll_bit::@2: scope:[scroll_bit]  from scroll_bit
  [23] phi()
  [24] call next_char
  [25] next_char::return#0 = next_char::return#1
  to:scroll_bit::@8
scroll_bit::@8: scope:[scroll_bit]  from scroll_bit::@2
  [26] scroll_bit::c#0 = next_char::return#0
  [27] scroll_bit::$7 = scroll_bit::c#0 << 3
  [28] current_chargen#4 = CHARGEN + scroll_bit::$7
  to:scroll_bit::@1
scroll_bit::@1: scope:[scroll_bit]  from scroll_bit scroll_bit::@8
  [29] nxt#37 = phi( scroll_bit/nxt#33, scroll_bit::@8/nxt#20 )
  [29] current_bit#23 = phi( scroll_bit/current_bit#4, scroll_bit::@8/$80 )
  [29] current_chargen#21 = phi( scroll_bit/current_chargen#28, scroll_bit::@8/current_chargen#4 )
  [30] call scroll_hard
  to:scroll_bit::@7
scroll_bit::@7: scope:[scroll_bit]  from scroll_bit::@1
  asm { sei  }
  [32] *PROCPORT = $32
  to:scroll_bit::@3
scroll_bit::@3: scope:[scroll_bit]  from scroll_bit::@4 scroll_bit::@7
  [33] scroll_bit::sc#2 = phi( scroll_bit::@4/scroll_bit::sc#1, scroll_bit::@7/SCREEN+$28+$27 )
  [33] scroll_bit::r#2 = phi( scroll_bit::@4/scroll_bit::r#1, scroll_bit::@7/0 )
  [34] scroll_bit::bits#0 = current_chargen#21[scroll_bit::r#2]
  [35] scroll_bit::$9 = scroll_bit::bits#0 & current_bit#23
  [36] if(scroll_bit::$9==0) goto scroll_bit::@4
  to:scroll_bit::@5
scroll_bit::@5: scope:[scroll_bit]  from scroll_bit::@3
  [37] phi()
  to:scroll_bit::@4
scroll_bit::@4: scope:[scroll_bit]  from scroll_bit::@3 scroll_bit::@5
  [38] scroll_bit::b#2 = phi( scroll_bit::@3/' ', scroll_bit::@5/$80+' ' )
  [39] *scroll_bit::sc#2 = scroll_bit::b#2
  [40] scroll_bit::sc#1 = scroll_bit::sc#2 + $28
  [41] scroll_bit::r#1 = ++ scroll_bit::r#2
  [42] if(scroll_bit::r#1!=8) goto scroll_bit::@3
  to:scroll_bit::@6
scroll_bit::@6: scope:[scroll_bit]  from scroll_bit::@4
  [43] *PROCPORT = $37
  asm { cli  }
  to:scroll_bit::@return
scroll_bit::@return: scope:[scroll_bit]  from scroll_bit::@6
  [45] return 
  to:@return

char next_char()
next_char: scope:[next_char]  from scroll_bit::@2
  [46] next_char::c#0 = *nxt#33
  [47] if(next_char::c#0!=0) goto next_char::@1
  to:next_char::@2
next_char::@2: scope:[next_char]  from next_char
  [48] next_char::c#1 = *TEXT
  to:next_char::@1
next_char::@1: scope:[next_char]  from next_char next_char::@2
  [49] next_char::return#1 = phi( next_char/next_char::c#0, next_char::@2/next_char::c#1 )
  [49] nxt#19 = phi( next_char/nxt#33, next_char::@2/TEXT )
  [50] nxt#20 = ++ nxt#19
  to:next_char::@return
next_char::@return: scope:[next_char]  from next_char::@1
  [51] return 
  to:@return

void scroll_hard()
scroll_hard: scope:[scroll_hard]  from scroll_bit::@1
  [52] phi()
  to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard]  from scroll_hard scroll_hard::@2
  [53] scroll_hard::i#2 = phi( scroll_hard/0, scroll_hard::@2/scroll_hard::i#1 )
  [54] if(scroll_hard::i#2!=$27) goto scroll_hard::@2
  to:scroll_hard::@return
scroll_hard::@return: scope:[scroll_hard]  from scroll_hard::@1
  [55] return 
  to:@return
scroll_hard::@2: scope:[scroll_hard]  from scroll_hard::@1
  [56] SCREEN[scroll_hard::i#2] = (SCREEN+1)[scroll_hard::i#2]
  [57] (SCREEN+$28*1)[scroll_hard::i#2] = (SCREEN+$28*1+1)[scroll_hard::i#2]
  [58] (SCREEN+$28*2)[scroll_hard::i#2] = (SCREEN+$28*2+1)[scroll_hard::i#2]
  [59] (SCREEN+$28*3)[scroll_hard::i#2] = (SCREEN+$28*3+1)[scroll_hard::i#2]
  [60] (SCREEN+$28*4)[scroll_hard::i#2] = (SCREEN+$28*4+1)[scroll_hard::i#2]
  [61] (SCREEN+$28*5)[scroll_hard::i#2] = (SCREEN+$28*5+1)[scroll_hard::i#2]
  [62] (SCREEN+$28*6)[scroll_hard::i#2] = (SCREEN+$28*6+1)[scroll_hard::i#2]
  [63] (SCREEN+(unsigned int)$28*7)[scroll_hard::i#2] = (SCREEN+(unsigned int)$28*7+1)[scroll_hard::i#2]
  [64] scroll_hard::i#1 = ++ scroll_hard::i#2
  to:scroll_hard::@1
