clarify the purpose of this project
[nyanglibc.git] / crypt / sha512-crypt.s
blobb21ced334f6862d35db44b8773baf0b42f85afc0
1 .text
2 #APP
3 .section __libc_freeres_ptrs, "aw", %nobits
4 .previous
5 .section .rodata.str1.1,"aMS",@progbits,1
6 .LC0:
7 .string "$"
8 .LC1:
9 .string "%s%zu$"
10 #NO_APP
11 .text
12 .p2align 4,,15
13 .globl __sha512_crypt_r
14 .type __sha512_crypt_r, @function
15 __sha512_crypt_r:
16 pushq %rbp
17 movq %rsp, %rbp
18 pushq %r15
19 pushq %r14
20 pushq %r13
21 pushq %r12
22 movq %rsi, %r15
23 pushq %rbx
24 movq %rdi, %rbx
25 leaq sha512_salt_prefix(%rip), %rdi
26 subq $968, %rsp
27 movq %rdx, -968(%rbp)
28 movl $3, %edx
29 movl %ecx, -900(%rbp)
30 call strncmp@PLT
31 leaq 3(%r15), %rdx
32 testl %eax, %eax
33 leaq sha512_rounds_prefix(%rip), %rsi
34 cmovne %r15, %rdx
35 movq %rdx, %rdi
36 movq %rdx, -944(%rbp)
37 movl $7, %edx
38 call strncmp@PLT
39 testl %eax, %eax
40 movb $0, -901(%rbp)
41 movq $5000, -936(%rbp)
42 je .L113
43 .L3:
44 movq -944(%rbp), %rdi
45 leaq .LC0(%rip), %rsi
46 call strcspn@PLT
47 cmpq $16, %rax
48 movq %rax, %rcx
49 movl $16, %eax
50 cmovb %rcx, %rax
51 movq %rbx, %rdi
52 movq %rax, -920(%rbp)
53 call strlen@PLT
54 testb $7, %bl
55 movq %rax, %r14
56 je .L60
57 leaq 8(%rax), %r12
58 movq %r12, %rdi
59 call __libc_alloca_cutoff@PLT
60 testl %eax, %eax
61 jne .L7
62 cmpq $4096, %r12
63 ja .L114
64 .L7:
65 #APP
66 # 151 "sha512-crypt.c" 1
67 mov %rsp, %rax
68 # 0 "" 2
69 #NO_APP
70 addq $30, %r12
71 andq $-16, %r12
72 subq %r12, %rsp
73 leaq 15(%rsp), %rdi
74 andq $-16, %rdi
75 #APP
76 # 151 "sha512-crypt.c" 1
77 sub %rsp , %rax
78 # 0 "" 2
79 #NO_APP
80 addq %r14, %rax
81 movq $0, -984(%rbp)
82 movq %rax, -912(%rbp)
83 .L9:
84 movq %rbx, %rsi
85 addq $8, %rdi
86 movq %r14, %rdx
87 call memcpy@PLT
88 movq %rax, %rbx
89 movq %rax, -992(%rbp)
90 jmp .L6
91 .p2align 4,,10
92 .p2align 3
93 .L60:
94 movq %rax, -912(%rbp)
95 movq $0, -984(%rbp)
96 movq $0, -992(%rbp)
97 .L6:
98 testb $7, -944(%rbp)
99 movq $0, -976(%rbp)
100 jne .L115
101 .L10:
102 leaq -752(%rbp), %r12
103 movq %r12, %rdi
104 call __sha512_init_ctx@PLT
105 movq %r12, %rdx
106 movq %r14, %rsi
107 movq %rbx, %rdi
108 call __sha512_process_bytes@PLT
109 movq -944(%rbp), %r15
110 movq -920(%rbp), %rsi
111 movq %r12, %rdx
112 movq %r15, %rdi
113 call __sha512_process_bytes@PLT
114 leaq -400(%rbp), %rax
115 movq %rax, %r13
116 movq %rax, %rdi
117 movq %rax, -928(%rbp)
118 call __sha512_init_ctx@PLT
119 movq %r13, %rdx
120 movq %r14, %rsi
121 movq %rbx, %rdi
122 call __sha512_process_bytes@PLT
123 movq -920(%rbp), %rsi
124 movq %r15, %rdi
125 movq %r13, %rdx
126 leaq -880(%rbp), %r15
127 call __sha512_process_bytes@PLT
128 movq %r13, %rdx
129 movq %r14, %rsi
130 movq %rbx, %rdi
131 call __sha512_process_bytes@PLT
132 movq %r15, %rsi
133 movq %r13, %rdi
134 call __sha512_finish_ctx@PLT
135 cmpq $64, %r14
136 jbe .L17
137 leaq -65(%r14), %rax
138 leaq -64(%r14), %rcx
139 movq %rbx, -1000(%rbp)
140 movq %r14, %rbx
141 movq %rax, -960(%rbp)
142 andq $-64, %rax
143 movq %rcx, -952(%rbp)
144 subq %rax, %rcx
145 movq %rcx, %r13
146 .p2align 4,,10
147 .p2align 3
148 .L18:
149 movq %r12, %rdx
150 movl $64, %esi
151 movq %r15, %rdi
152 subq $64, %rbx
153 call __sha512_process_bytes@PLT
154 cmpq %rbx, %r13
155 jne .L18
156 movq -960(%rbp), %rax
157 movq -952(%rbp), %rsi
158 movq %r12, %rdx
159 movq %r15, %rdi
160 movq -1000(%rbp), %rbx
161 andq $-64, %rax
162 subq %rax, %rsi
163 call __sha512_process_bytes@PLT
164 .L19:
165 movq %r14, %r13
166 jmp .L23
167 .p2align 4,,10
168 .p2align 3
169 .L117:
170 movl $64, %esi
171 movq %r15, %rdi
172 call __sha512_process_bytes@PLT
173 shrq %r13
174 je .L116
175 .L23:
176 testb $1, %r13b
177 movq %r12, %rdx
178 jne .L117
179 movq %r14, %rsi
180 movq %rbx, %rdi
181 call __sha512_process_bytes@PLT
182 shrq %r13
183 jne .L23
184 .L116:
185 movq %r12, %rdi
186 movq %r15, %rsi
187 call __sha512_finish_ctx@PLT
188 movq -928(%rbp), %rdi
189 call __sha512_init_ctx@PLT
190 movq %r12, -952(%rbp)
191 movq %r13, %r12
192 movq -928(%rbp), %r13
193 .p2align 4,,10
194 .p2align 3
195 .L25:
196 movq %r13, %rdx
197 movq %r14, %rsi
198 movq %rbx, %rdi
199 addq $1, %r12
200 call __sha512_process_bytes@PLT
201 cmpq %r12, %r14
202 jne .L25
203 movq -952(%rbp), %r12
204 .L57:
205 leaq -816(%rbp), %rax
206 movq -928(%rbp), %rdi
207 movq %rax, %rsi
208 movq %rax, -960(%rbp)
209 call __sha512_finish_ctx@PLT
210 movq -912(%rbp), %rbx
211 movq %rbx, %rdi
212 call __libc_alloca_cutoff@PLT
213 cmpq $4096, %rbx
214 jbe .L26
215 testl %eax, %eax
216 je .L118
217 .L26:
218 leaq 30(%r14), %rax
219 movq $0, -1000(%rbp)
220 andq $-16, %rax
221 subq %rax, %rsp
222 leaq 15(%rsp), %rax
223 andq $-16, %rax
224 movq %rax, -912(%rbp)
225 movq %rax, -888(%rbp)
226 .L28:
227 cmpq $63, %r14
228 jbe .L63
229 leaq -64(%r14), %rcx
230 movq -912(%rbp), %rsi
231 movq %rcx, %rdx
232 andq $-64, %rdx
233 leaq 64(%rsi), %rax
234 leaq 128(%rsi,%rdx), %rdx
235 .p2align 4,,10
236 .p2align 3
237 .L30:
238 movdqa -816(%rbp), %xmm0
239 movups %xmm0, -64(%rax)
240 movdqa -800(%rbp), %xmm0
241 movups %xmm0, -48(%rax)
242 movdqa -784(%rbp), %xmm0
243 movups %xmm0, -32(%rax)
244 movdqa -768(%rbp), %xmm0
245 movups %xmm0, -16(%rax)
246 movq %rax, -888(%rbp)
247 addq $64, %rax
248 cmpq %rax, %rdx
249 jne .L30
250 movq -912(%rbp), %rax
251 andq $-64, %rcx
252 movq %r14, %rdx
253 andl $63, %edx
254 leaq 64(%rax,%rcx), %rcx
255 .L29:
256 cmpl $8, %edx
257 movl %edx, %eax
258 jnb .L31
259 andl $4, %edx
260 jne .L119
261 testl %eax, %eax
262 je .L32
263 movq -960(%rbp), %rsi
264 testb $2, %al
265 movzbl (%rsi), %edx
266 movb %dl, (%rcx)
267 jne .L120
268 .L32:
269 movq -928(%rbp), %rdi
270 xorl %ebx, %ebx
271 call __sha512_init_ctx@PLT
272 movq %r14, -952(%rbp)
273 movq %r12, -1008(%rbp)
274 movq %rbx, %r14
275 movq -944(%rbp), %r13
276 movq -920(%rbp), %r12
277 movq -928(%rbp), %rbx
278 .p2align 4,,10
279 .p2align 3
280 .L37:
281 movq %rbx, %rdx
282 movq %r12, %rsi
283 movq %r13, %rdi
284 call __sha512_process_bytes@PLT
285 movzbl -880(%rbp), %edx
286 addq $1, %r14
287 addq $16, %rdx
288 cmpq %r14, %rdx
289 ja .L37
290 movq -960(%rbp), %rbx
291 movq -928(%rbp), %rdi
292 movq -952(%rbp), %r14
293 movq -1008(%rbp), %r12
294 movq %rbx, %rsi
295 call __sha512_finish_ctx@PLT
296 movq -920(%rbp), %rdi
297 leaq 30(%rdi), %rax
298 movq %rdi, %rcx
299 andq $-16, %rax
300 subq %rax, %rsp
301 leaq 15(%rsp), %rax
302 andq $-16, %rax
303 cmpl $8, %edi
304 movq %rax, %rsi
305 movq %rax, -952(%rbp)
306 movq %rax, -888(%rbp)
307 movq %rbx, %rax
308 jnb .L121
309 .L38:
310 xorl %edx, %edx
311 testb $4, %cl
312 jne .L122
313 testb $2, %cl
314 jne .L123
315 .L42:
316 andl $1, %ecx
317 jne .L124
318 .L43:
319 xorl %ebx, %ebx
320 jmp .L50
321 .p2align 4,,10
322 .p2align 3
323 .L128:
324 movq -912(%rbp), %rdi
325 movq %r14, %rsi
326 call __sha512_process_bytes@PLT
327 .L45:
328 movabsq $-6148914691236517205, %rax
329 mulq %rbx
330 shrq %rdx
331 leaq (%rdx,%rdx,2), %rax
332 cmpq %rax, %rbx
333 jne .L125
334 .L46:
335 movabsq $5270498306774157605, %rax
336 imulq %rbx
337 movq %rbx, %rax
338 sarq $63, %rax
339 sarq %rdx
340 subq %rax, %rdx
341 leaq 0(,%rdx,8), %rax
342 subq %rdx, %rax
343 cmpq %rax, %rbx
344 jne .L126
345 .L47:
346 testq %r13, %r13
347 movq %r12, %rdx
348 je .L48
349 movl $64, %esi
350 movq %r15, %rdi
351 call __sha512_process_bytes@PLT
352 .L49:
353 movq %r15, %rsi
354 movq %r12, %rdi
355 addq $1, %rbx
356 call __sha512_finish_ctx@PLT
357 cmpq %rbx, -936(%rbp)
358 je .L127
359 .L50:
360 movq %r12, %rdi
361 movq %rbx, %r13
362 call __sha512_init_ctx@PLT
363 andl $1, %r13d
364 movq %r12, %rdx
365 jne .L128
366 movl $64, %esi
367 movq %r15, %rdi
368 call __sha512_process_bytes@PLT
369 jmp .L45
370 .p2align 4,,10
371 .p2align 3
372 .L31:
373 movq -816(%rbp), %rax
374 movq %rax, (%rcx)
375 movq -960(%rbp), %rdi
376 movl %edx, %eax
377 movq -8(%rdi,%rax), %rsi
378 movq %rsi, -8(%rcx,%rax)
379 leaq 8(%rcx), %rsi
380 andq $-8, %rsi
381 subq %rsi, %rcx
382 leal (%rdx,%rcx), %eax
383 subq %rcx, %rdi
384 andl $-8, %eax
385 cmpl $8, %eax
386 jb .L32
387 andl $-8, %eax
388 xorl %edx, %edx
389 .L35:
390 movl %edx, %ecx
391 addl $8, %edx
392 movq (%rdi,%rcx), %r8
393 cmpl %eax, %edx
394 movq %r8, (%rsi,%rcx)
395 jb .L35
396 jmp .L32
397 .p2align 4,,10
398 .p2align 3
399 .L48:
400 movq -912(%rbp), %rdi
401 movq %r14, %rsi
402 call __sha512_process_bytes@PLT
403 jmp .L49
404 .p2align 4,,10
405 .p2align 3
406 .L126:
407 movq -912(%rbp), %rdi
408 movq %r12, %rdx
409 movq %r14, %rsi
410 call __sha512_process_bytes@PLT
411 jmp .L47
412 .p2align 4,,10
413 .p2align 3
414 .L125:
415 movq -920(%rbp), %rsi
416 movq -952(%rbp), %rdi
417 movq %r12, %rdx
418 call __sha512_process_bytes@PLT
419 jmp .L46
420 .p2align 4,,10
421 .p2align 3
422 .L127:
423 movl -900(%rbp), %edx
424 xorl %ebx, %ebx
425 movq -968(%rbp), %rdi
426 leaq sha512_salt_prefix(%rip), %rsi
427 testl %edx, %edx
428 movl %ebx, %edx
429 cmovns -900(%rbp), %edx
430 movslq %edx, %rdx
431 call __stpncpy@PLT
432 movq %rax, %rdi
433 movq %rax, -888(%rbp)
434 movl -900(%rbp), %eax
435 cmpb $0, -901(%rbp)
436 leal -3(%rax), %edx
437 movl %edx, -900(%rbp)
438 jne .L129
439 .L51:
440 movq -920(%rbp), %r13
441 xorl %ebx, %ebx
442 testl %edx, %edx
443 cmovs %ebx, %edx
444 movq -944(%rbp), %rsi
445 movslq %edx, %rdx
446 cmpq %r13, %rdx
447 cmova %r13, %rdx
448 call __stpncpy@PLT
449 movslq -900(%rbp), %rdx
450 movq %rax, -888(%rbp)
451 testl %edx, %edx
452 cmovns %rdx, %rbx
453 cmpq %r13, %rbx
454 cmova %r13, %rbx
455 subl %ebx, %edx
456 testl %edx, %edx
457 movl %edx, -900(%rbp)
458 jle .L52
459 leaq 1(%rax), %rdx
460 movq %rdx, -888(%rbp)
461 movb $36, (%rax)
462 subl $1, -900(%rbp)
463 .L52:
464 movzbl -859(%rbp), %ecx
465 movzbl -880(%rbp), %edx
466 leaq -900(%rbp), %r13
467 movzbl -838(%rbp), %r8d
468 leaq -888(%rbp), %rbx
469 movl $4, %r9d
470 movq %r13, %rsi
471 movq %rbx, %rdi
472 call __b64_from_24bit@PLT
473 movzbl -837(%rbp), %ecx
474 movzbl -858(%rbp), %edx
475 movl $4, %r9d
476 movzbl -879(%rbp), %r8d
477 movq %r13, %rsi
478 movq %rbx, %rdi
479 call __b64_from_24bit@PLT
480 movzbl -878(%rbp), %ecx
481 movzbl -836(%rbp), %edx
482 movl $4, %r9d
483 movzbl -857(%rbp), %r8d
484 movq %r13, %rsi
485 movq %rbx, %rdi
486 call __b64_from_24bit@PLT
487 movzbl -856(%rbp), %ecx
488 movzbl -877(%rbp), %edx
489 movl $4, %r9d
490 movzbl -835(%rbp), %r8d
491 movq %r13, %rsi
492 movq %rbx, %rdi
493 call __b64_from_24bit@PLT
494 movzbl -834(%rbp), %ecx
495 movzbl -855(%rbp), %edx
496 movl $4, %r9d
497 movzbl -876(%rbp), %r8d
498 movq %r13, %rsi
499 movq %rbx, %rdi
500 call __b64_from_24bit@PLT
501 movzbl -875(%rbp), %ecx
502 movzbl -833(%rbp), %edx
503 movl $4, %r9d
504 movzbl -854(%rbp), %r8d
505 movq %r13, %rsi
506 movq %rbx, %rdi
507 call __b64_from_24bit@PLT
508 movzbl -853(%rbp), %ecx
509 movzbl -874(%rbp), %edx
510 movl $4, %r9d
511 movzbl -832(%rbp), %r8d
512 movq %r13, %rsi
513 movq %rbx, %rdi
514 call __b64_from_24bit@PLT
515 movzbl -831(%rbp), %ecx
516 movzbl -852(%rbp), %edx
517 movl $4, %r9d
518 movzbl -873(%rbp), %r8d
519 movq %r13, %rsi
520 movq %rbx, %rdi
521 call __b64_from_24bit@PLT
522 movzbl -872(%rbp), %ecx
523 movzbl -830(%rbp), %edx
524 movl $4, %r9d
525 movzbl -851(%rbp), %r8d
526 movq %r13, %rsi
527 movq %rbx, %rdi
528 call __b64_from_24bit@PLT
529 movzbl -850(%rbp), %ecx
530 movzbl -871(%rbp), %edx
531 movl $4, %r9d
532 movzbl -829(%rbp), %r8d
533 movq %r13, %rsi
534 movq %rbx, %rdi
535 call __b64_from_24bit@PLT
536 movzbl -828(%rbp), %ecx
537 movzbl -849(%rbp), %edx
538 movl $4, %r9d
539 movzbl -870(%rbp), %r8d
540 movq %r13, %rsi
541 movq %rbx, %rdi
542 call __b64_from_24bit@PLT
543 movzbl -869(%rbp), %ecx
544 movzbl -827(%rbp), %edx
545 movl $4, %r9d
546 movzbl -848(%rbp), %r8d
547 movq %r13, %rsi
548 movq %rbx, %rdi
549 call __b64_from_24bit@PLT
550 movzbl -847(%rbp), %ecx
551 movzbl -868(%rbp), %edx
552 movl $4, %r9d
553 movzbl -826(%rbp), %r8d
554 movq %r13, %rsi
555 movq %rbx, %rdi
556 call __b64_from_24bit@PLT
557 movzbl -825(%rbp), %ecx
558 movzbl -846(%rbp), %edx
559 movl $4, %r9d
560 movzbl -867(%rbp), %r8d
561 movq %r13, %rsi
562 movq %rbx, %rdi
563 call __b64_from_24bit@PLT
564 movzbl -866(%rbp), %ecx
565 movzbl -824(%rbp), %edx
566 movl $4, %r9d
567 movzbl -845(%rbp), %r8d
568 movq %r13, %rsi
569 movq %rbx, %rdi
570 call __b64_from_24bit@PLT
571 movzbl -844(%rbp), %ecx
572 movzbl -865(%rbp), %edx
573 movl $4, %r9d
574 movzbl -823(%rbp), %r8d
575 movq %r13, %rsi
576 movq %rbx, %rdi
577 call __b64_from_24bit@PLT
578 movzbl -822(%rbp), %ecx
579 movzbl -843(%rbp), %edx
580 movl $4, %r9d
581 movzbl -864(%rbp), %r8d
582 movq %r13, %rsi
583 movq %rbx, %rdi
584 call __b64_from_24bit@PLT
585 movzbl -863(%rbp), %ecx
586 movzbl -821(%rbp), %edx
587 movl $4, %r9d
588 movzbl -842(%rbp), %r8d
589 movq %r13, %rsi
590 movq %rbx, %rdi
591 call __b64_from_24bit@PLT
592 movzbl -841(%rbp), %ecx
593 movzbl -862(%rbp), %edx
594 movl $4, %r9d
595 movzbl -820(%rbp), %r8d
596 movq %r13, %rsi
597 movq %rbx, %rdi
598 call __b64_from_24bit@PLT
599 movzbl -819(%rbp), %ecx
600 movzbl -840(%rbp), %edx
601 movl $4, %r9d
602 movzbl -861(%rbp), %r8d
603 movq %r13, %rsi
604 movq %rbx, %rdi
605 call __b64_from_24bit@PLT
606 movzbl -860(%rbp), %ecx
607 movzbl -818(%rbp), %edx
608 movl $4, %r9d
609 movzbl -839(%rbp), %r8d
610 movq %r13, %rsi
611 movq %rbx, %rdi
612 call __b64_from_24bit@PLT
613 movzbl -817(%rbp), %r8d
614 xorl %ecx, %ecx
615 xorl %edx, %edx
616 movl $2, %r9d
617 movq %r13, %rsi
618 movq %rbx, %rdi
619 call __b64_from_24bit@PLT
620 movl -900(%rbp), %eax
621 testl %eax, %eax
622 jle .L130
623 movq -888(%rbp), %rax
624 movq -968(%rbp), %rbx
625 movb $0, (%rax)
626 .L54:
627 movq %r12, %rdi
628 call __sha512_init_ctx@PLT
629 movq %r15, %rsi
630 movq %r12, %rdi
631 call __sha512_finish_ctx@PLT
632 movl $352, %edx
633 movl $352, %esi
634 movq %r12, %rdi
635 call __explicit_bzero_chk@PLT
636 movq -928(%rbp), %rdi
637 movl $352, %edx
638 movl $352, %esi
639 call __explicit_bzero_chk@PLT
640 movq -960(%rbp), %rdi
641 movl $64, %edx
642 movl $64, %esi
643 call __explicit_bzero_chk@PLT
644 movq -912(%rbp), %rdi
645 movq $-1, %rdx
646 movq %r14, %rsi
647 call __explicit_bzero_chk@PLT
648 movq -920(%rbp), %rsi
649 movq -952(%rbp), %rdi
650 movq $-1, %rdx
651 call __explicit_bzero_chk@PLT
652 movq -992(%rbp), %rax
653 testq %rax, %rax
654 je .L55
655 movq $-1, %rdx
656 movq %r14, %rsi
657 movq %rax, %rdi
658 call __explicit_bzero_chk@PLT
659 .L55:
660 movq -976(%rbp), %rax
661 testq %rax, %rax
662 je .L56
663 movq -920(%rbp), %rsi
664 movq $-1, %rdx
665 movq %rax, %rdi
666 call __explicit_bzero_chk@PLT
667 .L56:
668 movq -984(%rbp), %rdi
669 call free@PLT
670 movq -1000(%rbp), %rdi
671 call free@PLT
672 .L1:
673 leaq -40(%rbp), %rsp
674 movq %rbx, %rax
675 popq %rbx
676 popq %r12
677 popq %r13
678 popq %r14
679 popq %r15
680 popq %rbp
682 .p2align 4,,10
683 .p2align 3
684 .L122:
685 movl (%rax), %edx
686 testb $2, %cl
687 movl %edx, (%rsi)
688 movl $4, %edx
689 je .L42
690 jmp .L123
691 .p2align 4,,10
692 .p2align 3
693 .L124:
694 movzbl (%rax,%rdx), %eax
695 movb %al, (%rsi,%rdx)
696 jmp .L43
697 .p2align 4,,10
698 .p2align 3
699 .L123:
700 movzwl (%rax,%rdx), %edi
701 movw %di, (%rsi,%rdx)
702 addq $2, %rdx
703 andl $1, %ecx
704 je .L43
705 jmp .L124
706 .p2align 4,,10
707 .p2align 3
708 .L121:
709 movl %edi, %esi
710 xorl %eax, %eax
711 movq %rbx, %r8
712 andl $-8, %esi
713 .L39:
714 movl %eax, %edx
715 movq -952(%rbp), %rbx
716 addl $8, %eax
717 movq (%r8,%rdx), %rdi
718 cmpl %esi, %eax
719 movq %rdi, (%rbx,%rdx)
720 jb .L39
721 movq %rbx, %rsi
722 addq %rax, %rsi
723 addq -960(%rbp), %rax
724 jmp .L38
725 .p2align 4,,10
726 .p2align 3
727 .L130:
728 movq errno@gottpoff(%rip), %rax
729 xorl %ebx, %ebx
730 movl $34, %fs:(%rax)
731 jmp .L54
732 .p2align 4,,10
733 .p2align 3
734 .L129:
735 testl %edx, %edx
736 movq -936(%rbp), %r8
737 leaq sha512_rounds_prefix(%rip), %rcx
738 cmovs %ebx, %edx
739 xorl %eax, %eax
740 movslq %edx, %rsi
741 leaq .LC1(%rip), %rdx
742 call __snprintf@PLT
743 movl -900(%rbp), %edx
744 movslq %eax, %rdi
745 addq -888(%rbp), %rdi
746 subl %eax, %edx
747 movq %rdi, -888(%rbp)
748 movl %edx, -900(%rbp)
749 jmp .L51
750 .p2align 4,,10
751 .p2align 3
752 .L113:
753 movq -944(%rbp), %rax
754 leaq -400(%rbp), %rsi
755 movl $10, %edx
756 leaq 7(%rax), %rdi
757 call strtoul@PLT
758 movq -400(%rbp), %rdx
759 cmpb $36, (%rdx)
760 jne .L3
761 cmpq $999999999, %rax
762 leaq 1(%rdx), %rcx
763 movl $999999999, %edx
764 cmovbe %rax, %rdx
765 movl $1000, %eax
766 movb $1, -901(%rbp)
767 cmpq $1000, %rdx
768 movq %rcx, -944(%rbp)
769 cmovnb %rdx, %rax
770 movq %rax, -936(%rbp)
771 jmp .L3
772 .p2align 4,,10
773 .p2align 3
774 .L115:
775 movq -920(%rbp), %rsi
776 leaq 38(%rsi), %rax
777 movl %esi, %edx
778 andq $-16, %rax
779 subq %rax, %rsp
780 leaq 15(%rsp), %rax
781 andq $-16, %rax
782 cmpl $8, %esi
783 leaq 8(%rax), %rcx
784 jnb .L11
785 andl $4, %esi
786 jne .L131
787 testl %edx, %edx
788 je .L12
789 movq -944(%rbp), %rsi
790 testb $2, %dl
791 movzbl (%rsi), %esi
792 movb %sil, 8(%rax)
793 jne .L132
794 .L12:
795 movq %rcx, -944(%rbp)
796 movq %rcx, -976(%rbp)
797 jmp .L10
798 .p2align 4,,10
799 .p2align 3
800 .L11:
801 movq -920(%rbp), %rsi
802 movq -944(%rbp), %r8
803 movl %esi, %eax
804 movq -8(%r8,%rax), %rdx
805 movq %rdx, -8(%rcx,%rax)
806 leal -1(%rsi), %edx
807 cmpl $8, %edx
808 jb .L12
809 andl $-8, %edx
810 xorl %eax, %eax
811 .L15:
812 movl %eax, %esi
813 addl $8, %eax
814 movq (%r8,%rsi), %rdi
815 cmpl %edx, %eax
816 movq %rdi, (%rcx,%rsi)
817 jb .L15
818 jmp .L12
819 .L119:
820 movq -960(%rbp), %rsi
821 movl (%rsi), %edx
822 movl %edx, (%rcx)
823 movl %eax, %edx
824 movl -4(%rsi,%rdx), %eax
825 movl %eax, -4(%rcx,%rdx)
826 jmp .L32
827 .p2align 4,,10
828 .p2align 3
829 .L17:
830 movq %r12, %rdx
831 movq %r14, %rsi
832 movq %r15, %rdi
833 call __sha512_process_bytes@PLT
834 testq %r14, %r14
835 jne .L19
836 movq %r12, %rdi
837 movq %r15, %rsi
838 call __sha512_finish_ctx@PLT
839 movq -928(%rbp), %rdi
840 call __sha512_init_ctx@PLT
841 jmp .L57
842 .p2align 4,,10
843 .p2align 3
844 .L63:
845 movq -912(%rbp), %rcx
846 movq %r14, %rdx
847 jmp .L29
848 .L120:
849 movl %eax, %edx
850 movq -960(%rbp), %rax
851 movzwl -2(%rax,%rdx), %eax
852 movw %ax, -2(%rcx,%rdx)
853 jmp .L32
854 .L118:
855 movq %r14, %rdi
856 call malloc@PLT
857 testq %rax, %rax
858 movq %rax, -912(%rbp)
859 movq %rax, -888(%rbp)
860 je .L27
861 movq %rax, -1000(%rbp)
862 jmp .L28
863 .L131:
864 movq -944(%rbp), %rdi
865 movl (%rdi), %esi
866 movl %esi, 8(%rax)
867 movl -4(%rdi,%rdx), %eax
868 movl %eax, -4(%rcx,%rdx)
869 jmp .L12
870 .L132:
871 movq -944(%rbp), %rax
872 movzwl -2(%rax,%rdx), %eax
873 movw %ax, -2(%rcx,%rdx)
874 jmp .L12
875 .L114:
876 movq %r12, %rdi
877 call malloc@PLT
878 testq %rax, %rax
879 movq %rax, %rdi
880 movq %rax, -984(%rbp)
881 je .L61
882 movq %r14, -912(%rbp)
883 jmp .L9
884 .L27:
885 movq -984(%rbp), %rdi
886 xorl %ebx, %ebx
887 call free@PLT
888 jmp .L1
889 .L61:
890 xorl %ebx, %ebx
891 jmp .L1
892 .size __sha512_crypt_r, .-__sha512_crypt_r
893 .p2align 4,,15
894 .globl __sha512_crypt
895 .type __sha512_crypt, @function
896 __sha512_crypt:
897 pushq %r12
898 pushq %rbp
899 movq %rdi, %r12
900 pushq %rbx
901 movq %rsi, %rdi
902 movq %rsi, %rbp
903 call strlen@PLT
904 movl buflen.5421(%rip), %ecx
905 leal 109(%rax), %ebx
906 movq buffer(%rip), %rdx
907 cmpl %ebx, %ecx
908 jge .L134
909 movq %rdx, %rdi
910 movslq %ebx, %rsi
911 call realloc@PLT
912 testq %rax, %rax
913 movq %rax, %rdx
914 je .L133
915 movq %rax, buffer(%rip)
916 movl %ebx, buflen.5421(%rip)
917 movl %ebx, %ecx
918 .L134:
919 popq %rbx
920 movq %rbp, %rsi
921 movq %r12, %rdi
922 popq %rbp
923 popq %r12
924 jmp __sha512_crypt_r
925 .p2align 4,,10
926 .p2align 3
927 .L133:
928 popq %rbx
929 xorl %eax, %eax
930 popq %rbp
931 popq %r12
933 .size __sha512_crypt, .-__sha512_crypt
934 .local buflen.5421
935 .comm buflen.5421,4,4
936 .section __libc_freeres_ptrs
937 #,"aw",@progbits
938 .align 8
939 .type buffer, @object
940 .size buffer, 8
941 buffer:
942 .zero 8
943 .section .rodata.str1.8,"aMS",@progbits,1
944 .align 8
945 .type sha512_rounds_prefix, @object
946 .size sha512_rounds_prefix, 8
947 sha512_rounds_prefix:
948 .string "rounds="
949 .section .rodata.str1.1
950 .type sha512_salt_prefix, @object
951 .size sha512_salt_prefix, 4
952 sha512_salt_prefix:
953 .string "$6$"