
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
  [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 memset
  to:main::@1
main::@1: scope:[main]  from main main::@5
  [29] main::sc#8 = phi( main::@5/main::sc#10, main/SCREEN )
  [29] main::count#11 = phi( main::@5/main::count#10, main/0 )
  [29] main::y#2 = phi( main::@5/main::y#1, main/0 )
  [30] if(main::y#2<$19) goto main::@3
  to:main::@2
main::@2: scope:[main]  from main::@1
  [31] phi()
  [32] call gotoxy
  to:main::@8
main::@8: scope:[main]  from main::@2
  [33] printf_uint::uvalue#0 = main::count#11
  [34] call printf_uint
  to:main::@9
main::@9: scope:[main]  from main::@8
  [35] phi()
  [36] call printf_str
  to:main::@return
main::@return: scope:[main]  from main::@9
  [37] return 
  to:@return
main::@3: scope:[main]  from main::@1 main::@6
  [38] main::count#10 = phi( main::@1/main::count#11, main::@6/main::count#12 )
  [38] main::sc#10 = phi( main::@1/main::sc#8, main::@6/main::sc#1 )
  [38] main::x#2 = phi( main::@1/0, main::@6/main::x#1 )
  [39] if(main::x#2<$28) goto main::@4
  to:main::@5
main::@5: scope:[main]  from main::@3
  [40] main::y#1 = ++ main::y#2
  to:main::@1
main::@4: scope:[main]  from main::@3
  [41] main::$5 = main::x#2 << 1
  [42] main::xd#0 = main::$5 - $27
  [43] main::$7 = main::y#2 << 1
  [44] main::yd#0 = main::$7 - $18
  [45] mul8s::a#0 = main::xd#0
  [46] mul8s::b#0 = main::xd#0
  [47] call mul8s
  to:main::@10
main::@10: scope:[main]  from main::@4
  [48] main::$9 = (int)mul8s::m#4
  [49] mul8s::a#1 = main::yd#0
  [50] mul8s::b#1 = main::yd#0
  [51] call mul8s
  to:main::@11
main::@11: scope:[main]  from main::@10
  [52] main::$10 = (int)mul8s::m#4
  [53] main::dist_sq#0 = main::$9 + main::$10
  [54] if(main::dist_sq#0>=(int)2*9*2*9) goto main::@6
  to:main::@7
main::@7: scope:[main]  from main::@11
  [55] *main::sc#10 = '*'
  [56] main::count#1 = ++ main::count#10
  to:main::@6
main::@6: scope:[main]  from main::@11 main::@7
  [57] main::count#12 = phi( main::@11/main::count#10, main::@7/main::count#1 )
  [58] main::sc#1 = ++ main::sc#10
  [59] main::x#1 = ++ main::x#2
  to:main::@3

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from conio_c64_init::@1 main::@2
  [60] gotoxy::y#4 = phi( conio_c64_init::@1/gotoxy::y#2, main::@2/0 )
  [61] if(gotoxy::y#4<$19+1) goto gotoxy::@3
  to:gotoxy::@1
gotoxy::@3: scope:[gotoxy]  from gotoxy
  [62] phi()
  to:gotoxy::@1
gotoxy::@1: scope:[gotoxy]  from gotoxy gotoxy::@3
  [63] gotoxy::y#5 = phi( gotoxy::@3/gotoxy::y#4, gotoxy/0 )
  to:gotoxy::@2
gotoxy::@2: scope:[gotoxy]  from gotoxy::@1
  [64] conio_cursor_x = 0
  [65] conio_cursor_y = gotoxy::y#5
  [66] gotoxy::$7 = (unsigned int)gotoxy::y#5
  [67] gotoxy::$8 = gotoxy::$7 << 2
  [68] gotoxy::$9 = gotoxy::$8 + gotoxy::$7
  [69] gotoxy::line_offset#0 = gotoxy::$9 << 3
  [70] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
  [71] conio_line_text = gotoxy::$5
  [72] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
  [73] conio_line_color = gotoxy::$6
  to:gotoxy::@return
gotoxy::@return: scope:[gotoxy]  from gotoxy::@2
  [74] return 
  to:@return

void cputln()
cputln: scope:[cputln]  from cputc::@1 cputc::@3
  [75] conio_line_text = conio_line_text + $28
  [76] conio_line_color = conio_line_color + $28
  [77] conio_cursor_x = 0
  [78] conio_cursor_y = ++ conio_cursor_y
  [79] call cscroll
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln
  [80] return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from cscroll::@3 cscroll::@4 main
  [81] memset::c#5 = phi( cscroll::@3/' ', cscroll::@4/LIGHT_BLUE, main/' ' )
  [81] memset::str#4 = phi( cscroll::@3/(void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28, cscroll::@4/(void *)COLORRAM+(unsigned int)$19*$28-$28, main/(void *)SCREEN )
  [81] memset::num#3 = phi( cscroll::@3/$28, cscroll::@4/$28, main/$3e8 )
  [82] if(memset::num#3<=0) goto memset::@return
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [83] memset::end#0 = (char *)memset::str#4 + memset::num#3
  [84] memset::dst#4 = (char *)memset::str#4
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [85] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [86] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset memset::@2
  [87] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [88] *memset::dst#2 = memset::c#5
  [89] memset::dst#1 = ++ memset::dst#2
  to:memset::@2

void printf_uint(void (*putc)(char) , unsigned int 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_uint: scope:[printf_uint]  from main::@8
  [90] phi()
  to:printf_uint::@1
printf_uint::@1: scope:[printf_uint]  from printf_uint
  [91] *((char *)&printf_buffer) = 0
  [92] utoa::value#1 = printf_uint::uvalue#0
  [93] call utoa
  to:printf_uint::@2
printf_uint::@2: scope:[printf_uint]  from printf_uint::@1
  [94] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer)
  [95] call printf_number_buffer
  to:printf_uint::@return
printf_uint::@return: scope:[printf_uint]  from printf_uint::@2
  [96] return 
  to:@return

void printf_str(void (*putc)(char) , const char *s)
printf_str: scope:[printf_str]  from main::@9 printf_number_buffer::@2
  [97] printf_str::putc#4 = phi( main::@9/&cputc, printf_number_buffer::@2/printf_uint::putc#0 )
  [97] printf_str::s#4 = phi( main::@9/main::s, printf_number_buffer::@2/printf_number_buffer::buffer_digits#0 )
  to:printf_str::@1
printf_str::@1: scope:[printf_str]  from printf_str printf_str::@2
  [98] printf_str::s#3 = phi( printf_str/printf_str::s#4, printf_str::@2/printf_str::s#0 )
  [99] printf_str::c#1 = *printf_str::s#3
  [100] printf_str::s#0 = ++ printf_str::s#3
  [101] if(0!=printf_str::c#1) goto printf_str::@2
  to:printf_str::@return
printf_str::@return: scope:[printf_str]  from printf_str::@1
  [102] return 
  to:@return
printf_str::@2: scope:[printf_str]  from printf_str::@1
  [103] stackpush(char) = printf_str::c#1
  [104] callexecute *printf_str::putc#4 
  sideeffect stackpullbytes(1)
  to:printf_str::@1

int mul8s(signed char a , signed char b)
mul8s: scope:[mul8s]  from main::@10 main::@4
  [106] mul8s::b#2 = phi( main::@10/mul8s::b#1, main::@4/mul8s::b#0 )
  [106] mul8s::a#2 = phi( main::@10/mul8s::a#1, main::@4/mul8s::a#0 )
  [107] mul8u::a#1 = (char)mul8s::a#2
  [108] mul8u::b#0 = (char)mul8s::b#2
  [109] call mul8u
  [110] mul8u::return#2 = mul8u::res#2
  to:mul8s::@5
mul8s::@5: scope:[mul8s]  from mul8s
  [111] mul8s::m#0 = mul8u::return#2
  [112] if(mul8s::a#2>=0) goto mul8s::@1
  to:mul8s::@3
mul8s::@3: scope:[mul8s]  from mul8s::@5
  [113] mul8s::$6 = byte1  mul8s::m#0
  [114] mul8s::$11 = mul8s::$6 - (char)mul8s::b#2
  [115] mul8s::m#1 = mul8s::m#0 byte1= mul8s::$11
  to:mul8s::@1
mul8s::@1: scope:[mul8s]  from mul8s::@3 mul8s::@5
  [116] mul8s::m#5 = phi( mul8s::@3/mul8s::m#1, mul8s::@5/mul8s::m#0 )
  [117] if(mul8s::b#2>=0) goto mul8s::@2
  to:mul8s::@4
mul8s::@4: scope:[mul8s]  from mul8s::@1
  [118] mul8s::$9 = byte1  mul8s::m#5
  [119] mul8s::$12 = mul8s::$9 - (char)mul8s::a#2
  [120] mul8s::m#2 = mul8s::m#5 byte1= mul8s::$12
  to:mul8s::@2
mul8s::@2: scope:[mul8s]  from mul8s::@1 mul8s::@4
  [121] mul8s::m#4 = phi( mul8s::@1/mul8s::m#5, mul8s::@4/mul8s::m#2 )
  to:mul8s::@return
mul8s::@return: scope:[mul8s]  from mul8s::@2
  [122] return 
  to:@return

void cscroll()
cscroll: scope:[cscroll]  from cputln
  [123] if(conio_cursor_y!=$19) goto cscroll::@return
  to:cscroll::@1
cscroll::@1: scope:[cscroll]  from cscroll
  [124] phi()
  [125] call memcpy
  to:cscroll::@2
cscroll::@2: scope:[cscroll]  from cscroll::@1
  [126] phi()
  [127] call memcpy
  to:cscroll::@3
cscroll::@3: scope:[cscroll]  from cscroll::@2
  [128] phi()
  [129] call memset
  to:cscroll::@4
cscroll::@4: scope:[cscroll]  from cscroll::@3
  [130] phi()
  [131] call memset
  to:cscroll::@5
cscroll::@5: scope:[cscroll]  from cscroll::@4
  [132] conio_line_text = conio_line_text - $28
  [133] conio_line_color = conio_line_color - $28
  [134] conio_cursor_y = -- conio_cursor_y
  to:cscroll::@return
cscroll::@return: scope:[cscroll]  from cscroll cscroll::@5
  [135] return 
  to:@return

void utoa(unsigned int value , char *buffer , char radix)
utoa: scope:[utoa]  from printf_uint::@1
  [136] phi()
  to:utoa::@1
utoa::@1: scope:[utoa]  from utoa utoa::@4
  [137] utoa::buffer#11 = phi( utoa::@4/utoa::buffer#14, utoa/(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
  [137] utoa::started#2 = phi( utoa::@4/utoa::started#4, utoa/0 )
  [137] utoa::value#2 = phi( utoa::@4/utoa::value#6, utoa/utoa::value#1 )
  [137] utoa::digit#2 = phi( utoa::@4/utoa::digit#1, utoa/0 )
  [138] if(utoa::digit#2<utoa::max_digits#1-1) goto utoa::@2
  to:utoa::@3
utoa::@3: scope:[utoa]  from utoa::@1
  [139] utoa::$11 = (char)utoa::value#2
  [140] *utoa::buffer#11 = DIGITS[utoa::$11]
  [141] utoa::buffer#3 = ++ utoa::buffer#11
  [142] *utoa::buffer#3 = 0
  to:utoa::@return
utoa::@return: scope:[utoa]  from utoa::@3
  [143] return 
  to:@return
utoa::@2: scope:[utoa]  from utoa::@1
  [144] utoa::$10 = utoa::digit#2 << 1
  [145] utoa::digit_value#0 = RADIX_DECIMAL_VALUES[utoa::$10]
  [146] if(0!=utoa::started#2) goto utoa::@5
  to:utoa::@7
utoa::@7: scope:[utoa]  from utoa::@2
  [147] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@5
  to:utoa::@4
utoa::@4: scope:[utoa]  from utoa::@6 utoa::@7
  [148] utoa::buffer#14 = phi( utoa::@7/utoa::buffer#11, utoa::@6/utoa::buffer#4 )
  [148] utoa::started#4 = phi( utoa::@7/utoa::started#2, utoa::@6/1 )
  [148] utoa::value#6 = phi( utoa::@7/utoa::value#2, utoa::@6/utoa::value#0 )
  [149] utoa::digit#1 = ++ utoa::digit#2
  to:utoa::@1
utoa::@5: scope:[utoa]  from utoa::@2 utoa::@7
  [150] utoa_append::buffer#0 = utoa::buffer#11
  [151] utoa_append::value#0 = utoa::value#2
  [152] utoa_append::sub#0 = utoa::digit_value#0
  [153] call utoa_append
  [154] utoa_append::return#0 = utoa_append::value#2
  to:utoa::@6
utoa::@6: scope:[utoa]  from utoa::@5
  [155] utoa::value#0 = utoa_append::return#0
  [156] utoa::buffer#4 = ++ utoa::buffer#11
  to:utoa::@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_uint::@2
  [157] phi()
  to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer]  from printf_number_buffer
  [158] 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
  [159] stackpush(char) = printf_number_buffer::buffer_sign#0
  [160] 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
  [162] phi()
  [163] call printf_str
  to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer]  from printf_number_buffer::@2
  [164] return 
  to:@return

unsigned int mul8u(char a , char b)
mul8u: scope:[mul8u]  from mul8s
  [165] mul8u::mb#0 = (unsigned int)mul8u::b#0
  to:mul8u::@1
mul8u::@1: scope:[mul8u]  from mul8u mul8u::@3
  [166] mul8u::mb#2 = phi( mul8u/mul8u::mb#0, mul8u::@3/mul8u::mb#1 )
  [166] mul8u::res#2 = phi( mul8u/0, mul8u::@3/mul8u::res#6 )
  [166] mul8u::a#2 = phi( mul8u/mul8u::a#1, mul8u::@3/mul8u::a#0 )
  [167] if(mul8u::a#2!=0) goto mul8u::@2
  to:mul8u::@return
mul8u::@return: scope:[mul8u]  from mul8u::@1
  [168] return 
  to:@return
mul8u::@2: scope:[mul8u]  from mul8u::@1
  [169] mul8u::$1 = mul8u::a#2 & 1
  [170] if(mul8u::$1==0) goto mul8u::@3
  to:mul8u::@4
mul8u::@4: scope:[mul8u]  from mul8u::@2
  [171] mul8u::res#1 = mul8u::res#2 + mul8u::mb#2
  to:mul8u::@3
mul8u::@3: scope:[mul8u]  from mul8u::@2 mul8u::@4
  [172] mul8u::res#6 = phi( mul8u::@2/mul8u::res#2, mul8u::@4/mul8u::res#1 )
  [173] mul8u::a#0 = mul8u::a#2 >> 1
  [174] mul8u::mb#1 = mul8u::mb#2 << 1
  to:mul8u::@1

void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy]  from cscroll::@1 cscroll::@2
  [175] memcpy::destination#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN, cscroll::@2/(void *)COLORRAM )
  [175] memcpy::source#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN+$28, cscroll::@2/(void *)COLORRAM+$28 )
  [176] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28
  [177] memcpy::src#4 = (char *)memcpy::source#2
  [178] memcpy::dst#4 = (char *)memcpy::destination#2
  to:memcpy::@1
memcpy::@1: scope:[memcpy]  from memcpy memcpy::@2
  [179] memcpy::dst#2 = phi( memcpy/memcpy::dst#4, memcpy::@2/memcpy::dst#1 )
  [179] memcpy::src#2 = phi( memcpy/memcpy::src#4, memcpy::@2/memcpy::src#1 )
  [180] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
  to:memcpy::@return
memcpy::@return: scope:[memcpy]  from memcpy::@1
  [181] return 
  to:@return
memcpy::@2: scope:[memcpy]  from memcpy::@1
  [182] *memcpy::dst#2 = *memcpy::src#2
  [183] memcpy::dst#1 = ++ memcpy::dst#2
  [184] memcpy::src#1 = ++ memcpy::src#2
  to:memcpy::@1

unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
utoa_append: scope:[utoa_append]  from utoa::@5
  [185] phi()
  to:utoa_append::@1
utoa_append::@1: scope:[utoa_append]  from utoa_append utoa_append::@2
  [186] utoa_append::digit#2 = phi( utoa_append/0, utoa_append::@2/utoa_append::digit#1 )
  [186] utoa_append::value#2 = phi( utoa_append/utoa_append::value#0, utoa_append::@2/utoa_append::value#1 )
  [187] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2
  to:utoa_append::@3
utoa_append::@3: scope:[utoa_append]  from utoa_append::@1
  [188] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2]
  to:utoa_append::@return
utoa_append::@return: scope:[utoa_append]  from utoa_append::@3
  [189] return 
  to:@return
utoa_append::@2: scope:[utoa_append]  from utoa_append::@1
  [190] utoa_append::digit#1 = ++ utoa_append::digit#2
  [191] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0
  to:utoa_append::@1
