
void main()
main: scope:[main]  from
  [0] phi()
  [1] call clrscr
  to:main::@1
main::@1: scope:[main]  from main main::@12 main::@22 main::@24 main::@25 main::@32 main::@33
  [2] main::total#10 = phi( main::@12/main::total#1, main::@22/main::total#10, main::@24/main::total#10, main::@25/main::total#10, main/0 )
  [2] main::valid#10 = phi( main::@12/main::valid#8, main::@22/main::valid#10, main::@24/main::valid#10, main::@25/main::valid#10, main/0 )
  [2] main::pass#10 = phi( main::@12/main::pass#3, main::@22/main::pass#14, main::@24/main::pass#1, main::@25/main::pass#11, main/passports )
  [3] if(0!=*main::pass#10) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1
  [4] phi()
  [5] call printf_str
  to:main::@28
main::@28: scope:[main]  from main::@3
  [6] printf_uint::uvalue#0 = main::valid#10
  [7] call printf_uint
  to:main::@29
main::@29: scope:[main]  from main::@28
  [8] phi()
  [9] call printf_str
  to:main::@30
main::@30: scope:[main]  from main::@29
  [10] printf_uint::uvalue#1 = main::total#10
  [11] call printf_uint
  to:main::@31
main::@31: scope:[main]  from main::@30
  [12] phi()
  [13] call printf_str
  to:main::@27
main::@27: scope:[main]  from main::@27 main::@31
  [14] phi()
  to:main::@27
main::@2: scope:[main]  from main::@1
  [15] if(*main::pass#10!=' 'at) goto main::@4
  to:main::@24
main::@24: scope:[main]  from main::@2
  [16] main::pass#1 = ++ main::pass#10
  to:main::@1
main::@4: scope:[main]  from main::@2
  [17] if(*main::pass#10!='
'at) goto main::@13
  to:main::@25
main::@25: scope:[main]  from main::@4
  [18] main::pass#11 = ++ main::pass#10
  [19] if(*main::pass#11!='
'at) goto main::@1
  to:main::@26
main::@26: scope:[main]  from main::@25
  [20] main::pass#3 = ++ main::pass#11
  to:main::@5
main::@5: scope:[main]  from main::@26 main::@8
  [21] main::num_found#2 = phi( main::@26/0, main::@8/main::num_found#6 )
  [21] main::i#2 = phi( main::@26/0, main::@8/main::i#1 )
  [22] if(main::i#2<7) goto main::@6
  to:main::@7
main::@7: scope:[main]  from main::@5
  [23] if(main::num_found#2==7) goto main::@11
  to:main::@10
main::@10: scope:[main]  from main::@7
  [24] phi()
  [25] call printf_str
  to:main::@12
main::@12: scope:[main]  from main::@10 main::@11
  [26] main::valid#8 = phi( main::@11/main::valid#1, main::@10/main::valid#10 )
  [27] main::total#1 = ++ main::total#10
  to:main::@1
main::@11: scope:[main]  from main::@7
  [28] main::valid#1 = ++ main::valid#10
  [29] call printf_str
  to:main::@12
main::@6: scope:[main]  from main::@5
  [30] if(0==main::tags_found[main::i#2]) goto main::@8
  to:main::@9
main::@9: scope:[main]  from main::@6
  [31] main::num_found#1 = ++ main::num_found#2
  to:main::@8
main::@8: scope:[main]  from main::@6 main::@9
  [32] main::num_found#6 = phi( main::@9/main::num_found#1, main::@6/main::num_found#2 )
  [33] main::tags_found[main::i#2] = 0
  [34] main::i#1 = ++ main::i#2
  to:main::@5
main::@13: scope:[main]  from main::@20 main::@4
  [35] main::required_tag#6 = phi( main::@20/main::required_tag#1, main::@4/required_tags )
  [35] main::tag_idx#2 = phi( main::@20/main::tag_idx#1, main::@4/0 )
  [36] if(main::tag_idx#2<7) goto main::@14
  to:main::@21
main::@21: scope:[main]  from main::@13 main::@19
  [37] main::pass#4 = main::pass#10 + 3
  to:main::@22
main::@22: scope:[main]  from main::@21 main::@23
  [38] main::pass#14 = phi( main::@21/main::pass#4, main::@23/main::pass#5 )
  [39] if(0==*main::pass#14) goto main::@1
  to:main::@33
main::@33: scope:[main]  from main::@22
  [40] if(*main::pass#14==' 'at) goto main::@1
  to:main::@32
main::@32: scope:[main]  from main::@33
  [41] if(*main::pass#14!='
'at) goto main::@23
  to:main::@1
main::@23: scope:[main]  from main::@32
  [42] main::pass#5 = ++ main::pass#14
  to:main::@22
main::@14: scope:[main]  from main::@13 main::@17
  [43] main::match#2 = phi( main::@13/0, main::@17/main::match#6 )
  [43] main::i1#2 = phi( main::@13/0, main::@17/main::i1#1 )
  [44] if(main::i1#2<3) goto main::@15
  to:main::@16
main::@16: scope:[main]  from main::@14
  [45] if(main::match#2!=3) goto main::@20
  to:main::@19
main::@19: scope:[main]  from main::@16
  [46] main::tags_found[main::tag_idx#2] = 1
  to:main::@21
main::@20: scope:[main]  from main::@16
  [47] main::required_tag#1 = main::required_tag#6 + 3
  [48] main::tag_idx#1 = ++ main::tag_idx#2
  to:main::@13
main::@15: scope:[main]  from main::@14
  [49] if(main::required_tag#6[main::i1#2]!=main::pass#10[main::i1#2]) goto main::@17
  to:main::@18
main::@18: scope:[main]  from main::@15
  [50] main::match#1 = ++ main::match#2
  to:main::@17
main::@17: scope:[main]  from main::@15 main::@18
  [51] main::match#6 = phi( main::@15/main::match#2, main::@18/main::match#1 )
  [52] main::i1#1 = ++ main::i1#2
  to:main::@14

__stackcall void cputc(volatile char c)
cputc: scope:[cputc]  from printf_number_buffer::@3
  [53] cputc::c = stackidx(char,cputc::OFFSET_STACK_C)
  [54] if(cputc::c=='
'at) goto cputc::@1
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc
  [55] if(cputc::c=='
'at) goto cputc::@2
  to:cputc::@8
cputc::@8: scope:[cputc]  from cputc::@3
  [56] if(cputc::c==$9b) goto cputc::@2
  to:cputc::convertToScreenCode1
cputc::convertToScreenCode1: scope:[cputc]  from cputc::@8
  [57] cputc::convertToScreenCode1_return#0 = rawmap[*cputc::convertToScreenCode1_v#0]
  to:cputc::@6
cputc::@6: scope:[cputc]  from cputc::convertToScreenCode1
  [58] phi()
  [59] call putchar
  to:cputc::@7
cputc::@7: scope:[cputc]  from cputc::@6
  [60] *COLCRS = ++ *COLCRS
  [61] if(*COLCRS==$28) goto cputc::@5
  to:cputc::@4
cputc::@4: scope:[cputc]  from cputc::@7
  [62] phi()
  [63] call setcursor
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@1 cputc::@2 cputc::@4 cputc::@5
  [64] return 
  to:@return
cputc::@5: scope:[cputc]  from cputc::@7
  [65] *COLCRS = 0
  [66] call newline
  to:cputc::@return
cputc::@2: scope:[cputc]  from cputc::@3 cputc::@8
  [67] *COLCRS = 0
  [68] call newline
  to:cputc::@return
cputc::@1: scope:[cputc]  from cputc
  [69] *COLCRS = 0
  [70] call setcursor
  to:cputc::@return

void clrscr()
clrscr: scope:[clrscr]  from main
  [71] memset::str#7 = (void *)*SAVMSC
  [72] call memset
  to:clrscr::@1
clrscr::@1: scope:[clrscr]  from clrscr
  [73] *OLDCHR = 0
  [74] call gotoxy
  to:clrscr::@return
clrscr::@return: scope:[clrscr]  from clrscr::@1
  [75] return 
  to:@return

void printf_str(void (*putc)(char) , const char *s)
printf_str: scope:[printf_str]  from main::@10 main::@11 main::@29 main::@3 main::@31 printf_number_buffer::@2
  [76] printf_str::putc#8 = phi( main::@10/&cputc, main::@11/&cputc, main::@3/&cputc, main::@29/&cputc, main::@31/&cputc, printf_number_buffer::@2/printf_number_buffer::putc#0 )
  [76] printf_str::s#8 = phi( main::@10/main::s4, main::@11/main::s3, main::@3/main::s, main::@29/main::s1, main::@31/main::s2, 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
  [77] printf_str::s#7 = phi( printf_str/printf_str::s#8, printf_str::@2/printf_str::s#0 )
  [78] printf_str::c#1 = *printf_str::s#7
  [79] printf_str::s#0 = ++ printf_str::s#7
  [80] if(0!=printf_str::c#1) goto printf_str::@2
  to:printf_str::@return
printf_str::@return: scope:[printf_str]  from printf_str::@1
  [81] return 
  to:@return
printf_str::@2: scope:[printf_str]  from printf_str::@1
  [82] stackpush(char) = printf_str::c#1
  [83] callexecute *printf_str::putc#8 
  sideeffect stackpullbytes(1)
  to:printf_str::@1

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::@28 main::@30
  [85] printf_uint::uvalue#2 = phi( main::@28/printf_uint::uvalue#0, main::@30/printf_uint::uvalue#1 )
  to:printf_uint::@1
printf_uint::@1: scope:[printf_uint]  from printf_uint
  [86] *((char *)&printf_buffer) = 0
  [87] utoa::value#1 = printf_uint::uvalue#2
  [88] call utoa
  to:printf_uint::@2
printf_uint::@2: scope:[printf_uint]  from printf_uint::@1
  [89] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer)
  [90] call printf_number_buffer
  to:printf_uint::@return
printf_uint::@return: scope:[printf_uint]  from printf_uint::@2
  [91] return 
  to:@return

void putchar(char code)
putchar: scope:[putchar]  from cputc::@6
  [92] *(*OLDADR) = *OLDCHR
  [93] call cursorLocation
  [94] cursorLocation::return#0 = cursorLocation::return#1
  to:putchar::@1
putchar::@1: scope:[putchar]  from putchar
  [95] putchar::loc#0 = cursorLocation::return#0
  [96] putchar::newChar#0 = cputc::convertToScreenCode1_return#0
  [97] *putchar::loc#0 = putchar::newChar#0
  [98] *OLDCHR = putchar::newChar#0
  [99] call setcursor
  to:putchar::@return
putchar::@return: scope:[putchar]  from putchar::@1
  [100] return 
  to:@return

void setcursor()
setcursor: scope:[setcursor]  from cputc::@1 cputc::@4 gotoxy newline::@1 putchar::@1
  [101] *(*OLDADR) = *OLDCHR
  [102] call cursorLocation
  [103] cursorLocation::return#3 = cursorLocation::return#1
  to:setcursor::@3
setcursor::@3: scope:[setcursor]  from setcursor
  [104] setcursor::loc#0 = cursorLocation::return#3
  [105] setcursor::c#0 = *setcursor::loc#0
  [106] *OLDCHR = setcursor::c#0
  [107] *OLDADR = setcursor::loc#0
  to:setcursor::@2
setcursor::@2: scope:[setcursor]  from setcursor::@3
  [108] *CRSINH = 0
  [109] setcursor::c#1 = setcursor::c#0 ^ $80
  to:setcursor::@1
setcursor::@1: scope:[setcursor]  from setcursor::@2
  [110] *(*OLDADR) = setcursor::c#1
  to:setcursor::@return
setcursor::@return: scope:[setcursor]  from setcursor::@1
  [111] return 
  to:@return

void newline()
newline: scope:[newline]  from cputc::@2 cputc::@5
  [112] *ROWCRS = ++ *ROWCRS
  [113] if(*ROWCRS!=$18) goto newline::@1
  to:newline::@3
newline::@3: scope:[newline]  from newline
  [114] *(*OLDADR) = *(*OLDADR) ^ $80
  to:newline::@2
newline::@2: scope:[newline]  from newline::@3
  [115] newline::start#0 = *SAVMSC
  [116] memcpy::source#0 = newline::start#0 + $28
  [117] memcpy::destination#0 = (void *)newline::start#0
  [118] call memcpy
  to:newline::@4
newline::@4: scope:[newline]  from newline::@2
  [119] memset::str#1 = newline::start#0 + (unsigned int)$28*$17
  [120] memset::str#8 = (void *)memset::str#1
  [121] call memset
  to:newline::@5
newline::@5: scope:[newline]  from newline::@4
  [122] *ROWCRS = $18-1
  to:newline::@1
newline::@1: scope:[newline]  from newline newline::@5
  [123] phi()
  [124] call setcursor
  to:newline::@return
newline::@return: scope:[newline]  from newline::@1
  [125] return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from clrscr newline::@4
  [126] memset::str#3 = phi( clrscr/memset::str#7, newline::@4/memset::str#8 )
  [126] memset::num#2 = phi( clrscr/(unsigned int)$28*$18, newline::@4/$28 )
  [127] if(memset::num#2<=0) goto memset::@return
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [128] memset::end#0 = (char *)memset::str#3 + memset::num#2
  [129] memset::dst#4 = (char *)memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [130] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [131] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset memset::@2
  [132] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [133] *memset::dst#2 = 0
  [134] memset::dst#1 = ++ memset::dst#2
  to:memset::@2

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from clrscr::@1
  [135] *COLCRS = gotoxy::x#0
  [136] *ROWCRS = gotoxy::y#0
  [137] call setcursor
  to:gotoxy::@return
gotoxy::@return: scope:[gotoxy]  from gotoxy
  [138] return 
  to:@return

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

char * cursorLocation()
cursorLocation: scope:[cursorLocation]  from putchar setcursor
  [168] cursorLocation::$3 = (unsigned int)*ROWCRS
  [169] cursorLocation::$4 = cursorLocation::$3 << 2
  [170] cursorLocation::$5 = cursorLocation::$4 + cursorLocation::$3
  [171] cursorLocation::$0 = cursorLocation::$5 << 3
  [172] cursorLocation::$1 = *SAVMSC + cursorLocation::$0
  [173] cursorLocation::return#1 = cursorLocation::$1 + *COLCRS
  to:cursorLocation::@return
cursorLocation::@return: scope:[cursorLocation]  from cursorLocation
  [174] return 
  to:@return

void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy]  from newline::@2
  [175] memcpy::src_end#0 = (char *)(void *)memcpy::source#0 + memcpy::num#0
  [176] memcpy::src#4 = (char *)(void *)memcpy::source#0
  [177] memcpy::dst#4 = (char *)memcpy::destination#0
  to:memcpy::@1
memcpy::@1: scope:[memcpy]  from memcpy memcpy::@2
  [178] memcpy::dst#2 = phi( memcpy/memcpy::dst#4, memcpy::@2/memcpy::dst#1 )
  [178] memcpy::src#2 = phi( memcpy/memcpy::src#4, memcpy::@2/memcpy::src#1 )
  [179] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
  to:memcpy::@return
memcpy::@return: scope:[memcpy]  from memcpy::@1
  [180] return 
  to:@return
memcpy::@2: scope:[memcpy]  from memcpy::@1
  [181] *memcpy::dst#2 = *memcpy::src#2
  [182] memcpy::dst#1 = ++ memcpy::dst#2
  [183] 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
  [184] phi()
  to:utoa_append::@1
utoa_append::@1: scope:[utoa_append]  from utoa_append utoa_append::@2
  [185] utoa_append::digit#2 = phi( utoa_append/0, utoa_append::@2/utoa_append::digit#1 )
  [185] utoa_append::value#2 = phi( utoa_append/utoa_append::value#0, utoa_append::@2/utoa_append::value#1 )
  [186] 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
  [187] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2]
  to:utoa_append::@return
utoa_append::@return: scope:[utoa_append]  from utoa_append::@3
  [188] return 
  to:@return
utoa_append::@2: scope:[utoa_append]  from utoa_append::@1
  [189] utoa_append::digit#1 = ++ utoa_append::digit#2
  [190] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0
  to:utoa_append::@1
