2 # GNU C11 (GCC) version 7.3.0 (x86_64-nyan-linux-gnu)
3 # compiled by GNU C version 7.3.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version none
4 # GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
5 # options passed: -I ../include
6 # -I /root/wip/nyanglibc/builds/0/nyanglibc/build/crypt
7 # -I /root/wip/nyanglibc/builds/0/nyanglibc/build
8 # -I ../sysdeps/unix/sysv/linux/x86_64/64
9 # -I ../sysdeps/unix/sysv/linux/x86_64
10 # -I ../sysdeps/unix/sysv/linux/x86/include
11 # -I ../sysdeps/unix/sysv/linux/x86 -I ../sysdeps/x86/nptl
12 # -I ../sysdeps/unix/sysv/linux/wordsize-64 -I ../sysdeps/x86_64/nptl
13 # -I ../sysdeps/unix/sysv/linux/include -I ../sysdeps/unix/sysv/linux
14 # -I ../sysdeps/nptl -I ../sysdeps/pthread -I ../sysdeps/gnu
15 # -I ../sysdeps/unix/inet -I ../sysdeps/unix/sysv -I ../sysdeps/unix/x86_64
16 # -I ../sysdeps/unix -I ../sysdeps/posix -I ../sysdeps/x86_64/64
17 # -I ../sysdeps/x86_64/fpu -I ../sysdeps/x86/fpu -I ../sysdeps/x86_64
18 # -I ../sysdeps/x86/include -I ../sysdeps/x86
19 # -I ../sysdeps/ieee754/float128 -I ../sysdeps/ieee754/ldbl-96/include
20 # -I ../sysdeps/ieee754/ldbl-96 -I ../sysdeps/ieee754/dbl-64
21 # -I ../sysdeps/ieee754/flt-32 -I ../sysdeps/wordsize-64
22 # -I ../sysdeps/ieee754 -I ../sysdeps/generic -I .. -I ../libio -I .
23 # -MD /run/asm/crypt/md5-crypt.v.d -MF /run/asm/crypt/md5-crypt.o.dt -MP
24 # -MT /run/asm/crypt/.o -D _LIBC_REENTRANT -D MODULE_NAME=libcrypt -D PIC
25 # -D TOP_NAMESPACE=glibc
26 # -include /root/wip/nyanglibc/builds/0/nyanglibc/build/libc-modules.h
27 # -include ../include/libc-symbols.h md5-crypt.c -mtune=generic
28 # -march=x86-64 -auxbase-strip /run/asm/crypt/md5-crypt.v.s -O2 -Wall
29 # -Wwrite-strings -Wundef -Werror -Wstrict-prototypes
30 # -Wold-style-definition -std=gnu11 -fverbose-asm -fgnu89-inline
31 # -fmerge-all-constants -frounding-math -fno-stack-protector -fmath-errno
32 # -fpie -ftls-model=initial-exec
33 # options enabled: -faggressive-loop-optimizations -falign-labels
34 # -fasynchronous-unwind-tables -fauto-inc-dec -fbranch-count-reg
35 # -fcaller-saves -fchkp-check-incomplete-type -fchkp-check-read
36 # -fchkp-check-write -fchkp-instrument-calls -fchkp-narrow-bounds
37 # -fchkp-optimize -fchkp-store-bounds -fchkp-use-static-bounds
38 # -fchkp-use-static-const-bounds -fchkp-use-wrappers -fcode-hoisting
39 # -fcombine-stack-adjustments -fcommon -fcompare-elim -fcprop-registers
40 # -fcrossjumping -fcse-follow-jumps -fdefer-pop
41 # -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively
42 # -fdwarf2-cfi-asm -fearly-inlining -feliminate-unused-debug-types
43 # -fexpensive-optimizations -fforward-propagate -ffp-int-builtin-inexact
44 # -ffunction-cse -fgcse -fgcse-lm -fgnu-runtime -fgnu-unique
45 # -fguess-branch-probability -fhoist-adjacent-loads -fident -fif-conversion
46 # -fif-conversion2 -findirect-inlining -finline -finline-atomics
47 # -finline-functions-called-once -finline-small-functions -fipa-bit-cp
48 # -fipa-cp -fipa-icf -fipa-icf-functions -fipa-icf-variables -fipa-profile
49 # -fipa-pure-const -fipa-ra -fipa-reference -fipa-sra -fipa-vrp
50 # -fira-hoist-pressure -fira-share-save-slots -fira-share-spill-slots
51 # -fisolate-erroneous-paths-dereference -fivopts -fkeep-static-consts
52 # -fleading-underscore -flifetime-dse -flra-remat -flto-odr-type-merging
53 # -fmath-errno -fmerge-all-constants -fmerge-debug-strings
54 # -fmove-loop-invariants -fomit-frame-pointer -foptimize-sibling-calls
55 # -foptimize-strlen -fpartial-inlining -fpeephole -fpeephole2 -fpic -fpie
56 # -fplt -fprefetch-loop-arrays -free -freg-struct-return -freorder-blocks
57 # -freorder-functions -frerun-cse-after-loop -frounding-math
58 # -fsched-critical-path-heuristic -fsched-dep-count-heuristic
59 # -fsched-group-heuristic -fsched-interblock -fsched-last-insn-heuristic
60 # -fsched-rank-heuristic -fsched-spec -fsched-spec-insn-heuristic
61 # -fsched-stalled-insns-dep -fschedule-fusion -fschedule-insns2
62 # -fsemantic-interposition -fshow-column -fshrink-wrap
63 # -fshrink-wrap-separate -fsigned-zeros -fsplit-ivs-in-unroller
64 # -fsplit-wide-types -fssa-backprop -fssa-phiopt -fstdarg-opt
65 # -fstore-merging -fstrict-aliasing -fstrict-overflow
66 # -fstrict-volatile-bitfields -fsync-libcalls -fthread-jumps
67 # -ftoplevel-reorder -ftrapping-math -ftree-bit-ccp -ftree-builtin-call-dce
68 # -ftree-ccp -ftree-ch -ftree-coalesce-vars -ftree-copy-prop -ftree-cselim
69 # -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre
70 # -ftree-loop-if-convert -ftree-loop-im -ftree-loop-ivcanon
71 # -ftree-loop-optimize -ftree-parallelize-loops= -ftree-phiprop -ftree-pre
72 # -ftree-pta -ftree-reassoc -ftree-scev-cprop -ftree-sink -ftree-slsr
73 # -ftree-sra -ftree-switch-conversion -ftree-tail-merge -ftree-ter
74 # -ftree-vrp -funit-at-a-time -funwind-tables -fverbose-asm
75 # -fzero-initialized-in-bss -m128bit-long-double -m64 -m80387
76 # -malign-stringops -mavx256-split-unaligned-load
77 # -mavx256-split-unaligned-store -mfancy-math-387 -mfp-ret-in-387 -mfxsr
78 # -mglibc -mieee-fp -mlong-double-80 -mmmx -mno-sse4 -mpush-args -mred-zone
79 # -msse -msse2 -mstv -mtls-direct-seg-refs -mvzeroupper
83 .section __libc_freeres_ptrs, "aw", %nobits
85 .section .rodata.str1.1,"aMS",@progbits,1
92 .type __md5_crypt_r, @function
97 .cfi_def_cfa_offset 16
100 .cfi_def_cfa_register 6
109 movq
%rdi
, %r15 # key, key
111 # md5-crypt.c:107: if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0)
112 leaq md5_salt_prefix
(%rip
), %rdi
#,
115 movq
%rsi
, %rbx
# salt, salt
118 movq
%rdx
, -440(%rbp
) # buffer, %sfp
119 # md5-crypt.c:107: if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0)
122 movl
%ecx
, -404(%rbp
) # buflen, buflen
123 # md5-crypt.c:107: if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0)
125 # md5-crypt.c:109: salt += sizeof (md5_salt_prefix) - 1;
126 leaq
3(%rbx
), %rdx
#, tmp384
127 testl
%eax
, %eax
# _1
128 # md5-crypt.c:111: salt_len = MIN (strcspn (salt, "$"), 8);
129 leaq
.LC0(%rip), %rsi #,
130 # md5-crypt.c:109: salt += sizeof (md5_salt_prefix) - 1;
131 cmovne
%rbx
, %rdx
# tmp384,, salt, tmp384
132 movq
%rdx
, %rdi
# tmp384, salt
133 movq
%rdx
, -432(%rbp
) # salt, %sfp
134 # md5-crypt.c:111: salt_len = MIN (strcspn (salt, "$"), 8);
137 movq
%rax
, %rcx
#, _2
138 movl $
8, %eax
#, tmp386
139 cmovb
%rcx
, %rax
# _2,, tmp386
140 # md5-crypt.c:112: key_len = strlen (key);
141 movq
%r15, %rdi
# key,
142 # md5-crypt.c:111: salt_len = MIN (strcspn (salt, "$"), 8);
143 movq
%rax
, -424(%rbp
) # tmp386, %sfp
144 # md5-crypt.c:112: key_len = strlen (key);
146 # md5-crypt.c:114: if ((key - (char *) 0) % __alignof__ (md5_uint32) != 0)
147 testb $
3, %r15b
#, key
148 # md5-crypt.c:112: key_len = strlen (key);
149 movq
%rax
, -416(%rbp
) # tmp184, %sfp
150 # md5-crypt.c:114: if ((key - (char *) 0) % __alignof__ (md5_uint32) != 0)
152 # md5-crypt.c:118: if (__libc_use_alloca (alloca_used + key_len + __alignof__ (md5_uint32)))
153 leaq
4(%rax
), %rbx
#, _5
154 # ../sysdeps/pthread/allocalim.h:27: return (__glibc_likely (__libc_alloca_cutoff (size))
155 movq
%rbx
, %rdi
# _5,
156 call __libc_alloca_cutoff@PLT
#
157 # ../sysdeps/pthread/allocalim.h:29: || __glibc_likely (size <= PTHREAD_STACK_MIN / 4)
158 testl
%eax
, %eax
# _174
160 cmpq $
4096, %rbx
#, _5
163 # md5-crypt.c:119: tmp = (char *) alloca (key_len + __alignof__ (md5_uint32));
164 addq $
30, %rbx
#, tmp194
165 # md5-crypt.c:102: char *free_key = NULL;
166 movq $
0, -456(%rbp
) #, %sfp
167 # md5-crypt.c:119: tmp = (char *) alloca (key_len + __alignof__ (md5_uint32));
168 andq $
-16, %rbx
#, tmp198
169 subq
%rbx
, %rsp
# tmp198,
170 leaq
15(%rsp
), %rbx
#, tmp200
171 andq $
-16, %rbx
#, <retval>
173 # md5-crypt.c:127: key = copied_key =
174 movq
-416(%rbp
), %rdx
# %sfp,
175 # md5-crypt.c:129: - (tmp - (char *) 0) % __alignof__ (md5_uint32),
176 leaq
4(%rbx
), %rdi
#, tmp203
177 # md5-crypt.c:127: key = copied_key =
178 movq
%r15, %rsi
# key,
180 movq
%rax
, %r15 #, key
181 movq
%rax
, -464(%rbp
) # key, %sfp
183 # md5-crypt.c:134: if ((salt - (char *) 0) % __alignof__ (md5_uint32) != 0)
184 testb $
3, -432(%rbp
) #, %sfp
185 # md5-crypt.c:101: char *copied_salt = NULL;
186 movq $
0, -448(%rbp
) #, %sfp
187 # md5-crypt.c:134: if ((salt - (char *) 0) % __alignof__ (md5_uint32) != 0)
190 # md5-crypt.c:160: md5_init_ctx (&ctx, nss_ctx);
191 leaq
-368(%rbp
), %r12 #, tmp382
192 # md5-crypt.c:178: md5_init_ctx (&alt_ctx, nss_alt_ctx);
193 leaq
-208(%rbp
), %rbx
#, tmp383
194 # md5-crypt.c:160: md5_init_ctx (&ctx, nss_ctx);
195 movq
%r12, %rdi
# tmp382,
196 call __md5_init_ctx@PLT
#
197 # md5-crypt.c:163: md5_process_bytes (key, key_len, &ctx, nss_ctx);
198 movq
-416(%rbp
), %r14 # %sfp, tmp184
199 movq
%r12, %rdx
# tmp382,
200 movq
%r15, %rdi
# key,
201 movq
%r14, %rsi
# tmp184,
202 call __md5_process_bytes@PLT
#
203 # md5-crypt.c:167: md5_process_bytes (md5_salt_prefix, sizeof (md5_salt_prefix) - 1,
204 leaq md5_salt_prefix
(%rip
), %rdi
#,
205 movq
%r12, %rdx
# tmp382,
207 call __md5_process_bytes@PLT
#
208 # md5-crypt.c:173: md5_process_bytes (salt, salt_len, &ctx, nss_ctx);
209 movq
-432(%rbp
), %r13 # %sfp, salt
210 movq
-424(%rbp
), %rsi
# %sfp,
211 movq
%r12, %rdx
# tmp382,
212 movq
%r13, %rdi
# salt,
213 call __md5_process_bytes@PLT
#
214 # md5-crypt.c:178: md5_init_ctx (&alt_ctx, nss_alt_ctx);
215 movq
%rbx
, %rdi
# tmp383,
216 movq
%rbx
, -472(%rbp
) # tmp383, %sfp
217 call __md5_init_ctx@PLT
#
218 # md5-crypt.c:181: md5_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
219 movq
%rbx
, %rdx
# tmp383,
220 movq
%r14, %rsi
# tmp184,
221 movq
%r15, %rdi
# key,
222 call __md5_process_bytes@PLT
#
223 # md5-crypt.c:184: md5_process_bytes (salt, salt_len, &alt_ctx, nss_alt_ctx);
224 movq
-424(%rbp
), %rsi
# %sfp,
225 movq
%r13, %rdi
# salt,
226 movq
%rbx
, %rdx
# tmp383,
227 # md5-crypt.c:191: md5_finish_ctx (&alt_ctx, nss_alt_ctx, alt_result);
228 leaq
-384(%rbp
), %r13 #, tmp381
229 # md5-crypt.c:184: md5_process_bytes (salt, salt_len, &alt_ctx, nss_alt_ctx);
230 call __md5_process_bytes@PLT
#
231 # md5-crypt.c:187: md5_process_bytes (key, key_len, &alt_ctx, nss_alt_ctx);
232 movq
%rbx
, %rdx
# tmp383,
233 movq
%r14, %rsi
# tmp184,
234 movq
%r15, %rdi
# key,
235 call __md5_process_bytes@PLT
#
236 # md5-crypt.c:191: md5_finish_ctx (&alt_ctx, nss_alt_ctx, alt_result);
237 movq
%r13, %rsi
# tmp381,
238 movq
%rbx
, %rdi
# tmp383,
239 call __md5_finish_ctx@PLT
#
240 # md5-crypt.c:194: for (cnt = key_len; cnt > 16; cnt -= 16)
241 cmpq $
16, %r14 #, tmp184
243 leaq
-17(%r14), %rax
#, _194
244 leaq
-16(%r14), %rcx
#, _192
245 movq
%rax
, -488(%rbp
) # _194, %sfp
246 andq $
-16, %rax
#, tmp268
247 movq
%rcx
, -480(%rbp
) # _192, %sfp
248 subq
%rax
, %rcx
# tmp268, _175
249 movq
%rcx
, %rbx
# _175, _175
253 # md5-crypt.c:195: md5_process_bytes (alt_result, 16, &ctx, nss_ctx);
254 movq
%r12, %rdx
# tmp382,
256 movq
%r13, %rdi
# tmp381,
257 # md5-crypt.c:194: for (cnt = key_len; cnt > 16; cnt -= 16)
258 subq $
16, %r14 #, cnt
259 # md5-crypt.c:195: md5_process_bytes (alt_result, 16, &ctx, nss_ctx);
260 call __md5_process_bytes@PLT
#
261 # md5-crypt.c:194: for (cnt = key_len; cnt > 16; cnt -= 16)
262 cmpq
%rbx
, %r14 # _175, cnt
264 # md5-crypt.c:196: md5_process_bytes (alt_result, cnt, &ctx, nss_ctx);
265 movq
-488(%rbp
), %r14 # %sfp, _194
266 movq
-480(%rbp
), %rsi
# %sfp, _192
267 movq
%r12, %rdx
# tmp382,
268 movq
%r13, %rdi
# tmp381,
269 andq $
-16, %r14 #, _194
270 subq
%r14, %rsi
# tmp274, _192
271 call __md5_process_bytes@PLT
#
272 # md5-crypt.c:199: *alt_result = '\0';
273 movb $
0, -384(%rbp
) #, alt_result
275 # md5-crypt.c:194: for (cnt = key_len; cnt > 16; cnt -= 16)
276 movq
-416(%rbp
), %rbx
# %sfp, cnt
280 # md5-crypt.c:206: md5_process_bytes ((cnt & 1) != 0
282 movq
%r15, %rdi
# key, iftmp.7_88
283 movq
%r12, %rdx
# tmp382,
284 cmovne
%r13, %rdi
# tmp381,, iftmp.7_88
286 call __md5_process_bytes@PLT
#
287 # md5-crypt.c:205: for (cnt = key_len; cnt > 0; cnt >>= 1)
291 # md5-crypt.c:211: md5_finish_ctx (&ctx, nss_ctx, alt_result);
292 movq
%r13, %rsi
# tmp381,
293 movq
%r12, %rdi
# tmp382,
294 # md5-crypt.c:216: for (cnt = 0; cnt < 1000; ++cnt)
295 xorl
%ebx
, %ebx
# cnt
296 # md5-crypt.c:211: md5_finish_ctx (&ctx, nss_ctx, alt_result);
297 call __md5_finish_ctx@PLT
#
302 # md5-crypt.c:223: md5_process_bytes (key, key_len, &ctx, nss_ctx);
303 movq
-416(%rbp
), %rsi
# %sfp,
304 movq
%r15, %rdi
# key,
305 call __md5_process_bytes@PLT
#
307 # md5-crypt.c:228: if (cnt % 3 != 0)
308 movabsq $
-6148914691236517205, %rax
#, tmp406
311 leaq
(%rdx
,%rdx
,2), %rax
#, tmp293
312 cmpq
%rax
, %rbx
# tmp293, cnt
315 # md5-crypt.c:232: if (cnt % 7 != 0)
316 movabsq $
5270498306774157605, %rax
#, tmp407
318 movq
%rbx
, %rax
# cnt, tmp318
319 sarq $
63, %rax
#, tmp318
321 subq
%rax
, %rdx
# tmp318, tmp314
322 leaq
0(,%rdx
,8), %rax
#, tmp320
323 subq
%rdx
, %rax
# tmp314, tmp321
324 cmpq
%rax
, %rbx
# tmp321, cnt
327 # md5-crypt.c:236: if ((cnt & 1) != 0)
328 testq
%r14, %r14 # _12
329 # md5-crypt.c:237: md5_process_bytes (alt_result, 16, &ctx, nss_ctx);
330 movq
%r12, %rdx
# tmp382,
331 # md5-crypt.c:236: if ((cnt & 1) != 0)
333 # md5-crypt.c:237: md5_process_bytes (alt_result, 16, &ctx, nss_ctx);
335 movq
%r13, %rdi
# tmp381,
336 call __md5_process_bytes@PLT
#
338 # md5-crypt.c:242: md5_finish_ctx (&ctx, nss_ctx, alt_result);
339 movq
%r13, %rsi
# tmp381,
340 movq
%r12, %rdi
# tmp382,
341 # md5-crypt.c:216: for (cnt = 0; cnt < 1000; ++cnt)
343 # md5-crypt.c:242: md5_finish_ctx (&ctx, nss_ctx, alt_result);
344 call __md5_finish_ctx@PLT
#
345 # md5-crypt.c:216: for (cnt = 0; cnt < 1000; ++cnt)
346 cmpq $
1000, %rbx
#, cnt
349 # md5-crypt.c:219: md5_init_ctx (&ctx, nss_ctx);
350 movq
%r12, %rdi
# tmp382,
351 # md5-crypt.c:222: if ((cnt & 1) != 0)
352 movq
%rbx
, %r14 # cnt, _12
353 # md5-crypt.c:219: md5_init_ctx (&ctx, nss_ctx);
354 call __md5_init_ctx@PLT
#
355 # md5-crypt.c:222: if ((cnt & 1) != 0)
356 andl $
1, %r14d
#, _12
357 # md5-crypt.c:223: md5_process_bytes (key, key_len, &ctx, nss_ctx);
358 movq
%r12, %rdx
# tmp382,
359 # md5-crypt.c:222: if ((cnt & 1) != 0)
361 # md5-crypt.c:225: md5_process_bytes (alt_result, 16, &ctx, nss_ctx);
363 movq
%r13, %rdi
# tmp381,
364 call __md5_process_bytes@PLT
#
369 # md5-crypt.c:239: md5_process_bytes (key, key_len, &ctx, nss_ctx);
370 movq
-416(%rbp
), %rsi
# %sfp,
371 movq
%r15, %rdi
# key,
372 call __md5_process_bytes@PLT
#
377 # md5-crypt.c:233: md5_process_bytes (key, key_len, &ctx, nss_ctx);
378 movq
-416(%rbp
), %rsi
# %sfp,
379 movq
%r12, %rdx
# tmp382,
380 movq
%r15, %rdi
# key,
381 call __md5_process_bytes@PLT
#
386 # md5-crypt.c:229: md5_process_bytes (salt, salt_len, &ctx, nss_ctx);
387 movq
-424(%rbp
), %rsi
# %sfp,
388 movq
-432(%rbp
), %rdi
# %sfp,
389 movq
%r12, %rdx
# tmp382,
390 call __md5_process_bytes@PLT
#
395 # md5-crypt.c:252: cp = __stpncpy (buffer, md5_salt_prefix, MAX (0, buflen));
396 movl
-404(%rbp
), %edx
# buflen,
397 xorl
%ebx
, %ebx
# tmp330
398 movq
-440(%rbp
), %rdi
# %sfp,
399 leaq md5_salt_prefix
(%rip
), %rsi
#,
401 movl
%ebx
, %edx
# tmp330, tmp329
402 cmovns
-404(%rbp
), %edx
# buflen,, tmp329
403 movslq
%edx
, %rdx
# tmp329, tmp331
405 # md5-crypt.c:253: buflen -= sizeof (md5_salt_prefix) - 1;
406 movl
-404(%rbp
), %ecx
# buflen, tmp444
407 # md5-crypt.c:255: cp = __stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len));
408 movq
-424(%rbp
), %r15 # %sfp, _2
409 movq
%rax
, %rdi
# _18,
410 movq
-432(%rbp
), %rsi
# %sfp,
411 # md5-crypt.c:252: cp = __stpncpy (buffer, md5_salt_prefix, MAX (0, buflen));
412 movq
%rax
, -392(%rbp
) # _18, cp
413 # md5-crypt.c:253: buflen -= sizeof (md5_salt_prefix) - 1;
414 leal
-3(%rcx
), %edx
#, _22
415 # md5-crypt.c:255: cp = __stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len));
416 testl
%edx
, %edx
# _22
417 # md5-crypt.c:253: buflen -= sizeof (md5_salt_prefix) - 1;
418 movl
%edx
, -404(%rbp
) # _22, buflen
419 # md5-crypt.c:255: cp = __stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len));
420 cmovs
%ebx
, %edx
# _22,, tmp330, tmp334
421 movslq
%edx
, %rdx
# tmp334, tmp336
422 cmpq
%r15, %rdx
# _2, tmp336
423 cmova
%r15, %rdx
# tmp336,, _2, tmp333
425 # md5-crypt.c:256: buflen -= MIN ((size_t) MAX (0, buflen), salt_len);
426 movl
-404(%rbp
), %ecx
# buflen, buflen.13_27
427 # md5-crypt.c:255: cp = __stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len));
428 movq
%rax
, -392(%rbp
) # _26, cp
429 # md5-crypt.c:256: buflen -= MIN ((size_t) MAX (0, buflen), salt_len);
430 testl
%ecx
, %ecx
# buflen.13_27
431 cmovns
%ecx
, %ebx
# buflen.13_27,, tmp330
432 movslq
%ebx
, %rdx
# tmp330,
433 cmpq
%r15, %rdx
# _2, tmp340
434 cmova
%r15, %rdx
# tmp340,, _2, tmp337
435 subl
%edx
, %ecx
# tmp337, _34
436 # md5-crypt.c:258: if (buflen > 0)
437 testl
%ecx
, %ecx
# _34
438 # md5-crypt.c:256: buflen -= MIN ((size_t) MAX (0, buflen), salt_len);
439 movl
%ecx
, -404(%rbp
) # _34, buflen
440 # md5-crypt.c:258: if (buflen > 0)
442 # md5-crypt.c:260: *cp++ = '$';
443 leaq
1(%rax
), %rdx
#, tmp341
444 movq
%rdx
, -392(%rbp
) # tmp341, cp
445 movb $
36, (%rax
) #, *_26
446 # md5-crypt.c:261: --buflen;
447 subl $
1, -404(%rbp
) #, buflen
449 # md5-crypt.c:264: __b64_from_24bit (&cp, &buflen,
450 movzbl
-378(%rbp
), %ecx
# alt_result, alt_result
451 movzbl
-384(%rbp
), %edx
# alt_result, alt_result
452 leaq
-404(%rbp
), %rbx
#, tmp345
453 movzbl
-372(%rbp
), %r8d
# alt_result,
454 leaq
-392(%rbp
), %r14 #, tmp346
456 movq
%rbx
, %rsi
# tmp345,
457 movq
%r14, %rdi
# tmp346,
458 call __b64_from_24bit@PLT
#
459 # md5-crypt.c:266: __b64_from_24bit (&cp, &buflen,
460 movzbl
-377(%rbp
), %ecx
# alt_result, alt_result
461 movzbl
-383(%rbp
), %edx
# alt_result, alt_result
463 movzbl
-371(%rbp
), %r8d
# alt_result,
464 movq
%rbx
, %rsi
# tmp345,
465 movq
%r14, %rdi
# tmp346,
466 call __b64_from_24bit@PLT
#
467 # md5-crypt.c:268: __b64_from_24bit (&cp, &buflen,
468 movzbl
-376(%rbp
), %ecx
# alt_result, alt_result
469 movzbl
-382(%rbp
), %edx
# alt_result, alt_result
471 movzbl
-370(%rbp
), %r8d
# alt_result,
472 movq
%rbx
, %rsi
# tmp345,
473 movq
%r14, %rdi
# tmp346,
474 call __b64_from_24bit@PLT
#
475 # md5-crypt.c:270: __b64_from_24bit (&cp, &buflen,
476 movzbl
-375(%rbp
), %ecx
# alt_result, alt_result
477 movzbl
-381(%rbp
), %edx
# alt_result, alt_result
479 movzbl
-369(%rbp
), %r8d
# alt_result,
480 movq
%rbx
, %rsi
# tmp345,
481 movq
%r14, %rdi
# tmp346,
482 call __b64_from_24bit@PLT
#
483 # md5-crypt.c:272: __b64_from_24bit (&cp, &buflen,
484 movzbl
-374(%rbp
), %ecx
# alt_result, alt_result
485 movzbl
-380(%rbp
), %edx
# alt_result, alt_result
487 movzbl
-379(%rbp
), %r8d
# alt_result,
488 movq
%rbx
, %rsi
# tmp345,
489 movq
%r14, %rdi
# tmp346,
490 call __b64_from_24bit@PLT
#
491 # md5-crypt.c:274: __b64_from_24bit (&cp, &buflen,
492 movzbl
-373(%rbp
), %r8d
# alt_result,
496 movq
%rbx
, %rsi
# tmp345,
497 movq
%r14, %rdi
# tmp346,
498 call __b64_from_24bit@PLT
#
499 # md5-crypt.c:276: if (buflen <= 0)
500 movl
-404(%rbp
), %eax
# buflen,
503 # md5-crypt.c:282: *cp = '\0'; /* Terminate the string. */
504 movq
-392(%rbp
), %rax
# cp, cp.21_71
505 movq
-440(%rbp
), %rbx
# %sfp, <retval>
506 movb $
0, (%rax
) #, *cp.21_71
508 # md5-crypt.c:289: __md5_init_ctx (&ctx);
509 movq
%r12, %rdi
# tmp382,
510 call __md5_init_ctx@PLT
#
511 # md5-crypt.c:290: __md5_finish_ctx (&ctx, alt_result);
512 movq
%r13, %rsi
# tmp381,
513 movq
%r12, %rdi
# tmp382,
514 call __md5_finish_ctx@PLT
#
515 # md5-crypt.c:291: explicit_bzero (&ctx, sizeof (ctx));
518 movq
%r12, %rdi
# tmp382,
519 call __explicit_bzero_chk@PLT
#
520 # md5-crypt.c:292: explicit_bzero (&alt_ctx, sizeof (alt_ctx));
521 movq
-472(%rbp
), %rdi
# %sfp,
524 call __explicit_bzero_chk@PLT
#
525 # md5-crypt.c:294: if (copied_key != NULL)
526 movq
-464(%rbp
), %rax
# %sfp, copied_key
527 testq
%rax
, %rax
# copied_key
529 # md5-crypt.c:295: explicit_bzero (copied_key, key_len);
530 movq
-416(%rbp
), %rsi
# %sfp,
532 movq
%rax
, %rdi
# copied_key,
533 call __explicit_bzero_chk@PLT
#
535 # md5-crypt.c:296: if (copied_salt != NULL)
536 movq
-448(%rbp
), %rax
# %sfp, copied_salt
537 testq
%rax
, %rax
# copied_salt
539 # md5-crypt.c:297: explicit_bzero (copied_salt, salt_len);
540 movq
-424(%rbp
), %rsi
# %sfp,
542 movq
%rax
, %rdi
# copied_salt,
543 call __explicit_bzero_chk@PLT
#
545 # md5-crypt.c:299: free (free_key);
546 movq
-456(%rbp
), %rdi
# %sfp,
550 leaq
-40(%rbp
), %rsp
#,
551 movq
%rbx
, %rax
# <retval>,
563 # md5-crypt.c:102: char *free_key = NULL;
564 movq $
0, -456(%rbp
) #, %sfp
565 # md5-crypt.c:100: char *copied_key = NULL;
566 movq $
0, -464(%rbp
) #, %sfp
569 # md5-crypt.c:278: __set_errno (ERANGE);
570 movq errno@gottpoff
(%rip
), %rax
#, tmp370
571 # md5-crypt.c:279: buffer = NULL;
572 xorl
%ebx
, %ebx
# <retval>
573 # md5-crypt.c:278: __set_errno (ERANGE);
574 movl $
34, %fs:(%rax
) #, errno
577 # md5-crypt.c:136: char *tmp = (char *) alloca (salt_len + __alignof__ (md5_uint32));
578 movq
-424(%rbp
), %rsi
# %sfp, _2
579 leaq
34(%rsi
), %rax
#, tmp213
580 andq $
-16, %rax
#, tmp217
581 subq
%rax
, %rsp
# tmp217,
582 # md5-crypt.c:137: salt = copied_salt =
583 movl
%esi
, %eax
# _2,
584 # md5-crypt.c:136: char *tmp = (char *) alloca (salt_len + __alignof__ (md5_uint32));
585 leaq
15(%rsp
), %rdx
#, tmp219
586 andq $
-16, %rdx
#, tmp221
587 # md5-crypt.c:137: salt = copied_salt =
589 # md5-crypt.c:139: - (tmp - (char *) 0) % __alignof__ (md5_uint32),
590 leaq
4(%rdx
), %rcx
#, tmp222
591 # md5-crypt.c:137: salt = copied_salt =
595 testl
%eax
, %eax
# _2
597 movq
-432(%rbp
), %rsi
# %sfp, salt
599 movzbl
(%rsi
), %esi
#* salt, tmp235
600 movb
%sil
, 4(%rdx
) # tmp235,
603 movq
%rcx
, -432(%rbp
) # salt, %sfp
604 movq
%rcx
, -448(%rbp
) # salt, %sfp
607 movq
-432(%rbp
), %rdi
# %sfp, salt
608 addq $
8, %rdx
#, tmp252
609 movq
(%rdi
), %rax
#* salt, tmp244
610 movq
%rax
, -4(%rdx
) # tmp244,
611 movq
-424(%rbp
), %rbx
# %sfp, _2
612 movl
%ebx
, %eax
# _2, _2
613 movq
-8(%rdi
,%rax
), %rsi
#, tmp251
614 movq
%rsi
, -8(%rcx
,%rax
) # tmp251,
615 movq
%rcx
, %rax
# tmp222, tmp224
616 subq
%rdx
, %rax
# tmp252, tmp224
617 subq
%rax
, %rdi
# tmp224, salt
618 addl
%ebx
, %eax
# _2, _2
620 movq
%rdi
, %r8 # salt, salt
623 andl $
-8, %eax
#, tmp254
624 xorl
%esi
, %esi
# tmp253
626 movl
%esi
, %edi
# tmp253, tmp255
627 addl $
8, %esi
#, tmp253
628 movq
(%r8,%rdi
), %r9 #, tmp256
629 cmpl %eax
, %esi
# tmp254, tmp253
630 movq
%r9, (%rdx
,%rdi
) # tmp256,
634 # md5-crypt.c:196: md5_process_bytes (alt_result, cnt, &ctx, nss_ctx);
635 movq
-416(%rbp
), %rbx
# %sfp, tmp184
636 movq
%r12, %rdx
# tmp382,
637 movq
%r13, %rdi
# tmp381,
638 movq
%rbx
, %rsi
# tmp184,
639 call __md5_process_bytes@PLT
#
640 # md5-crypt.c:205: for (cnt = key_len; cnt > 0; cnt >>= 1)
641 testq
%rbx
, %rbx
# tmp184
642 # md5-crypt.c:199: *alt_result = '\0';
643 movb $
0, -384(%rbp
) #, alt_result
644 # md5-crypt.c:205: for (cnt = key_len; cnt > 0; cnt >>= 1)
650 # md5-crypt.c:137: salt = copied_salt =
651 movq
-432(%rbp
), %rdi
# %sfp, salt
652 movl
(%rdi
), %esi
#* salt, tmp227
653 movl
%esi
, 4(%rdx
) # tmp227,
654 movl
-4(%rdi
,%rax
), %edx
#, tmp234
655 movl
%edx
, -4(%rcx
,%rax
) # tmp234,
658 # md5-crypt.c:122: free_key = tmp = (char *) malloc (key_len + __alignof__ (md5_uint32));
659 movq
%rbx
, %rdi
# _5,
661 # md5-crypt.c:123: if (tmp == NULL)
662 testq
%rax
, %rax
# <retval>
663 # md5-crypt.c:122: free_key = tmp = (char *) malloc (key_len + __alignof__ (md5_uint32));
664 movq
%rax
, %rbx
#, <retval>
665 # md5-crypt.c:123: if (tmp == NULL)
667 movq
%rax
, -456(%rbp
) # <retval>, %sfp
670 # md5-crypt.c:137: salt = copied_salt =
671 movq
-432(%rbp
), %rsi
# %sfp, salt
672 movzwl
-2(%rsi
,%rax
), %edx
#, tmp243
673 movw
%dx
, -2(%rcx
,%rax
) # tmp243,
677 .size __md5_crypt_r, .-__md5_crypt_r
680 .type __md5_crypt, @function
685 .cfi_def_cfa_offset 16
688 .cfi_def_cfa_offset 24
690 movq
%rdi
, %r12 # key, key
692 .cfi_def_cfa_offset 32
694 # md5-crypt.c:315: int needed = 3 + strlen (salt) + 1 + 26 + 1;
695 movq
%rsi
, %rdi
# salt,
697 movq
%rsi
, %rbp
# salt, salt
698 # md5-crypt.c:315: int needed = 3 + strlen (salt) + 1 + 26 + 1;
700 # md5-crypt.c:317: if (buflen < needed)
701 movl buflen.5407
(%rip
), %ecx
# buflen, buflen.23_4
702 # md5-crypt.c:315: int needed = 3 + strlen (salt) + 1 + 26 + 1;
703 leal
31(%rax
), %ebx
#, needed
704 movq buffer
(%rip
), %rdx
# buffer, <retval>
705 # md5-crypt.c:317: if (buflen < needed)
706 cmpl %ebx
, %ecx
# needed, buflen.23_4
708 # md5-crypt.c:319: char *new_buffer = (char *) realloc (buffer, needed);
709 movq
%rdx
, %rdi
# <retval>,
710 movslq
%ebx
, %rsi
# needed, needed
712 # md5-crypt.c:320: if (new_buffer == NULL)
713 testq
%rax
, %rax
# <retval>
714 # md5-crypt.c:319: char *new_buffer = (char *) realloc (buffer, needed);
715 movq
%rax
, %rdx
#, <retval>
716 # md5-crypt.c:320: if (new_buffer == NULL)
718 # md5-crypt.c:323: buffer = new_buffer;
719 movq
%rax
, buffer
(%rip
) # <retval>, buffer
720 # md5-crypt.c:324: buflen = needed;
721 movl
%ebx
, buflen.5407
(%rip
) # needed, buflen
722 movl
%ebx
, %ecx
# needed, buflen.23_4
727 .cfi_def_cfa_offset 24
728 # md5-crypt.c:327: return __md5_crypt_r (key, salt, buffer, buflen);
729 movq
%rbp
, %rsi
# salt,
730 movq
%r12, %rdi
# key,
733 .cfi_def_cfa_offset 16
735 .cfi_def_cfa_offset 8
736 # md5-crypt.c:327: return __md5_crypt_r (key, salt, buffer, buflen);
744 .cfi_def_cfa_offset 24
747 .cfi_def_cfa_offset 16
749 .cfi_def_cfa_offset 8
753 .size __md5_crypt, .-__md5_crypt
755 .comm buflen.5407,4,4
756 .section __libc_freeres_ptrs
759 .type buffer, @object
763 .section .rodata.str1.1
764 .type md5_salt_prefix, @object
765 .size md5_salt_prefix, 4
768 .ident "GCC: (GNU) 7.3.0"
769 .section .note.GNU-stack,"",@progbits