
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] __snprintf_capacity = 0
  [6] __snprintf_size = 0
  [7] __snprintf_buffer = (char *) 0
  [8] call conio_c64_init
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  [9] phi()
  [10] call main
  to:__start::@return
__start::@return: scope:[__start]  from __start::@1
  [11] return 
  to:@return

__stackcall void snputc(char c)
snputc: scope:[snputc]  from
  [12] snputc::c#0 = stackidx(char,snputc::OFFSET_STACK_C)
  [13] __snprintf_size = ++ __snprintf_size
  [14] if(__snprintf_size<=__snprintf_capacity) goto snputc::@1
  to:snputc::@return
snputc::@return: scope:[snputc]  from snputc snputc::@2
  [15] return 
  to:@return
snputc::@1: scope:[snputc]  from snputc
  [16] if(__snprintf_size!=__snprintf_capacity) goto snputc::@3
  to:snputc::@2
snputc::@3: scope:[snputc]  from snputc::@1
  [17] phi()
  to:snputc::@2
snputc::@2: scope:[snputc]  from snputc::@1 snputc::@3
  [18] snputc::c#2 = phi( snputc::@3/snputc::c#0, snputc::@1/0 )
  [19] *__snprintf_buffer = snputc::c#2
  [20] __snprintf_buffer = ++ __snprintf_buffer
  to:snputc::@return

void conio_c64_init()
conio_c64_init: scope:[conio_c64_init]  from __start::__init1
  [21] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
  [22] 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
  [23] phi()
  to:conio_c64_init::@1
conio_c64_init::@1: scope:[conio_c64_init]  from conio_c64_init conio_c64_init::@2
  [24] conio_c64_init::line#2 = phi( conio_c64_init::@2/conio_c64_init::line#0, conio_c64_init/$19-1 )
  [25] gotoxy::y#2 = conio_c64_init::line#2
  [26] call gotoxy
  to:conio_c64_init::@return
conio_c64_init::@return: scope:[conio_c64_init]  from conio_c64_init::@1
  [27] return 
  to:@return

