
void __start()
__start: scope:[__start]  from
  [0] phi()
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  [1] conio_cursor_x = 0
  [2] conio_cursor_y = 0
  [3] conio_line_text = PPU_NAME_TABLE_0
  [4] x_scroll = 0
  [5] y_scroll = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  [6] phi()
  [7] call main
  to:__start::@return
__start::@return: scope:[__start]  from __start::@1
  [8] return 
  to:@return

__interrupt(hardware_all) void vblank()
vblank: scope:[vblank]  from
  [9] phi()
  [10] call readJoy1
  [11] readJoy1::return#2 = readJoy1::joy#2
  to:vblank::@11
vblank::@11: scope:[vblank]  from vblank
  [12] vblank::joy#0 = readJoy1::return#2
  [13] vblank::$1 = vblank::joy#0 & JOY_DOWN
  [14] if(0==vblank::$1) goto vblank::@1
  to:vblank::@5
vblank::@5: scope:[vblank]  from vblank::@11
  [15] y_scroll = ++ y_scroll
  [16] if(y_scroll!=$f0) goto vblank::@1
  to:vblank::@6
vblank::@6: scope:[vblank]  from vblank::@5
  [17] y_scroll = 0
  to:vblank::@1
vblank::@1: scope:[vblank]  from vblank::@11 vblank::@5 vblank::@6
  [18] vblank::$3 = vblank::joy#0 & JOY_UP
  [19] if(0==vblank::$3) goto vblank::@2
  to:vblank::@7
vblank::@7: scope:[vblank]  from vblank::@1
  [20] y_scroll = -- y_scroll
  [21] if(y_scroll!=$ff) goto vblank::@2
  to:vblank::@8
vblank::@8: scope:[vblank]  from vblank::@7
  [22] y_scroll = $ef
  to:vblank::@2
vblank::@2: scope:[vblank]  from vblank::@1 vblank::@7 vblank::@8
  [23] vblank::$5 = vblank::joy#0 & JOY_LEFT
  [24] if(0==vblank::$5) goto vblank::@3
  to:vblank::@9
vblank::@9: scope:[vblank]  from vblank::@2
  [25] x_scroll = ++ x_scroll
  to:vblank::@3
vblank::@3: scope:[vblank]  from vblank::@2 vblank::@9
  [26] vblank::$7 = vblank::joy#0 & JOY_RIGHT
  [27] if(0==vblank::$7) goto vblank::@4
  to:vblank::@10
vblank::@10: scope:[vblank]  from vblank::@3
  [28] x_scroll = -- x_scroll
  to:vblank::@4
vblank::@4: scope:[vblank]  from vblank::@10 vblank::@3
  [29] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = x_scroll
  [30] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = y_scroll
  to:vblank::@return
vblank::@return: scope:[vblank]  from vblank::@4
  [31] return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  [32] phi()
  to:main::initNES1
main::initNES1: scope:[main]  from main
  asm { cld ldx#$ff txs  }
  to:main::initNES1_disableVideoOutput1
main::initNES1_disableVideoOutput1: scope:[main]  from main::initNES1
  [34] *((char *)PPU) = 0
  [35] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = 0
  to:main::initNES1_disableAudioOutput1
main::initNES1_disableAudioOutput1: scope:[main]  from main::initNES1_disableVideoOutput1
  [36] *FR_COUNTER = $40
  [37] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ) = $40
  to:main::initNES1_clearVBlankFlag1
main::initNES1_clearVBlankFlag1: scope:[main]  from main::initNES1_disableAudioOutput1
  asm { ldaPPU_PPUSTATUS  }
  to:main::initNES1_waitForVBlank1
main::initNES1_waitForVBlank1: scope:[main]  from main::initNES1_clearVBlankFlag1
  [39] phi()
  to:main::initNES1_waitForVBlank1_@1
