
void main()
main: scope:[main]  from
  [0] phi()
  [1] call clrscr
  to:main::@2
main::@2: scope:[main]  from main
  [2] phi()
  [3] call test_slope
  [4] test_slope::return#0 = test_slope::trees#2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [5] printf_uint::uvalue#0 = test_slope::return#0
  [6] call printf_str
  to:main::@4
main::@4: scope:[main]  from main::@3
  [7] phi()
  [8] call printf_uint
  to:main::@5
main::@5: scope:[main]  from main::@4
  [9] phi()
  [10] call printf_str
  to:main::@6
main::@6: scope:[main]  from main::@5
  [11] phi()
  [12] call test_slope
  [13] test_slope::return#1 = test_slope::trees#2
  to:main::@7
main::@7: scope:[main]  from main::@6
  [14] printf_uint::uvalue#1 = test_slope::return#1
  [15] call printf_str
  to:main::@8
main::@8: scope:[main]  from main::@7
  [16] phi()
  [17] call printf_uint
  to:main::@9
main::@9: scope:[main]  from main::@8
  [18] phi()
  [19] call printf_str
  to:main::@10
main::@10: scope:[main]  from main::@9
  [20] phi()
  [21] call test_slope
  [22] test_slope::return#10 = test_slope::trees#2
  to:main::@11
main::@11: scope:[main]  from main::@10
  [23] printf_uint::uvalue#2 = test_slope::return#10
  [24] call printf_str
  to:main::@12
main::@12: scope:[main]  from main::@11
  [25] phi()
  [26] call printf_uint
  to:main::@13
main::@13: scope:[main]  from main::@12
  [27] phi()
  [28] call printf_str
  to:main::@14
main::@14: scope:[main]  from main::@13
  [29] phi()
  [30] call test_slope
  [31] test_slope::return#11 = test_slope::trees#2
  to:main::@15
main::@15: scope:[main]  from main::@14
  [32] printf_uint::uvalue#3 = test_slope::return#11
  [33] call printf_str
  to:main::@16
main::@16: scope:[main]  from main::@15
  [34] phi()
  [35] call printf_uint
  to:main::@17
main::@17: scope:[main]  from main::@16
  [36] phi()
  [37] call printf_str
  to:main::@18
main::@18: scope:[main]  from main::@17
  [38] phi()
  [39] call test_slope
  [40] test_slope::return#12 = test_slope::trees#2
  to:main::@19
main::@19: scope:[main]  from main::@18
  [41] printf_uint::uvalue#4 = test_slope::return#12
  [42] call printf_str
  to:main::@20
main::@20: scope:[main]  from main::@19
  [43] phi()
  [44] call printf_uint
  to:main::@21
main::@21: scope:[main]  from main::@20
  [45] phi()
  [46] call printf_str
  to:main::@22
main::@22: scope:[main]  from main::@21
  [47] phi()
  [48] call test_slope
  [49] test_slope::return#13 = test_slope::trees#2
  to:main::@23
main::@23: scope:[main]  from main::@22
  [50] printf_uint::uvalue#5 = test_slope::return#13
  [51] call printf_str
  to:main::@24
main::@24: scope:[main]  from main::@23
  [52] phi()
  [53] call printf_uint
  to:main::@25
main::@25: scope:[main]  from main::@24
  [54] phi()
  [55] call printf_str
  to:main::@1
main::@1: scope:[main]  from main::@1 main::@25
  [56] phi()
  to:main::@1

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

void clrscr()
clrscr: scope:[clrscr]  from main
  [75] memset::str#7 = (void *)*SAVMSC
  [76] call memset
  to:clrscr::@1
clrscr::@1: scope:[clrscr]  from clrscr
  [77] *OLDCHR = 0
  [78] call gotoxy
  to:clrscr::@return
clrscr::@return: scope:[clrscr]  from clrscr::@1
  [79] return 
  to:@return

unsigned int test_slope(char x_inc , char y_inc)
test_slope: scope:[test_slope]  from main::@10 main::@14 main::@18 main::@2 main::@22 main::@6
  [80] test_slope::y_inc#12 = phi( main::@10/1, main::@14/1, main::@18/1, main::@2/1, main::@22/2, main::@6/1 )
  [80] test_slope::x_inc#10 = phi( main::@10/3, main::@14/5, main::@18/7, main::@2/3, main::@22/1, main::@6/1 )
  to:test_slope::@1