__stackcall void cputc(char c)
cputc: scope:[cputc]  from
  [28] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C)
  [29] if(cputc::c#0=='
') goto cputc::@1
  to:cputc::@2
cputc::@2: scope:[cputc]  from cputc
  [30] conio_line_text[conio_cursor_x] = cputc::c#0
  [31] conio_line_color[conio_cursor_x] = LIGHT_BLUE
  [32] conio_cursor_x = ++ conio_cursor_x
  [33] if(conio_cursor_x!=$28) goto cputc::@return
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc::@2
  [34] phi()
  [35] call cputln
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@1 cputc::@2 cputc::@3
  [36] return 
  to:@return
cputc::@1: scope:[cputc]  from cputc
  [37] phi()
  [38] call cputln
  to:cputc::@return

void main()
main: scope:[main]  from __start::@1
  [39] phi()
  [40] call snprintf_init
  to:main::@1
main::@1: scope:[main]  from main
  [41] phi()
  [42] call printf_str
  to:main::@2
main::@2: scope:[main]  from main::@1
  [43] stackpush(char) = 0
  [44] callexecute snputc 
  sideeffect stackpullbytes(1)
  [46] call snprintf_init
  to:main::@3
main::@3: scope:[main]  from main::@2
  [47] phi()
  [48] call printf_str
  to:main::@4
main::@4: scope:[main]  from main::@3
  [49] phi()
  [50] call printf_string
  to:main::@5
main::@5: scope:[main]  from main::@4
  [51] stackpush(char) = '!'
  [52] callexecute snputc 
  sideeffect stackpullbytes(1)
  [54] stackpush(char) = 0
  [55] callexecute snputc 
  sideeffect stackpullbytes(1)
  [57] call printf_str
  to:main::@6
main::@6: scope:[main]  from main::@5
  [58] phi()
  [59] call printf_string
  to:main::@7
main::@7: scope:[main]  from main::@6
  [60] phi()
  [61] call printf_str
  to:main::@8
main::@8: scope:[main]  from main::@7
  [62] phi()
  [63] call printf_string
  to:main::@9
main::@9: scope:[main]  from main::@8
  [64] phi()
  [65] call printf_str
  to:main::@return
main::@return: scope:[main]  from main::@9
  [66] return 
  to:@return

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from conio_c64_init::@1
  [67] if(gotoxy::y#2<$19+1) goto gotoxy::@3
  to:gotoxy::@1
gotoxy::@3: scope:[gotoxy]  from gotoxy
  [68] phi()
  to:gotoxy::@1
gotoxy::@1: scope:[gotoxy]  from gotoxy gotoxy::@3
  [69] gotoxy::y#4 = phi( gotoxy::@3/gotoxy::y#2, gotoxy/0 )
  to:gotoxy::@2
gotoxy::@2: scope:[gotoxy]  from gotoxy::@1
  [70] conio_cursor_x = gotoxy::x#2
  [71] conio_cursor_y = gotoxy::y#4
  [72] gotoxy::$7 = (unsigned int)gotoxy::y#4
  [73] gotoxy::$8 = gotoxy::$7 << 2
  [74] gotoxy::$9 = gotoxy::$8 + gotoxy::$7
  [75] gotoxy::line_offset#0 = gotoxy::$9 << 3
  [76] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
  [77] conio_line_text = gotoxy::$5
  [78] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
  [79] conio_line_color = gotoxy::$6
  to:gotoxy::@return
gotoxy::@return: scope:[gotoxy]  from gotoxy::@2
  [80] return 
  to:@return

void cputln()
cputln: scope:[cputln]  from cputc::@1 cputc::@3
  [81] conio_line_text = conio_line_text + $28
  [82] conio_line_color = conio_line_color + $28
  [83] conio_cursor_x = 0
  [84] conio_cursor_y = ++ conio_cursor_y
  [85] call cscroll
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln
  [86] return 
  to:@return

void snprintf_init(char *s , unsigned int n)
snprintf_init: scope:[snprintf_init]  from main main::@2
  [87] snprintf_init::s#2 = phi( main/BUF1, main::@2/BUF2 )
  [88] __snprintf_capacity = $14
  [89] __snprintf_size = 0
  [90] __snprintf_buffer = snprintf_init::s#2
  to:snprintf_init::@return
snprintf_init::@return: scope:[snprintf_init]  from snprintf_init
  [91] return 
  to:@return

void printf_str(void (*putc)(char) , const char *s)
printf_str: scope:[printf_str]  from main::@1 main::@3 main::@5 main::@7 main::@9 printf_string::@1
  [92] printf_str::putc#8 = phi( main::@1/&snputc, main::@3/&snputc, main::@5/&cputc, main::@7/&cputc, main::@9/&cputc, printf_string::@1/printf_str::putc#0 )
  [92] printf_str::s#8 = phi( main::@1/main::s, main::@3/main::s1, main::@5/main::s2, main::@7/main::s3, main::@9/main::s2, printf_string::@1/printf_str::s#1 )
  to:printf_str::@1
printf_str::@1: scope:[printf_str]  from printf_str printf_str::@2
  [93] printf_str::s#7 = phi( printf_str/printf_str::s#8, printf_str::@2/printf_str::s#0 )
  [94] printf_str::c#1 = *printf_str::s#7
  [95] printf_str::s#0 = ++ printf_str::s#7
  [96] if(0!=printf_str::c#1) goto printf_str::@2
  to:printf_str::@return
printf_str::@return: scope:[printf_str]  from printf_str::@1
  [97] return 
  to:@return
printf_str::@2: scope:[printf_str]  from printf_str::@1
  [98] stackpush(char) = printf_str::c#1
  [99] callexecute *printf_str::putc#8 
  sideeffect stackpullbytes(1)
  to:printf_str::@1

void printf_string(void (*putc)(char) , char *str , char format_min_length , char format_justify_left)
printf_string: scope:[printf_string]  from main::@4 main::@6 main::@8
  [101] printf_string::putc#10 = phi( main::@4/&snputc, main::@6/&cputc, main::@8/&cputc )
  [101] printf_string::str#10 = phi( main::@4/main::str, main::@6/BUF1, main::@8/BUF2 )
  to:printf_string::@1
printf_string::@1: scope:[printf_string]  from printf_string
  [102] printf_str::putc#0 = printf_string::putc#10
  [103] printf_str::s#1 = printf_string::str#10
  [104] call printf_str
  to:printf_string::@return
printf_string::@return: scope:[printf_string]  from printf_string::@1
  [105] return 
  to:@return

void cscroll()
cscroll: scope:[cscroll]  from cputln
  [106] if(conio_cursor_y!=$19) goto cscroll::@return
  to:cscroll::@1
cscroll::@1: scope:[cscroll]  from cscroll
  [107] phi()
  [108] call memcpy
  to:cscroll::@2
cscroll::@2: scope:[cscroll]  from cscroll::@1
  [109] phi()
  [110] call memcpy
  to:cscroll::@3
cscroll::@3: scope:[cscroll]  from cscroll::@2
  [111] phi()
  [112] call memset
  to:cscroll::@4
cscroll::@4: scope:[cscroll]  from cscroll::@3
  [113] phi()
  [114] call memset
  to:cscroll::@5
cscroll::@5: scope:[cscroll]  from cscroll::@4
  [115] conio_line_text = conio_line_text - $28
  [116] conio_line_color = conio_line_color - $28
  [117] conio_cursor_y = -- conio_cursor_y
  to:cscroll::@return
cscroll::@return: scope:[cscroll]  from cscroll cscroll::@5
  [118] return 
  to:@return

void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy]  from cscroll::@1 cscroll::@2
  [119] memcpy::destination#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN, cscroll::@2/(void *)COLORRAM )
  [119] memcpy::source#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN+$28, cscroll::@2/(void *)COLORRAM+$28 )
  [120] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28
  [121] memcpy::src#4 = (char *)memcpy::source#2
  [122] memcpy::dst#4 = (char *)memcpy::destination#2
  to:memcpy::@1
memcpy::@1: scope:[memcpy]  from memcpy memcpy::@2
  [123] memcpy::dst#2 = phi( memcpy/memcpy::dst#4, memcpy::@2/memcpy::dst#1 )
  [123] memcpy::src#2 = phi( memcpy/memcpy::src#4, memcpy::@2/memcpy::src#1 )
  [124] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
  to:memcpy::@return
memcpy::@return: scope:[memcpy]  from memcpy::@1
  [125] return 
  to:@return
memcpy::@2: scope:[memcpy]  from memcpy::@1
  [126] *memcpy::dst#2 = *memcpy::src#2
  [127] memcpy::dst#1 = ++ memcpy::dst#2
  [128] 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
  [129] memset::c#4 = phi( cscroll::@3/' ', cscroll::@4/LIGHT_BLUE )
  [129] 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
  [130] memset::end#0 = (char *)memset::str#3 + $28
  [131] memset::dst#4 = (char *)memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [132] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [133] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset::@2
  [134] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [135] *memset::dst#2 = memset::c#4
  [136] memset::dst#1 = ++ memset::dst#2
  to:memset::@2
