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