
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 = DEFAULT_SCREEN
  [4] conio_line_color = COLORRAM
  [5] call conio_c64_init
  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

void conio_c64_init()
conio_c64_init: scope:[conio_c64_init]  from __start::__init1
  [9] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
  [10] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2
  to:conio_c64_init::@1
conio_c64_init::@2: scope:[conio_c64_init]  from conio_c64_init
  [11] phi()
  to:conio_c64_init::@1
conio_c64_init::@1: scope:[conio_c64_init]  from conio_c64_init conio_c64_init::@2
  [12] conio_c64_init::line#2 = phi( conio_c64_init::@2/conio_c64_init::line#0, conio_c64_init/$19-1 )
  [13] gotoxy::y#2 = conio_c64_init::line#2
  [14] call gotoxy
  to:conio_c64_init::@return
conio_c64_init::@return: scope:[conio_c64_init]  from conio_c64_init::@1
  [15] return 
  to:@return

__stackcall void cputc(char c)
cputc: scope:[cputc]  from printf_number_buffer::@3 printf_str::@2
  [16] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C)
  [17] if(cputc::c#0=='
') goto cputc::@1
  to:cputc::@2
cputc::@2: scope:[cputc]  from cputc
  [18] conio_line_text[conio_cursor_x] = cputc::c#0
  [19] conio_line_color[conio_cursor_x] = LIGHT_BLUE
  [20] conio_cursor_x = ++ conio_cursor_x
  [21] if(conio_cursor_x!=$28) goto cputc::@return
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc::@2
  [22] phi()
  [23] call cputln
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@1 cputc::@2 cputc::@3
  [24] return 
  to:@return
cputc::@1: scope:[cputc]  from cputc
  [25] phi()
  [26] call cputln
  to:cputc::@return

void main()
main: scope:[main]  from __start::@1
  [27] phi()
  [28] call clrscr
  to:main::@1
main::@1: scope:[main]  from main
  [29] phi()
  [30] call printf_uchar
  to:main::@return
main::@return: scope:[main]  from main::@1
  [31] return 
  to:@return

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from conio_c64_init::@1
  [32] if(gotoxy::y#2<$19+1) goto gotoxy::@3
  to:gotoxy::@1
gotoxy::@3: scope:[gotoxy]  from gotoxy
  [33] phi()
  to:gotoxy::@1
gotoxy::@1: scope:[gotoxy]  from gotoxy gotoxy::@3
  [34] gotoxy::y#4 = phi( gotoxy::@3/gotoxy::y#2, gotoxy/0 )
  to:gotoxy::@2
gotoxy::@2: scope:[gotoxy]  from gotoxy::@1
  [35] conio_cursor_x = gotoxy::x#2
  [36] conio_cursor_y = gotoxy::y#4
  [37] gotoxy::$7 = (unsigned int)gotoxy::y#4
  [38] gotoxy::$8 = gotoxy::$7 << 2
  [39] gotoxy::$9 = gotoxy::$8 + gotoxy::$7
  [40] gotoxy::line_offset#0 = gotoxy::$9 << 3
  [41] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
  [42] conio_line_text = gotoxy::$5
  [43] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
  [44] conio_line_color = gotoxy::$6
  to:gotoxy::@return
gotoxy::@return: scope:[gotoxy]  from gotoxy::@2
  [45] return 
  to:@return

void cputln()
cputln: scope:[cputln]  from cputc::@1 cputc::@3
  [46] conio_line_text = conio_line_text + $28
  [47] conio_line_color = conio_line_color + $28
  [48] conio_cursor_x = 0
  [49] conio_cursor_y = ++ conio_cursor_y
  [50] call cscroll
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln
  [51] return 
  to:@return

void clrscr()
clrscr: scope:[clrscr]  from main
  [52] phi()
  to:clrscr::@1
clrscr::@1: scope:[clrscr]  from clrscr clrscr::@5
  [53] clrscr::line_cols#5 = phi( clrscr/COLORRAM, clrscr::@5/clrscr::line_cols#1 )
  [53] clrscr::line_text#5 = phi( clrscr/DEFAULT_SCREEN, clrscr::@5/clrscr::line_text#1 )
  [53] clrscr::l#2 = phi( clrscr/0, clrscr::@5/clrscr::l#1 )
  [54] if(clrscr::l#2<$19) goto clrscr::@3
  to:clrscr::@2
clrscr::@2: scope:[clrscr]  from clrscr::@1
  [55] conio_cursor_x = 0
  [56] conio_cursor_y = 0
  [57] conio_line_text = DEFAULT_SCREEN
  [58] conio_line_color = COLORRAM
  to:clrscr::@return
clrscr::@return: scope:[clrscr]  from clrscr::@2
  [59] return 
  to:@return
clrscr::@3: scope:[clrscr]  from clrscr::@1 clrscr::@4
  [60] clrscr::c#2 = phi( clrscr::@1/0, clrscr::@4/clrscr::c#1 )
  [61] if(clrscr::c#2<$28) goto clrscr::@4
  to:clrscr::@5
clrscr::@5: scope:[clrscr]  from clrscr::@3
  [62] clrscr::line_text#1 = clrscr::line_text#5 + $28
  [63] clrscr::line_cols#1 = clrscr::line_cols#5 + $28
  [64] clrscr::l#1 = ++ clrscr::l#2
  to:clrscr::@1
clrscr::@4: scope:[clrscr]  from clrscr::@3
  [65] clrscr::line_text#5[clrscr::c#2] = ' '
  [66] clrscr::line_cols#5[clrscr::c#2] = LIGHT_BLUE
  [67] clrscr::c#1 = ++ clrscr::c#2
  to:clrscr::@3

void printf_uchar(void (*putc)(char) , char uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
printf_uchar: scope:[printf_uchar]  from main::@1
  [68] phi()
  to:printf_uchar::@1
printf_uchar::@1: scope:[printf_uchar]  from printf_uchar
  [69] *((char *)&printf_buffer) = 0
  [70] call uctoa
  to:printf_uchar::@2
printf_uchar::@2: scope:[printf_uchar]  from printf_uchar::@1
  [71] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer)
  [72] call printf_number_buffer
  to:printf_uchar::@return
printf_uchar::@return: scope:[printf_uchar]  from printf_uchar::@2
  [73] return 
  to:@return

void cscroll()
cscroll: scope:[cscroll]  from cputln
  [74] if(conio_cursor_y!=$19) goto cscroll::@return
  to:cscroll::@1
cscroll::@1: scope:[cscroll]  from cscroll
  [75] phi()
  [76] call memcpy
  to:cscroll::@2
cscroll::@2: scope:[cscroll]  from cscroll::@1
  [77] phi()
  [78] call memcpy
  to:cscroll::@3
cscroll::@3: scope:[cscroll]  from cscroll::@2
  [79] phi()
  [80] call memset
  to:cscroll::@4
cscroll::@4: scope:[cscroll]  from cscroll::@3
  [81] phi()
  [82] call memset
  to:cscroll::@5
cscroll::@5: scope:[cscroll]  from cscroll::@4
  [83] conio_line_text = conio_line_text - $28
  [84] conio_line_color = conio_line_color - $28
  [85] conio_cursor_y = -- conio_cursor_y
  to:cscroll::@return
cscroll::@return: scope:[cscroll]  from cscroll cscroll::@5
  [86] return 
  to:@return

void uctoa(char value , char *buffer , char radix)
uctoa: scope:[uctoa]  from printf_uchar::@1
  [87] phi()
  to:uctoa::@1
uctoa::@1: scope:[uctoa]  from uctoa uctoa::@4
  [88] uctoa::buffer#11 = phi( uctoa::@4/uctoa::buffer#14, uctoa/(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
  [88] uctoa::started#2 = phi( uctoa::@4/uctoa::started#4, uctoa/0 )
  [88] uctoa::value#2 = phi( uctoa::@4/uctoa::value#6, uctoa/main::c )
  [88] uctoa::digit#2 = phi( uctoa::@4/uctoa::digit#1, uctoa/0 )
  [89] if(uctoa::digit#2<uctoa::max_digits#1-1) goto uctoa::@2
  to:uctoa::@3
uctoa::@3: scope:[uctoa]  from uctoa::@1
  [90] *uctoa::buffer#11 = DIGITS[uctoa::value#2]
  [91] uctoa::buffer#3 = ++ uctoa::buffer#11
  [92] *uctoa::buffer#3 = 0
  to:uctoa::@return
uctoa::@return: scope:[uctoa]  from uctoa::@3
  [93] return 
  to:@return
uctoa::@2: scope:[uctoa]  from uctoa::@1
  [94] uctoa::digit_value#0 = RADIX_DECIMAL_VALUES_CHAR[uctoa::digit#2]
  [95] if(0!=uctoa::started#2) goto uctoa::@5
  to:uctoa::@7
uctoa::@7: scope:[uctoa]  from uctoa::@2
  [96] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5
  to:uctoa::@4
uctoa::@4: scope:[uctoa]  from uctoa::@6 uctoa::@7
  [97] uctoa::buffer#14 = phi( uctoa::@7/uctoa::buffer#11, uctoa::@6/uctoa::buffer#4 )
  [97] uctoa::started#4 = phi( uctoa::@7/uctoa::started#2, uctoa::@6/1 )
  [97] uctoa::value#6 = phi( uctoa::@7/uctoa::value#2, uctoa::@6/uctoa::value#0 )
  [98] uctoa::digit#1 = ++ uctoa::digit#2
  to:uctoa::@1
uctoa::@5: scope:[uctoa]  from uctoa::@2 uctoa::@7
  [99] uctoa_append::buffer#0 = uctoa::buffer#11
  [100] uctoa_append::value#0 = uctoa::value#2
  [101] uctoa_append::sub#0 = uctoa::digit_value#0
  [102] call uctoa_append
  [103] uctoa_append::return#0 = uctoa_append::value#2
  to:uctoa::@6
uctoa::@6: scope:[uctoa]  from uctoa::@5
  [104] uctoa::value#0 = uctoa_append::return#0
  [105] uctoa::buffer#4 = ++ uctoa::buffer#11
  to:uctoa::@4

void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
printf_number_buffer: scope:[printf_number_buffer]  from printf_uchar::@2
  [106] phi()
  to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer]  from printf_number_buffer
  [107] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@2
  to:printf_number_buffer::@3
printf_number_buffer::@3: scope:[printf_number_buffer]  from printf_number_buffer::@1
  [108] stackpush(char) = printf_number_buffer::buffer_sign#0
  [109] callexecute cputc 
  sideeffect stackpullbytes(1)
  to:printf_number_buffer::@2
printf_number_buffer::@2: scope:[printf_number_buffer]  from printf_number_buffer::@1 printf_number_buffer::@3
  [111] phi()
  [112] call printf_str
  to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer]  from printf_number_buffer::@2
  [113] return 
  to:@return

void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy]  from cscroll::@1 cscroll::@2
  [114] memcpy::destination#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN, cscroll::@2/(void *)COLORRAM )
  [114] memcpy::source#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN+$28, cscroll::@2/(void *)COLORRAM+$28 )
  [115] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28
  [116] memcpy::src#4 = (char *)memcpy::source#2
  [117] memcpy::dst#4 = (char *)memcpy::destination#2
  to:memcpy::@1
memcpy::@1: scope:[memcpy]  from memcpy memcpy::@2
  [118] memcpy::dst#2 = phi( memcpy/memcpy::dst#4, memcpy::@2/memcpy::dst#1 )
  [118] memcpy::src#2 = phi( memcpy/memcpy::src#4, memcpy::@2/memcpy::src#1 )
  [119] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
  to:memcpy::@return
memcpy::@return: scope:[memcpy]  from memcpy::@1
  [120] return 
  to:@return
memcpy::@2: scope:[memcpy]  from memcpy::@1
  [121] *memcpy::dst#2 = *memcpy::src#2
  [122] memcpy::dst#1 = ++ memcpy::dst#2
  [123] memcpy::src#1 = ++ memcpy::src#2
  to:memcpy::@1

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from cscroll::@3 cscroll::@4
  [124] memset::c#4 = phi( cscroll::@3/' ', cscroll::@4/LIGHT_BLUE )
  [124] memset::str#3 = phi( cscroll::@3/(void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28, cscroll::@4/(void *)COLORRAM+(unsigned int)$19*$28-$28 )
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [125] memset::end#0 = (char *)memset::str#3 + $28
  [126] memset::dst#4 = (char *)memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [127] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [128] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset::@2
  [129] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [130] *memset::dst#2 = memset::c#4
  [131] memset::dst#1 = ++ memset::dst#2
  to:memset::@2

char uctoa_append(char *buffer , char value , char sub)
uctoa_append: scope:[uctoa_append]  from uctoa::@5
  [132] phi()
  to:uctoa_append::@1
uctoa_append::@1: scope:[uctoa_append]  from uctoa_append uctoa_append::@2
  [133] uctoa_append::digit#2 = phi( uctoa_append/0, uctoa_append::@2/uctoa_append::digit#1 )
  [133] uctoa_append::value#2 = phi( uctoa_append/uctoa_append::value#0, uctoa_append::@2/uctoa_append::value#1 )
  [134] 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
  [135] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2]
  to:uctoa_append::@return
uctoa_append::@return: scope:[uctoa_append]  from uctoa_append::@3
  [136] return 
  to:@return
uctoa_append::@2: scope:[uctoa_append]  from uctoa_append::@1
  [137] uctoa_append::digit#1 = ++ uctoa_append::digit#2
  [138] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0
  to:uctoa_append::@1

void printf_str(void (*putc)(char) , const char *s)
printf_str: scope:[printf_str]  from printf_number_buffer::@2
  [139] phi()
  to:printf_str::@1
printf_str::@1: scope:[printf_str]  from printf_str printf_str::@2
  [140] printf_str::s#2 = phi( printf_str/printf_number_buffer::buffer_digits#0, printf_str::@2/printf_str::s#0 )
  [141] printf_str::c#1 = *printf_str::s#2
  [142] printf_str::s#0 = ++ printf_str::s#2
  [143] if(0!=printf_str::c#1) goto printf_str::@2
  to:printf_str::@return
printf_str::@return: scope:[printf_str]  from printf_str::@1
  [144] return 
  to:@return
printf_str::@2: scope:[printf_str]  from printf_str::@1
  [145] stackpush(char) = printf_str::c#1
  [146] callexecute cputc 
  sideeffect stackpullbytes(1)
  to:printf_str::@1
