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