main::initNES1_waitForVBlank1_@1: scope:[main]  from main::initNES1_waitForVBlank1 main::initNES1_waitForVBlank1_@1
  [40] main::initNES1_waitForVBlank1_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80
  [41] if(0==main::initNES1_waitForVBlank1_$0) goto main::initNES1_waitForVBlank1_@1
  to:main::initNES1_@1
main::initNES1_@1: scope:[main]  from main::initNES1_@1 main::initNES1_waitForVBlank1_@1
  [42] main::initNES1_i#2 = phi( main::initNES1_@1/main::initNES1_i#1, main::initNES1_waitForVBlank1_@1/0 )
  [43] MEMORY[main::initNES1_i#2] = 0
  [44] (MEMORY+$100)[main::initNES1_i#2] = 0
  [45] (MEMORY+$200)[main::initNES1_i#2] = 0
  [46] (MEMORY+$300)[main::initNES1_i#2] = 0
  [47] (MEMORY+$400)[main::initNES1_i#2] = 0
  [48] (MEMORY+$500)[main::initNES1_i#2] = 0
  [49] (MEMORY+$600)[main::initNES1_i#2] = 0
  [50] (MEMORY+$700)[main::initNES1_i#2] = 0
  [51] main::initNES1_i#1 = ++ main::initNES1_i#2
  [52] if(0!=main::initNES1_i#1) goto main::initNES1_@1
  to:main::initNES1_waitForVBlank2
main::initNES1_waitForVBlank2: scope:[main]  from main::initNES1_@1
  [53] phi()
  to:main::initNES1_waitForVBlank2_@1
main::initNES1_waitForVBlank2_@1: scope:[main]  from main::initNES1_waitForVBlank2 main::initNES1_waitForVBlank2_@1
  [54] main::initNES1_waitForVBlank2_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80
  [55] if(0==main::initNES1_waitForVBlank2_$0) goto main::initNES1_waitForVBlank2_@1
  to:main::initNES1_@7
main::initNES1_@7: scope:[main]  from main::initNES1_waitForVBlank2_@1
  asm { ldaPPU_PPUSTATUS  }
  to:main::@6
main::@6: scope:[main]  from main::initNES1_@7
  [57] phi()
  [58] call ppuDataTransfer
  to:main::@12
main::@12: scope:[main]  from main::@6
  [59] phi()
  [60] call ppuDataFill
  to:main::@13
main::@13: scope:[main]  from main::@12
  [61] phi()
  [62] call ppuDataFill
  to:main::@14
main::@14: scope:[main]  from main::@13
  [63] phi()
  [64] call clrscr
  to:main::screensizex1
main::screensizex1: scope:[main]  from main::@14 main::@15
  [65] main::x#10 = phi( main::@14/1, main::@15/main::x#1 )
  to:main::@7
main::@7: scope:[main]  from main::screensizex1
  [66] if(main::x#10<main::screensizex1_return#0-1) goto main::@1
  to:main::screensizey2
main::screensizey2: scope:[main]  from main::@16 main::@7
  [67] main::y#10 = phi( main::@7/1, main::@16/main::y#1 )
  to:main::@9
main::@9: scope:[main]  from main::screensizey2
  [68] if(main::y#10<main::screensizey2_return#0-3) goto main::@2
  to:main::screensizey3
main::screensizey3: scope:[main]  from main::@18 main::@9
  [69] main::i#2 = phi( main::@18/main::i#1, main::@9/0 )
  to:main::@11
main::@11: scope:[main]  from main::screensizey3
  [70] if(main::i#2<main::screensizey3_return#0) goto main::@3
  to:main::@4
main::@4: scope:[main]  from main::@11
  [71] x_scroll = 0
  [72] y_scroll = -8
  to:main::enableVideoOutput1
main::enableVideoOutput1: scope:[main]  from main::@4
  [73] *((char *)PPU) = $80
  [74] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = $1e
  to:main::@5
main::@5: scope:[main]  from main::@5 main::enableVideoOutput1
  [75] phi()
  to:main::@5
main::@3: scope:[main]  from main::@11
  [76] uctoa::value#1 = main::i#2 & $f
  [77] call uctoa
  to:main::@17
main::@17: scope:[main]  from main::@3
  [78] cputsxy::x#0 = main::i#2
  [79] cputsxy::y#0 = main::i#2
  [80] call cputsxy
  to:main::@18
main::@18: scope:[main]  from main::@17
  [81] main::i#1 = ++ main::i#2
  to:main::screensizey3
main::@2: scope:[main]  from main::@9
  [82] cputcxy::y#2 = main::y#10
  [83] call cputcxy
  to:main::screensizex2
main::screensizex2: scope:[main]  from main::@2
  [84] phi()
  to:main::@10
main::@10: scope:[main]  from main::screensizex2
  [85] cputcxy::y#3 = main::y#10
  [86] call cputcxy
  to:main::@16
main::@16: scope:[main]  from main::@10
  [87] main::y#1 = ++ main::y#10
  to:main::screensizey2
main::@1: scope:[main]  from main::@7
  [88] cputcxy::x#0 = main::x#10
  [89] call cputcxy
  to:main::screensizey1
main::screensizey1: scope:[main]  from main::@1
  [90] phi()
  to:main::@8
main::@8: scope:[main]  from main::screensizey1
  [91] cputcxy::x#1 = main::x#10
  [92] call cputcxy
  to:main::@15
main::@15: scope:[main]  from main::@8
  [93] main::x#1 = ++ main::x#10
  to:main::screensizex1

char readJoy1()
readJoy1: scope:[readJoy1]  from vblank
  [94] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 1
  [95] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 0
  to:readJoy1::@1
readJoy1::@1: scope:[readJoy1]  from readJoy1 readJoy1::@2
  [96] readJoy1::joy#2 = phi( readJoy1/0, readJoy1::@2/readJoy1::joy#1 )
  [96] readJoy1::i#2 = phi( readJoy1/0, readJoy1::@2/readJoy1::i#1 )
  [97] if(readJoy1::i#2<8) goto readJoy1::@2
  to:readJoy1::@return
readJoy1::@return: scope:[readJoy1]  from readJoy1::@1
  [98] return 
  to:@return
readJoy1::@2: scope:[readJoy1]  from readJoy1::@1
  [99] readJoy1::$1 = readJoy1::joy#2 << 1
  [100] readJoy1::$2 = *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) & 1
  [101] readJoy1::joy#1 = readJoy1::$1 | readJoy1::$2
  [102] readJoy1::i#1 = ++ readJoy1::i#2
  to:readJoy1::@1

void ppuDataTransfer(void * const ppuData , void * const cpuData , unsigned int size)
ppuDataTransfer: scope:[ppuDataTransfer]  from cscroll::@4 main::@6
  [103] ppuDataTransfer::size#3 = phi( cscroll::@4/$20, main::@6/$20*SIZEOF_CHAR )
  [103] ppuDataTransfer::cpuData#2 = phi( cscroll::@4/(void * const )conio_cscroll_buffer, main::@6/(void * const )PALETTE )
  [103] ppuDataTransfer::ppuDataPrepare1_ppuData#0 = phi( cscroll::@4/ppuDataTransfer::ppuData#0, main::@6/(void * const )PPU_PALETTE )
  to:ppuDataTransfer::ppuDataPrepare1
ppuDataTransfer::ppuDataPrepare1: scope:[ppuDataTransfer]  from ppuDataTransfer
  [104] ppuDataTransfer::ppuDataPrepare1_$0 = byte1  ppuDataTransfer::ppuDataPrepare1_ppuData#0
  [105] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataTransfer::ppuDataPrepare1_$0
  [106] ppuDataTransfer::ppuDataPrepare1_$1 = byte0  ppuDataTransfer::ppuDataPrepare1_ppuData#0
  [107] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataTransfer::ppuDataPrepare1_$1
  to:ppuDataTransfer::@3
ppuDataTransfer::@3: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPrepare1
  [108] ppuDataTransfer::cpuSrc#6 = (char *)ppuDataTransfer::cpuData#2
  to:ppuDataTransfer::@1
ppuDataTransfer::@1: scope:[ppuDataTransfer]  from ppuDataTransfer::@3 ppuDataTransfer::@4
  [109] ppuDataTransfer::cpuSrc#2 = phi( ppuDataTransfer::@3/ppuDataTransfer::cpuSrc#6, ppuDataTransfer::@4/ppuDataTransfer::cpuSrc#1 )
  [109] ppuDataTransfer::i#2 = phi( ppuDataTransfer::@3/0, ppuDataTransfer::@4/ppuDataTransfer::i#1 )
  [110] if(ppuDataTransfer::i#2<ppuDataTransfer::size#3) goto ppuDataTransfer::@2
  to:ppuDataTransfer::@return
ppuDataTransfer::@return: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
  [111] return 
  to:@return
ppuDataTransfer::@2: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
  [112] ppuDataTransfer::ppuDataPut1_val#0 = *ppuDataTransfer::cpuSrc#2
  to:ppuDataTransfer::ppuDataPut1
ppuDataTransfer::ppuDataPut1: scope:[ppuDataTransfer]  from ppuDataTransfer::@2
  [113] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataTransfer::ppuDataPut1_val#0
  to:ppuDataTransfer::@4
ppuDataTransfer::@4: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPut1
  [114] ppuDataTransfer::cpuSrc#1 = ++ ppuDataTransfer::cpuSrc#2
  [115] ppuDataTransfer::i#1 = ++ ppuDataTransfer::i#2
  to:ppuDataTransfer::@1

void ppuDataFill(void * const ppuData , char val , unsigned int size)
ppuDataFill: scope:[ppuDataFill]  from clrscr cscroll::@3 main::@12 main::@13
  [116] ppuDataFill::val#10 = phi( clrscr/' ', cscroll::@3/' ', main::@12/0, main::@13/0 )
  [116] ppuDataFill::size#5 = phi( clrscr/$3c0, cscroll::@3/$20, main::@12/$40, main::@13/$40 )
  [116] ppuDataFill::ppuDataPrepare1_ppuData#0 = phi( clrscr/(void * const )PPU_NAME_TABLE_0, cscroll::@3/(void * const )PPU_NAME_TABLE_0+(unsigned int)$1e*$20-$20, main::@12/(void * const )PPU_ATTRIBUTE_TABLE_0, main::@13/(void * const )PPU_ATTRIBUTE_TABLE_1 )
  to:ppuDataFill::ppuDataPrepare1
ppuDataFill::ppuDataPrepare1: scope:[ppuDataFill]  from ppuDataFill
  [117] ppuDataFill::ppuDataPrepare1_$0 = byte1  ppuDataFill::ppuDataPrepare1_ppuData#0
  [118] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFill::ppuDataPrepare1_$0
  [119] ppuDataFill::ppuDataPrepare1_$1 = byte0  ppuDataFill::ppuDataPrepare1_ppuData#0
  [120] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFill::ppuDataPrepare1_$1
  to:ppuDataFill::@1
ppuDataFill::@1: scope:[ppuDataFill]  from ppuDataFill::@2 ppuDataFill::ppuDataPrepare1
  [121] ppuDataFill::i#2 = phi( ppuDataFill::ppuDataPrepare1/0, ppuDataFill::@2/ppuDataFill::i#1 )
  [122] if(ppuDataFill::i#2<ppuDataFill::size#5) goto ppuDataFill::ppuDataPut1
  to:ppuDataFill::@return
ppuDataFill::@return: scope:[ppuDataFill]  from ppuDataFill::@1
  [123] return 
  to:@return
ppuDataFill::ppuDataPut1: scope:[ppuDataFill]  from ppuDataFill::@1
  [124] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataFill::val#10
  to:ppuDataFill::@2
ppuDataFill::@2: scope:[ppuDataFill]  from ppuDataFill::ppuDataPut1
  [125] ppuDataFill::i#1 = ++ ppuDataFill::i#2
  to:ppuDataFill::@1

void clrscr()
clrscr: scope:[clrscr]  from main::@14
  [126] phi()
  [127] call ppuDataFill
  to:clrscr::@1
clrscr::@1: scope:[clrscr]  from clrscr
  [128] conio_cursor_x = 0
  [129] conio_cursor_y = 0
  [130] conio_line_text = PPU_NAME_TABLE_0
  to:clrscr::@return
clrscr::@return: scope:[clrscr]  from clrscr::@1
  [131] return 
  to:@return

void uctoa(char value , char *buffer , char radix)
uctoa: scope:[uctoa]  from main::@3
  [132] phi()
  to:uctoa::@1
uctoa::@1: scope:[uctoa]  from uctoa uctoa::@4
  [133] uctoa::buffer#11 = phi( uctoa::@4/uctoa::buffer#14, uctoa/num_buffer )
  [133] uctoa::started#2 = phi( uctoa::@4/uctoa::started#4, uctoa/0 )
  [133] uctoa::value#2 = phi( uctoa::@4/uctoa::value#6, uctoa/uctoa::value#1 )
  [133] uctoa::digit#2 = phi( uctoa::@4/uctoa::digit#1, uctoa/0 )
  [134] if(uctoa::digit#2<uctoa::max_digits#2-1) goto uctoa::@2
  to:uctoa::@3
uctoa::@3: scope:[uctoa]  from uctoa::@1
  [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2]
  [136] uctoa::buffer#3 = ++ uctoa::buffer#11
  [137] *uctoa::buffer#3 = 0
  to:uctoa::@return
uctoa::@return: scope:[uctoa]  from uctoa::@3
  [138] return 
  to:@return
uctoa::@2: scope:[uctoa]  from uctoa::@1
  [139] uctoa::digit_value#0 = RADIX_HEXADECIMAL_VALUES_CHAR[uctoa::digit#2]
  [140] if(0!=uctoa::started#2) goto uctoa::@5
  to:uctoa::@7
uctoa::@7: scope:[uctoa]  from uctoa::@2
  [141] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5
  to:uctoa::@4
uctoa::@4: scope:[uctoa]  from uctoa::@6 uctoa::@7
  [142] uctoa::buffer#14 = phi( uctoa::@7/uctoa::buffer#11, uctoa::@6/uctoa::buffer#4 )
  [142] uctoa::started#4 = phi( uctoa::@7/uctoa::started#2, uctoa::@6/1 )
  [142] uctoa::value#6 = phi( uctoa::@7/uctoa::value#2, uctoa::@6/uctoa::value#0 )
  [143] uctoa::digit#1 = ++ uctoa::digit#2
  to:uctoa::@1
uctoa::@5: scope:[uctoa]  from uctoa::@2 uctoa::@7
  [144] uctoa_append::buffer#0 = uctoa::buffer#11
  [145] uctoa_append::value#0 = uctoa::value#2
  [146] uctoa_append::sub#0 = uctoa::digit_value#0
  [147] call uctoa_append
  [148] uctoa_append::return#0 = uctoa_append::value#2
  to:uctoa::@6
uctoa::@6: scope:[uctoa]  from uctoa::@5
  [149] uctoa::value#0 = uctoa_append::return#0
  [150] uctoa::buffer#4 = ++ uctoa::buffer#11
  to:uctoa::@4

void cputsxy(char x , char y , const char *s)
cputsxy: scope:[cputsxy]  from main::@17
  [151] gotoxy::x#2 = cputsxy::x#0
  [152] gotoxy::y#2 = cputsxy::y#0
  [153] call gotoxy
  to:cputsxy::@1
cputsxy::@1: scope:[cputsxy]  from cputsxy
  [154] phi()
  [155] call cputs
  to:cputsxy::@return
cputsxy::@return: scope:[cputsxy]  from cputsxy::@1
  [156] return 
  to:@return

void cputcxy(char x , char y , char c)
cputcxy: scope:[cputcxy]  from main::@1 main::@10 main::@2 main::@8
  [157] cputcxy::c#4 = phi( main::@1/'-', main::@8/'-', main::@10/'i', main::@2/'i' )
  [157] cputcxy::y#4 = phi( main::@1/1, main::@8/main::screensizey1_return#0-4, main::@10/cputcxy::y#3, main::@2/cputcxy::y#2 )
  [157] cputcxy::x#4 = phi( main::@1/cputcxy::x#0, main::@8/cputcxy::x#1, main::@10/main::screensizex2_return#0-2, main::@2/1 )
  [158] gotoxy::x#1 = cputcxy::x#4
  [159] gotoxy::y#1 = cputcxy::y#4
  [160] call gotoxy
  to:cputcxy::@1
cputcxy::@1: scope:[cputcxy]  from cputcxy
  [161] cputc::c#0 = cputcxy::c#4
  [162] call cputc
  to:cputcxy::@return
cputcxy::@return: scope:[cputcxy]  from cputcxy::@1
  [163] return 
  to:@return

char uctoa_append(char *buffer , char value , char sub)
uctoa_append: scope:[uctoa_append]  from uctoa::@5
  [164] phi()
  to:uctoa_append::@1
uctoa_append::@1: scope:[uctoa_append]  from uctoa_append uctoa_append::@2
  [165] uctoa_append::digit#2 = phi( uctoa_append/0, uctoa_append::@2/uctoa_append::digit#1 )
  [165] uctoa_append::value#2 = phi( uctoa_append/uctoa_append::value#0, uctoa_append::@2/uctoa_append::value#1 )
  [166] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2
  to:uctoa_append::@3
uctoa_append::@3: scope:[uctoa_append]  from uctoa_append::@1
  [167] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2]
  to:uctoa_append::@return
uctoa_append::@return: scope:[uctoa_append]  from uctoa_append::@3
  [168] return 
  to:@return
uctoa_append::@2: scope:[uctoa_append]  from uctoa_append::@1
  [169] uctoa_append::digit#1 = ++ uctoa_append::digit#2
  [170] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0
  to:uctoa_append::@1

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from cputcxy cputsxy
  [171] gotoxy::x#4 = phi( cputcxy/gotoxy::x#1, cputsxy/gotoxy::x#2 )
  [171] gotoxy::y#4 = phi( cputcxy/gotoxy::y#1, cputsxy/gotoxy::y#2 )
  [172] if(gotoxy::y#4<$1e+1) goto gotoxy::@3
  to:gotoxy::@1
gotoxy::@3: scope:[gotoxy]  from gotoxy
  [173] phi()
  to:gotoxy::@1
gotoxy::@1: scope:[gotoxy]  from gotoxy gotoxy::@3
  [174] gotoxy::y#5 = phi( gotoxy::@3/gotoxy::y#4, gotoxy/0 )
  [175] if(gotoxy::x#4<$20) goto gotoxy::@4
  to:gotoxy::@2
gotoxy::@4: scope:[gotoxy]  from gotoxy::@1
  [176] phi()
  to:gotoxy::@2
gotoxy::@2: scope:[gotoxy]  from gotoxy::@1 gotoxy::@4
  [177] gotoxy::x#5 = phi( gotoxy::@4/gotoxy::x#4, gotoxy::@1/0 )
  [178] conio_cursor_x = gotoxy::x#5
  [179] conio_cursor_y = gotoxy::y#5
  [180] gotoxy::$6 = (unsigned int)gotoxy::y#5
  [181] gotoxy::line_offset#0 = gotoxy::$6 << 5
  [182] gotoxy::$5 = PPU_NAME_TABLE_0 + gotoxy::line_offset#0
  [183] conio_line_text = gotoxy::$5
  to:gotoxy::@return
gotoxy::@return: scope:[gotoxy]  from gotoxy::@2
  [184] return 
  to:@return

void cputs(const char *s)
cputs: scope:[cputs]  from cputsxy::@1
  [185] phi()
  to:cputs::@1
cputs::@1: scope:[cputs]  from cputs cputs::@2
  [186] cputs::s#2 = phi( cputs/num_buffer, cputs::@2/cputs::s#0 )
  [187] cputs::c#1 = *cputs::s#2
  [188] cputs::s#0 = ++ cputs::s#2
  [189] if(0!=cputs::c#1) goto cputs::@2
  to:cputs::@return
cputs::@return: scope:[cputs]  from cputs::@1
  [190] return 
  to:@return
cputs::@2: scope:[cputs]  from cputs::@1
  [191] cputc::c#1 = cputs::c#1
  [192] call cputc
  to:cputs::@1

void cputc(char c)
cputc: scope:[cputc]  from cputcxy::@1 cputs::@2
  [193] cputc::c#2 = phi( cputcxy::@1/cputc::c#0, cputs::@2/cputc::c#1 )
  [194] if(cputc::c#2=='
') goto cputc::@1
  to:cputc::@2
cputc::@2: scope:[cputc]  from cputc
  [195] ppuDataSet::ppuData#0 = conio_line_text + conio_cursor_x
  [196] ppuDataSet::val#0 = cputc::c#2
  [197] call ppuDataSet
  to:cputc::@4
cputc::@4: scope:[cputc]  from cputc::@2
  [198] conio_cursor_x = ++ conio_cursor_x
  [199] if(conio_cursor_x!=$20) goto cputc::@return
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc::@4
  [200] phi()
  [201] call cputln
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@1 cputc::@3 cputc::@4
  [202] return 
  to:@return
cputc::@1: scope:[cputc]  from cputc
  [203] phi()
  [204] call cputln
  to:cputc::@return

void ppuDataSet(void * const ppuData , char val)
ppuDataSet: scope:[ppuDataSet]  from cputc::@2
  [205] phi()
  to:ppuDataSet::ppuDataPrepare1
ppuDataSet::ppuDataPrepare1: scope:[ppuDataSet]  from ppuDataSet
  [206] ppuDataSet::ppuDataPrepare1_$0 = byte1  (void * const )ppuDataSet::ppuData#0
  [207] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataSet::ppuDataPrepare1_$0
  [208] ppuDataSet::ppuDataPrepare1_$1 = byte0  (void * const )ppuDataSet::ppuData#0
  [209] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataSet::ppuDataPrepare1_$1
  to:ppuDataSet::ppuDataPut1
ppuDataSet::ppuDataPut1: scope:[ppuDataSet]  from ppuDataSet::ppuDataPrepare1
  [210] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataSet::val#0
  to:ppuDataSet::@return
ppuDataSet::@return: scope:[ppuDataSet]  from ppuDataSet::ppuDataPut1
  [211] return 
  to:@return

void cputln()
cputln: scope:[cputln]  from cputc::@1 cputc::@3
  [212] conio_line_text = conio_line_text + $20
  [213] conio_cursor_x = 0
  [214] conio_cursor_y = ++ conio_cursor_y
  [215] call cscroll
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln
  [216] return 
  to:@return

void cscroll()
cscroll: scope:[cscroll]  from cputln
  [217] if(conio_cursor_y!=$1e) goto cscroll::@return
  to:cscroll::@1
cscroll::@1: scope:[cscroll]  from cscroll cscroll::@5
  [218] cscroll::line1#2 = phi( cscroll/PPU_NAME_TABLE_0, cscroll::@5/cscroll::line1#1 )
  [218] cscroll::line2#2 = phi( cscroll/PPU_NAME_TABLE_0+$20, cscroll::@5/cscroll::line2#1 )
  [218] cscroll::y#2 = phi( cscroll/0, cscroll::@5/cscroll::y#1 )
  [219] if(cscroll::y#2<$1e-1) goto cscroll::@2
  to:cscroll::@3
cscroll::@3: scope:[cscroll]  from cscroll::@1
  [220] phi()
  [221] call ppuDataFill
  to:cscroll::@6
cscroll::@6: scope:[cscroll]  from cscroll::@3
  [222] conio_line_text = conio_line_text - $20
  [223] conio_cursor_y = -- conio_cursor_y
  to:cscroll::@return
cscroll::@return: scope:[cscroll]  from cscroll cscroll::@6
  [224] return 
  to:@return
cscroll::@2: scope:[cscroll]  from cscroll::@1
  [225] ppuDataFetch::ppuData#0 = (void * const )cscroll::line2#2
  [226] call ppuDataFetch
  to:cscroll::@4
cscroll::@4: scope:[cscroll]  from cscroll::@2
  [227] ppuDataTransfer::ppuData#0 = (void * const )cscroll::line1#2
  [228] call ppuDataTransfer
  to:cscroll::@5
cscroll::@5: scope:[cscroll]  from cscroll::@4
  [229] cscroll::line1#1 = cscroll::line1#2 + $20
  [230] cscroll::line2#1 = cscroll::line2#2 + $20
  [231] cscroll::y#1 = ++ cscroll::y#2
  to:cscroll::@1

void ppuDataFetch(void * const cpuData , void * const ppuData , unsigned int size)
ppuDataFetch: scope:[ppuDataFetch]  from cscroll::@2
  [232] phi()
  to:ppuDataFetch::ppuDataPrepare1
ppuDataFetch::ppuDataPrepare1: scope:[ppuDataFetch]  from ppuDataFetch
  [233] ppuDataFetch::ppuDataPrepare1_$0 = byte1  ppuDataFetch::ppuData#0
  [234] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFetch::ppuDataPrepare1_$0
  [235] ppuDataFetch::ppuDataPrepare1_$1 = byte0  ppuDataFetch::ppuData#0
  [236] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFetch::ppuDataPrepare1_$1
  to:ppuDataFetch::@2
ppuDataFetch::@2: scope:[ppuDataFetch]  from ppuDataFetch::ppuDataPrepare1
  asm { ldaPPU_PPUDATA  }
  to:ppuDataFetch::@1
ppuDataFetch::@1: scope:[ppuDataFetch]  from ppuDataFetch::@2 ppuDataFetch::@3
  [238] ppuDataFetch::cpuDst#2 = phi( ppuDataFetch::@2/(char *)ppuDataFetch::cpuData#0, ppuDataFetch::@3/ppuDataFetch::cpuDst#1 )
  [238] ppuDataFetch::i#2 = phi( ppuDataFetch::@2/0, ppuDataFetch::@3/ppuDataFetch::i#1 )
  [239] if(ppuDataFetch::i#2<ppuDataFetch::size#0) goto ppuDataFetch::ppuDataRead1
  to:ppuDataFetch::@return
ppuDataFetch::@return: scope:[ppuDataFetch]  from ppuDataFetch::@1
  [240] return 
  to:@return
ppuDataFetch::ppuDataRead1: scope:[ppuDataFetch]  from ppuDataFetch::@1
  [241] ppuDataFetch::ppuDataRead1_return#0 = *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA)
  to:ppuDataFetch::@3
ppuDataFetch::@3: scope:[ppuDataFetch]  from ppuDataFetch::ppuDataRead1
  [242] *ppuDataFetch::cpuDst#2 = ppuDataFetch::ppuDataRead1_return#0
  [243] ppuDataFetch::cpuDst#1 = ++ ppuDataFetch::cpuDst#2
  [244] ppuDataFetch::i#1 = ++ ppuDataFetch::i#2
  to:ppuDataFetch::@1