test_slope::@1: scope:[test_slope]  from test_slope test_slope::@4
  [81] test_slope::trees#2 = phi( test_slope/0, test_slope::@4/test_slope::trees#6 )
  [81] test_slope::x#3 = phi( test_slope/0, test_slope::@4/test_slope::x#8 )
  [81] test_slope::mapline#2 = phi( test_slope/map, test_slope::@4/test_slope::mapline#1 )
  [81] test_slope::y#2 = phi( test_slope/0, test_slope::@4/test_slope::y#1 )
  [82] if(test_slope::y#2<$143) goto test_slope::@2
  to:test_slope::@return
test_slope::@return: scope:[test_slope]  from test_slope::@1
  [83] return 
  to:@return
test_slope::@2: scope:[test_slope]  from test_slope::@1
  [84] if(test_slope::mapline#2[test_slope::x#3]!='#'at) goto test_slope::@3
  to:test_slope::@5
test_slope::@5: scope:[test_slope]  from test_slope::@2
  [85] test_slope::trees#1 = ++ test_slope::trees#2
  to:test_slope::@3
test_slope::@3: scope:[test_slope]  from test_slope::@2 test_slope::@5
  [86] test_slope::trees#6 = phi( test_slope::@2/test_slope::trees#2, test_slope::@5/test_slope::trees#1 )
  [87] test_slope::x#1 = test_slope::x#3 + test_slope::x_inc#10
  [88] if(test_slope::x#1<$1f) goto test_slope::@4
  to:test_slope::@6
test_slope::@6: scope:[test_slope]  from test_slope::@3
  [89] test_slope::x#2 = test_slope::x#1 - $1f
  to:test_slope::@4
test_slope::@4: scope:[test_slope]  from test_slope::@3 test_slope::@6
  [90] test_slope::x#8 = phi( test_slope::@3/test_slope::x#1, test_slope::@6/test_slope::x#2 )
  [91] test_slope::$6 = test_slope::y_inc#12 << 1
  [92] test_slope::$7 = test_slope::$6 + test_slope::y_inc#12
  [93] test_slope::$8 = test_slope::$7 << 1
  [94] test_slope::$9 = test_slope::$8 + test_slope::y_inc#12
  [95] test_slope::$10 = test_slope::$9 << 1
  [96] test_slope::$11 = test_slope::$10 + test_slope::y_inc#12
  [97] test_slope::$12 = test_slope::$11 << 1
  [98] test_slope::$5 = test_slope::$12 + test_slope::y_inc#12
  [99] test_slope::mapline#1 = test_slope::mapline#2 + test_slope::$5
  [100] test_slope::y#1 = test_slope::y#2 + test_slope::y_inc#12
  to:test_slope::@1

void printf_str(void (*putc)(char) , const char *s)
printf_str: scope:[printf_str]  from main::@11 main::@13 main::@15 main::@17 main::@19 main::@21 main::@23 main::@25 main::@3 main::@5 main::@7 main::@9 printf_number_buffer::@2
  [101] printf_str::putc#15 = phi( main::@11/&cputc, main::@13/&cputc, main::@15/&cputc, main::@17/&cputc, main::@19/&cputc, main::@21/&cputc, main::@23/&cputc, main::@25/&cputc, main::@3/&cputc, main::@5/&cputc, main::@7/&cputc, main::@9/&cputc, printf_number_buffer::@2/printf_number_buffer::putc#0 )
  [101] printf_str::s#15 = phi( main::@11/main::s4, main::@13/main::s1, main::@15/main::s6, main::@17/main::s1, main::@19/main::s8, main::@21/main::s1, main::@23/main::s10, main::@25/main::s1, main::@3/main::s, main::@5/main::s1, main::@7/main::s2, main::@9/main::s1, 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
  [102] printf_str::s#14 = phi( printf_str/printf_str::s#15, printf_str::@2/printf_str::s#0 )
  [103] printf_str::c#1 = *printf_str::s#14
  [104] printf_str::s#0 = ++ printf_str::s#14
  [105] if(0!=printf_str::c#1) goto printf_str::@2
  to:printf_str::@return
printf_str::@return: scope:[printf_str]  from printf_str::@1
  [106] return 
  to:@return
printf_str::@2: scope:[printf_str]  from printf_str::@1
  [107] stackpush(char) = printf_str::c#1
  [108] callexecute *printf_str::putc#15 
  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::@12 main::@16 main::@20 main::@24 main::@4 main::@8
  [110] printf_uint::uvalue#6 = phi( main::@12/printf_uint::uvalue#2, main::@16/printf_uint::uvalue#3, main::@20/printf_uint::uvalue#4, main::@24/printf_uint::uvalue#5, main::@4/printf_uint::uvalue#0, main::@8/printf_uint::uvalue#1 )
  to:printf_uint::@1
printf_uint::@1: scope:[printf_uint]  from printf_uint
  [111] *((char *)&printf_buffer) = 0
  [112] utoa::value#1 = printf_uint::uvalue#6
  [113] call utoa
  to:printf_uint::@2
printf_uint::@2: scope:[printf_uint]  from printf_uint::@1
  [114] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer)
  [115] call printf_number_buffer
  to:printf_uint::@return
printf_uint::@return: scope:[printf_uint]  from printf_uint::@2
  [116] return 
  to:@return

void putchar(char code)
putchar: scope:[putchar]  from cputc::@6
  [117] *(*OLDADR) = *OLDCHR
  [118] call cursorLocation
  [119] cursorLocation::return#0 = cursorLocation::return#1
  to:putchar::@1
putchar::@1: scope:[putchar]  from putchar
  [120] putchar::loc#0 = cursorLocation::return#0
  [121] putchar::newChar#0 = cputc::convertToScreenCode1_return#0
  [122] *putchar::loc#0 = putchar::newChar#0
  [123] *OLDCHR = putchar::newChar#0
  [124] call setcursor
  to:putchar::@return
putchar::@return: scope:[putchar]  from putchar::@1
  [125] return 
  to:@return

void setcursor()
setcursor: scope:[setcursor]  from cputc::@1 cputc::@4 gotoxy newline::@1 putchar::@1
  [126] *(*OLDADR) = *OLDCHR
  [127] call cursorLocation
  [128] cursorLocation::return#3 = cursorLocation::return#1
  to:setcursor::@3
setcursor::@3: scope:[setcursor]  from setcursor
  [129] setcursor::loc#0 = cursorLocation::return#3
  [130] setcursor::c#0 = *setcursor::loc#0
  [131] *OLDCHR = setcursor::c#0
  [132] *OLDADR = setcursor::loc#0
  to:setcursor::@2
setcursor::@2: scope:[setcursor]  from setcursor::@3
  [133] *CRSINH = 0
  [134] setcursor::c#1 = setcursor::c#0 ^ $80
  to:setcursor::@1
setcursor::@1: scope:[setcursor]  from setcursor::@2
  [135] *(*OLDADR) = setcursor::c#1
  to:setcursor::@return
setcursor::@return: scope:[setcursor]  from setcursor::@1
  [136] return 
  to:@return

void newline()
newline: scope:[newline]  from cputc::@2 cputc::@5
  [137] *ROWCRS = ++ *ROWCRS
  [138] if(*ROWCRS!=$18) goto newline::@1
  to:newline::@3
newline::@3: scope:[newline]  from newline
  [139] *(*OLDADR) = *(*OLDADR) ^ $80
  to:newline::@2
newline::@2: scope:[newline]  from newline::@3
  [140] newline::start#0 = *SAVMSC
  [141] memcpy::source#0 = newline::start#0 + $28
  [142] memcpy::destination#0 = (void *)newline::start#0
  [143] call memcpy
  to:newline::@4
newline::@4: scope:[newline]  from newline::@2
  [144] memset::str#1 = newline::start#0 + (unsigned int)$28*$17
  [145] memset::str#8 = (void *)memset::str#1
  [146] call memset
  to:newline::@5
newline::@5: scope:[newline]  from newline::@4
  [147] *ROWCRS = $18-1
  to:newline::@1
newline::@1: scope:[newline]  from newline newline::@5
  [148] phi()
  [149] call setcursor
  to:newline::@return
newline::@return: scope:[newline]  from newline::@1
  [150] return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from clrscr newline::@4
  [151] memset::str#3 = phi( clrscr/memset::str#7, newline::@4/memset::str#8 )
  [151] memset::num#2 = phi( clrscr/(unsigned int)$28*$18, newline::@4/$28 )
  [152] if(memset::num#2<=0) goto memset::@return
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [153] memset::end#0 = (char *)memset::str#3 + memset::num#2
  [154] memset::dst#4 = (char *)memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [155] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [156] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset memset::@2
  [157] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [158] *memset::dst#2 = 0
  [159] memset::dst#1 = ++ memset::dst#2
  to:memset::@2

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from clrscr::@1
  [160] *COLCRS = gotoxy::x#0
  [161] *ROWCRS = gotoxy::y#0
  [162] call setcursor
  to:gotoxy::@return
gotoxy::@return: scope:[gotoxy]  from gotoxy
  [163] return 
  to:@return

void utoa(unsigned int value , char *buffer , char radix)
utoa: scope:[utoa]  from printf_uint::@1
  [164] phi()
  to:utoa::@1
utoa::@1: scope:[utoa]  from utoa utoa::@4
  [165] utoa::buffer#11 = phi( utoa::@4/utoa::buffer#14, utoa/(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
  [165] utoa::started#2 = phi( utoa::@4/utoa::started#4, utoa/0 )
  [165] utoa::value#2 = phi( utoa::@4/utoa::value#6, utoa/utoa::value#1 )
  [165] utoa::digit#2 = phi( utoa::@4/utoa::digit#1, utoa/0 )
  [166] if(utoa::digit#2<5-1) goto utoa::@2
  to:utoa::@3
utoa::@3: scope:[utoa]  from utoa::@1
  [167] utoa::$11 = (char)utoa::value#2
  [168] *utoa::buffer#11 = DIGITS[utoa::$11]
  [169] utoa::buffer#3 = ++ utoa::buffer#11
  [170] *utoa::buffer#3 = 0
  to:utoa::@return
utoa::@return: scope:[utoa]  from utoa::@3
  [171] return 
  to:@return
utoa::@2: scope:[utoa]  from utoa::@1
  [172] utoa::$10 = utoa::digit#2 << 1
  [173] utoa::digit_value#0 = RADIX_DECIMAL_VALUES[utoa::$10]
  [174] if(0!=utoa::started#2) goto utoa::@5
  to:utoa::@7
utoa::@7: scope:[utoa]  from utoa::@2
  [175] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@5
  to:utoa::@4
utoa::@4: scope:[utoa]  from utoa::@6 utoa::@7
  [176] utoa::buffer#14 = phi( utoa::@7/utoa::buffer#11, utoa::@6/utoa::buffer#4 )
  [176] utoa::started#4 = phi( utoa::@7/utoa::started#2, utoa::@6/1 )
  [176] utoa::value#6 = phi( utoa::@7/utoa::value#2, utoa::@6/utoa::value#0 )
  [177] utoa::digit#1 = ++ utoa::digit#2
  to:utoa::@1
utoa::@5: scope:[utoa]  from utoa::@2 utoa::@7
  [178] utoa_append::buffer#0 = utoa::buffer#11
  [179] utoa_append::value#0 = utoa::value#2
  [180] utoa_append::sub#0 = utoa::digit_value#0
  [181] call utoa_append
  [182] utoa_append::return#0 = utoa_append::value#2
  to:utoa::@6
utoa::@6: scope:[utoa]  from utoa::@5
  [183] utoa::value#0 = utoa_append::return#0
  [184] 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
  [185] phi()
  to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer]  from printf_number_buffer
  [186] 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
  [187] stackpush(char) = printf_number_buffer::buffer_sign#0
  [188] 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
  [190] phi()
  [191] call printf_str
  to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer]  from printf_number_buffer::@2
  [192] return 
  to:@return

char * cursorLocation()
cursorLocation: scope:[cursorLocation]  from putchar setcursor
  [193] cursorLocation::$3 = (unsigned int)*ROWCRS
  [194] cursorLocation::$4 = cursorLocation::$3 << 2
  [195] cursorLocation::$5 = cursorLocation::$4 + cursorLocation::$3
  [196] cursorLocation::$0 = cursorLocation::$5 << 3
  [197] cursorLocation::$1 = *SAVMSC + cursorLocation::$0
  [198] cursorLocation::return#1 = cursorLocation::$1 + *COLCRS
  to:cursorLocation::@return
cursorLocation::@return: scope:[cursorLocation]  from cursorLocation
  [199] return 
  to:@return

void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy]  from newline::@2
  [200] memcpy::src_end#0 = (char *)(void *)memcpy::source#0 + memcpy::num#0
  [201] memcpy::src#4 = (char *)(void *)memcpy::source#0
  [202] memcpy::dst#4 = (char *)memcpy::destination#0
  to:memcpy::@1
memcpy::@1: scope:[memcpy]  from memcpy memcpy::@2
  [203] memcpy::dst#2 = phi( memcpy/memcpy::dst#4, memcpy::@2/memcpy::dst#1 )
  [203] memcpy::src#2 = phi( memcpy/memcpy::src#4, memcpy::@2/memcpy::src#1 )
  [204] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
  to:memcpy::@return
memcpy::@return: scope:[memcpy]  from memcpy::@1
  [205] return 
  to:@return
memcpy::@2: scope:[memcpy]  from memcpy::@1
  [206] *memcpy::dst#2 = *memcpy::src#2
  [207] memcpy::dst#1 = ++ memcpy::dst#2
  [208] 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
  [209] phi()
  to:utoa_append::@1
utoa_append::@1: scope:[utoa_append]  from utoa_append utoa_append::@2
  [210] utoa_append::digit#2 = phi( utoa_append/0, utoa_append::@2/utoa_append::digit#1 )
  [210] utoa_append::value#2 = phi( utoa_append/utoa_append::value#0, utoa_append::@2/utoa_append::value#1 )
  [211] 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
  [212] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2]
  to:utoa_append::@return
utoa_append::@return: scope:[utoa_append]  from utoa_append::@3
  [213] return 
  to:@return
utoa_append::@2: scope:[utoa_append]  from utoa_append::@1
  [214] utoa_append::digit#1 = ++ utoa_append::digit#2
  [215] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0
  to:utoa_append::@1
