1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-09 08:54:40 +00:00
kickc/src/test/ref/prng-xorshift.cfg
2020-05-05 08:37:49 +02:00

652 lines
34 KiB
INI

@begin: scope:[] from
[0] phi()
to:@1
@1: scope:[] from @begin
[1] (byte) conio_cursor_x ← (byte) 0
[2] (byte) conio_cursor_y ← (byte) 0
[3] (byte*) conio_cursor_text ← (const nomodify byte*) CONIO_SCREEN_TEXT
[4] (byte*) conio_cursor_color ← (const nomodify byte*) CONIO_SCREEN_COLORS
[5] (byte) conio_textcolor ← (const nomodify byte) CONIO_TEXTCOLOR_DEFAULT
to:@2
@2: scope:[] from @1
[6] phi()
[7] call main
to:@end
@end: scope:[] from @2
[8] phi()
(void()) main()
main: scope:[main] from @2
[9] phi()
[10] call clrscr
to:main::@6
main::@6: scope:[main] from main
[11] phi()
[12] call textcolor
to:main::@7
main::@7: scope:[main] from main::@6
[13] phi()
[14] call cputs
to:main::@8
main::@8: scope:[main] from main::@7
[15] phi()
[16] call _rand
[17] (word) _rand::return#0 ← (word) _rand::return#2
to:main::@9
main::@9: scope:[main] from main::@8
[18] (word) main::first#0 ← (word) _rand::return#0
[19] call textcolor
to:main::@10
main::@10: scope:[main] from main::@9
[20] (word) main::rnd#5 ← (word) main::first#0
to:main::@1
main::@1: scope:[main] from main::@10 main::@11
[21] (word) main::rnd#2 ← phi( main::@10/(word) main::rnd#5 main::@11/(word) main::rnd#1 )
[21] (byte) main::row#3 ← phi( main::@10/(byte) 1 main::@11/(byte) main::row#7 )
[21] (byte) main::col#3 ← phi( main::@10/(byte) 3 main::@11/(byte) main::col#7 )
[21] (dword) main::cnt#2 ← phi( main::@10/(dword) 0 main::@11/(dword) main::cnt#1 )
[22] (dword) main::cnt#1 ← ++ (dword) main::cnt#2
[23] (byte~) main::$17 ← (byte)(dword) main::cnt#1
[24] if((byte~) main::$17!=(byte) 0) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@1
[25] (byte) gotoxy::x#2 ← (byte) main::col#3
[26] (byte) gotoxy::y#2 ← (byte) main::row#3
[27] call gotoxy
to:main::@12
main::@12: scope:[main] from main::@3
[28] (word) printf_uint::uvalue#0 ← (word) main::rnd#2
[29] call printf_uint
to:main::@13
main::@13: scope:[main] from main::@12
[30] (byte) main::row#1 ← ++ (byte) main::row#3
[31] if((byte) main::row#1!=(byte) $19) goto main::@2
to:main::@4
main::@4: scope:[main] from main::@13
[32] (byte) main::col#1 ← (byte) main::col#3 + (byte) 6
[33] if((byte) main::col#1<(byte)(number) $28-(number) 5+(byte) 1) goto main::@16
to:main::@2
main::@16: scope:[main] from main::@4
[34] phi()
to:main::@2
main::@2: scope:[main] from main::@1 main::@13 main::@16 main::@4
[35] (byte) main::row#7 ← phi( main::@1/(byte) main::row#3 main::@13/(byte) main::row#1 main::@16/(byte) 1 main::@4/(byte) 1 )
[35] (byte) main::col#7 ← phi( main::@1/(byte) main::col#3 main::@13/(byte) main::col#3 main::@16/(byte) main::col#1 main::@4/(byte) 3 )
[36] call _rand
[37] (word) _rand::return#1 ← (word) _rand::return#2
to:main::@11
main::@11: scope:[main] from main::@2
[38] (word) main::rnd#1 ← (word) _rand::return#1
[39] if((word) main::rnd#1!=(word) main::first#0) goto main::@1
to:main::@5
main::@5: scope:[main] from main::@11
[40] phi()
[41] call gotoxy
to:main::@14
main::@14: scope:[main] from main::@5
[42] phi()
[43] call cputs
to:main::@15
main::@15: scope:[main] from main::@14
[44] (dword) printf_ulong::uvalue#0 ← (dword) main::cnt#1
[45] call printf_ulong
to:main::@return
main::@return: scope:[main] from main::@15
[46] return
to:@return
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_upper_case , (byte) printf_ulong::format_radix)
printf_ulong: scope:[printf_ulong] from main::@15
[47] phi()
to:printf_ulong::@1
printf_ulong::@1: scope:[printf_ulong] from printf_ulong
[48] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[49] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0
[50] call ultoa
to:printf_ulong::@2
printf_ulong::@2: scope:[printf_ulong] from printf_ulong::@1
[51] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[52] call printf_number_buffer
to:printf_ulong::@return
printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@2
[53] return
to:@return
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_upper_case , (byte) printf_number_buffer::format_radix)
printf_number_buffer: scope:[printf_number_buffer] from printf_uint::@2 printf_ulong::@2
[54] (byte) printf_number_buffer::format_upper_case#10 ← phi( printf_uint::@2/(const byte) printf_uint::format_upper_case#0 printf_ulong::@2/(const byte) printf_ulong::format_upper_case#0 )
[54] (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_uint::@2/(byte) printf_number_buffer::buffer_sign#1 printf_ulong::@2/(byte) printf_number_buffer::buffer_sign#0 )
[54] (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_uint::@2/(const byte) printf_uint::format_zero_padding#0 printf_ulong::@2/(const byte) printf_ulong::format_zero_padding#0 )
[54] (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_uint::@2/(const byte) printf_uint::format_justify_left#0 printf_ulong::@2/(const byte) printf_ulong::format_justify_left#0 )
[54] (byte) printf_number_buffer::format_min_length#2 ← phi( printf_uint::@2/(const byte) printf_uint::format_min_length#0 printf_ulong::@2/(const byte) printf_ulong::format_min_length#0 )
[55] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1
to:printf_number_buffer::@6
printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer
[56] phi()
[57] call strlen
[58] (word) strlen::return#2 ← (word) strlen::len#2
to:printf_number_buffer::@14
printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@6
[59] (word~) printf_number_buffer::$19 ← (word) strlen::return#2
[60] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19
[61] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13
to:printf_number_buffer::@7
printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@14
[62] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0
to:printf_number_buffer::@13
printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@14 printf_number_buffer::@7
[63] (signed byte) printf_number_buffer::len#2 ← phi( printf_number_buffer::@14/(signed byte) printf_number_buffer::len#0 printf_number_buffer::@7/(signed byte) printf_number_buffer::len#1 )
[64] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2
[65] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21
to:printf_number_buffer::@1
printf_number_buffer::@21: scope:[printf_number_buffer] from printf_number_buffer::@13
[66] phi()
to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@13 printf_number_buffer::@21
[67] (signed byte) printf_number_buffer::padding#10 ← phi( printf_number_buffer/(signed byte) 0 printf_number_buffer::@21/(signed byte) printf_number_buffer::padding#1 printf_number_buffer::@13/(signed byte) 0 )
[68] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2
to:printf_number_buffer::@17
printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@1
[69] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2
to:printf_number_buffer::@16
printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@17
[70] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8
to:printf_number_buffer::@2
printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@16
[71] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10
[72] call printf_padding
to:printf_number_buffer::@2
printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@16 printf_number_buffer::@17 printf_number_buffer::@8
[73] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3
to:printf_number_buffer::@9
printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@2
[74] (byte) cputc::c#2 ← (byte) printf_number_buffer::buffer_sign#10
[75] call cputc
to:printf_number_buffer::@3
printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@2 printf_number_buffer::@9
[76] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4
to:printf_number_buffer::@18
printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@3
[77] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10
to:printf_number_buffer::@4
printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@18
[78] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10
[79] call printf_padding
to:printf_number_buffer::@4
printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@10 printf_number_buffer::@18 printf_number_buffer::@3
[80] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5
to:printf_number_buffer::@11
printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@4
[81] phi()
[82] call strupr
to:printf_number_buffer::@5
printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer::@11 printf_number_buffer::@4
[83] phi()
[84] call cputs
to:printf_number_buffer::@15
printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@5
[85] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return
to:printf_number_buffer::@20
printf_number_buffer::@20: scope:[printf_number_buffer] from printf_number_buffer::@15
[86] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return
to:printf_number_buffer::@19
printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@20
[87] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12
to:printf_number_buffer::@return
printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@19
[88] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10
[89] call printf_padding
to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@12 printf_number_buffer::@15 printf_number_buffer::@19 printf_number_buffer::@20
[90] return
to:@return
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
printf_padding: scope:[printf_padding] from printf_number_buffer::@10 printf_number_buffer::@12 printf_number_buffer::@8
[91] (byte) printf_padding::pad#5 ← phi( printf_number_buffer::@10/(byte) '0' printf_number_buffer::@12/(byte) ' ' printf_number_buffer::@8/(byte) ' ' )
[91] (byte) printf_padding::length#4 ← phi( printf_number_buffer::@10/(byte) printf_padding::length#1 printf_number_buffer::@12/(byte) printf_padding::length#2 printf_number_buffer::@8/(byte) printf_padding::length#0 )
to:printf_padding::@1
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
[92] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 )
[93] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2
to:printf_padding::@return
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
[94] return
to:@return
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
[95] (byte) cputc::c#1 ← (byte) printf_padding::pad#5
[96] call cputc
to:printf_padding::@3
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
[97] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2
to:printf_padding::@1
(void()) cputc((byte) cputc::c)
cputc: scope:[cputc] from cputs::@2 printf_number_buffer::@9 printf_padding::@2
[98] (byte) cputc::c#3 ← phi( cputs::@2/(byte) cputc::c#0 printf_number_buffer::@9/(byte) cputc::c#2 printf_padding::@2/(byte) cputc::c#1 )
[99] if((byte) cputc::c#3==(byte) '
') goto cputc::@1
to:cputc::@2
cputc::@2: scope:[cputc] from cputc
[100] *((byte*) conio_cursor_text) ← (byte) cputc::c#3
[101] (byte*) conio_cursor_text ← ++ (byte*) conio_cursor_text
[102] *((byte*) conio_cursor_color) ← (byte) conio_textcolor
[103] (byte*) conio_cursor_color ← ++ (byte*) conio_cursor_color
[104] (byte) conio_cursor_x ← ++ (byte) conio_cursor_x
[105] if((byte) conio_cursor_x!=(byte) $28) goto cputc::@return
to:cputc::@3
cputc::@3: scope:[cputc] from cputc::@2
[106] (byte) conio_cursor_x ← (byte) 0
[107] (byte) conio_cursor_y ← ++ (byte) conio_cursor_y
[108] call cscroll
to:cputc::@return
cputc::@return: scope:[cputc] from cputc::@1 cputc::@2 cputc::@3
[109] return
to:@return
cputc::@1: scope:[cputc] from cputc
[110] phi()
[111] call cputln
to:cputc::@return
(void()) cputln()
cputln: scope:[cputln] from cputc::@1
[112] (word) cputln::ln_offset#0 ← (byte) $28 - (byte) conio_cursor_x
[113] (byte*~) cputln::$1 ← (byte*) conio_cursor_text + (word) cputln::ln_offset#0
[114] (byte*) conio_cursor_text ← (byte*~) cputln::$1
[115] (byte*~) cputln::$2 ← (byte*) conio_cursor_color + (word) cputln::ln_offset#0
[116] (byte*) conio_cursor_color ← (byte*~) cputln::$2
[117] (byte) conio_cursor_x ← (byte) 0
[118] (byte) conio_cursor_y ← ++ (byte) conio_cursor_y
[119] call cscroll
to:cputln::@return
cputln::@return: scope:[cputln] from cputln
[120] return
to:@return
(void()) cscroll()
cscroll: scope:[cscroll] from cputc::@3 cputln
[121] if((byte) conio_cursor_y!=(byte) $19) goto cscroll::@return
to:cscroll::@1
cscroll::@1: scope:[cscroll] from cscroll
[122] phi()
[123] call memcpy
to:cscroll::@2
cscroll::@2: scope:[cscroll] from cscroll::@1
[124] phi()
[125] call memcpy
to:cscroll::@3
cscroll::@3: scope:[cscroll] from cscroll::@2
[126] phi()
[127] call memset
to:cscroll::@4
cscroll::@4: scope:[cscroll] from cscroll::@3
[128] (byte) memset::c#1 ← (byte) conio_textcolor
[129] call memset
to:cscroll::@5
cscroll::@5: scope:[cscroll] from cscroll::@4
[130] (byte*~) cscroll::$7 ← (byte*) conio_cursor_text - (byte) $28
[131] (byte*) conio_cursor_text ← (byte*~) cscroll::$7
[132] (byte*~) cscroll::$8 ← (byte*) conio_cursor_color - (byte) $28
[133] (byte*) conio_cursor_color ← (byte*~) cscroll::$8
[134] (byte) conio_cursor_y ← -- (byte) conio_cursor_y
to:cscroll::@return
cscroll::@return: scope:[cscroll] from cscroll cscroll::@5
[135] return
to:@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset] from cscroll::@3 cscroll::@4
[136] (byte) memset::c#4 ← phi( cscroll::@3/(byte) ' ' cscroll::@4/(byte) memset::c#1 )
[136] (void*) memset::str#3 ← phi( cscroll::@3/(void*)(const nomodify byte*) CONIO_SCREEN_TEXT+(word)(number) $19*(number) $28-(byte) $28 cscroll::@4/(void*)(const nomodify byte*) CONIO_SCREEN_COLORS+(word)(number) $19*(number) $28-(byte) $28 )
to:memset::@1
memset::@1: scope:[memset] from memset
[137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (byte) $28
[138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[139] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
[140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset::@2
[141] return
to:@return
memset::@3: scope:[memset] from memset::@2
[142] *((byte*) memset::dst#2) ← (byte) memset::c#4
[143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
to:memset::@2
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
memcpy: scope:[memcpy] from cscroll::@1 cscroll::@2
[144] (void*) memcpy::destination#2 ← phi( cscroll::@1/(void*)(const nomodify byte*) CONIO_SCREEN_TEXT cscroll::@2/(void*)(const nomodify byte*) CONIO_SCREEN_COLORS )
[144] (void*) memcpy::source#2 ← phi( cscroll::@1/(void*)(const nomodify byte*) CONIO_SCREEN_TEXT+(byte) $28 cscroll::@2/(void*)(const nomodify byte*) CONIO_SCREEN_COLORS+(byte) $28 )
[145] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word)(number) $19*(number) $28-(number) $28
[146] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2
[147] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2
to:memcpy::@1
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
[148] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*) memcpy::dst#4 memcpy::@2/(byte*) memcpy::dst#1 )
[148] (byte*) memcpy::src#2 ← phi( memcpy/(byte*) memcpy::src#4 memcpy::@2/(byte*) memcpy::src#1 )
[149] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2
to:memcpy::@return
memcpy::@return: scope:[memcpy] from memcpy::@1
[150] return
to:@return
memcpy::@2: scope:[memcpy] from memcpy::@1
[151] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2)
[152] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2
[153] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2
to:memcpy::@1
(void()) cputs((to_nomodify byte*) cputs::s)
cputs: scope:[cputs] from main::@14 main::@7 printf_number_buffer::@5
[154] (to_nomodify byte*) cputs::s#5 ← phi( main::@14/(const byte*) main::s1 main::@7/(const byte*) main::s printf_number_buffer::@5/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
to:cputs::@1
cputs::@1: scope:[cputs] from cputs cputs::@2
[155] (to_nomodify byte*) cputs::s#4 ← phi( cputs/(to_nomodify byte*) cputs::s#5 cputs::@2/(to_nomodify byte*) cputs::s#0 )
[156] (byte) cputs::c#1 ← *((to_nomodify byte*) cputs::s#4)
[157] (to_nomodify byte*) cputs::s#0 ← ++ (to_nomodify byte*) cputs::s#4
[158] if((byte) 0!=(byte) cputs::c#1) goto cputs::@2
to:cputs::@return
cputs::@return: scope:[cputs] from cputs::@1
[159] return
to:@return
cputs::@2: scope:[cputs] from cputs::@1
[160] (byte) cputc::c#0 ← (byte) cputs::c#1
[161] call cputc
to:cputs::@1
(byte*()) strupr((byte*) strupr::str)
strupr: scope:[strupr] from printf_number_buffer::@11
[162] phi()
to:strupr::@1
strupr::@1: scope:[strupr] from strupr strupr::@3
[163] (byte*) strupr::src#2 ← phi( strupr/(const byte*) strupr::str#0 strupr::@3/(byte*) strupr::src#1 )
[164] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2
to:strupr::@return
strupr::@return: scope:[strupr] from strupr::@1
[165] return
to:@return
strupr::@2: scope:[strupr] from strupr::@1
[166] (byte) toupper::ch#0 ← *((byte*) strupr::src#2)
[167] call toupper
[168] (byte) toupper::return#3 ← (byte) toupper::return#2
to:strupr::@3
strupr::@3: scope:[strupr] from strupr::@2
[169] (byte~) strupr::$0 ← (byte) toupper::return#3
[170] *((byte*) strupr::src#2) ← (byte~) strupr::$0
[171] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2
to:strupr::@1
(byte()) toupper((byte) toupper::ch)
toupper: scope:[toupper] from strupr::@2
[172] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return
to:toupper::@2
toupper::@2: scope:[toupper] from toupper
[173] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1
to:toupper::@return
toupper::@1: scope:[toupper] from toupper::@2
[174] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a'
to:toupper::@return
toupper::@return: scope:[toupper] from toupper toupper::@1 toupper::@2
[175] (byte) toupper::return#2 ← phi( toupper::@1/(byte) toupper::return#0 toupper/(byte) toupper::ch#0 toupper::@2/(byte) toupper::ch#0 )
[176] return
to:@return
(word()) strlen((byte*) strlen::str)
strlen: scope:[strlen] from printf_number_buffer::@6
[177] phi()
to:strlen::@1
strlen::@1: scope:[strlen] from strlen strlen::@2
[178] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 )
[178] (byte*) strlen::str#2 ← phi( strlen/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS strlen::@2/(byte*) strlen::str#0 )
[179] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2
to:strlen::@return
strlen::@return: scope:[strlen] from strlen::@1
[180] return
to:@return
strlen::@2: scope:[strlen] from strlen::@1
[181] (word) strlen::len#1 ← ++ (word) strlen::len#2
[182] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2
to:strlen::@1
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
ultoa: scope:[ultoa] from printf_ulong::@1
[183] phi()
to:ultoa::@1
ultoa::@1: scope:[ultoa] from ultoa ultoa::@4
[184] (byte*) ultoa::buffer#11 ← phi( ultoa::@4/(byte*) ultoa::buffer#14 ultoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[184] (byte) ultoa::started#2 ← phi( ultoa::@4/(byte) ultoa::started#4 ultoa/(byte) 0 )
[184] (dword) ultoa::value#2 ← phi( ultoa::@4/(dword) ultoa::value#6 ultoa/(dword) ultoa::value#1 )
[184] (byte) ultoa::digit#2 ← phi( ultoa::@4/(byte) ultoa::digit#1 ultoa/(byte) 0 )
[185] if((byte) ultoa::digit#2<(const byte) ultoa::max_digits#1-(byte) 1) goto ultoa::@2
to:ultoa::@3
ultoa::@3: scope:[ultoa] from ultoa::@1
[186] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2
[187] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11)
[188] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11
[189] *((byte*) ultoa::buffer#3) ← (byte) 0
to:ultoa::@return
ultoa::@return: scope:[ultoa] from ultoa::@3
[190] return
to:@return
ultoa::@2: scope:[ultoa] from ultoa::@1
[191] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2
[192] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10)
[193] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5
to:ultoa::@7
ultoa::@7: scope:[ultoa] from ultoa::@2
[194] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5
to:ultoa::@4
ultoa::@4: scope:[ultoa] from ultoa::@6 ultoa::@7
[195] (byte*) ultoa::buffer#14 ← phi( ultoa::@7/(byte*) ultoa::buffer#11 ultoa::@6/(byte*) ultoa::buffer#4 )
[195] (byte) ultoa::started#4 ← phi( ultoa::@7/(byte) ultoa::started#2 ultoa::@6/(byte) 1 )
[195] (dword) ultoa::value#6 ← phi( ultoa::@7/(dword) ultoa::value#2 ultoa::@6/(dword) ultoa::value#0 )
[196] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2
to:ultoa::@1
ultoa::@5: scope:[ultoa] from ultoa::@2 ultoa::@7
[197] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11
[198] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2
[199] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0
[200] call ultoa_append
[201] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2
to:ultoa::@6
ultoa::@6: scope:[ultoa] from ultoa::@5
[202] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0
[203] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11
to:ultoa::@4
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
ultoa_append: scope:[ultoa_append] from ultoa::@5
[204] phi()
to:ultoa_append::@1
ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2
[205] (byte) ultoa_append::digit#2 ← phi( ultoa_append/(byte) 0 ultoa_append::@2/(byte) ultoa_append::digit#1 )
[205] (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#0 ultoa_append::@2/(dword) ultoa_append::value#1 )
[206] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2
to:ultoa_append::@3
ultoa_append::@3: scope:[ultoa_append] from ultoa_append::@1
[207] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2)
to:ultoa_append::@return
ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3
[208] return
to:@return
ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1
[209] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2
[210] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0
to:ultoa_append::@1
(void()) gotoxy((byte) gotoxy::x , (byte) gotoxy::y)
gotoxy: scope:[gotoxy] from main::@3 main::@5
[211] (byte) gotoxy::x#4 ← phi( main::@3/(byte) gotoxy::x#2 main::@5/(byte) $1c )
[211] (byte) gotoxy::y#4 ← phi( main::@3/(byte) gotoxy::y#2 main::@5/(byte) 0 )
[212] if((byte) gotoxy::y#4<(byte) $19+(byte) 1) goto gotoxy::@3
to:gotoxy::@1
gotoxy::@3: scope:[gotoxy] from gotoxy
[213] phi()
to:gotoxy::@1
gotoxy::@1: scope:[gotoxy] from gotoxy gotoxy::@3
[214] (byte) gotoxy::y#5 ← phi( gotoxy::@3/(byte) gotoxy::y#4 gotoxy/(byte) 0 )
[215] if((byte) gotoxy::x#4<(byte) $28) goto gotoxy::@4
to:gotoxy::@2
gotoxy::@4: scope:[gotoxy] from gotoxy::@1
[216] phi()
to:gotoxy::@2
gotoxy::@2: scope:[gotoxy] from gotoxy::@1 gotoxy::@4
[217] (byte) gotoxy::x#5 ← phi( gotoxy::@4/(byte) gotoxy::x#4 gotoxy::@1/(byte) 0 )
[218] (byte) conio_cursor_x ← (byte) gotoxy::x#5
[219] (byte) conio_cursor_y ← (byte) gotoxy::y#5
[220] (word~) gotoxy::$8 ← (word)(byte) gotoxy::y#5
[221] (word~) gotoxy::$9 ← (word~) gotoxy::$8 << (byte) 2
[222] (word~) gotoxy::$10 ← (word~) gotoxy::$9 + (word~) gotoxy::$8
[223] (word~) gotoxy::$4 ← (word~) gotoxy::$10 << (byte) 3
[224] (word) gotoxy::offset#0 ← (word~) gotoxy::$4 + (byte) gotoxy::x#5
[225] (byte*~) gotoxy::$6 ← (const nomodify byte*) CONIO_SCREEN_TEXT + (word) gotoxy::offset#0
[226] (byte*) conio_cursor_text ← (byte*~) gotoxy::$6
[227] (byte*~) gotoxy::$7 ← (const nomodify byte*) CONIO_SCREEN_COLORS + (word) gotoxy::offset#0
[228] (byte*) conio_cursor_color ← (byte*~) gotoxy::$7
to:gotoxy::@return
gotoxy::@return: scope:[gotoxy] from gotoxy::@2
[229] return
to:@return
(word()) _rand()
_rand: scope:[_rand] from main::@2 main::@8
[230] (word) _rand_state#12 ← phi( main::@2/(word) _rand_state#13 main::@8/(word) 1 )
[231] (word~) _rand::$0 ← (word) _rand_state#12 << (byte) 7
[232] (word) _rand_state#4 ← (word) _rand_state#12 ^ (word~) _rand::$0
[233] (word~) _rand::$1 ← (word) _rand_state#4 >> (byte) 9
[234] (word) _rand_state#5 ← (word) _rand_state#4 ^ (word~) _rand::$1
[235] (word~) _rand::$2 ← (word) _rand_state#5 << (byte) 8
[236] (word) _rand_state#13 ← (word) _rand_state#5 ^ (word~) _rand::$2
[237] (word) _rand::return#2 ← (word) _rand_state#13
to:_rand::@return
_rand::@return: scope:[_rand] from _rand
[238] return
to:@return
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_upper_case , (byte) printf_uint::format_radix)
printf_uint: scope:[printf_uint] from main::@12
[239] phi()
to:printf_uint::@1
printf_uint::@1: scope:[printf_uint] from printf_uint
[240] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[241] (word) utoa::value#1 ← (word) printf_uint::uvalue#0
[242] call utoa
to:printf_uint::@2
printf_uint::@2: scope:[printf_uint] from printf_uint::@1
[243] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[244] call printf_number_buffer
to:printf_uint::@return
printf_uint::@return: scope:[printf_uint] from printf_uint::@2
[245] return
to:@return
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
utoa: scope:[utoa] from printf_uint::@1
[246] phi()
to:utoa::@1
utoa::@1: scope:[utoa] from utoa utoa::@4
[247] (byte*) utoa::buffer#11 ← phi( utoa::@4/(byte*) utoa::buffer#14 utoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[247] (byte) utoa::started#2 ← phi( utoa::@4/(byte) utoa::started#4 utoa/(byte) 0 )
[247] (word) utoa::value#2 ← phi( utoa::@4/(word) utoa::value#6 utoa/(word) utoa::value#1 )
[247] (byte) utoa::digit#2 ← phi( utoa::@4/(byte) utoa::digit#1 utoa/(byte) 0 )
[248] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2
to:utoa::@3
utoa::@3: scope:[utoa] from utoa::@1
[249] (byte~) utoa::$11 ← (byte)(word) utoa::value#2
[250] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11)
[251] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11
[252] *((byte*) utoa::buffer#3) ← (byte) 0
to:utoa::@return
utoa::@return: scope:[utoa] from utoa::@3
[253] return
to:@return
utoa::@2: scope:[utoa] from utoa::@1
[254] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1
[255] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10)
[256] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5
to:utoa::@7
utoa::@7: scope:[utoa] from utoa::@2
[257] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5
to:utoa::@4
utoa::@4: scope:[utoa] from utoa::@6 utoa::@7
[258] (byte*) utoa::buffer#14 ← phi( utoa::@7/(byte*) utoa::buffer#11 utoa::@6/(byte*) utoa::buffer#4 )
[258] (byte) utoa::started#4 ← phi( utoa::@7/(byte) utoa::started#2 utoa::@6/(byte) 1 )
[258] (word) utoa::value#6 ← phi( utoa::@7/(word) utoa::value#2 utoa::@6/(word) utoa::value#0 )
[259] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2
to:utoa::@1
utoa::@5: scope:[utoa] from utoa::@2 utoa::@7
[260] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11
[261] (word) utoa_append::value#0 ← (word) utoa::value#2
[262] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0
[263] call utoa_append
[264] (word) utoa_append::return#0 ← (word) utoa_append::value#2
to:utoa::@6
utoa::@6: scope:[utoa] from utoa::@5
[265] (word) utoa::value#0 ← (word) utoa_append::return#0
[266] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11
to:utoa::@4
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
utoa_append: scope:[utoa_append] from utoa::@5
[267] phi()
to:utoa_append::@1
utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
[268] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 )
[268] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 )
[269] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2
to:utoa_append::@3
utoa_append::@3: scope:[utoa_append] from utoa_append::@1
[270] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2)
to:utoa_append::@return
utoa_append::@return: scope:[utoa_append] from utoa_append::@3
[271] return
to:@return
utoa_append::@2: scope:[utoa_append] from utoa_append::@1
[272] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2
[273] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0
to:utoa_append::@1
(byte()) textcolor((byte) textcolor::color)
textcolor: scope:[textcolor] from main::@6 main::@9
[274] (byte) textcolor::color#2 ← phi( main::@9/(const nomodify byte) LIGHT_BLUE main::@6/(const nomodify byte) WHITE )
[275] (byte) conio_textcolor ← (byte) textcolor::color#2
to:textcolor::@return
textcolor::@return: scope:[textcolor] from textcolor
[276] return
to:@return
(void()) clrscr()
clrscr: scope:[clrscr] from main
[277] phi()
to:clrscr::@1
clrscr::@1: scope:[clrscr] from clrscr clrscr::@5
[278] (byte*) clrscr::line_cols#5 ← phi( clrscr/(const nomodify byte*) CONIO_SCREEN_COLORS clrscr::@5/(byte*) clrscr::line_cols#1 )
[278] (byte*) clrscr::line_text#5 ← phi( clrscr/(const nomodify byte*) CONIO_SCREEN_TEXT clrscr::@5/(byte*) clrscr::line_text#1 )
[278] (byte) clrscr::l#2 ← phi( clrscr/(byte) 0 clrscr::@5/(byte) clrscr::l#1 )
[279] if((byte) clrscr::l#2<(byte) $19) goto clrscr::@3
to:clrscr::@2
clrscr::@2: scope:[clrscr] from clrscr::@1
[280] (byte) conio_cursor_x ← (byte) 0
[281] (byte) conio_cursor_y ← (byte) 0
[282] (byte*) conio_cursor_text ← (const nomodify byte*) CONIO_SCREEN_TEXT
[283] (byte*) conio_cursor_color ← (const nomodify byte*) CONIO_SCREEN_COLORS
to:clrscr::@return
clrscr::@return: scope:[clrscr] from clrscr::@2
[284] return
to:@return
clrscr::@3: scope:[clrscr] from clrscr::@1 clrscr::@4
[285] (byte) clrscr::c#2 ← phi( clrscr::@1/(byte) 0 clrscr::@4/(byte) clrscr::c#1 )
[286] if((byte) clrscr::c#2<(byte) $28) goto clrscr::@4
to:clrscr::@5
clrscr::@5: scope:[clrscr] from clrscr::@3
[287] (byte*) clrscr::line_text#1 ← (byte*) clrscr::line_text#5 + (byte) $28
[288] (byte*) clrscr::line_cols#1 ← (byte*) clrscr::line_cols#5 + (byte) $28
[289] (byte) clrscr::l#1 ← ++ (byte) clrscr::l#2
to:clrscr::@1
clrscr::@4: scope:[clrscr] from clrscr::@3
[290] *((byte*) clrscr::line_text#5 + (byte) clrscr::c#2) ← (byte) ' '
[291] *((byte*) clrscr::line_cols#5 + (byte) clrscr::c#2) ← (byte) conio_textcolor
[292] (byte) clrscr::c#1 ← ++ (byte) clrscr::c#2
to:clrscr::@3