
void main()
main: scope:[main]  from
  [0] phi()
  [1] call printf_str
  to:main::@2
main::@2: scope:[main]  from main
  [2] phi()
  [3] call strlen
  [4] strlen::return#3 = strlen::len#2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [5] md5::initial_len#0 = strlen::return#3
  [6] call md5
  to:main::@1
main::@1: scope:[main]  from main::@1 main::@3
  [7] phi()
  to:main::@1

__stackcall void cputc(volatile char c)
cputc: scope:[cputc]  from printf_number_buffer::@8 printf_padding::@2
  [8] cputc::c = stackidx(char,cputc::OFFSET_STACK_C)
  [9] if(cputc::c=='
'at) goto cputc::@1
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc
  [10] if(cputc::c=='
'at) goto cputc::@2
  to:cputc::@8
cputc::@8: scope:[cputc]  from cputc::@3
  [11] if(cputc::c==$9b) goto cputc::@2
  to:cputc::convertToScreenCode1
cputc::convertToScreenCode1: scope:[cputc]  from cputc::@8
  [12] cputc::convertToScreenCode1_return#0 = rawmap[*cputc::convertToScreenCode1_v#0]
  to:cputc::@6
cputc::@6: scope:[cputc]  from cputc::convertToScreenCode1
  [13] phi()
  [14] call putchar
  to:cputc::@7
cputc::@7: scope:[cputc]  from cputc::@6
  [15] *COLCRS = ++ *COLCRS
  [16] if(*COLCRS==$28) goto cputc::@5
  to:cputc::@4
cputc::@4: scope:[cputc]  from cputc::@7
  [17] phi()
  [18] call setcursor
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@1 cputc::@2 cputc::@4 cputc::@5
  [19] return 
  to:@return
cputc::@5: scope:[cputc]  from cputc::@7
  [20] *COLCRS = 0
  [21] call newline
  to:cputc::@return
cputc::@2: scope:[cputc]  from cputc::@3 cputc::@8
  [22] *COLCRS = 0
  [23] call newline
  to:cputc::@return
cputc::@1: scope:[cputc]  from cputc
  [24] *COLCRS = 0
  [25] call setcursor
  to:cputc::@return

void printf_str(void (*putc)(char) , const char *s)
printf_str: scope:[printf_str]  from main md5::@10 md5::@20 md5::@33 md5::@35 md5::@42 md5::@44 printf_number_buffer::@4
  [26] printf_str::putc#10 = phi( main/&cputc, md5::@10/&cputc, md5::@20/&cputc, md5::@33/&cputc, md5::@35/&cputc, md5::@42/&cputc, md5::@44/&cputc, printf_number_buffer::@4/printf_number_buffer::putc#0 )
  [26] printf_str::s#10 = phi( main/main::s, md5::@10/md5::s1, md5::@20/md5::s, md5::@33/md5::s2, md5::@35/md5::s3, md5::@42/md5::s5, md5::@44/md5::s6, printf_number_buffer::@4/printf_number_buffer::buffer_digits#0 )
  to:printf_str::@1
printf_str::@1: scope:[printf_str]  from printf_str printf_str::@2
  [27] printf_str::s#9 = phi( printf_str/printf_str::s#10, printf_str::@2/printf_str::s#0 )
  [28] printf_str::c#1 = *printf_str::s#9
  [29] printf_str::s#0 = ++ printf_str::s#9
  [30] if(0!=printf_str::c#1) goto printf_str::@2
  to:printf_str::@return
printf_str::@return: scope:[printf_str]  from printf_str::@1
  [31] return 
  to:@return
printf_str::@2: scope:[printf_str]  from printf_str::@1
  [32] stackpush(char) = printf_str::c#1
  [33] callexecute *printf_str::putc#10 
  sideeffect stackpullbytes(1)
  to:printf_str::@1

unsigned int strlen(char *str)
strlen: scope:[strlen]  from main::@2 printf_number_buffer::@5
  [35] strlen::str#5 = phi( main::@2/main::message, printf_number_buffer::@5/printf_number_buffer::buffer_digits#0 )
  to:strlen::@1
strlen::@1: scope:[strlen]  from strlen strlen::@2
  [36] strlen::len#2 = phi( strlen/0, strlen::@2/strlen::len#1 )
  [36] strlen::str#3 = phi( strlen/strlen::str#5, strlen::@2/strlen::str#0 )
  [37] if(0!=*strlen::str#3) goto strlen::@2
  to:strlen::@return
strlen::@return: scope:[strlen]  from strlen::@1
  [38] return 
  to:@return
strlen::@2: scope:[strlen]  from strlen::@1
  [39] strlen::len#1 = ++ strlen::len#2
  [40] strlen::str#0 = ++ strlen::str#3
  to:strlen::@1

void md5(char *initial_msg , unsigned int initial_len)
md5: scope:[md5]  from main::@3
  [41] md5::$0 = md5::initial_len#0 + 8
  [42] md5::$1 = md5::$0 >> 6
  [43] md5::$2 = md5::$1 + 1
  [44] md5::$3 = md5::$2 << 6
  [45] md5::new_len#0 = md5::$3 - 8
  [46] calloc::nitems#0 = md5::new_len#0 + $40
  [47] call calloc
  [48] calloc::return#2 = calloc::return#0
  to:md5::@18
md5::@18: scope:[md5]  from md5
  [49] md5::msg#1 = calloc::return#2
  [50] memcpy::destination#1 = (void *)(char *)md5::msg#1
  [51] memcpy::num#1 = md5::initial_len#0
  [52] call memcpy
  to:md5::@19
md5::@19: scope:[md5]  from md5::@18
  [53] md5::$74 = (char *)md5::msg#1 + md5::initial_len#0
  [54] *md5::$74 = $80
  [55] md5::bits_len = md5::initial_len#0 << 3
  [56] memcpy::destination#2 = (char *)md5::msg#1 + md5::new_len#0
  [57] memcpy::destination#8 = (void *)memcpy::destination#2
  [58] call memcpy
  to:md5::@1
md5::@1: scope:[md5]  from md5::@19 md5::@5
  [59] h3#10 = phi( md5::@19/$10325476, md5::@5/h3#3 )
  [59] h2#10 = phi( md5::@19/$98badcfe, md5::@5/h2#3 )
  [59] h1#10 = phi( md5::@19/$efcdab89, md5::@5/h1#3 )
  [59] h0#10 = phi( md5::@19/$67452301, md5::@5/h0#3 )
  [59] md5::offset#2 = phi( md5::@19/0, md5::@5/md5::offset#1 )
  [60] if(md5::offset#2<md5::new_len#0) goto md5::@2
  to:md5::@return
md5::@return: scope:[md5]  from md5::@1
  [61] return 
  to:@return
md5::@2: scope:[md5]  from md5::@1
  [62] md5::w#0 = (char *)md5::msg#1 + md5::offset#2
  [63] md5::a#0 = h0#10
  [64] md5::b#0 = h1#10
  [65] md5::c#0 = h2#10
  [66] md5::d#0 = h3#10
  to:md5::@3
md5::@3: scope:[md5]  from md5::@11 md5::@2
  [67] md5::temp#0 = phi( md5::@11/md5::temp#12, md5::@2/md5::d#0 )
  [67] md5::c#10 = phi( md5::@11/md5::c#49, md5::@2/md5::c#0 )
  [67] md5::b#10 = phi( md5::@11/md5::b#49, md5::@2/md5::b#0 )
  [67] md5::a#11 = phi( md5::@11/md5::a#48, md5::@2/md5::a#0 )
  [67] md5::i#10 = phi( md5::@11/md5::i#1, md5::@2/0 )
  [68] if(md5::i#10<$40) goto md5::@4
  to:md5::@5
md5::@5: scope:[md5]  from md5::@3
  [69] h0#3 = h0#10 + md5::a#11
  [70] h1#3 = h1#10 + md5::b#10
  [71] h2#3 = h2#10 + md5::c#10
  [72] h3#3 = h3#10 + md5::temp#0
  [73] md5::offset#1 = md5::offset#2 + (signed char)$200/8
  to:md5::@1
md5::@4: scope:[md5]  from md5::@3
  [74] printf_uchar::uvalue#4 = md5::i#10
  [75] call printf_uchar
  to:md5::@20
md5::@20: scope:[md5]  from md5::@4
  [76] phi()
  [77] call printf_str
  to:md5::@21
md5::@21: scope:[md5]  from md5::@20
  [78] print32::l = md5::a#11
  [79] call print32
  to:md5::@22
md5::@22: scope:[md5]  from md5::@21
  [80] stackpush(char) = ' 'at
  [81] callexecute cputc 
  sideeffect stackpullbytes(1)
  [83] print32::l = md5::b#10
  [84] call print32
  to:md5::@23
md5::@23: scope:[md5]  from md5::@22
  [85] stackpush(char) = ' 'at
  [86] callexecute cputc 
  sideeffect stackpullbytes(1)
  [88] print32::l = md5::c#10
  [89] call print32
  to:md5::@24
md5::@24: scope:[md5]  from md5::@23
  [90] stackpush(char) = ' 'at
  [91] callexecute cputc 
  sideeffect stackpullbytes(1)
  [93] print32::l = md5::temp#0
  [94] call print32
  to:md5::@25
md5::@25: scope:[md5]  from md5::@24
  [95] phi()
  [96] call cputln
  to:md5::BREAK1
md5::BREAK1: scope:[md5]  from md5::@25
  kickasm() {{ .break  }}
  to:md5::@15
md5::@15: scope:[md5]  from md5::BREAK1
  [98] md5::$24 = md5::i#10 >> 4
  [99] md5::$25 = md5::$24 & 3
  [100] if(md5::$25==0) goto md5::@6
  to:md5::@12
md5::@12: scope:[md5]  from md5::@15
  [101] if(md5::$25==1) goto md5::@7
  to:md5::@13
md5::@13: scope:[md5]  from md5::@12
  [102] if(md5::$25==2) goto md5::@8
  to:md5::@14
md5::@14: scope:[md5]  from md5::@13
  [103] if(md5::$25==3) goto md5::@9
  to:md5::@10
md5::@10: scope:[md5]  from md5::@14 md5::@27 md5::@29 md5::@31 md5::@6
  [104] md5::g#10 = phi( md5::@14/0, md5::@27/md5::g#2, md5::@29/md5::g#3, md5::@31/md5::g#4, md5::@6/md5::g#31 )
  [104] md5::f#10 = phi( md5::@14/0, md5::@27/md5::f#12, md5::@29/md5::f#13, md5::@31/md5::f#14, md5::@6/md5::f#1 )
  [105] call printf_str
  to:md5::@32
md5::@32: scope:[md5]  from md5::@10
  [106] print32::l = md5::f#10
  [107] call print32
  to:md5::@33
md5::@33: scope:[md5]  from md5::@32
  [108] stackpush(char) = ' 'at
  [109] callexecute cputc 
  sideeffect stackpullbytes(1)
  [111] call printf_str
  to:md5::@34
md5::@34: scope:[md5]  from md5::@33
  [112] printf_uchar::uvalue#5 = md5::g#10
  [113] call printf_uchar
  to:md5::@35
md5::@35: scope:[md5]  from md5::@34
  [114] phi()
  [115] call printf_str
  to:md5::@36
md5::@36: scope:[md5]  from md5::@35
  [116] md5::$71 = md5::g#10 << 2
  [117] print32::l = ((unsigned long *)md5::w#0)[md5::$71]
  [118] call print32
  to:md5::@37
md5::@37: scope:[md5]  from md5::@36
  [119] phi()
  [120] call cputln
  to:md5::BREAK2
md5::BREAK2: scope:[md5]  from md5::@37
  kickasm() {{ .break  }}
  to:md5::@16
md5::@16: scope:[md5]  from md5::BREAK2
  [122] phi()
  [123] call cputs
  to:md5::@38
md5::@38: scope:[md5]  from md5::@16
  [124] print32::l = md5::a#11
  [125] call print32
  to:md5::@39
md5::@39: scope:[md5]  from md5::@38
  [126] stackpush(char) = ' 'at
  [127] callexecute cputc 
  sideeffect stackpullbytes(1)
  [129] print32::l = md5::f#10
  [130] call print32
  to:md5::@40
md5::@40: scope:[md5]  from md5::@39
  [131] stackpush(char) = ' 'at
  [132] callexecute cputc 
  sideeffect stackpullbytes(1)
  [134] md5::$72 = md5::i#10 << 2
  [135] print32::l = md5::k[md5::$72]
  [136] call print32
  to:md5::@41
md5::@41: scope:[md5]  from md5::@40
  [137] stackpush(char) = ' 'at
  [138] callexecute cputc 
  sideeffect stackpullbytes(1)
  [140] print32::l = ((unsigned long *)md5::w#0)[md5::$71]
  [141] call print32
  to:md5::@42
md5::@42: scope:[md5]  from md5::@41
  [142] stackpush(char) = ' 'at
  [143] callexecute cputc 
  sideeffect stackpullbytes(1)
  [145] call printf_str
  to:md5::@43
md5::@43: scope:[md5]  from md5::@42
  [146] printf_uchar::uvalue#6 = md5::r[md5::i#10]
  [147] call printf_uchar
  to:md5::@44
md5::@44: scope:[md5]  from md5::@43
  [148] phi()
  [149] call printf_str
  to:md5::BREAK3
md5::BREAK3: scope:[md5]  from md5::@44
  kickasm() {{ .break  }}
  to:md5::@17
md5::@17: scope:[md5]  from md5::BREAK3
  [151] md5::$65 = md5::a#11 + md5::f#10
  [152] md5::$66 = md5::$65 + md5::k[md5::$72]
  [153] md5::$67 = md5::$66 + ((unsigned long *)md5::w#0)[md5::$71]
  [154] leftRotate::a = md5::$67
  [155] leftRotate::r#0 = md5::r[md5::i#10]
  [156] call leftRotate
  [157] leftRotate::return#2 = leftRotate::return#0
  to:md5::@45
md5::@45: scope:[md5]  from md5::@17
  [158] md5::lr#0 = leftRotate::return#2
  [159] md5::b#1 = md5::b#10 + md5::lr#0
  to:md5::@11
md5::@11: scope:[md5]  from md5::@45
  [160] md5::i#1 = ++ md5::i#10
  [161] md5::a#48 = md5::temp#0
  [162] md5::b#49 = md5::b#1
  [163] md5::c#49 = md5::b#10
  [164] md5::temp#12 = md5::c#10
  to:md5::@3
md5::@9: scope:[md5]  from md5::@14
  [165] md5::$42 = ~ md5::temp#0
  [166] md5::$43 = md5::b#10 | md5::$42
  [167] md5::f#14 = md5::c#10 ^ md5::$43
  [168] mul7::a#0 = md5::i#10
  [169] call mul7
  [170] mul7::return#2 = mul7::return#0
  to:md5::@30
md5::@30: scope:[md5]  from md5::@9
  [171] mod16::a#2 = mul7::return#2
  [172] call mod16
  [173] mod16::return#4 = mod16::return#0
  to:md5::@31
md5::@31: scope:[md5]  from md5::@30
  [174] md5::g#4 = mod16::return#4
  to:md5::@10
md5::@8: scope:[md5]  from md5::@13
  [175] md5::$37 = md5::b#10 ^ md5::c#10
  [176] md5::f#13 = md5::$37 ^ md5::temp#0
  [177] mul3::a#0 = md5::i#10
  [178] call mul3
  [179] mul3::return#2 = mul3::return#0
  to:md5::@28
md5::@28: scope:[md5]  from md5::@8
  [180] md5::$39 = mul3::return#2
  [181] mod16::a#1 = md5::$39 + 5
  [182] call mod16
  [183] mod16::return#3 = mod16::return#0
  to:md5::@29
md5::@29: scope:[md5]  from md5::@28
  [184] md5::g#3 = mod16::return#3
  to:md5::@10
md5::@7: scope:[md5]  from md5::@12
  [185] md5::$30 = md5::temp#0 & md5::b#10
  [186] md5::$31 = ~ md5::temp#0
  [187] md5::$32 = md5::$31 & md5::c#10
  [188] md5::f#12 = md5::$30 | md5::$32
  [189] mul5::a#0 = md5::i#10
  [190] call mul5
  [191] mul5::return#2 = mul5::return#0
  to:md5::@26
md5::@26: scope:[md5]  from md5::@7
  [192] md5::$34 = mul5::return#2
  [193] mod16::a#0 = md5::$34 + 1
  [194] call mod16
  [195] mod16::return#2 = mod16::return#0
  to:md5::@27
md5::@27: scope:[md5]  from md5::@26
  [196] md5::g#2 = mod16::return#2
  to:md5::@10
md5::@6: scope:[md5]  from md5::@15
  [197] md5::$26 = md5::b#10 & md5::c#10
  [198] md5::$27 = ~ md5::b#10
  [199] md5::$28 = md5::$27 & md5::temp#0
  [200] md5::f#1 = md5::$26 | md5::$28
  [201] md5::g#31 = md5::i#10
  to:md5::@10

void putchar(char code)
putchar: scope:[putchar]  from cputc::@6
  [202] *(*OLDADR) = *OLDCHR
  [203] call cursorLocation
  [204] cursorLocation::return#0 = cursorLocation::return#1
  to:putchar::@1
putchar::@1: scope:[putchar]  from putchar
  [205] putchar::loc#0 = cursorLocation::return#0
  [206] putchar::newChar#0 = cputc::convertToScreenCode1_return#0
  [207] *putchar::loc#0 = putchar::newChar#0
  [208] *OLDCHR = putchar::newChar#0
  [209] call setcursor
  to:putchar::@return
putchar::@return: scope:[putchar]  from putchar::@1
  [210] return 
  to:@return

void setcursor()
setcursor: scope:[setcursor]  from cputc::@1 cputc::@4 newline::@1 putchar::@1
  [211] *(*OLDADR) = *OLDCHR
  [212] call cursorLocation
  [213] cursorLocation::return#3 = cursorLocation::return#1
  to:setcursor::@3
setcursor::@3: scope:[setcursor]  from setcursor
  [214] setcursor::loc#0 = cursorLocation::return#3
  [215] setcursor::c#0 = *setcursor::loc#0
  [216] *OLDCHR = setcursor::c#0
  [217] *OLDADR = setcursor::loc#0
  to:setcursor::@2
setcursor::@2: scope:[setcursor]  from setcursor::@3
  [218] *CRSINH = 0
  [219] setcursor::c#1 = setcursor::c#0 ^ $80
  to:setcursor::@1
setcursor::@1: scope:[setcursor]  from setcursor::@2
  [220] *(*OLDADR) = setcursor::c#1
  to:setcursor::@return
setcursor::@return: scope:[setcursor]  from setcursor::@1
  [221] return 
  to:@return

void newline()
newline: scope:[newline]  from cputc::@2 cputc::@5 cputln
  [222] *ROWCRS = ++ *ROWCRS
  [223] if(*ROWCRS!=$18) goto newline::@1
  to:newline::@3
newline::@3: scope:[newline]  from newline
  [224] *(*OLDADR) = *(*OLDADR) ^ $80
  to:newline::@2
newline::@2: scope:[newline]  from newline::@3
  [225] newline::start#0 = *SAVMSC
  [226] memcpy::source#0 = newline::start#0 + $28
  [227] memcpy::destination#0 = (void *)newline::start#0
  [228] memcpy::source#4 = (void *)memcpy::source#0
  [229] call memcpy
  to:newline::@4
newline::@4: scope:[newline]  from newline::@2
  [230] memset::str#1 = newline::start#0 + (unsigned int)$28*$17
  [231] memset::str#8 = (void *)memset::str#1
  [232] call memset
  to:newline::@5
newline::@5: scope:[newline]  from newline::@4
  [233] *ROWCRS = $18-1
  to:newline::@1
newline::@1: scope:[newline]  from newline newline::@5
  [234] phi()
  [235] call setcursor
  to:newline::@return
newline::@return: scope:[newline]  from newline::@1
  [236] return 
  to:@return

void * calloc(unsigned int nitems , unsigned int size)
calloc: scope:[calloc]  from md5
  [237] malloc::size#0 = calloc::nitems#0
  [238] call malloc
  to:calloc::@1
calloc::@1: scope:[calloc]  from calloc
  [239] calloc::return#0 = (void *)malloc::mem#0
  [240] memset::num#0 = calloc::nitems#0
  [241] memset::str#0 = calloc::return#0
  [242] call memset
  to:calloc::@return
calloc::@return: scope:[calloc]  from calloc::@1
  [243] return 
  to:@return

void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy]  from md5::@18 md5::@19 newline::@2
  [244] memcpy::num#3 = phi( md5::@18/memcpy::num#1, md5::@19/4, newline::@2/(unsigned int)$28*$17 )
  [244] memcpy::destination#3 = phi( md5::@18/memcpy::destination#1, md5::@19/memcpy::destination#8, newline::@2/memcpy::destination#0 )
  [244] memcpy::source#3 = phi( md5::@18/(void *)main::message, md5::@19/(void *)&md5::bits_len, newline::@2/memcpy::source#4 )
  [245] memcpy::src_end#0 = (char *)memcpy::source#3 + memcpy::num#3
  [246] memcpy::src#4 = (char *)memcpy::source#3
  [247] memcpy::dst#4 = (char *)memcpy::destination#3
  to:memcpy::@1
memcpy::@1: scope:[memcpy]  from memcpy memcpy::@2
  [248] memcpy::dst#2 = phi( memcpy/memcpy::dst#4, memcpy::@2/memcpy::dst#1 )
  [248] memcpy::src#2 = phi( memcpy/memcpy::src#4, memcpy::@2/memcpy::src#1 )
  [249] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
  to:memcpy::@return
memcpy::@return: scope:[memcpy]  from memcpy::@1
  [250] return 
  to:@return
memcpy::@2: scope:[memcpy]  from memcpy::@1
  [251] *memcpy::dst#2 = *memcpy::src#2
  [252] memcpy::dst#1 = ++ memcpy::dst#2
  [253] memcpy::src#1 = ++ memcpy::src#2
  to:memcpy::@1

void printf_uchar(void (*putc)(char) , char 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_uchar: scope:[printf_uchar]  from md5::@34 md5::@4 md5::@43 print32 print32::@1 print32::@2 print32::@3
  [254] printf_uchar::format_zero_padding#10 = phi( md5::@34/0, md5::@4/0, md5::@43/0, print32/1, print32::@1/1, print32::@2/1, print32::@3/1 )
  [254] printf_uchar::uvalue#10 = phi( md5::@34/printf_uchar::uvalue#5, md5::@4/printf_uchar::uvalue#4, md5::@43/printf_uchar::uvalue#6, print32/printf_uchar::uvalue#0, print32::@1/printf_uchar::uvalue#1, print32::@2/printf_uchar::uvalue#2, print32::@3/printf_uchar::uvalue#3 )
  to:printf_uchar::@1
printf_uchar::@1: scope:[printf_uchar]  from printf_uchar
  [255] *((char *)&printf_buffer) = 0
  [256] uctoa::value#1 = printf_uchar::uvalue#10
  [257] call uctoa
  to:printf_uchar::@2
printf_uchar::@2: scope:[printf_uchar]  from printf_uchar::@1
  [258] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer)
  [259] printf_number_buffer::format_zero_padding#0 = printf_uchar::format_zero_padding#10
  [260] call printf_number_buffer
  to:printf_uchar::@return
printf_uchar::@return: scope:[printf_uchar]  from printf_uchar::@2
  [261] return 
  to:@return

void print32(volatile unsigned long l)
print32: scope:[print32]  from md5::@21 md5::@22 md5::@23 md5::@24 md5::@32 md5::@36 md5::@38 md5::@39 md5::@40 md5::@41
  [262] printf_uchar::uvalue#0 = *print32::dp#1
  [263] call printf_uchar
  to:print32::@1
print32::@1: scope:[print32]  from print32
  [264] printf_uchar::uvalue#1 = *(print32::dp#1+1)
  [265] call printf_uchar
  to:print32::@2
print32::@2: scope:[print32]  from print32::@1
  [266] printf_uchar::uvalue#2 = *(print32::dp#1+2)
  [267] call printf_uchar
  to:print32::@3
print32::@3: scope:[print32]  from print32::@2
  [268] printf_uchar::uvalue#3 = *(print32::dp#1+3)
  [269] call printf_uchar
  to:print32::@return
print32::@return: scope:[print32]  from print32::@3
  [270] return 
  to:@return

void cputln()
cputln: scope:[cputln]  from md5::@25 md5::@37
  [271] *COLCRS = 0
  [272] call newline
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln
  [273] return 
  to:@return

void cputs(const char *s)
cputs: scope:[cputs]  from md5::@16
  [274] phi()
  to:cputs::@1
cputs::@1: scope:[cputs]  from cputs cputs::@2
  [275] cputs::s#2 = phi( cputs/md5::s4, cputs::@2/cputs::s#0 )
  [276] cputs::c#1 = *cputs::s#2
  [277] cputs::s#0 = ++ cputs::s#2
  [278] if(0!=cputs::c#1) goto cputs::@2
  to:cputs::@return
cputs::@return: scope:[cputs]  from cputs::@1
  [279] return 
  to:@return
cputs::@2: scope:[cputs]  from cputs::@1
  [280] stackpush(char) = cputs::c#1
  [281] callexecute cputc 
  sideeffect stackpullbytes(1)
  to:cputs::@1

unsigned long leftRotate(volatile unsigned long a , char r)
leftRotate: scope:[leftRotate]  from md5::@17
  [283] if(leftRotate::r#0<8) goto leftRotate::@1
  to:leftRotate::@6
leftRotate::@6: scope:[leftRotate]  from leftRotate
  [284] if(leftRotate::r#0==8) goto leftRotate::@2
  to:leftRotate::@7
leftRotate::@7: scope:[leftRotate]  from leftRotate::@6
  [285] if(leftRotate::r#0<$10) goto leftRotate::@3
  to:leftRotate::@8
leftRotate::@8: scope:[leftRotate]  from leftRotate::@7
  [286] if(leftRotate::r#0==$10) goto leftRotate::@4
  to:leftRotate::@9
leftRotate::@9: scope:[leftRotate]  from leftRotate::@8
  [287] phi()
  [288] call move16Left
  to:leftRotate::@11
leftRotate::@11: scope:[leftRotate]  from leftRotate::@9
  [289] leftRotate::$5 = leftRotate::r#0 - $10
  [290] rotateLeft::p = leftRotate::p#1
  [291] rotateLeft::r = leftRotate::$5
  [292] call rotateLeft
  to:leftRotate::@5
leftRotate::@5: scope:[leftRotate]  from leftRotate::@1 leftRotate::@10 leftRotate::@11 leftRotate::@2 leftRotate::@4
  [293] leftRotate::return#0 = *leftRotate::result#0
  to:leftRotate::@return
leftRotate::@return: scope:[leftRotate]  from leftRotate::@5
  [294] return 
  to:@return
leftRotate::@4: scope:[leftRotate]  from leftRotate::@8
  [295] phi()
  [296] call move16Left
  to:leftRotate::@5
leftRotate::@3: scope:[leftRotate]  from leftRotate::@7
  [297] phi()
  [298] call move8Left
  to:leftRotate::@10
leftRotate::@10: scope:[leftRotate]  from leftRotate::@3
  [299] leftRotate::$9 = leftRotate::r#0 - 8
  [300] rotateLeft::p = leftRotate::p#1
  [301] rotateLeft::r = leftRotate::$9
  [302] call rotateLeft
  to:leftRotate::@5
leftRotate::@2: scope:[leftRotate]  from leftRotate::@6
  [303] phi()
  [304] call move8Left
  to:leftRotate::@5
leftRotate::@1: scope:[leftRotate]  from leftRotate
  [305] rotateLeft::p = leftRotate::p#1
  [306] rotateLeft::r = leftRotate::r#0
  [307] call rotateLeft
  to:leftRotate::@5

unsigned int mul7(char a)
mul7: scope:[mul7]  from md5::@9
  [308] mul7::$1 = (unsigned int)mul7::a#0
  [309] mul7::$2 = mul7::$1 << 1
  [310] mul7::$3 = mul7::$2 + mul7::$1
  [311] mul7::$4 = mul7::$3 << 1
  [312] mul7::return#0 = mul7::$4 + mul7::$1
  to:mul7::@return
mul7::@return: scope:[mul7]  from mul7
  [313] return 
  to:@return

char mod16(unsigned int a)
mod16: scope:[mod16]  from md5::@26 md5::@28 md5::@30
  [314] mod16::a#3 = phi( md5::@26/mod16::a#0, md5::@28/mod16::a#1, md5::@30/mod16::a#2 )
  [315] mod16::t#0 = mod16::a#3 & $10-1
  [316] mod16::return#0 = mod16::t#0 & $ff
  to:mod16::@return
mod16::@return: scope:[mod16]  from mod16
  [317] return 
  to:@return

unsigned int mul3(char a)
mul3: scope:[mul3]  from md5::@8
  [318] mul3::$1 = (unsigned int)mul3::a#0
  [319] mul3::$2 = mul3::$1 << 1
  [320] mul3::return#0 = mul3::$2 + mul3::$1
  to:mul3::@return
mul3::@return: scope:[mul3]  from mul3
  [321] return 
  to:@return

unsigned int mul5(char a)
mul5: scope:[mul5]  from md5::@7
  [322] mul5::$1 = (unsigned int)mul5::a#0
  [323] mul5::$2 = mul5::$1 << 2
  [324] mul5::return#0 = mul5::$2 + mul5::$1
  to:mul5::@return
mul5::@return: scope:[mul5]  from mul5
  [325] return 
  to:@return

char * cursorLocation()
cursorLocation: scope:[cursorLocation]  from putchar setcursor
  [326] cursorLocation::$3 = (unsigned int)*ROWCRS
  [327] cursorLocation::$4 = cursorLocation::$3 << 2
  [328] cursorLocation::$5 = cursorLocation::$4 + cursorLocation::$3
  [329] cursorLocation::$0 = cursorLocation::$5 << 3
  [330] cursorLocation::$1 = *SAVMSC + cursorLocation::$0
  [331] cursorLocation::return#1 = cursorLocation::$1 + *COLCRS
  to:cursorLocation::@return
cursorLocation::@return: scope:[cursorLocation]  from cursorLocation
  [332] return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from calloc::@1 newline::@4
  [333] memset::str#3 = phi( calloc::@1/memset::str#0, newline::@4/memset::str#8 )
  [333] memset::num#2 = phi( calloc::@1/memset::num#0, newline::@4/$28 )
  [334] if(memset::num#2<=0) goto memset::@return
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [335] memset::end#0 = (char *)memset::str#3 + memset::num#2
  [336] memset::dst#4 = (char *)memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [337] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [338] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset memset::@2
  [339] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [340] *memset::dst#2 = 0
  [341] memset::dst#1 = ++ memset::dst#2
  to:memset::@2

void * malloc(unsigned int size)
malloc: scope:[malloc]  from calloc
  [342] malloc::mem#0 = HEAP_TOP - malloc::size#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  [343] return 
  to:@return

void uctoa(char value , char *buffer , char radix)
uctoa: scope:[uctoa]  from printf_uchar::@1
  [344] phi()
  to:uctoa::@1
uctoa::@1: scope:[uctoa]  from uctoa uctoa::@4
  [345] uctoa::buffer#11 = phi( uctoa::@4/uctoa::buffer#14, uctoa/(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
  [345] uctoa::started#2 = phi( uctoa::@4/uctoa::started#4, uctoa/0 )
  [345] uctoa::value#2 = phi( uctoa::@4/uctoa::value#6, uctoa/uctoa::value#1 )
  [345] uctoa::digit#2 = phi( uctoa::@4/uctoa::digit#1, uctoa/0 )
  [346] if(uctoa::digit#2<2-1) goto uctoa::@2
  to:uctoa::@3
uctoa::@3: scope:[uctoa]  from uctoa::@1
  [347] *uctoa::buffer#11 = DIGITS[uctoa::value#2]
  [348] uctoa::buffer#3 = ++ uctoa::buffer#11
  [349] *uctoa::buffer#3 = 0
  to:uctoa::@return
uctoa::@return: scope:[uctoa]  from uctoa::@3
  [350] return 
  to:@return
uctoa::@2: scope:[uctoa]  from uctoa::@1
  [351] uctoa::digit_value#0 = RADIX_HEXADECIMAL_VALUES_CHAR[uctoa::digit#2]
  [352] if(0!=uctoa::started#2) goto uctoa::@5
  to:uctoa::@7
uctoa::@7: scope:[uctoa]  from uctoa::@2
  [353] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5
  to:uctoa::@4
uctoa::@4: scope:[uctoa]  from uctoa::@6 uctoa::@7
  [354] uctoa::buffer#14 = phi( uctoa::@7/uctoa::buffer#11, uctoa::@6/uctoa::buffer#4 )
  [354] uctoa::started#4 = phi( uctoa::@7/uctoa::started#2, uctoa::@6/1 )
  [354] uctoa::value#6 = phi( uctoa::@7/uctoa::value#2, uctoa::@6/uctoa::value#0 )
  [355] uctoa::digit#1 = ++ uctoa::digit#2
  to:uctoa::@1
uctoa::@5: scope:[uctoa]  from uctoa::@2 uctoa::@7
  [356] uctoa_append::buffer#0 = uctoa::buffer#11
  [357] uctoa_append::value#0 = uctoa::value#2
  [358] uctoa_append::sub#0 = uctoa::digit_value#0
  [359] call uctoa_append
  [360] uctoa_append::return#0 = uctoa_append::value#2
  to:uctoa::@6
uctoa::@6: scope:[uctoa]  from uctoa::@5
  [361] uctoa::value#0 = uctoa_append::return#0
  [362] uctoa::buffer#4 = ++ uctoa::buffer#11
  to:uctoa::@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_uchar::@2
  [363] phi()
  to:printf_number_buffer::@5
printf_number_buffer::@5: scope:[printf_number_buffer]  from printf_number_buffer
  [364] phi()
  [365] call strlen
  [366] strlen::return#2 = strlen::len#2
  to:printf_number_buffer::@11
printf_number_buffer::@11: scope:[printf_number_buffer]  from printf_number_buffer::@5
  [367] printf_number_buffer::$19 = strlen::return#2
  [368] printf_number_buffer::len#0 = (signed char)printf_number_buffer::$19
  [369] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@10
  to:printf_number_buffer::@6
printf_number_buffer::@6: scope:[printf_number_buffer]  from printf_number_buffer::@11
  [370] printf_number_buffer::len#1 = ++ printf_number_buffer::len#0
  to:printf_number_buffer::@10
printf_number_buffer::@10: scope:[printf_number_buffer]  from printf_number_buffer::@11 printf_number_buffer::@6
  [371] printf_number_buffer::len#2 = phi( printf_number_buffer::@11/printf_number_buffer::len#0, printf_number_buffer::@6/printf_number_buffer::len#1 )
  [372] printf_number_buffer::padding#1 = (signed char)printf_number_buffer::format_min_length#0 - printf_number_buffer::len#2
  [373] if(printf_number_buffer::padding#1>=0) goto printf_number_buffer::@15
  to:printf_number_buffer::@1
printf_number_buffer::@15: scope:[printf_number_buffer]  from printf_number_buffer::@10
  [374] phi()
  to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer]  from printf_number_buffer::@10 printf_number_buffer::@15
  [375] printf_number_buffer::padding#10 = phi( printf_number_buffer::@15/printf_number_buffer::padding#1, printf_number_buffer::@10/0 )
  to:printf_number_buffer::@13
printf_number_buffer::@13: scope:[printf_number_buffer]  from printf_number_buffer::@1
  [376] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@2
  to:printf_number_buffer::@12
printf_number_buffer::@12: scope:[printf_number_buffer]  from printf_number_buffer::@13
  [377] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@7
  to:printf_number_buffer::@2
printf_number_buffer::@7: scope:[printf_number_buffer]  from printf_number_buffer::@12
  [378] printf_padding::length#0 = (char)printf_number_buffer::padding#10
  [379] call printf_padding
  to:printf_number_buffer::@2
printf_number_buffer::@2: scope:[printf_number_buffer]  from printf_number_buffer::@12 printf_number_buffer::@13 printf_number_buffer::@7
  [380] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@3
  to:printf_number_buffer::@8
printf_number_buffer::@8: scope:[printf_number_buffer]  from printf_number_buffer::@2
  [381] stackpush(char) = printf_number_buffer::buffer_sign#0
  [382] callexecute cputc 
  sideeffect stackpullbytes(1)
  to:printf_number_buffer::@3
printf_number_buffer::@3: scope:[printf_number_buffer]  from printf_number_buffer::@2 printf_number_buffer::@8
  [384] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@4
  to:printf_number_buffer::@14
printf_number_buffer::@14: scope:[printf_number_buffer]  from printf_number_buffer::@3
  [385] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@9
  to:printf_number_buffer::@4
printf_number_buffer::@9: scope:[printf_number_buffer]  from printf_number_buffer::@14
  [386] printf_padding::length#1 = (char)printf_number_buffer::padding#10
  [387] call printf_padding
  to:printf_number_buffer::@4
printf_number_buffer::@4: scope:[printf_number_buffer]  from printf_number_buffer::@14 printf_number_buffer::@3 printf_number_buffer::@9
  [388] phi()
  [389] call printf_str
  to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer]  from printf_number_buffer::@4
  [390] return 
  to:@return

void move16Left(char *p)
move16Left: scope:[move16Left]  from leftRotate::@4 leftRotate::@9
  [391] move16Left::s#0 = *leftRotate::p#1
  [392] move16Left::t#0 = *(leftRotate::p#1+1)
  [393] *leftRotate::p#1 = *(leftRotate::p#1+2)
  [394] *(leftRotate::p#1+1) = *(leftRotate::p#1+3)
  [395] *(leftRotate::p#1+2) = move16Left::s#0
  [396] *(leftRotate::p#1+3) = move16Left::t#0
  to:move16Left::@return
move16Left::@return: scope:[move16Left]  from move16Left
  [397] return 
  to:@return

void rotateLeft(char * volatile const p , volatile char r)
rotateLeft: scope:[rotateLeft]  from leftRotate::@1 leftRotate::@10 leftRotate::@11
  kickasm( uses rotateLeft::p uses rotateLeft::r) {{ ldx #r
		!s:
			asl p+3
			rol p+2
			rol p+1
			rol p
			bcc !+
			lda p+3
			adc #0
		!:
			dex
			bne !s-
	 }}
  to:rotateLeft::@return
rotateLeft::@return: scope:[rotateLeft]  from rotateLeft
  [399] return 
  to:@return

void move8Left(char *p)
move8Left: scope:[move8Left]  from leftRotate::@2 leftRotate::@3
  [400] move8Left::t#0 = *leftRotate::p#1
  [401] *leftRotate::p#1 = *(leftRotate::p#1+1)
  [402] *(leftRotate::p#1+1) = *(leftRotate::p#1+2)
  [403] *(leftRotate::p#1+2) = *(leftRotate::p#1+3)
  [404] *(leftRotate::p#1+3) = move8Left::t#0
  to:move8Left::@return
move8Left::@return: scope:[move8Left]  from move8Left
  [405] return 
  to:@return

char uctoa_append(char *buffer , char value , char sub)
uctoa_append: scope:[uctoa_append]  from uctoa::@5
  [406] phi()
  to:uctoa_append::@1
uctoa_append::@1: scope:[uctoa_append]  from uctoa_append uctoa_append::@2
  [407] uctoa_append::digit#2 = phi( uctoa_append/0, uctoa_append::@2/uctoa_append::digit#1 )
  [407] uctoa_append::value#2 = phi( uctoa_append/uctoa_append::value#0, uctoa_append::@2/uctoa_append::value#1 )
  [408] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2
  to:uctoa_append::@3
uctoa_append::@3: scope:[uctoa_append]  from uctoa_append::@1
  [409] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2]
  to:uctoa_append::@return
uctoa_append::@return: scope:[uctoa_append]  from uctoa_append::@3
  [410] return 
  to:@return
uctoa_append::@2: scope:[uctoa_append]  from uctoa_append::@1
  [411] uctoa_append::digit#1 = ++ uctoa_append::digit#2
  [412] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0
  to:uctoa_append::@1

void printf_padding(void (*putc)(char) , char pad , char length)
printf_padding: scope:[printf_padding]  from printf_number_buffer::@7 printf_number_buffer::@9
  [413] printf_padding::pad#5 = phi( printf_number_buffer::@9/'0'at, printf_number_buffer::@7/' 'at )
  [413] printf_padding::length#4 = phi( printf_number_buffer::@9/printf_padding::length#1, printf_number_buffer::@7/printf_padding::length#0 )
  to:printf_padding::@1
printf_padding::@1: scope:[printf_padding]  from printf_padding printf_padding::@3
  [414] printf_padding::i#2 = phi( printf_padding/0, printf_padding::@3/printf_padding::i#1 )
  [415] if(printf_padding::i#2<printf_padding::length#4) goto printf_padding::@2
  to:printf_padding::@return
printf_padding::@return: scope:[printf_padding]  from printf_padding::@1
  [416] return 
  to:@return
printf_padding::@2: scope:[printf_padding]  from printf_padding::@1
  [417] stackpush(char) = printf_padding::pad#5
  [418] callexecute cputc 
  sideeffect stackpullbytes(1)
  to:printf_padding::@3
printf_padding::@3: scope:[printf_padding]  from printf_padding::@2
  [420] printf_padding::i#1 = ++ printf_padding::i#2
  to:printf_padding::@1
