build - Rewire secure, remove conflicts from libmd, libcrypt
[dragonfly.git] / lib / libcrypto / asm / sha512-x86_64.s
1 .text   
2
3
4 .globl  sha512_block_data_order
5 .type   sha512_block_data_order,@function
6 .align  16
7 sha512_block_data_order:
8         leaq    OPENSSL_ia32cap_P(%rip),%r11
9         movl    0(%r11),%r9d
10         movl    4(%r11),%r10d
11         movl    8(%r11),%r11d
12         testl   $2048,%r10d
13         jnz     .Lxop_shortcut
14         andl    $296,%r11d
15         cmpl    $296,%r11d
16         je      .Lavx2_shortcut
17         andl    $1073741824,%r9d
18         andl    $268435968,%r10d
19         orl     %r9d,%r10d
20         cmpl    $1342177792,%r10d
21         je      .Lavx_shortcut
22         pushq   %rbx
23         pushq   %rbp
24         pushq   %r12
25         pushq   %r13
26         pushq   %r14
27         pushq   %r15
28         movq    %rsp,%r11
29         shlq    $4,%rdx
30         subq    $128+32,%rsp
31         leaq    (%rsi,%rdx,8),%rdx
32         andq    $-64,%rsp
33         movq    %rdi,128+0(%rsp)
34         movq    %rsi,128+8(%rsp)
35         movq    %rdx,128+16(%rsp)
36         movq    %r11,128+24(%rsp)
37 .Lprologue:
38
39         movq    0(%rdi),%rax
40         movq    8(%rdi),%rbx
41         movq    16(%rdi),%rcx
42         movq    24(%rdi),%rdx
43         movq    32(%rdi),%r8
44         movq    40(%rdi),%r9
45         movq    48(%rdi),%r10
46         movq    56(%rdi),%r11
47         jmp     .Lloop
48
49 .align  16
50 .Lloop:
51         movq    %rbx,%rdi
52         leaq    K512(%rip),%rbp
53         xorq    %rcx,%rdi
54         movq    0(%rsi),%r12
55         movq    %r8,%r13
56         movq    %rax,%r14
57         bswapq  %r12
58         rorq    $23,%r13
59         movq    %r9,%r15
60
61         xorq    %r8,%r13
62         rorq    $5,%r14
63         xorq    %r10,%r15
64
65         movq    %r12,0(%rsp)
66         xorq    %rax,%r14
67         andq    %r8,%r15
68
69         rorq    $4,%r13
70         addq    %r11,%r12
71         xorq    %r10,%r15
72
73         rorq    $6,%r14
74         xorq    %r8,%r13
75         addq    %r15,%r12
76
77         movq    %rax,%r15
78         addq    (%rbp),%r12
79         xorq    %rax,%r14
80
81         xorq    %rbx,%r15
82         rorq    $14,%r13
83         movq    %rbx,%r11
84
85         andq    %r15,%rdi
86         rorq    $28,%r14
87         addq    %r13,%r12
88
89         xorq    %rdi,%r11
90         addq    %r12,%rdx
91         addq    %r12,%r11
92
93         leaq    8(%rbp),%rbp
94         addq    %r14,%r11
95         movq    8(%rsi),%r12
96         movq    %rdx,%r13
97         movq    %r11,%r14
98         bswapq  %r12
99         rorq    $23,%r13
100         movq    %r8,%rdi
101
102         xorq    %rdx,%r13
103         rorq    $5,%r14
104         xorq    %r9,%rdi
105
106         movq    %r12,8(%rsp)
107         xorq    %r11,%r14
108         andq    %rdx,%rdi
109
110         rorq    $4,%r13
111         addq    %r10,%r12
112         xorq    %r9,%rdi
113
114         rorq    $6,%r14
115         xorq    %rdx,%r13
116         addq    %rdi,%r12
117
118         movq    %r11,%rdi
119         addq    (%rbp),%r12
120         xorq    %r11,%r14
121
122         xorq    %rax,%rdi
123         rorq    $14,%r13
124         movq    %rax,%r10
125
126         andq    %rdi,%r15
127         rorq    $28,%r14
128         addq    %r13,%r12
129
130         xorq    %r15,%r10
131         addq    %r12,%rcx
132         addq    %r12,%r10
133
134         leaq    24(%rbp),%rbp
135         addq    %r14,%r10
136         movq    16(%rsi),%r12
137         movq    %rcx,%r13
138         movq    %r10,%r14
139         bswapq  %r12
140         rorq    $23,%r13
141         movq    %rdx,%r15
142
143         xorq    %rcx,%r13
144         rorq    $5,%r14
145         xorq    %r8,%r15
146
147         movq    %r12,16(%rsp)
148         xorq    %r10,%r14
149         andq    %rcx,%r15
150
151         rorq    $4,%r13
152         addq    %r9,%r12
153         xorq    %r8,%r15
154
155         rorq    $6,%r14
156         xorq    %rcx,%r13
157         addq    %r15,%r12
158
159         movq    %r10,%r15
160         addq    (%rbp),%r12
161         xorq    %r10,%r14
162
163         xorq    %r11,%r15
164         rorq    $14,%r13
165         movq    %r11,%r9
166
167         andq    %r15,%rdi
168         rorq    $28,%r14
169         addq    %r13,%r12
170
171         xorq    %rdi,%r9
172         addq    %r12,%rbx
173         addq    %r12,%r9
174
175         leaq    8(%rbp),%rbp
176         addq    %r14,%r9
177         movq    24(%rsi),%r12
178         movq    %rbx,%r13
179         movq    %r9,%r14
180         bswapq  %r12
181         rorq    $23,%r13
182         movq    %rcx,%rdi
183
184         xorq    %rbx,%r13
185         rorq    $5,%r14
186         xorq    %rdx,%rdi
187
188         movq    %r12,24(%rsp)
189         xorq    %r9,%r14
190         andq    %rbx,%rdi
191
192         rorq    $4,%r13
193         addq    %r8,%r12
194         xorq    %rdx,%rdi
195
196         rorq    $6,%r14
197         xorq    %rbx,%r13
198         addq    %rdi,%r12
199
200         movq    %r9,%rdi
201         addq    (%rbp),%r12
202         xorq    %r9,%r14
203
204         xorq    %r10,%rdi
205         rorq    $14,%r13
206         movq    %r10,%r8
207
208         andq    %rdi,%r15
209         rorq    $28,%r14
210         addq    %r13,%r12
211
212         xorq    %r15,%r8
213         addq    %r12,%rax
214         addq    %r12,%r8
215
216         leaq    24(%rbp),%rbp
217         addq    %r14,%r8
218         movq    32(%rsi),%r12
219         movq    %rax,%r13
220         movq    %r8,%r14
221         bswapq  %r12
222         rorq    $23,%r13
223         movq    %rbx,%r15
224
225         xorq    %rax,%r13
226         rorq    $5,%r14
227         xorq    %rcx,%r15
228
229         movq    %r12,32(%rsp)
230         xorq    %r8,%r14
231         andq    %rax,%r15
232
233         rorq    $4,%r13
234         addq    %rdx,%r12
235         xorq    %rcx,%r15
236
237         rorq    $6,%r14
238         xorq    %rax,%r13
239         addq    %r15,%r12
240
241         movq    %r8,%r15
242         addq    (%rbp),%r12
243         xorq    %r8,%r14
244
245         xorq    %r9,%r15
246         rorq    $14,%r13
247         movq    %r9,%rdx
248
249         andq    %r15,%rdi
250         rorq    $28,%r14
251         addq    %r13,%r12
252
253         xorq    %rdi,%rdx
254         addq    %r12,%r11
255         addq    %r12,%rdx
256
257         leaq    8(%rbp),%rbp
258         addq    %r14,%rdx
259         movq    40(%rsi),%r12
260         movq    %r11,%r13
261         movq    %rdx,%r14
262         bswapq  %r12
263         rorq    $23,%r13
264         movq    %rax,%rdi
265
266         xorq    %r11,%r13
267         rorq    $5,%r14
268         xorq    %rbx,%rdi
269
270         movq    %r12,40(%rsp)
271         xorq    %rdx,%r14
272         andq    %r11,%rdi
273
274         rorq    $4,%r13
275         addq    %rcx,%r12
276         xorq    %rbx,%rdi
277
278         rorq    $6,%r14
279         xorq    %r11,%r13
280         addq    %rdi,%r12
281
282         movq    %rdx,%rdi
283         addq    (%rbp),%r12
284         xorq    %rdx,%r14
285
286         xorq    %r8,%rdi
287         rorq    $14,%r13
288         movq    %r8,%rcx
289
290         andq    %rdi,%r15
291         rorq    $28,%r14
292         addq    %r13,%r12
293
294         xorq    %r15,%rcx
295         addq    %r12,%r10
296         addq    %r12,%rcx
297
298         leaq    24(%rbp),%rbp
299         addq    %r14,%rcx
300         movq    48(%rsi),%r12
301         movq    %r10,%r13
302         movq    %rcx,%r14
303         bswapq  %r12
304         rorq    $23,%r13
305         movq    %r11,%r15
306
307         xorq    %r10,%r13
308         rorq    $5,%r14
309         xorq    %rax,%r15
310
311         movq    %r12,48(%rsp)
312         xorq    %rcx,%r14
313         andq    %r10,%r15
314
315         rorq    $4,%r13
316         addq    %rbx,%r12
317         xorq    %rax,%r15
318
319         rorq    $6,%r14
320         xorq    %r10,%r13
321         addq    %r15,%r12
322
323         movq    %rcx,%r15
324         addq    (%rbp),%r12
325         xorq    %rcx,%r14
326
327         xorq    %rdx,%r15
328         rorq    $14,%r13
329         movq    %rdx,%rbx
330
331         andq    %r15,%rdi
332         rorq    $28,%r14
333         addq    %r13,%r12
334
335         xorq    %rdi,%rbx
336         addq    %r12,%r9
337         addq    %r12,%rbx
338
339         leaq    8(%rbp),%rbp
340         addq    %r14,%rbx
341         movq    56(%rsi),%r12
342         movq    %r9,%r13
343         movq    %rbx,%r14
344         bswapq  %r12
345         rorq    $23,%r13
346         movq    %r10,%rdi
347
348         xorq    %r9,%r13
349         rorq    $5,%r14
350         xorq    %r11,%rdi
351
352         movq    %r12,56(%rsp)
353         xorq    %rbx,%r14
354         andq    %r9,%rdi
355
356         rorq    $4,%r13
357         addq    %rax,%r12
358         xorq    %r11,%rdi
359
360         rorq    $6,%r14
361         xorq    %r9,%r13
362         addq    %rdi,%r12
363
364         movq    %rbx,%rdi
365         addq    (%rbp),%r12
366         xorq    %rbx,%r14
367
368         xorq    %rcx,%rdi
369         rorq    $14,%r13
370         movq    %rcx,%rax
371
372         andq    %rdi,%r15
373         rorq    $28,%r14
374         addq    %r13,%r12
375
376         xorq    %r15,%rax
377         addq    %r12,%r8
378         addq    %r12,%rax
379
380         leaq    24(%rbp),%rbp
381         addq    %r14,%rax
382         movq    64(%rsi),%r12
383         movq    %r8,%r13
384         movq    %rax,%r14
385         bswapq  %r12
386         rorq    $23,%r13
387         movq    %r9,%r15
388
389         xorq    %r8,%r13
390         rorq    $5,%r14
391         xorq    %r10,%r15
392
393         movq    %r12,64(%rsp)
394         xorq    %rax,%r14
395         andq    %r8,%r15
396
397         rorq    $4,%r13
398         addq    %r11,%r12
399         xorq    %r10,%r15
400
401         rorq    $6,%r14
402         xorq    %r8,%r13
403         addq    %r15,%r12
404
405         movq    %rax,%r15
406         addq    (%rbp),%r12
407         xorq    %rax,%r14
408
409         xorq    %rbx,%r15
410         rorq    $14,%r13
411         movq    %rbx,%r11
412
413         andq    %r15,%rdi
414         rorq    $28,%r14
415         addq    %r13,%r12
416
417         xorq    %rdi,%r11
418         addq    %r12,%rdx
419         addq    %r12,%r11
420
421         leaq    8(%rbp),%rbp
422         addq    %r14,%r11
423         movq    72(%rsi),%r12
424         movq    %rdx,%r13
425         movq    %r11,%r14
426         bswapq  %r12
427         rorq    $23,%r13
428         movq    %r8,%rdi
429
430         xorq    %rdx,%r13
431         rorq    $5,%r14
432         xorq    %r9,%rdi
433
434         movq    %r12,72(%rsp)
435         xorq    %r11,%r14
436         andq    %rdx,%rdi
437
438         rorq    $4,%r13
439         addq    %r10,%r12
440         xorq    %r9,%rdi
441
442         rorq    $6,%r14
443         xorq    %rdx,%r13
444         addq    %rdi,%r12
445
446         movq    %r11,%rdi
447         addq    (%rbp),%r12
448         xorq    %r11,%r14
449
450         xorq    %rax,%rdi
451         rorq    $14,%r13
452         movq    %rax,%r10
453
454         andq    %rdi,%r15
455         rorq    $28,%r14
456         addq    %r13,%r12
457
458         xorq    %r15,%r10
459         addq    %r12,%rcx
460         addq    %r12,%r10
461
462         leaq    24(%rbp),%rbp
463         addq    %r14,%r10
464         movq    80(%rsi),%r12
465         movq    %rcx,%r13
466         movq    %r10,%r14
467         bswapq  %r12
468         rorq    $23,%r13
469         movq    %rdx,%r15
470
471         xorq    %rcx,%r13
472         rorq    $5,%r14
473         xorq    %r8,%r15
474
475         movq    %r12,80(%rsp)
476         xorq    %r10,%r14
477         andq    %rcx,%r15
478
479         rorq    $4,%r13
480         addq    %r9,%r12
481         xorq    %r8,%r15
482
483         rorq    $6,%r14
484         xorq    %rcx,%r13
485         addq    %r15,%r12
486
487         movq    %r10,%r15
488         addq    (%rbp),%r12
489         xorq    %r10,%r14
490
491         xorq    %r11,%r15
492         rorq    $14,%r13
493         movq    %r11,%r9
494
495         andq    %r15,%rdi
496         rorq    $28,%r14
497         addq    %r13,%r12
498
499         xorq    %rdi,%r9
500         addq    %r12,%rbx
501         addq    %r12,%r9
502
503         leaq    8(%rbp),%rbp
504         addq    %r14,%r9
505         movq    88(%rsi),%r12
506         movq    %rbx,%r13
507         movq    %r9,%r14
508         bswapq  %r12
509         rorq    $23,%r13
510         movq    %rcx,%rdi
511
512         xorq    %rbx,%r13
513         rorq    $5,%r14
514         xorq    %rdx,%rdi
515
516         movq    %r12,88(%rsp)
517         xorq    %r9,%r14
518         andq    %rbx,%rdi
519
520         rorq    $4,%r13
521         addq    %r8,%r12
522         xorq    %rdx,%rdi
523
524         rorq    $6,%r14
525         xorq    %rbx,%r13
526         addq    %rdi,%r12
527
528         movq    %r9,%rdi
529         addq    (%rbp),%r12
530         xorq    %r9,%r14
531
532         xorq    %r10,%rdi
533         rorq    $14,%r13
534         movq    %r10,%r8
535
536         andq    %rdi,%r15
537         rorq    $28,%r14
538         addq    %r13,%r12
539
540         xorq    %r15,%r8
541         addq    %r12,%rax
542         addq    %r12,%r8
543
544         leaq    24(%rbp),%rbp
545         addq    %r14,%r8
546         movq    96(%rsi),%r12
547         movq    %rax,%r13
548         movq    %r8,%r14
549         bswapq  %r12
550         rorq    $23,%r13
551         movq    %rbx,%r15
552
553         xorq    %rax,%r13
554         rorq    $5,%r14
555         xorq    %rcx,%r15
556
557         movq    %r12,96(%rsp)
558         xorq    %r8,%r14
559         andq    %rax,%r15
560
561         rorq    $4,%r13
562         addq    %rdx,%r12
563         xorq    %rcx,%r15
564
565         rorq    $6,%r14
566         xorq    %rax,%r13
567         addq    %r15,%r12
568
569         movq    %r8,%r15
570         addq    (%rbp),%r12
571         xorq    %r8,%r14
572
573         xorq    %r9,%r15
574         rorq    $14,%r13
575         movq    %r9,%rdx
576
577         andq    %r15,%rdi
578         rorq    $28,%r14
579         addq    %r13,%r12
580
581         xorq    %rdi,%rdx
582         addq    %r12,%r11
583         addq    %r12,%rdx
584
585         leaq    8(%rbp),%rbp
586         addq    %r14,%rdx
587         movq    104(%rsi),%r12
588         movq    %r11,%r13
589         movq    %rdx,%r14
590         bswapq  %r12
591         rorq    $23,%r13
592         movq    %rax,%rdi
593
594         xorq    %r11,%r13
595         rorq    $5,%r14
596         xorq    %rbx,%rdi
597
598         movq    %r12,104(%rsp)
599         xorq    %rdx,%r14
600         andq    %r11,%rdi
601
602         rorq    $4,%r13
603         addq    %rcx,%r12
604         xorq    %rbx,%rdi
605
606         rorq    $6,%r14
607         xorq    %r11,%r13
608         addq    %rdi,%r12
609
610         movq    %rdx,%rdi
611         addq    (%rbp),%r12
612         xorq    %rdx,%r14
613
614         xorq    %r8,%rdi
615         rorq    $14,%r13
616         movq    %r8,%rcx
617
618         andq    %rdi,%r15
619         rorq    $28,%r14
620         addq    %r13,%r12
621
622         xorq    %r15,%rcx
623         addq    %r12,%r10
624         addq    %r12,%rcx
625
626         leaq    24(%rbp),%rbp
627         addq    %r14,%rcx
628         movq    112(%rsi),%r12
629         movq    %r10,%r13
630         movq    %rcx,%r14
631         bswapq  %r12
632         rorq    $23,%r13
633         movq    %r11,%r15
634
635         xorq    %r10,%r13
636         rorq    $5,%r14
637         xorq    %rax,%r15
638
639         movq    %r12,112(%rsp)
640         xorq    %rcx,%r14
641         andq    %r10,%r15
642
643         rorq    $4,%r13
644         addq    %rbx,%r12
645         xorq    %rax,%r15
646
647         rorq    $6,%r14
648         xorq    %r10,%r13
649         addq    %r15,%r12
650
651         movq    %rcx,%r15
652         addq    (%rbp),%r12
653         xorq    %rcx,%r14
654
655         xorq    %rdx,%r15
656         rorq    $14,%r13
657         movq    %rdx,%rbx
658
659         andq    %r15,%rdi
660         rorq    $28,%r14
661         addq    %r13,%r12
662
663         xorq    %rdi,%rbx
664         addq    %r12,%r9
665         addq    %r12,%rbx
666
667         leaq    8(%rbp),%rbp
668         addq    %r14,%rbx
669         movq    120(%rsi),%r12
670         movq    %r9,%r13
671         movq    %rbx,%r14
672         bswapq  %r12
673         rorq    $23,%r13
674         movq    %r10,%rdi
675
676         xorq    %r9,%r13
677         rorq    $5,%r14
678         xorq    %r11,%rdi
679
680         movq    %r12,120(%rsp)
681         xorq    %rbx,%r14
682         andq    %r9,%rdi
683
684         rorq    $4,%r13
685         addq    %rax,%r12
686         xorq    %r11,%rdi
687
688         rorq    $6,%r14
689         xorq    %r9,%r13
690         addq    %rdi,%r12
691
692         movq    %rbx,%rdi
693         addq    (%rbp),%r12
694         xorq    %rbx,%r14
695
696         xorq    %rcx,%rdi
697         rorq    $14,%r13
698         movq    %rcx,%rax
699
700         andq    %rdi,%r15
701         rorq    $28,%r14
702         addq    %r13,%r12
703
704         xorq    %r15,%rax
705         addq    %r12,%r8
706         addq    %r12,%rax
707
708         leaq    24(%rbp),%rbp
709         jmp     .Lrounds_16_xx
710 .align  16
711 .Lrounds_16_xx:
712         movq    8(%rsp),%r13
713         movq    112(%rsp),%r15
714
715         movq    %r13,%r12
716         rorq    $7,%r13
717         addq    %r14,%rax
718         movq    %r15,%r14
719         rorq    $42,%r15
720
721         xorq    %r12,%r13
722         shrq    $7,%r12
723         rorq    $1,%r13
724         xorq    %r14,%r15
725         shrq    $6,%r14
726
727         rorq    $19,%r15
728         xorq    %r13,%r12
729         xorq    %r14,%r15
730         addq    72(%rsp),%r12
731
732         addq    0(%rsp),%r12
733         movq    %r8,%r13
734         addq    %r15,%r12
735         movq    %rax,%r14
736         rorq    $23,%r13
737         movq    %r9,%r15
738
739         xorq    %r8,%r13
740         rorq    $5,%r14
741         xorq    %r10,%r15
742
743         movq    %r12,0(%rsp)
744         xorq    %rax,%r14
745         andq    %r8,%r15
746
747         rorq    $4,%r13
748         addq    %r11,%r12
749         xorq    %r10,%r15
750
751         rorq    $6,%r14
752         xorq    %r8,%r13
753         addq    %r15,%r12
754
755         movq    %rax,%r15
756         addq    (%rbp),%r12
757         xorq    %rax,%r14
758
759         xorq    %rbx,%r15
760         rorq    $14,%r13
761         movq    %rbx,%r11
762
763         andq    %r15,%rdi
764         rorq    $28,%r14
765         addq    %r13,%r12
766
767         xorq    %rdi,%r11
768         addq    %r12,%rdx
769         addq    %r12,%r11
770
771         leaq    8(%rbp),%rbp
772         movq    16(%rsp),%r13
773         movq    120(%rsp),%rdi
774
775         movq    %r13,%r12
776         rorq    $7,%r13
777         addq    %r14,%r11
778         movq    %rdi,%r14
779         rorq    $42,%rdi
780
781         xorq    %r12,%r13
782         shrq    $7,%r12
783         rorq    $1,%r13
784         xorq    %r14,%rdi
785         shrq    $6,%r14
786
787         rorq    $19,%rdi
788         xorq    %r13,%r12
789         xorq    %r14,%rdi
790         addq    80(%rsp),%r12
791
792         addq    8(%rsp),%r12
793         movq    %rdx,%r13
794         addq    %rdi,%r12
795         movq    %r11,%r14
796         rorq    $23,%r13
797         movq    %r8,%rdi
798
799         xorq    %rdx,%r13
800         rorq    $5,%r14
801         xorq    %r9,%rdi
802
803         movq    %r12,8(%rsp)
804         xorq    %r11,%r14
805         andq    %rdx,%rdi
806
807         rorq    $4,%r13
808         addq    %r10,%r12
809         xorq    %r9,%rdi
810
811         rorq    $6,%r14
812         xorq    %rdx,%r13
813         addq    %rdi,%r12
814
815         movq    %r11,%rdi
816         addq    (%rbp),%r12
817         xorq    %r11,%r14
818
819         xorq    %rax,%rdi
820         rorq    $14,%r13
821         movq    %rax,%r10
822
823         andq    %rdi,%r15
824         rorq    $28,%r14
825         addq    %r13,%r12
826
827         xorq    %r15,%r10
828         addq    %r12,%rcx
829         addq    %r12,%r10
830
831         leaq    24(%rbp),%rbp
832         movq    24(%rsp),%r13
833         movq    0(%rsp),%r15
834
835         movq    %r13,%r12
836         rorq    $7,%r13
837         addq    %r14,%r10
838         movq    %r15,%r14
839         rorq    $42,%r15
840
841         xorq    %r12,%r13
842         shrq    $7,%r12
843         rorq    $1,%r13
844         xorq    %r14,%r15
845         shrq    $6,%r14
846
847         rorq    $19,%r15
848         xorq    %r13,%r12
849         xorq    %r14,%r15
850         addq    88(%rsp),%r12
851
852         addq    16(%rsp),%r12
853         movq    %rcx,%r13
854         addq    %r15,%r12
855         movq    %r10,%r14
856         rorq    $23,%r13
857         movq    %rdx,%r15
858
859         xorq    %rcx,%r13
860         rorq    $5,%r14
861         xorq    %r8,%r15
862
863         movq    %r12,16(%rsp)
864         xorq    %r10,%r14
865         andq    %rcx,%r15
866
867         rorq    $4,%r13
868         addq    %r9,%r12
869         xorq    %r8,%r15
870
871         rorq    $6,%r14
872         xorq    %rcx,%r13
873         addq    %r15,%r12
874
875         movq    %r10,%r15
876         addq    (%rbp),%r12
877         xorq    %r10,%r14
878
879         xorq    %r11,%r15
880         rorq    $14,%r13
881         movq    %r11,%r9
882
883         andq    %r15,%rdi
884         rorq    $28,%r14
885         addq    %r13,%r12
886
887         xorq    %rdi,%r9
888         addq    %r12,%rbx
889         addq    %r12,%r9
890
891         leaq    8(%rbp),%rbp
892         movq    32(%rsp),%r13
893         movq    8(%rsp),%rdi
894
895         movq    %r13,%r12
896         rorq    $7,%r13
897         addq    %r14,%r9
898         movq    %rdi,%r14
899         rorq    $42,%rdi
900
901         xorq    %r12,%r13
902         shrq    $7,%r12
903         rorq    $1,%r13
904         xorq    %r14,%rdi
905         shrq    $6,%r14
906
907         rorq    $19,%rdi
908         xorq    %r13,%r12
909         xorq    %r14,%rdi
910         addq    96(%rsp),%r12
911
912         addq    24(%rsp),%r12
913         movq    %rbx,%r13
914         addq    %rdi,%r12
915         movq    %r9,%r14
916         rorq    $23,%r13
917         movq    %rcx,%rdi
918
919         xorq    %rbx,%r13
920         rorq    $5,%r14
921         xorq    %rdx,%rdi
922
923         movq    %r12,24(%rsp)
924         xorq    %r9,%r14
925         andq    %rbx,%rdi
926
927         rorq    $4,%r13
928         addq    %r8,%r12
929         xorq    %rdx,%rdi
930
931         rorq    $6,%r14
932         xorq    %rbx,%r13
933         addq    %rdi,%r12
934
935         movq    %r9,%rdi
936         addq    (%rbp),%r12
937         xorq    %r9,%r14
938
939         xorq    %r10,%rdi
940         rorq    $14,%r13
941         movq    %r10,%r8
942
943         andq    %rdi,%r15
944         rorq    $28,%r14
945         addq    %r13,%r12
946
947         xorq    %r15,%r8
948         addq    %r12,%rax
949         addq    %r12,%r8
950
951         leaq    24(%rbp),%rbp
952         movq    40(%rsp),%r13
953         movq    16(%rsp),%r15
954
955         movq    %r13,%r12
956         rorq    $7,%r13
957         addq    %r14,%r8
958         movq    %r15,%r14
959         rorq    $42,%r15
960
961         xorq    %r12,%r13
962         shrq    $7,%r12
963         rorq    $1,%r13
964         xorq    %r14,%r15
965         shrq    $6,%r14
966
967         rorq    $19,%r15
968         xorq    %r13,%r12
969         xorq    %r14,%r15
970         addq    104(%rsp),%r12
971
972         addq    32(%rsp),%r12
973         movq    %rax,%r13
974         addq    %r15,%r12
975         movq    %r8,%r14
976         rorq    $23,%r13
977         movq    %rbx,%r15
978
979         xorq    %rax,%r13
980         rorq    $5,%r14
981         xorq    %rcx,%r15
982
983         movq    %r12,32(%rsp)
984         xorq    %r8,%r14
985         andq    %rax,%r15
986
987         rorq    $4,%r13
988         addq    %rdx,%r12
989         xorq    %rcx,%r15
990
991         rorq    $6,%r14
992         xorq    %rax,%r13
993         addq    %r15,%r12
994
995         movq    %r8,%r15
996         addq    (%rbp),%r12
997         xorq    %r8,%r14
998
999         xorq    %r9,%r15
1000         rorq    $14,%r13
1001         movq    %r9,%rdx
1002
1003         andq    %r15,%rdi
1004         rorq    $28,%r14
1005         addq    %r13,%r12
1006
1007         xorq    %rdi,%rdx
1008         addq    %r12,%r11
1009         addq    %r12,%rdx
1010
1011         leaq    8(%rbp),%rbp
1012         movq    48(%rsp),%r13
1013         movq    24(%rsp),%rdi
1014
1015         movq    %r13,%r12
1016         rorq    $7,%r13
1017         addq    %r14,%rdx
1018         movq    %rdi,%r14
1019         rorq    $42,%rdi
1020
1021         xorq    %r12,%r13
1022         shrq    $7,%r12
1023         rorq    $1,%r13
1024         xorq    %r14,%rdi
1025         shrq    $6,%r14
1026
1027         rorq    $19,%rdi
1028         xorq    %r13,%r12
1029         xorq    %r14,%rdi
1030         addq    112(%rsp),%r12
1031
1032         addq    40(%rsp),%r12
1033         movq    %r11,%r13
1034         addq    %rdi,%r12
1035         movq    %rdx,%r14
1036         rorq    $23,%r13
1037         movq    %rax,%rdi
1038
1039         xorq    %r11,%r13
1040         rorq    $5,%r14
1041         xorq    %rbx,%rdi
1042
1043         movq    %r12,40(%rsp)
1044         xorq    %rdx,%r14
1045         andq    %r11,%rdi
1046
1047         rorq    $4,%r13
1048         addq    %rcx,%r12
1049         xorq    %rbx,%rdi
1050
1051         rorq    $6,%r14
1052         xorq    %r11,%r13
1053         addq    %rdi,%r12
1054
1055         movq    %rdx,%rdi
1056         addq    (%rbp),%r12
1057         xorq    %rdx,%r14
1058
1059         xorq    %r8,%rdi
1060         rorq    $14,%r13
1061         movq    %r8,%rcx
1062
1063         andq    %rdi,%r15
1064         rorq    $28,%r14
1065         addq    %r13,%r12
1066
1067         xorq    %r15,%rcx
1068         addq    %r12,%r10
1069         addq    %r12,%rcx
1070
1071         leaq    24(%rbp),%rbp
1072         movq    56(%rsp),%r13
1073         movq    32(%rsp),%r15
1074
1075         movq    %r13,%r12
1076         rorq    $7,%r13
1077         addq    %r14,%rcx
1078         movq    %r15,%r14
1079         rorq    $42,%r15
1080
1081         xorq    %r12,%r13
1082         shrq    $7,%r12
1083         rorq    $1,%r13
1084         xorq    %r14,%r15
1085         shrq    $6,%r14
1086
1087         rorq    $19,%r15
1088         xorq    %r13,%r12
1089         xorq    %r14,%r15
1090         addq    120(%rsp),%r12
1091
1092         addq    48(%rsp),%r12
1093         movq    %r10,%r13
1094         addq    %r15,%r12
1095         movq    %rcx,%r14
1096         rorq    $23,%r13
1097         movq    %r11,%r15
1098
1099         xorq    %r10,%r13
1100         rorq    $5,%r14
1101         xorq    %rax,%r15
1102
1103         movq    %r12,48(%rsp)
1104         xorq    %rcx,%r14
1105         andq    %r10,%r15
1106
1107         rorq    $4,%r13
1108         addq    %rbx,%r12
1109         xorq    %rax,%r15
1110
1111         rorq    $6,%r14
1112         xorq    %r10,%r13
1113         addq    %r15,%r12
1114
1115         movq    %rcx,%r15
1116         addq    (%rbp),%r12
1117         xorq    %rcx,%r14
1118
1119         xorq    %rdx,%r15
1120         rorq    $14,%r13
1121         movq    %rdx,%rbx
1122
1123         andq    %r15,%rdi
1124         rorq    $28,%r14
1125         addq    %r13,%r12
1126
1127         xorq    %rdi,%rbx
1128         addq    %r12,%r9
1129         addq    %r12,%rbx
1130
1131         leaq    8(%rbp),%rbp
1132         movq    64(%rsp),%r13
1133         movq    40(%rsp),%rdi
1134
1135         movq    %r13,%r12
1136         rorq    $7,%r13
1137         addq    %r14,%rbx
1138         movq    %rdi,%r14
1139         rorq    $42,%rdi
1140
1141         xorq    %r12,%r13
1142         shrq    $7,%r12
1143         rorq    $1,%r13
1144         xorq    %r14,%rdi
1145         shrq    $6,%r14
1146
1147         rorq    $19,%rdi
1148         xorq    %r13,%r12
1149         xorq    %r14,%rdi
1150         addq    0(%rsp),%r12
1151
1152         addq    56(%rsp),%r12
1153         movq    %r9,%r13
1154         addq    %rdi,%r12
1155         movq    %rbx,%r14
1156         rorq    $23,%r13
1157         movq    %r10,%rdi
1158
1159         xorq    %r9,%r13
1160         rorq    $5,%r14
1161         xorq    %r11,%rdi
1162
1163         movq    %r12,56(%rsp)
1164         xorq    %rbx,%r14
1165         andq    %r9,%rdi
1166
1167         rorq    $4,%r13
1168         addq    %rax,%r12
1169         xorq    %r11,%rdi
1170
1171         rorq    $6,%r14
1172         xorq    %r9,%r13
1173         addq    %rdi,%r12
1174
1175         movq    %rbx,%rdi
1176         addq    (%rbp),%r12
1177         xorq    %rbx,%r14
1178
1179         xorq    %rcx,%rdi
1180         rorq    $14,%r13
1181         movq    %rcx,%rax
1182
1183         andq    %rdi,%r15
1184         rorq    $28,%r14
1185         addq    %r13,%r12
1186
1187         xorq    %r15,%rax
1188         addq    %r12,%r8
1189         addq    %r12,%rax
1190
1191         leaq    24(%rbp),%rbp
1192         movq    72(%rsp),%r13
1193         movq    48(%rsp),%r15
1194
1195         movq    %r13,%r12
1196         rorq    $7,%r13
1197         addq    %r14,%rax
1198         movq    %r15,%r14
1199         rorq    $42,%r15
1200
1201         xorq    %r12,%r13
1202         shrq    $7,%r12
1203         rorq    $1,%r13
1204         xorq    %r14,%r15
1205         shrq    $6,%r14
1206
1207         rorq    $19,%r15
1208         xorq    %r13,%r12
1209         xorq    %r14,%r15
1210         addq    8(%rsp),%r12
1211
1212         addq    64(%rsp),%r12
1213         movq    %r8,%r13
1214         addq    %r15,%r12
1215         movq    %rax,%r14
1216         rorq    $23,%r13
1217         movq    %r9,%r15
1218
1219         xorq    %r8,%r13
1220         rorq    $5,%r14
1221         xorq    %r10,%r15
1222
1223         movq    %r12,64(%rsp)
1224         xorq    %rax,%r14
1225         andq    %r8,%r15
1226
1227         rorq    $4,%r13
1228         addq    %r11,%r12
1229         xorq    %r10,%r15
1230
1231         rorq    $6,%r14
1232         xorq    %r8,%r13
1233         addq    %r15,%r12
1234
1235         movq    %rax,%r15
1236         addq    (%rbp),%r12
1237         xorq    %rax,%r14
1238
1239         xorq    %rbx,%r15
1240         rorq    $14,%r13
1241         movq    %rbx,%r11
1242
1243         andq    %r15,%rdi
1244         rorq    $28,%r14
1245         addq    %r13,%r12
1246
1247         xorq    %rdi,%r11
1248         addq    %r12,%rdx
1249         addq    %r12,%r11
1250
1251         leaq    8(%rbp),%rbp
1252         movq    80(%rsp),%r13
1253         movq    56(%rsp),%rdi
1254
1255         movq    %r13,%r12
1256         rorq    $7,%r13
1257         addq    %r14,%r11
1258         movq    %rdi,%r14
1259         rorq    $42,%rdi
1260
1261         xorq    %r12,%r13
1262         shrq    $7,%r12
1263         rorq    $1,%r13
1264         xorq    %r14,%rdi
1265         shrq    $6,%r14
1266
1267         rorq    $19,%rdi
1268         xorq    %r13,%r12
1269         xorq    %r14,%rdi
1270         addq    16(%rsp),%r12
1271
1272         addq    72(%rsp),%r12
1273         movq    %rdx,%r13
1274         addq    %rdi,%r12
1275         movq    %r11,%r14
1276         rorq    $23,%r13
1277         movq    %r8,%rdi
1278
1279         xorq    %rdx,%r13
1280         rorq    $5,%r14
1281         xorq    %r9,%rdi
1282
1283         movq    %r12,72(%rsp)
1284         xorq    %r11,%r14
1285         andq    %rdx,%rdi
1286
1287         rorq    $4,%r13
1288         addq    %r10,%r12
1289         xorq    %r9,%rdi
1290
1291         rorq    $6,%r14
1292         xorq    %rdx,%r13
1293         addq    %rdi,%r12
1294
1295         movq    %r11,%rdi
1296         addq    (%rbp),%r12
1297         xorq    %r11,%r14
1298
1299         xorq    %rax,%rdi
1300         rorq    $14,%r13
1301         movq    %rax,%r10
1302
1303         andq    %rdi,%r15
1304         rorq    $28,%r14
1305         addq    %r13,%r12
1306
1307         xorq    %r15,%r10
1308         addq    %r12,%rcx
1309         addq    %r12,%r10
1310
1311         leaq    24(%rbp),%rbp
1312         movq    88(%rsp),%r13
1313         movq    64(%rsp),%r15
1314
1315         movq    %r13,%r12
1316         rorq    $7,%r13
1317         addq    %r14,%r10
1318         movq    %r15,%r14
1319         rorq    $42,%r15
1320
1321         xorq    %r12,%r13
1322         shrq    $7,%r12
1323         rorq    $1,%r13
1324         xorq    %r14,%r15
1325         shrq    $6,%r14
1326
1327         rorq    $19,%r15
1328         xorq    %r13,%r12
1329         xorq    %r14,%r15
1330         addq    24(%rsp),%r12
1331
1332         addq    80(%rsp),%r12
1333         movq    %rcx,%r13
1334         addq    %r15,%r12
1335         movq    %r10,%r14
1336         rorq    $23,%r13
1337         movq    %rdx,%r15
1338
1339         xorq    %rcx,%r13
1340         rorq    $5,%r14
1341         xorq    %r8,%r15
1342
1343         movq    %r12,80(%rsp)
1344         xorq    %r10,%r14
1345         andq    %rcx,%r15
1346
1347         rorq    $4,%r13
1348         addq    %r9,%r12
1349         xorq    %r8,%r15
1350
1351         rorq    $6,%r14
1352         xorq    %rcx,%r13
1353         addq    %r15,%r12
1354
1355         movq    %r10,%r15
1356         addq    (%rbp),%r12
1357         xorq    %r10,%r14
1358
1359         xorq    %r11,%r15
1360         rorq    $14,%r13
1361         movq    %r11,%r9
1362
1363         andq    %r15,%rdi
1364         rorq    $28,%r14
1365         addq    %r13,%r12
1366
1367         xorq    %rdi,%r9
1368         addq    %r12,%rbx
1369         addq    %r12,%r9
1370
1371         leaq    8(%rbp),%rbp
1372         movq    96(%rsp),%r13
1373         movq    72(%rsp),%rdi
1374
1375         movq    %r13,%r12
1376         rorq    $7,%r13
1377         addq    %r14,%r9
1378         movq    %rdi,%r14
1379         rorq    $42,%rdi
1380
1381         xorq    %r12,%r13
1382         shrq    $7,%r12
1383         rorq    $1,%r13
1384         xorq    %r14,%rdi
1385         shrq    $6,%r14
1386
1387         rorq    $19,%rdi
1388         xorq    %r13,%r12
1389         xorq    %r14,%rdi
1390         addq    32(%rsp),%r12
1391
1392         addq    88(%rsp),%r12
1393         movq    %rbx,%r13
1394         addq    %rdi,%r12
1395         movq    %r9,%r14
1396         rorq    $23,%r13
1397         movq    %rcx,%rdi
1398
1399         xorq    %rbx,%r13
1400         rorq    $5,%r14
1401         xorq    %rdx,%rdi
1402
1403         movq    %r12,88(%rsp)
1404         xorq    %r9,%r14
1405         andq    %rbx,%rdi
1406
1407         rorq    $4,%r13
1408         addq    %r8,%r12
1409         xorq    %rdx,%rdi
1410
1411         rorq    $6,%r14
1412         xorq    %rbx,%r13
1413         addq    %rdi,%r12
1414
1415         movq    %r9,%rdi
1416         addq    (%rbp),%r12
1417         xorq    %r9,%r14
1418
1419         xorq    %r10,%rdi
1420         rorq    $14,%r13
1421         movq    %r10,%r8
1422
1423         andq    %rdi,%r15
1424         rorq    $28,%r14
1425         addq    %r13,%r12
1426
1427         xorq    %r15,%r8
1428         addq    %r12,%rax
1429         addq    %r12,%r8
1430
1431         leaq    24(%rbp),%rbp
1432         movq    104(%rsp),%r13
1433         movq    80(%rsp),%r15
1434
1435         movq    %r13,%r12
1436         rorq    $7,%r13
1437         addq    %r14,%r8
1438         movq    %r15,%r14
1439         rorq    $42,%r15
1440
1441         xorq    %r12,%r13
1442         shrq    $7,%r12
1443         rorq    $1,%r13
1444         xorq    %r14,%r15
1445         shrq    $6,%r14
1446
1447         rorq    $19,%r15
1448         xorq    %r13,%r12
1449         xorq    %r14,%r15
1450         addq    40(%rsp),%r12
1451
1452         addq    96(%rsp),%r12
1453         movq    %rax,%r13
1454         addq    %r15,%r12
1455         movq    %r8,%r14
1456         rorq    $23,%r13
1457         movq    %rbx,%r15
1458
1459         xorq    %rax,%r13
1460         rorq    $5,%r14
1461         xorq    %rcx,%r15
1462
1463         movq    %r12,96(%rsp)
1464         xorq    %r8,%r14
1465         andq    %rax,%r15
1466
1467         rorq    $4,%r13
1468         addq    %rdx,%r12
1469         xorq    %rcx,%r15
1470
1471         rorq    $6,%r14
1472         xorq    %rax,%r13
1473         addq    %r15,%r12
1474
1475         movq    %r8,%r15
1476         addq    (%rbp),%r12
1477         xorq    %r8,%r14
1478
1479         xorq    %r9,%r15
1480         rorq    $14,%r13
1481         movq    %r9,%rdx
1482
1483         andq    %r15,%rdi
1484         rorq    $28,%r14
1485         addq    %r13,%r12
1486
1487         xorq    %rdi,%rdx
1488         addq    %r12,%r11
1489         addq    %r12,%rdx
1490
1491         leaq    8(%rbp),%rbp
1492         movq    112(%rsp),%r13
1493         movq    88(%rsp),%rdi
1494
1495         movq    %r13,%r12
1496         rorq    $7,%r13
1497         addq    %r14,%rdx
1498         movq    %rdi,%r14
1499         rorq    $42,%rdi
1500
1501         xorq    %r12,%r13
1502         shrq    $7,%r12
1503         rorq    $1,%r13
1504         xorq    %r14,%rdi
1505         shrq    $6,%r14
1506
1507         rorq    $19,%rdi
1508         xorq    %r13,%r12
1509         xorq    %r14,%rdi
1510         addq    48(%rsp),%r12
1511
1512         addq    104(%rsp),%r12
1513         movq    %r11,%r13
1514         addq    %rdi,%r12
1515         movq    %rdx,%r14
1516         rorq    $23,%r13
1517         movq    %rax,%rdi
1518
1519         xorq    %r11,%r13
1520         rorq    $5,%r14
1521         xorq    %rbx,%rdi
1522
1523         movq    %r12,104(%rsp)
1524         xorq    %rdx,%r14
1525         andq    %r11,%rdi
1526
1527         rorq    $4,%r13
1528         addq    %rcx,%r12
1529         xorq    %rbx,%rdi
1530
1531         rorq    $6,%r14
1532         xorq    %r11,%r13
1533         addq    %rdi,%r12
1534
1535         movq    %rdx,%rdi
1536         addq    (%rbp),%r12
1537         xorq    %rdx,%r14
1538
1539         xorq    %r8,%rdi
1540         rorq    $14,%r13
1541         movq    %r8,%rcx
1542
1543         andq    %rdi,%r15
1544         rorq    $28,%r14
1545         addq    %r13,%r12
1546
1547         xorq    %r15,%rcx
1548         addq    %r12,%r10
1549         addq    %r12,%rcx
1550
1551         leaq    24(%rbp),%rbp
1552         movq    120(%rsp),%r13
1553         movq    96(%rsp),%r15
1554
1555         movq    %r13,%r12
1556         rorq    $7,%r13
1557         addq    %r14,%rcx
1558         movq    %r15,%r14
1559         rorq    $42,%r15
1560
1561         xorq    %r12,%r13
1562         shrq    $7,%r12
1563         rorq    $1,%r13
1564         xorq    %r14,%r15
1565         shrq    $6,%r14
1566
1567         rorq    $19,%r15
1568         xorq    %r13,%r12
1569         xorq    %r14,%r15
1570         addq    56(%rsp),%r12
1571
1572         addq    112(%rsp),%r12
1573         movq    %r10,%r13
1574         addq    %r15,%r12
1575         movq    %rcx,%r14
1576         rorq    $23,%r13
1577         movq    %r11,%r15
1578
1579         xorq    %r10,%r13
1580         rorq    $5,%r14
1581         xorq    %rax,%r15
1582
1583         movq    %r12,112(%rsp)
1584         xorq    %rcx,%r14
1585         andq    %r10,%r15
1586
1587         rorq    $4,%r13
1588         addq    %rbx,%r12
1589         xorq    %rax,%r15
1590
1591         rorq    $6,%r14
1592         xorq    %r10,%r13
1593         addq    %r15,%r12
1594
1595         movq    %rcx,%r15
1596         addq    (%rbp),%r12
1597         xorq    %rcx,%r14
1598
1599         xorq    %rdx,%r15
1600         rorq    $14,%r13
1601         movq    %rdx,%rbx
1602
1603         andq    %r15,%rdi
1604         rorq    $28,%r14
1605         addq    %r13,%r12
1606
1607         xorq    %rdi,%rbx
1608         addq    %r12,%r9
1609         addq    %r12,%rbx
1610
1611         leaq    8(%rbp),%rbp
1612         movq    0(%rsp),%r13
1613         movq    104(%rsp),%rdi
1614
1615         movq    %r13,%r12
1616         rorq    $7,%r13
1617         addq    %r14,%rbx
1618         movq    %rdi,%r14
1619         rorq    $42,%rdi
1620
1621         xorq    %r12,%r13
1622         shrq    $7,%r12
1623         rorq    $1,%r13
1624         xorq    %r14,%rdi
1625         shrq    $6,%r14
1626
1627         rorq    $19,%rdi
1628         xorq    %r13,%r12
1629         xorq    %r14,%rdi
1630         addq    64(%rsp),%r12
1631
1632         addq    120(%rsp),%r12
1633         movq    %r9,%r13
1634         addq    %rdi,%r12
1635         movq    %rbx,%r14
1636         rorq    $23,%r13
1637         movq    %r10,%rdi
1638
1639         xorq    %r9,%r13
1640         rorq    $5,%r14
1641         xorq    %r11,%rdi
1642
1643         movq    %r12,120(%rsp)
1644         xorq    %rbx,%r14
1645         andq    %r9,%rdi
1646
1647         rorq    $4,%r13
1648         addq    %rax,%r12
1649         xorq    %r11,%rdi
1650
1651         rorq    $6,%r14
1652         xorq    %r9,%r13
1653         addq    %rdi,%r12
1654
1655         movq    %rbx,%rdi
1656         addq    (%rbp),%r12
1657         xorq    %rbx,%r14
1658
1659         xorq    %rcx,%rdi
1660         rorq    $14,%r13
1661         movq    %rcx,%rax
1662
1663         andq    %rdi,%r15
1664         rorq    $28,%r14
1665         addq    %r13,%r12
1666
1667         xorq    %r15,%rax
1668         addq    %r12,%r8
1669         addq    %r12,%rax
1670
1671         leaq    24(%rbp),%rbp
1672         cmpb    $0,7(%rbp)
1673         jnz     .Lrounds_16_xx
1674
1675         movq    128+0(%rsp),%rdi
1676         addq    %r14,%rax
1677         leaq    128(%rsi),%rsi
1678
1679         addq    0(%rdi),%rax
1680         addq    8(%rdi),%rbx
1681         addq    16(%rdi),%rcx
1682         addq    24(%rdi),%rdx
1683         addq    32(%rdi),%r8
1684         addq    40(%rdi),%r9
1685         addq    48(%rdi),%r10
1686         addq    56(%rdi),%r11
1687
1688         cmpq    128+16(%rsp),%rsi
1689
1690         movq    %rax,0(%rdi)
1691         movq    %rbx,8(%rdi)
1692         movq    %rcx,16(%rdi)
1693         movq    %rdx,24(%rdi)
1694         movq    %r8,32(%rdi)
1695         movq    %r9,40(%rdi)
1696         movq    %r10,48(%rdi)
1697         movq    %r11,56(%rdi)
1698         jb      .Lloop
1699
1700         movq    128+24(%rsp),%rsi
1701         movq    (%rsi),%r15
1702         movq    8(%rsi),%r14
1703         movq    16(%rsi),%r13
1704         movq    24(%rsi),%r12
1705         movq    32(%rsi),%rbp
1706         movq    40(%rsi),%rbx
1707         leaq    48(%rsi),%rsp
1708 .Lepilogue:
1709         .byte   0xf3,0xc3
1710 .size   sha512_block_data_order,.-sha512_block_data_order
1711 .align  64
1712 .type   K512,@object
1713 K512:
1714 .quad   0x428a2f98d728ae22,0x7137449123ef65cd
1715 .quad   0x428a2f98d728ae22,0x7137449123ef65cd
1716 .quad   0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
1717 .quad   0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
1718 .quad   0x3956c25bf348b538,0x59f111f1b605d019
1719 .quad   0x3956c25bf348b538,0x59f111f1b605d019
1720 .quad   0x923f82a4af194f9b,0xab1c5ed5da6d8118
1721 .quad   0x923f82a4af194f9b,0xab1c5ed5da6d8118
1722 .quad   0xd807aa98a3030242,0x12835b0145706fbe
1723 .quad   0xd807aa98a3030242,0x12835b0145706fbe
1724 .quad   0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
1725 .quad   0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
1726 .quad   0x72be5d74f27b896f,0x80deb1fe3b1696b1
1727 .quad   0x72be5d74f27b896f,0x80deb1fe3b1696b1
1728 .quad   0x9bdc06a725c71235,0xc19bf174cf692694
1729 .quad   0x9bdc06a725c71235,0xc19bf174cf692694
1730 .quad   0xe49b69c19ef14ad2,0xefbe4786384f25e3
1731 .quad   0xe49b69c19ef14ad2,0xefbe4786384f25e3
1732 .quad   0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
1733 .quad   0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
1734 .quad   0x2de92c6f592b0275,0x4a7484aa6ea6e483
1735 .quad   0x2de92c6f592b0275,0x4a7484aa6ea6e483
1736 .quad   0x5cb0a9dcbd41fbd4,0x76f988da831153b5
1737 .quad   0x5cb0a9dcbd41fbd4,0x76f988da831153b5
1738 .quad   0x983e5152ee66dfab,0xa831c66d2db43210
1739 .quad   0x983e5152ee66dfab,0xa831c66d2db43210
1740 .quad   0xb00327c898fb213f,0xbf597fc7beef0ee4
1741 .quad   0xb00327c898fb213f,0xbf597fc7beef0ee4
1742 .quad   0xc6e00bf33da88fc2,0xd5a79147930aa725
1743 .quad   0xc6e00bf33da88fc2,0xd5a79147930aa725
1744 .quad   0x06ca6351e003826f,0x142929670a0e6e70
1745 .quad   0x06ca6351e003826f,0x142929670a0e6e70
1746 .quad   0x27b70a8546d22ffc,0x2e1b21385c26c926
1747 .quad   0x27b70a8546d22ffc,0x2e1b21385c26c926
1748 .quad   0x4d2c6dfc5ac42aed,0x53380d139d95b3df
1749 .quad   0x4d2c6dfc5ac42aed,0x53380d139d95b3df
1750 .quad   0x650a73548baf63de,0x766a0abb3c77b2a8
1751 .quad   0x650a73548baf63de,0x766a0abb3c77b2a8
1752 .quad   0x81c2c92e47edaee6,0x92722c851482353b
1753 .quad   0x81c2c92e47edaee6,0x92722c851482353b
1754 .quad   0xa2bfe8a14cf10364,0xa81a664bbc423001
1755 .quad   0xa2bfe8a14cf10364,0xa81a664bbc423001
1756 .quad   0xc24b8b70d0f89791,0xc76c51a30654be30
1757 .quad   0xc24b8b70d0f89791,0xc76c51a30654be30
1758 .quad   0xd192e819d6ef5218,0xd69906245565a910
1759 .quad   0xd192e819d6ef5218,0xd69906245565a910
1760 .quad   0xf40e35855771202a,0x106aa07032bbd1b8
1761 .quad   0xf40e35855771202a,0x106aa07032bbd1b8
1762 .quad   0x19a4c116b8d2d0c8,0x1e376c085141ab53
1763 .quad   0x19a4c116b8d2d0c8,0x1e376c085141ab53
1764 .quad   0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1765 .quad   0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1766 .quad   0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1767 .quad   0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1768 .quad   0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1769 .quad   0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1770 .quad   0x748f82ee5defb2fc,0x78a5636f43172f60
1771 .quad   0x748f82ee5defb2fc,0x78a5636f43172f60
1772 .quad   0x84c87814a1f0ab72,0x8cc702081a6439ec
1773 .quad   0x84c87814a1f0ab72,0x8cc702081a6439ec
1774 .quad   0x90befffa23631e28,0xa4506cebde82bde9
1775 .quad   0x90befffa23631e28,0xa4506cebde82bde9
1776 .quad   0xbef9a3f7b2c67915,0xc67178f2e372532b
1777 .quad   0xbef9a3f7b2c67915,0xc67178f2e372532b
1778 .quad   0xca273eceea26619c,0xd186b8c721c0c207
1779 .quad   0xca273eceea26619c,0xd186b8c721c0c207
1780 .quad   0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1781 .quad   0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1782 .quad   0x06f067aa72176fba,0x0a637dc5a2c898a6
1783 .quad   0x06f067aa72176fba,0x0a637dc5a2c898a6
1784 .quad   0x113f9804bef90dae,0x1b710b35131c471b
1785 .quad   0x113f9804bef90dae,0x1b710b35131c471b
1786 .quad   0x28db77f523047d84,0x32caab7b40c72493
1787 .quad   0x28db77f523047d84,0x32caab7b40c72493
1788 .quad   0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1789 .quad   0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1790 .quad   0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1791 .quad   0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1792 .quad   0x5fcb6fab3ad6faec,0x6c44198c4a475817
1793 .quad   0x5fcb6fab3ad6faec,0x6c44198c4a475817
1794
1795 .quad   0x0001020304050607,0x08090a0b0c0d0e0f
1796 .quad   0x0001020304050607,0x08090a0b0c0d0e0f
1797 .byte   83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1798 .type   sha512_block_data_order_xop,@function
1799 .align  64
1800 sha512_block_data_order_xop:
1801 .Lxop_shortcut:
1802         pushq   %rbx
1803         pushq   %rbp
1804         pushq   %r12
1805         pushq   %r13
1806         pushq   %r14
1807         pushq   %r15
1808         movq    %rsp,%r11
1809         shlq    $4,%rdx
1810         subq    $160,%rsp
1811         leaq    (%rsi,%rdx,8),%rdx
1812         andq    $-64,%rsp
1813         movq    %rdi,128+0(%rsp)
1814         movq    %rsi,128+8(%rsp)
1815         movq    %rdx,128+16(%rsp)
1816         movq    %r11,128+24(%rsp)
1817 .Lprologue_xop:
1818
1819         vzeroupper
1820         movq    0(%rdi),%rax
1821         movq    8(%rdi),%rbx
1822         movq    16(%rdi),%rcx
1823         movq    24(%rdi),%rdx
1824         movq    32(%rdi),%r8
1825         movq    40(%rdi),%r9
1826         movq    48(%rdi),%r10
1827         movq    56(%rdi),%r11
1828         jmp     .Lloop_xop
1829 .align  16
1830 .Lloop_xop:
1831         vmovdqa K512+1280(%rip),%xmm11
1832         vmovdqu 0(%rsi),%xmm0
1833         leaq    K512+128(%rip),%rbp
1834         vmovdqu 16(%rsi),%xmm1
1835         vmovdqu 32(%rsi),%xmm2
1836         vpshufb %xmm11,%xmm0,%xmm0
1837         vmovdqu 48(%rsi),%xmm3
1838         vpshufb %xmm11,%xmm1,%xmm1
1839         vmovdqu 64(%rsi),%xmm4
1840         vpshufb %xmm11,%xmm2,%xmm2
1841         vmovdqu 80(%rsi),%xmm5
1842         vpshufb %xmm11,%xmm3,%xmm3
1843         vmovdqu 96(%rsi),%xmm6
1844         vpshufb %xmm11,%xmm4,%xmm4
1845         vmovdqu 112(%rsi),%xmm7
1846         vpshufb %xmm11,%xmm5,%xmm5
1847         vpaddq  -128(%rbp),%xmm0,%xmm8
1848         vpshufb %xmm11,%xmm6,%xmm6
1849         vpaddq  -96(%rbp),%xmm1,%xmm9
1850         vpshufb %xmm11,%xmm7,%xmm7
1851         vpaddq  -64(%rbp),%xmm2,%xmm10
1852         vpaddq  -32(%rbp),%xmm3,%xmm11
1853         vmovdqa %xmm8,0(%rsp)
1854         vpaddq  0(%rbp),%xmm4,%xmm8
1855         vmovdqa %xmm9,16(%rsp)
1856         vpaddq  32(%rbp),%xmm5,%xmm9
1857         vmovdqa %xmm10,32(%rsp)
1858         vpaddq  64(%rbp),%xmm6,%xmm10
1859         vmovdqa %xmm11,48(%rsp)
1860         vpaddq  96(%rbp),%xmm7,%xmm11
1861         vmovdqa %xmm8,64(%rsp)
1862         movq    %rax,%r14
1863         vmovdqa %xmm9,80(%rsp)
1864         movq    %rbx,%rdi
1865         vmovdqa %xmm10,96(%rsp)
1866         xorq    %rcx,%rdi
1867         vmovdqa %xmm11,112(%rsp)
1868         movq    %r8,%r13
1869         jmp     .Lxop_00_47
1870
1871 .align  16
1872 .Lxop_00_47:
1873         addq    $256,%rbp
1874         vpalignr        $8,%xmm0,%xmm1,%xmm8
1875         rorq    $23,%r13
1876         movq    %r14,%rax
1877         vpalignr        $8,%xmm4,%xmm5,%xmm11
1878         movq    %r9,%r12
1879         rorq    $5,%r14
1880 .byte   143,72,120,195,200,56
1881         xorq    %r8,%r13
1882         xorq    %r10,%r12
1883         vpsrlq  $7,%xmm8,%xmm8
1884         rorq    $4,%r13
1885         xorq    %rax,%r14
1886         vpaddq  %xmm11,%xmm0,%xmm0
1887         andq    %r8,%r12
1888         xorq    %r8,%r13
1889         addq    0(%rsp),%r11
1890         movq    %rax,%r15
1891 .byte   143,72,120,195,209,7
1892         xorq    %r10,%r12
1893         rorq    $6,%r14
1894         vpxor   %xmm9,%xmm8,%xmm8
1895         xorq    %rbx,%r15
1896         addq    %r12,%r11
1897         rorq    $14,%r13
1898         andq    %r15,%rdi
1899 .byte   143,104,120,195,223,3
1900         xorq    %rax,%r14
1901         addq    %r13,%r11
1902         vpxor   %xmm10,%xmm8,%xmm8
1903         xorq    %rbx,%rdi
1904         rorq    $28,%r14
1905         vpsrlq  $6,%xmm7,%xmm10
1906         addq    %r11,%rdx
1907         addq    %rdi,%r11
1908         vpaddq  %xmm8,%xmm0,%xmm0
1909         movq    %rdx,%r13
1910         addq    %r11,%r14
1911 .byte   143,72,120,195,203,42
1912         rorq    $23,%r13
1913         movq    %r14,%r11
1914         vpxor   %xmm10,%xmm11,%xmm11
1915         movq    %r8,%r12
1916         rorq    $5,%r14
1917         xorq    %rdx,%r13
1918         xorq    %r9,%r12
1919         vpxor   %xmm9,%xmm11,%xmm11
1920         rorq    $4,%r13
1921         xorq    %r11,%r14
1922         andq    %rdx,%r12
1923         xorq    %rdx,%r13
1924         vpaddq  %xmm11,%xmm0,%xmm0
1925         addq    8(%rsp),%r10
1926         movq    %r11,%rdi
1927         xorq    %r9,%r12
1928         rorq    $6,%r14
1929         vpaddq  -128(%rbp),%xmm0,%xmm10
1930         xorq    %rax,%rdi
1931         addq    %r12,%r10
1932         rorq    $14,%r13
1933         andq    %rdi,%r15
1934         xorq    %r11,%r14
1935         addq    %r13,%r10
1936         xorq    %rax,%r15
1937         rorq    $28,%r14
1938         addq    %r10,%rcx
1939         addq    %r15,%r10
1940         movq    %rcx,%r13
1941         addq    %r10,%r14
1942         vmovdqa %xmm10,0(%rsp)
1943         vpalignr        $8,%xmm1,%xmm2,%xmm8
1944         rorq    $23,%r13
1945         movq    %r14,%r10
1946         vpalignr        $8,%xmm5,%xmm6,%xmm11
1947         movq    %rdx,%r12
1948         rorq    $5,%r14
1949 .byte   143,72,120,195,200,56
1950         xorq    %rcx,%r13
1951         xorq    %r8,%r12
1952         vpsrlq  $7,%xmm8,%xmm8
1953         rorq    $4,%r13
1954         xorq    %r10,%r14
1955         vpaddq  %xmm11,%xmm1,%xmm1
1956         andq    %rcx,%r12
1957         xorq    %rcx,%r13
1958         addq    16(%rsp),%r9
1959         movq    %r10,%r15
1960 .byte   143,72,120,195,209,7
1961         xorq    %r8,%r12
1962         rorq    $6,%r14
1963         vpxor   %xmm9,%xmm8,%xmm8
1964         xorq    %r11,%r15
1965         addq    %r12,%r9
1966         rorq    $14,%r13
1967         andq    %r15,%rdi
1968 .byte   143,104,120,195,216,3
1969         xorq    %r10,%r14
1970         addq    %r13,%r9
1971         vpxor   %xmm10,%xmm8,%xmm8
1972         xorq    %r11,%rdi
1973         rorq    $28,%r14
1974         vpsrlq  $6,%xmm0,%xmm10
1975         addq    %r9,%rbx
1976         addq    %rdi,%r9
1977         vpaddq  %xmm8,%xmm1,%xmm1
1978         movq    %rbx,%r13
1979         addq    %r9,%r14
1980 .byte   143,72,120,195,203,42
1981         rorq    $23,%r13
1982         movq    %r14,%r9
1983         vpxor   %xmm10,%xmm11,%xmm11
1984         movq    %rcx,%r12
1985         rorq    $5,%r14
1986         xorq    %rbx,%r13
1987         xorq    %rdx,%r12
1988         vpxor   %xmm9,%xmm11,%xmm11
1989         rorq    $4,%r13
1990         xorq    %r9,%r14
1991         andq    %rbx,%r12
1992         xorq    %rbx,%r13
1993         vpaddq  %xmm11,%xmm1,%xmm1
1994         addq    24(%rsp),%r8
1995         movq    %r9,%rdi
1996         xorq    %rdx,%r12
1997         rorq    $6,%r14
1998         vpaddq  -96(%rbp),%xmm1,%xmm10
1999         xorq    %r10,%rdi
2000         addq    %r12,%r8
2001         rorq    $14,%r13
2002         andq    %rdi,%r15
2003         xorq    %r9,%r14
2004         addq    %r13,%r8
2005         xorq    %r10,%r15
2006         rorq    $28,%r14
2007         addq    %r8,%rax
2008         addq    %r15,%r8
2009         movq    %rax,%r13
2010         addq    %r8,%r14
2011         vmovdqa %xmm10,16(%rsp)
2012         vpalignr        $8,%xmm2,%xmm3,%xmm8
2013         rorq    $23,%r13
2014         movq    %r14,%r8
2015         vpalignr        $8,%xmm6,%xmm7,%xmm11
2016         movq    %rbx,%r12
2017         rorq    $5,%r14
2018 .byte   143,72,120,195,200,56
2019         xorq    %rax,%r13
2020         xorq    %rcx,%r12
2021         vpsrlq  $7,%xmm8,%xmm8
2022         rorq    $4,%r13
2023         xorq    %r8,%r14
2024         vpaddq  %xmm11,%xmm2,%xmm2
2025         andq    %rax,%r12
2026         xorq    %rax,%r13
2027         addq    32(%rsp),%rdx
2028         movq    %r8,%r15
2029 .byte   143,72,120,195,209,7
2030         xorq    %rcx,%r12
2031         rorq    $6,%r14
2032         vpxor   %xmm9,%xmm8,%xmm8
2033         xorq    %r9,%r15
2034         addq    %r12,%rdx
2035         rorq    $14,%r13
2036         andq    %r15,%rdi
2037 .byte   143,104,120,195,217,3
2038         xorq    %r8,%r14
2039         addq    %r13,%rdx
2040         vpxor   %xmm10,%xmm8,%xmm8
2041         xorq    %r9,%rdi
2042         rorq    $28,%r14
2043         vpsrlq  $6,%xmm1,%xmm10
2044         addq    %rdx,%r11
2045         addq    %rdi,%rdx
2046         vpaddq  %xmm8,%xmm2,%xmm2
2047         movq    %r11,%r13
2048         addq    %rdx,%r14
2049 .byte   143,72,120,195,203,42
2050         rorq    $23,%r13
2051         movq    %r14,%rdx
2052         vpxor   %xmm10,%xmm11,%xmm11
2053         movq    %rax,%r12
2054         rorq    $5,%r14
2055         xorq    %r11,%r13
2056         xorq    %rbx,%r12
2057         vpxor   %xmm9,%xmm11,%xmm11
2058         rorq    $4,%r13
2059         xorq    %rdx,%r14
2060         andq    %r11,%r12
2061         xorq    %r11,%r13
2062         vpaddq  %xmm11,%xmm2,%xmm2
2063         addq    40(%rsp),%rcx
2064         movq    %rdx,%rdi
2065         xorq    %rbx,%r12
2066         rorq    $6,%r14
2067         vpaddq  -64(%rbp),%xmm2,%xmm10
2068         xorq    %r8,%rdi
2069         addq    %r12,%rcx
2070         rorq    $14,%r13
2071         andq    %rdi,%r15
2072         xorq    %rdx,%r14
2073         addq    %r13,%rcx
2074         xorq    %r8,%r15
2075         rorq    $28,%r14
2076         addq    %rcx,%r10
2077         addq    %r15,%rcx
2078         movq    %r10,%r13
2079         addq    %rcx,%r14
2080         vmovdqa %xmm10,32(%rsp)
2081         vpalignr        $8,%xmm3,%xmm4,%xmm8
2082         rorq    $23,%r13
2083         movq    %r14,%rcx
2084         vpalignr        $8,%xmm7,%xmm0,%xmm11
2085         movq    %r11,%r12
2086         rorq    $5,%r14
2087 .byte   143,72,120,195,200,56
2088         xorq    %r10,%r13
2089         xorq    %rax,%r12
2090         vpsrlq  $7,%xmm8,%xmm8
2091         rorq    $4,%r13
2092         xorq    %rcx,%r14
2093         vpaddq  %xmm11,%xmm3,%xmm3
2094         andq    %r10,%r12
2095         xorq    %r10,%r13
2096         addq    48(%rsp),%rbx
2097         movq    %rcx,%r15
2098 .byte   143,72,120,195,209,7
2099         xorq    %rax,%r12
2100         rorq    $6,%r14
2101         vpxor   %xmm9,%xmm8,%xmm8
2102         xorq    %rdx,%r15
2103         addq    %r12,%rbx
2104         rorq    $14,%r13
2105         andq    %r15,%rdi
2106 .byte   143,104,120,195,218,3
2107         xorq    %rcx,%r14
2108         addq    %r13,%rbx
2109         vpxor   %xmm10,%xmm8,%xmm8
2110         xorq    %rdx,%rdi
2111         rorq    $28,%r14
2112         vpsrlq  $6,%xmm2,%xmm10
2113         addq    %rbx,%r9
2114         addq    %rdi,%rbx
2115         vpaddq  %xmm8,%xmm3,%xmm3
2116         movq    %r9,%r13
2117         addq    %rbx,%r14
2118 .byte   143,72,120,195,203,42
2119         rorq    $23,%r13
2120         movq    %r14,%rbx
2121         vpxor   %xmm10,%xmm11,%xmm11
2122         movq    %r10,%r12
2123         rorq    $5,%r14
2124         xorq    %r9,%r13
2125         xorq    %r11,%r12
2126         vpxor   %xmm9,%xmm11,%xmm11
2127         rorq    $4,%r13
2128         xorq    %rbx,%r14
2129         andq    %r9,%r12
2130         xorq    %r9,%r13
2131         vpaddq  %xmm11,%xmm3,%xmm3
2132         addq    56(%rsp),%rax
2133         movq    %rbx,%rdi
2134         xorq    %r11,%r12
2135         rorq    $6,%r14
2136         vpaddq  -32(%rbp),%xmm3,%xmm10
2137         xorq    %rcx,%rdi
2138         addq    %r12,%rax
2139         rorq    $14,%r13
2140         andq    %rdi,%r15
2141         xorq    %rbx,%r14
2142         addq    %r13,%rax
2143         xorq    %rcx,%r15
2144         rorq    $28,%r14
2145         addq    %rax,%r8
2146         addq    %r15,%rax
2147         movq    %r8,%r13
2148         addq    %rax,%r14
2149         vmovdqa %xmm10,48(%rsp)
2150         vpalignr        $8,%xmm4,%xmm5,%xmm8
2151         rorq    $23,%r13
2152         movq    %r14,%rax
2153         vpalignr        $8,%xmm0,%xmm1,%xmm11
2154         movq    %r9,%r12
2155         rorq    $5,%r14
2156 .byte   143,72,120,195,200,56
2157         xorq    %r8,%r13
2158         xorq    %r10,%r12
2159         vpsrlq  $7,%xmm8,%xmm8
2160         rorq    $4,%r13
2161         xorq    %rax,%r14
2162         vpaddq  %xmm11,%xmm4,%xmm4
2163         andq    %r8,%r12
2164         xorq    %r8,%r13
2165         addq    64(%rsp),%r11
2166         movq    %rax,%r15
2167 .byte   143,72,120,195,209,7
2168         xorq    %r10,%r12
2169         rorq    $6,%r14
2170         vpxor   %xmm9,%xmm8,%xmm8
2171         xorq    %rbx,%r15
2172         addq    %r12,%r11
2173         rorq    $14,%r13
2174         andq    %r15,%rdi
2175 .byte   143,104,120,195,219,3
2176         xorq    %rax,%r14
2177         addq    %r13,%r11
2178         vpxor   %xmm10,%xmm8,%xmm8
2179         xorq    %rbx,%rdi
2180         rorq    $28,%r14
2181         vpsrlq  $6,%xmm3,%xmm10
2182         addq    %r11,%rdx
2183         addq    %rdi,%r11
2184         vpaddq  %xmm8,%xmm4,%xmm4
2185         movq    %rdx,%r13
2186         addq    %r11,%r14
2187 .byte   143,72,120,195,203,42
2188         rorq    $23,%r13
2189         movq    %r14,%r11
2190         vpxor   %xmm10,%xmm11,%xmm11
2191         movq    %r8,%r12
2192         rorq    $5,%r14
2193         xorq    %rdx,%r13
2194         xorq    %r9,%r12
2195         vpxor   %xmm9,%xmm11,%xmm11
2196         rorq    $4,%r13
2197         xorq    %r11,%r14
2198         andq    %rdx,%r12
2199         xorq    %rdx,%r13
2200         vpaddq  %xmm11,%xmm4,%xmm4
2201         addq    72(%rsp),%r10
2202         movq    %r11,%rdi
2203         xorq    %r9,%r12
2204         rorq    $6,%r14
2205         vpaddq  0(%rbp),%xmm4,%xmm10
2206         xorq    %rax,%rdi
2207         addq    %r12,%r10
2208         rorq    $14,%r13
2209         andq    %rdi,%r15
2210         xorq    %r11,%r14
2211         addq    %r13,%r10
2212         xorq    %rax,%r15
2213         rorq    $28,%r14
2214         addq    %r10,%rcx
2215         addq    %r15,%r10
2216         movq    %rcx,%r13
2217         addq    %r10,%r14
2218         vmovdqa %xmm10,64(%rsp)
2219         vpalignr        $8,%xmm5,%xmm6,%xmm8
2220         rorq    $23,%r13
2221         movq    %r14,%r10
2222         vpalignr        $8,%xmm1,%xmm2,%xmm11
2223         movq    %rdx,%r12
2224         rorq    $5,%r14
2225 .byte   143,72,120,195,200,56
2226         xorq    %rcx,%r13
2227         xorq    %r8,%r12
2228         vpsrlq  $7,%xmm8,%xmm8
2229         rorq    $4,%r13
2230         xorq    %r10,%r14
2231         vpaddq  %xmm11,%xmm5,%xmm5
2232         andq    %rcx,%r12
2233         xorq    %rcx,%r13
2234         addq    80(%rsp),%r9
2235         movq    %r10,%r15
2236 .byte   143,72,120,195,209,7
2237         xorq    %r8,%r12
2238         rorq    $6,%r14
2239         vpxor   %xmm9,%xmm8,%xmm8
2240         xorq    %r11,%r15
2241         addq    %r12,%r9
2242         rorq    $14,%r13
2243         andq    %r15,%rdi
2244 .byte   143,104,120,195,220,3
2245         xorq    %r10,%r14
2246         addq    %r13,%r9
2247         vpxor   %xmm10,%xmm8,%xmm8
2248         xorq    %r11,%rdi
2249         rorq    $28,%r14
2250         vpsrlq  $6,%xmm4,%xmm10
2251         addq    %r9,%rbx
2252         addq    %rdi,%r9
2253         vpaddq  %xmm8,%xmm5,%xmm5
2254         movq    %rbx,%r13
2255         addq    %r9,%r14
2256 .byte   143,72,120,195,203,42
2257         rorq    $23,%r13
2258         movq    %r14,%r9
2259         vpxor   %xmm10,%xmm11,%xmm11
2260         movq    %rcx,%r12
2261         rorq    $5,%r14
2262         xorq    %rbx,%r13
2263         xorq    %rdx,%r12
2264         vpxor   %xmm9,%xmm11,%xmm11
2265         rorq    $4,%r13
2266         xorq    %r9,%r14
2267         andq    %rbx,%r12
2268         xorq    %rbx,%r13
2269         vpaddq  %xmm11,%xmm5,%xmm5
2270         addq    88(%rsp),%r8
2271         movq    %r9,%rdi
2272         xorq    %rdx,%r12
2273         rorq    $6,%r14
2274         vpaddq  32(%rbp),%xmm5,%xmm10
2275         xorq    %r10,%rdi
2276         addq    %r12,%r8
2277         rorq    $14,%r13
2278         andq    %rdi,%r15
2279         xorq    %r9,%r14
2280         addq    %r13,%r8
2281         xorq    %r10,%r15
2282         rorq    $28,%r14
2283         addq    %r8,%rax
2284         addq    %r15,%r8
2285         movq    %rax,%r13
2286         addq    %r8,%r14
2287         vmovdqa %xmm10,80(%rsp)
2288         vpalignr        $8,%xmm6,%xmm7,%xmm8
2289         rorq    $23,%r13
2290         movq    %r14,%r8
2291         vpalignr        $8,%xmm2,%xmm3,%xmm11
2292         movq    %rbx,%r12
2293         rorq    $5,%r14
2294 .byte   143,72,120,195,200,56
2295         xorq    %rax,%r13
2296         xorq    %rcx,%r12
2297         vpsrlq  $7,%xmm8,%xmm8
2298         rorq    $4,%r13
2299         xorq    %r8,%r14
2300         vpaddq  %xmm11,%xmm6,%xmm6
2301         andq    %rax,%r12
2302         xorq    %rax,%r13
2303         addq    96(%rsp),%rdx
2304         movq    %r8,%r15
2305 .byte   143,72,120,195,209,7
2306         xorq    %rcx,%r12
2307         rorq    $6,%r14
2308         vpxor   %xmm9,%xmm8,%xmm8
2309         xorq    %r9,%r15
2310         addq    %r12,%rdx
2311         rorq    $14,%r13
2312         andq    %r15,%rdi
2313 .byte   143,104,120,195,221,3
2314         xorq    %r8,%r14
2315         addq    %r13,%rdx
2316         vpxor   %xmm10,%xmm8,%xmm8
2317         xorq    %r9,%rdi
2318         rorq    $28,%r14
2319         vpsrlq  $6,%xmm5,%xmm10
2320         addq    %rdx,%r11
2321         addq    %rdi,%rdx
2322         vpaddq  %xmm8,%xmm6,%xmm6
2323         movq    %r11,%r13
2324         addq    %rdx,%r14
2325 .byte   143,72,120,195,203,42
2326         rorq    $23,%r13
2327         movq    %r14,%rdx
2328         vpxor   %xmm10,%xmm11,%xmm11
2329         movq    %rax,%r12
2330         rorq    $5,%r14
2331         xorq    %r11,%r13
2332         xorq    %rbx,%r12
2333         vpxor   %xmm9,%xmm11,%xmm11
2334         rorq    $4,%r13
2335         xorq    %rdx,%r14
2336         andq    %r11,%r12
2337         xorq    %r11,%r13
2338         vpaddq  %xmm11,%xmm6,%xmm6
2339         addq    104(%rsp),%rcx
2340         movq    %rdx,%rdi
2341         xorq    %rbx,%r12
2342         rorq    $6,%r14
2343         vpaddq  64(%rbp),%xmm6,%xmm10
2344         xorq    %r8,%rdi
2345         addq    %r12,%rcx
2346         rorq    $14,%r13
2347         andq    %rdi,%r15
2348         xorq    %rdx,%r14
2349         addq    %r13,%rcx
2350         xorq    %r8,%r15
2351         rorq    $28,%r14
2352         addq    %rcx,%r10
2353         addq    %r15,%rcx
2354         movq    %r10,%r13
2355         addq    %rcx,%r14
2356         vmovdqa %xmm10,96(%rsp)
2357         vpalignr        $8,%xmm7,%xmm0,%xmm8
2358         rorq    $23,%r13
2359         movq    %r14,%rcx
2360         vpalignr        $8,%xmm3,%xmm4,%xmm11
2361         movq    %r11,%r12
2362         rorq    $5,%r14
2363 .byte   143,72,120,195,200,56
2364         xorq    %r10,%r13
2365         xorq    %rax,%r12
2366         vpsrlq  $7,%xmm8,%xmm8
2367         rorq    $4,%r13
2368         xorq    %rcx,%r14
2369         vpaddq  %xmm11,%xmm7,%xmm7
2370         andq    %r10,%r12
2371         xorq    %r10,%r13
2372         addq    112(%rsp),%rbx
2373         movq    %rcx,%r15
2374 .byte   143,72,120,195,209,7
2375         xorq    %rax,%r12
2376         rorq    $6,%r14
2377         vpxor   %xmm9,%xmm8,%xmm8
2378         xorq    %rdx,%r15
2379         addq    %r12,%rbx
2380         rorq    $14,%r13
2381         andq    %r15,%rdi
2382 .byte   143,104,120,195,222,3
2383         xorq    %rcx,%r14
2384         addq    %r13,%rbx
2385         vpxor   %xmm10,%xmm8,%xmm8
2386         xorq    %rdx,%rdi
2387         rorq    $28,%r14
2388         vpsrlq  $6,%xmm6,%xmm10
2389         addq    %rbx,%r9
2390         addq    %rdi,%rbx
2391         vpaddq  %xmm8,%xmm7,%xmm7
2392         movq    %r9,%r13
2393         addq    %rbx,%r14
2394 .byte   143,72,120,195,203,42
2395         rorq    $23,%r13
2396         movq    %r14,%rbx
2397         vpxor   %xmm10,%xmm11,%xmm11
2398         movq    %r10,%r12
2399         rorq    $5,%r14
2400         xorq    %r9,%r13
2401         xorq    %r11,%r12
2402         vpxor   %xmm9,%xmm11,%xmm11
2403         rorq    $4,%r13
2404         xorq    %rbx,%r14
2405         andq    %r9,%r12
2406         xorq    %r9,%r13
2407         vpaddq  %xmm11,%xmm7,%xmm7
2408         addq    120(%rsp),%rax
2409         movq    %rbx,%rdi
2410         xorq    %r11,%r12
2411         rorq    $6,%r14
2412         vpaddq  96(%rbp),%xmm7,%xmm10
2413         xorq    %rcx,%rdi
2414         addq    %r12,%rax
2415         rorq    $14,%r13
2416         andq    %rdi,%r15
2417         xorq    %rbx,%r14
2418         addq    %r13,%rax
2419         xorq    %rcx,%r15
2420         rorq    $28,%r14
2421         addq    %rax,%r8
2422         addq    %r15,%rax
2423         movq    %r8,%r13
2424         addq    %rax,%r14
2425         vmovdqa %xmm10,112(%rsp)
2426         cmpb    $0,135(%rbp)
2427         jne     .Lxop_00_47
2428         rorq    $23,%r13
2429         movq    %r14,%rax
2430         movq    %r9,%r12
2431         rorq    $5,%r14
2432         xorq    %r8,%r13
2433         xorq    %r10,%r12
2434         rorq    $4,%r13
2435         xorq    %rax,%r14
2436         andq    %r8,%r12
2437         xorq    %r8,%r13
2438         addq    0(%rsp),%r11
2439         movq    %rax,%r15
2440         xorq    %r10,%r12
2441         rorq    $6,%r14
2442         xorq    %rbx,%r15
2443         addq    %r12,%r11
2444         rorq    $14,%r13
2445         andq    %r15,%rdi
2446         xorq    %rax,%r14
2447         addq    %r13,%r11
2448         xorq    %rbx,%rdi
2449         rorq    $28,%r14
2450         addq    %r11,%rdx
2451         addq    %rdi,%r11
2452         movq    %rdx,%r13
2453         addq    %r11,%r14
2454         rorq    $23,%r13
2455         movq    %r14,%r11
2456         movq    %r8,%r12
2457         rorq    $5,%r14
2458         xorq    %rdx,%r13
2459         xorq    %r9,%r12
2460         rorq    $4,%r13
2461         xorq    %r11,%r14
2462         andq    %rdx,%r12
2463         xorq    %rdx,%r13
2464         addq    8(%rsp),%r10
2465         movq    %r11,%rdi
2466         xorq    %r9,%r12
2467         rorq    $6,%r14
2468         xorq    %rax,%rdi
2469         addq    %r12,%r10
2470         rorq    $14,%r13
2471         andq    %rdi,%r15
2472         xorq    %r11,%r14
2473         addq    %r13,%r10
2474         xorq    %rax,%r15
2475         rorq    $28,%r14
2476         addq    %r10,%rcx
2477         addq    %r15,%r10
2478         movq    %rcx,%r13
2479         addq    %r10,%r14
2480         rorq    $23,%r13
2481         movq    %r14,%r10
2482         movq    %rdx,%r12
2483         rorq    $5,%r14
2484         xorq    %rcx,%r13
2485         xorq    %r8,%r12
2486         rorq    $4,%r13
2487         xorq    %r10,%r14
2488         andq    %rcx,%r12
2489         xorq    %rcx,%r13
2490         addq    16(%rsp),%r9
2491         movq    %r10,%r15
2492         xorq    %r8,%r12
2493         rorq    $6,%r14
2494         xorq    %r11,%r15
2495         addq    %r12,%r9
2496         rorq    $14,%r13
2497         andq    %r15,%rdi
2498         xorq    %r10,%r14
2499         addq    %r13,%r9
2500         xorq    %r11,%rdi
2501         rorq    $28,%r14
2502         addq    %r9,%rbx
2503         addq    %rdi,%r9
2504         movq    %rbx,%r13
2505         addq    %r9,%r14
2506         rorq    $23,%r13
2507         movq    %r14,%r9
2508         movq    %rcx,%r12
2509         rorq    $5,%r14
2510         xorq    %rbx,%r13
2511         xorq    %rdx,%r12
2512         rorq    $4,%r13
2513         xorq    %r9,%r14
2514         andq    %rbx,%r12
2515         xorq    %rbx,%r13
2516         addq    24(%rsp),%r8
2517         movq    %r9,%rdi
2518         xorq    %rdx,%r12
2519         rorq    $6,%r14
2520         xorq    %r10,%rdi
2521         addq    %r12,%r8
2522         rorq    $14,%r13
2523         andq    %rdi,%r15
2524         xorq    %r9,%r14
2525         addq    %r13,%r8
2526         xorq    %r10,%r15
2527         rorq    $28,%r14
2528         addq    %r8,%rax
2529         addq    %r15,%r8
2530         movq    %rax,%r13
2531         addq    %r8,%r14
2532         rorq    $23,%r13
2533         movq    %r14,%r8
2534         movq    %rbx,%r12
2535         rorq    $5,%r14
2536         xorq    %rax,%r13
2537         xorq    %rcx,%r12
2538         rorq    $4,%r13
2539         xorq    %r8,%r14
2540         andq    %rax,%r12
2541         xorq    %rax,%r13
2542         addq    32(%rsp),%rdx
2543         movq    %r8,%r15
2544         xorq    %rcx,%r12
2545         rorq    $6,%r14
2546         xorq    %r9,%r15
2547         addq    %r12,%rdx
2548         rorq    $14,%r13
2549         andq    %r15,%rdi
2550         xorq    %r8,%r14
2551         addq    %r13,%rdx
2552         xorq    %r9,%rdi
2553         rorq    $28,%r14
2554         addq    %rdx,%r11
2555         addq    %rdi,%rdx
2556         movq    %r11,%r13
2557         addq    %rdx,%r14
2558         rorq    $23,%r13
2559         movq    %r14,%rdx
2560         movq    %rax,%r12
2561         rorq    $5,%r14
2562         xorq    %r11,%r13
2563         xorq    %rbx,%r12
2564         rorq    $4,%r13
2565         xorq    %rdx,%r14
2566         andq    %r11,%r12
2567         xorq    %r11,%r13
2568         addq    40(%rsp),%rcx
2569         movq    %rdx,%rdi
2570         xorq    %rbx,%r12
2571         rorq    $6,%r14
2572         xorq    %r8,%rdi
2573         addq    %r12,%rcx
2574         rorq    $14,%r13
2575         andq    %rdi,%r15
2576         xorq    %rdx,%r14
2577         addq    %r13,%rcx
2578         xorq    %r8,%r15
2579         rorq    $28,%r14
2580         addq    %rcx,%r10
2581         addq    %r15,%rcx
2582         movq    %r10,%r13
2583         addq    %rcx,%r14
2584         rorq    $23,%r13
2585         movq    %r14,%rcx
2586         movq    %r11,%r12
2587         rorq    $5,%r14
2588         xorq    %r10,%r13
2589         xorq    %rax,%r12
2590         rorq    $4,%r13
2591         xorq    %rcx,%r14
2592         andq    %r10,%r12
2593         xorq    %r10,%r13
2594         addq    48(%rsp),%rbx
2595         movq    %rcx,%r15
2596         xorq    %rax,%r12
2597         rorq    $6,%r14
2598         xorq    %rdx,%r15
2599         addq    %r12,%rbx
2600         rorq    $14,%r13
2601         andq    %r15,%rdi
2602         xorq    %rcx,%r14
2603         addq    %r13,%rbx
2604         xorq    %rdx,%rdi
2605         rorq    $28,%r14
2606         addq    %rbx,%r9
2607         addq    %rdi,%rbx
2608         movq    %r9,%r13
2609         addq    %rbx,%r14
2610         rorq    $23,%r13
2611         movq    %r14,%rbx
2612         movq    %r10,%r12
2613         rorq    $5,%r14
2614         xorq    %r9,%r13
2615         xorq    %r11,%r12
2616         rorq    $4,%r13
2617         xorq    %rbx,%r14
2618         andq    %r9,%r12
2619         xorq    %r9,%r13
2620         addq    56(%rsp),%rax
2621         movq    %rbx,%rdi
2622         xorq    %r11,%r12
2623         rorq    $6,%r14
2624         xorq    %rcx,%rdi
2625         addq    %r12,%rax
2626         rorq    $14,%r13
2627         andq    %rdi,%r15
2628         xorq    %rbx,%r14
2629         addq    %r13,%rax
2630         xorq    %rcx,%r15
2631         rorq    $28,%r14
2632         addq    %rax,%r8
2633         addq    %r15,%rax
2634         movq    %r8,%r13
2635         addq    %rax,%r14
2636         rorq    $23,%r13
2637         movq    %r14,%rax
2638         movq    %r9,%r12
2639         rorq    $5,%r14
2640         xorq    %r8,%r13
2641         xorq    %r10,%r12
2642         rorq    $4,%r13
2643         xorq    %rax,%r14
2644         andq    %r8,%r12
2645         xorq    %r8,%r13
2646         addq    64(%rsp),%r11
2647         movq    %rax,%r15
2648         xorq    %r10,%r12
2649         rorq    $6,%r14
2650         xorq    %rbx,%r15
2651         addq    %r12,%r11
2652         rorq    $14,%r13
2653         andq    %r15,%rdi
2654         xorq    %rax,%r14
2655         addq    %r13,%r11
2656         xorq    %rbx,%rdi
2657         rorq    $28,%r14
2658         addq    %r11,%rdx
2659         addq    %rdi,%r11
2660         movq    %rdx,%r13
2661         addq    %r11,%r14
2662         rorq    $23,%r13
2663         movq    %r14,%r11
2664         movq    %r8,%r12
2665         rorq    $5,%r14
2666         xorq    %rdx,%r13
2667         xorq    %r9,%r12
2668         rorq    $4,%r13
2669         xorq    %r11,%r14
2670         andq    %rdx,%r12
2671         xorq    %rdx,%r13
2672         addq    72(%rsp),%r10
2673         movq    %r11,%rdi
2674         xorq    %r9,%r12
2675         rorq    $6,%r14
2676         xorq    %rax,%rdi
2677         addq    %r12,%r10
2678         rorq    $14,%r13
2679         andq    %rdi,%r15
2680         xorq    %r11,%r14
2681         addq    %r13,%r10
2682         xorq    %rax,%r15
2683         rorq    $28,%r14
2684         addq    %r10,%rcx
2685         addq    %r15,%r10
2686         movq    %rcx,%r13
2687         addq    %r10,%r14
2688         rorq    $23,%r13
2689         movq    %r14,%r10
2690         movq    %rdx,%r12
2691         rorq    $5,%r14
2692         xorq    %rcx,%r13
2693         xorq    %r8,%r12
2694         rorq    $4,%r13
2695         xorq    %r10,%r14
2696         andq    %rcx,%r12
2697         xorq    %rcx,%r13
2698         addq    80(%rsp),%r9
2699         movq    %r10,%r15
2700         xorq    %r8,%r12
2701         rorq    $6,%r14
2702         xorq    %r11,%r15
2703         addq    %r12,%r9
2704         rorq    $14,%r13
2705         andq    %r15,%rdi
2706         xorq    %r10,%r14
2707         addq    %r13,%r9
2708         xorq    %r11,%rdi
2709         rorq    $28,%r14
2710         addq    %r9,%rbx
2711         addq    %rdi,%r9
2712         movq    %rbx,%r13
2713         addq    %r9,%r14
2714         rorq    $23,%r13
2715         movq    %r14,%r9
2716         movq    %rcx,%r12
2717         rorq    $5,%r14
2718         xorq    %rbx,%r13
2719         xorq    %rdx,%r12
2720         rorq    $4,%r13
2721         xorq    %r9,%r14
2722         andq    %rbx,%r12
2723         xorq    %rbx,%r13
2724         addq    88(%rsp),%r8
2725         movq    %r9,%rdi
2726         xorq    %rdx,%r12
2727         rorq    $6,%r14
2728         xorq    %r10,%rdi
2729         addq    %r12,%r8
2730         rorq    $14,%r13
2731         andq    %rdi,%r15
2732         xorq    %r9,%r14
2733         addq    %r13,%r8
2734         xorq    %r10,%r15
2735         rorq    $28,%r14
2736         addq    %r8,%rax
2737         addq    %r15,%r8
2738         movq    %rax,%r13
2739         addq    %r8,%r14
2740         rorq    $23,%r13
2741         movq    %r14,%r8
2742         movq    %rbx,%r12
2743         rorq    $5,%r14
2744         xorq    %rax,%r13
2745         xorq    %rcx,%r12
2746         rorq    $4,%r13
2747         xorq    %r8,%r14
2748         andq    %rax,%r12
2749         xorq    %rax,%r13
2750         addq    96(%rsp),%rdx
2751         movq    %r8,%r15
2752         xorq    %rcx,%r12
2753         rorq    $6,%r14
2754         xorq    %r9,%r15
2755         addq    %r12,%rdx
2756         rorq    $14,%r13
2757         andq    %r15,%rdi
2758         xorq    %r8,%r14
2759         addq    %r13,%rdx
2760         xorq    %r9,%rdi
2761         rorq    $28,%r14
2762         addq    %rdx,%r11
2763         addq    %rdi,%rdx
2764         movq    %r11,%r13
2765         addq    %rdx,%r14
2766         rorq    $23,%r13
2767         movq    %r14,%rdx
2768         movq    %rax,%r12
2769         rorq    $5,%r14
2770         xorq    %r11,%r13
2771         xorq    %rbx,%r12
2772         rorq    $4,%r13
2773         xorq    %rdx,%r14
2774         andq    %r11,%r12
2775         xorq    %r11,%r13
2776         addq    104(%rsp),%rcx
2777         movq    %rdx,%rdi
2778         xorq    %rbx,%r12
2779         rorq    $6,%r14
2780         xorq    %r8,%rdi
2781         addq    %r12,%rcx
2782         rorq    $14,%r13
2783         andq    %rdi,%r15
2784         xorq    %rdx,%r14
2785         addq    %r13,%rcx
2786         xorq    %r8,%r15
2787         rorq    $28,%r14
2788         addq    %rcx,%r10
2789         addq    %r15,%rcx
2790         movq    %r10,%r13
2791         addq    %rcx,%r14
2792         rorq    $23,%r13
2793         movq    %r14,%rcx
2794         movq    %r11,%r12
2795         rorq    $5,%r14
2796         xorq    %r10,%r13
2797         xorq    %rax,%r12
2798         rorq    $4,%r13
2799         xorq    %rcx,%r14
2800         andq    %r10,%r12
2801         xorq    %r10,%r13
2802         addq    112(%rsp),%rbx
2803         movq    %rcx,%r15
2804         xorq    %rax,%r12
2805         rorq    $6,%r14
2806         xorq    %rdx,%r15
2807         addq    %r12,%rbx
2808         rorq    $14,%r13
2809         andq    %r15,%rdi
2810         xorq    %rcx,%r14
2811         addq    %r13,%rbx
2812         xorq    %rdx,%rdi
2813         rorq    $28,%r14
2814         addq    %rbx,%r9
2815         addq    %rdi,%rbx
2816         movq    %r9,%r13
2817         addq    %rbx,%r14
2818         rorq    $23,%r13
2819         movq    %r14,%rbx
2820         movq    %r10,%r12
2821         rorq    $5,%r14
2822         xorq    %r9,%r13
2823         xorq    %r11,%r12
2824         rorq    $4,%r13
2825         xorq    %rbx,%r14
2826         andq    %r9,%r12
2827         xorq    %r9,%r13
2828         addq    120(%rsp),%rax
2829         movq    %rbx,%rdi
2830         xorq    %r11,%r12
2831         rorq    $6,%r14
2832         xorq    %rcx,%rdi
2833         addq    %r12,%rax
2834         rorq    $14,%r13
2835         andq    %rdi,%r15
2836         xorq    %rbx,%r14
2837         addq    %r13,%rax
2838         xorq    %rcx,%r15
2839         rorq    $28,%r14
2840         addq    %rax,%r8
2841         addq    %r15,%rax
2842         movq    %r8,%r13
2843         addq    %rax,%r14
2844         movq    128+0(%rsp),%rdi
2845         movq    %r14,%rax
2846
2847         addq    0(%rdi),%rax
2848         leaq    128(%rsi),%rsi
2849         addq    8(%rdi),%rbx
2850         addq    16(%rdi),%rcx
2851         addq    24(%rdi),%rdx
2852         addq    32(%rdi),%r8
2853         addq    40(%rdi),%r9
2854         addq    48(%rdi),%r10
2855         addq    56(%rdi),%r11
2856
2857         cmpq    128+16(%rsp),%rsi
2858
2859         movq    %rax,0(%rdi)
2860         movq    %rbx,8(%rdi)
2861         movq    %rcx,16(%rdi)
2862         movq    %rdx,24(%rdi)
2863         movq    %r8,32(%rdi)
2864         movq    %r9,40(%rdi)
2865         movq    %r10,48(%rdi)
2866         movq    %r11,56(%rdi)
2867         jb      .Lloop_xop
2868
2869         movq    128+24(%rsp),%rsi
2870         vzeroupper
2871         movq    (%rsi),%r15
2872         movq    8(%rsi),%r14
2873         movq    16(%rsi),%r13
2874         movq    24(%rsi),%r12
2875         movq    32(%rsi),%rbp
2876         movq    40(%rsi),%rbx
2877         leaq    48(%rsi),%rsp
2878 .Lepilogue_xop:
2879         .byte   0xf3,0xc3
2880 .size   sha512_block_data_order_xop,.-sha512_block_data_order_xop
2881 .type   sha512_block_data_order_avx,@function
2882 .align  64
2883 sha512_block_data_order_avx:
2884 .Lavx_shortcut:
2885         pushq   %rbx
2886         pushq   %rbp
2887         pushq   %r12
2888         pushq   %r13
2889         pushq   %r14
2890         pushq   %r15
2891         movq    %rsp,%r11
2892         shlq    $4,%rdx
2893         subq    $160,%rsp
2894         leaq    (%rsi,%rdx,8),%rdx
2895         andq    $-64,%rsp
2896         movq    %rdi,128+0(%rsp)
2897         movq    %rsi,128+8(%rsp)
2898         movq    %rdx,128+16(%rsp)
2899         movq    %r11,128+24(%rsp)
2900 .Lprologue_avx:
2901
2902         vzeroupper
2903         movq    0(%rdi),%rax
2904         movq    8(%rdi),%rbx
2905         movq    16(%rdi),%rcx
2906         movq    24(%rdi),%rdx
2907         movq    32(%rdi),%r8
2908         movq    40(%rdi),%r9
2909         movq    48(%rdi),%r10
2910         movq    56(%rdi),%r11
2911         jmp     .Lloop_avx
2912 .align  16
2913 .Lloop_avx:
2914         vmovdqa K512+1280(%rip),%xmm11
2915         vmovdqu 0(%rsi),%xmm0
2916         leaq    K512+128(%rip),%rbp
2917         vmovdqu 16(%rsi),%xmm1
2918         vmovdqu 32(%rsi),%xmm2
2919         vpshufb %xmm11,%xmm0,%xmm0
2920         vmovdqu 48(%rsi),%xmm3
2921         vpshufb %xmm11,%xmm1,%xmm1
2922         vmovdqu 64(%rsi),%xmm4
2923         vpshufb %xmm11,%xmm2,%xmm2
2924         vmovdqu 80(%rsi),%xmm5
2925         vpshufb %xmm11,%xmm3,%xmm3
2926         vmovdqu 96(%rsi),%xmm6
2927         vpshufb %xmm11,%xmm4,%xmm4
2928         vmovdqu 112(%rsi),%xmm7
2929         vpshufb %xmm11,%xmm5,%xmm5
2930         vpaddq  -128(%rbp),%xmm0,%xmm8
2931         vpshufb %xmm11,%xmm6,%xmm6
2932         vpaddq  -96(%rbp),%xmm1,%xmm9
2933         vpshufb %xmm11,%xmm7,%xmm7
2934         vpaddq  -64(%rbp),%xmm2,%xmm10
2935         vpaddq  -32(%rbp),%xmm3,%xmm11
2936         vmovdqa %xmm8,0(%rsp)
2937         vpaddq  0(%rbp),%xmm4,%xmm8
2938         vmovdqa %xmm9,16(%rsp)
2939         vpaddq  32(%rbp),%xmm5,%xmm9
2940         vmovdqa %xmm10,32(%rsp)
2941         vpaddq  64(%rbp),%xmm6,%xmm10
2942         vmovdqa %xmm11,48(%rsp)
2943         vpaddq  96(%rbp),%xmm7,%xmm11
2944         vmovdqa %xmm8,64(%rsp)
2945         movq    %rax,%r14
2946         vmovdqa %xmm9,80(%rsp)
2947         movq    %rbx,%rdi
2948         vmovdqa %xmm10,96(%rsp)
2949         xorq    %rcx,%rdi
2950         vmovdqa %xmm11,112(%rsp)
2951         movq    %r8,%r13
2952         jmp     .Lavx_00_47
2953
2954 .align  16
2955 .Lavx_00_47:
2956         addq    $256,%rbp
2957         vpalignr        $8,%xmm0,%xmm1,%xmm8
2958         shrdq   $23,%r13,%r13
2959         movq    %r14,%rax
2960         vpalignr        $8,%xmm4,%xmm5,%xmm11
2961         movq    %r9,%r12
2962         shrdq   $5,%r14,%r14
2963         vpsrlq  $1,%xmm8,%xmm10
2964         xorq    %r8,%r13
2965         xorq    %r10,%r12
2966         vpaddq  %xmm11,%xmm0,%xmm0
2967         shrdq   $4,%r13,%r13
2968         xorq    %rax,%r14
2969         vpsrlq  $7,%xmm8,%xmm11
2970         andq    %r8,%r12
2971         xorq    %r8,%r13
2972         vpsllq  $56,%xmm8,%xmm9
2973         addq    0(%rsp),%r11
2974         movq    %rax,%r15
2975         vpxor   %xmm10,%xmm11,%xmm8
2976         xorq    %r10,%r12
2977         shrdq   $6,%r14,%r14
2978         vpsrlq  $7,%xmm10,%xmm10
2979         xorq    %rbx,%r15
2980         addq    %r12,%r11
2981         vpxor   %xmm9,%xmm8,%xmm8
2982         shrdq   $14,%r13,%r13
2983         andq    %r15,%rdi
2984         vpsllq  $7,%xmm9,%xmm9
2985         xorq    %rax,%r14
2986         addq    %r13,%r11
2987         vpxor   %xmm10,%xmm8,%xmm8
2988         xorq    %rbx,%rdi
2989         shrdq   $28,%r14,%r14
2990         vpsrlq  $6,%xmm7,%xmm11
2991         addq    %r11,%rdx
2992         addq    %rdi,%r11
2993         vpxor   %xmm9,%xmm8,%xmm8
2994         movq    %rdx,%r13
2995         addq    %r11,%r14
2996         vpsllq  $3,%xmm7,%xmm10
2997         shrdq   $23,%r13,%r13
2998         movq    %r14,%r11
2999         vpaddq  %xmm8,%xmm0,%xmm0
3000         movq    %r8,%r12
3001         shrdq   $5,%r14,%r14
3002         vpsrlq  $19,%xmm7,%xmm9
3003         xorq    %rdx,%r13
3004         xorq    %r9,%r12
3005         vpxor   %xmm10,%xmm11,%xmm11
3006         shrdq   $4,%r13,%r13
3007         xorq    %r11,%r14
3008         vpsllq  $42,%xmm10,%xmm10
3009         andq    %rdx,%r12
3010         xorq    %rdx,%r13
3011         vpxor   %xmm9,%xmm11,%xmm11
3012         addq    8(%rsp),%r10
3013         movq    %r11,%rdi
3014         vpsrlq  $42,%xmm9,%xmm9
3015         xorq    %r9,%r12
3016         shrdq   $6,%r14,%r14
3017         vpxor   %xmm10,%xmm11,%xmm11
3018         xorq    %rax,%rdi
3019         addq    %r12,%r10
3020         vpxor   %xmm9,%xmm11,%xmm11
3021         shrdq   $14,%r13,%r13
3022         andq    %rdi,%r15
3023         vpaddq  %xmm11,%xmm0,%xmm0
3024         xorq    %r11,%r14
3025         addq    %r13,%r10
3026         vpaddq  -128(%rbp),%xmm0,%xmm10
3027         xorq    %rax,%r15
3028         shrdq   $28,%r14,%r14
3029         addq    %r10,%rcx
3030         addq    %r15,%r10
3031         movq    %rcx,%r13
3032         addq    %r10,%r14
3033         vmovdqa %xmm10,0(%rsp)
3034         vpalignr        $8,%xmm1,%xmm2,%xmm8
3035         shrdq   $23,%r13,%r13
3036         movq    %r14,%r10
3037         vpalignr        $8,%xmm5,%xmm6,%xmm11
3038         movq    %rdx,%r12
3039         shrdq   $5,%r14,%r14
3040         vpsrlq  $1,%xmm8,%xmm10
3041         xorq    %rcx,%r13
3042         xorq    %r8,%r12
3043         vpaddq  %xmm11,%xmm1,%xmm1
3044         shrdq   $4,%r13,%r13
3045         xorq    %r10,%r14
3046         vpsrlq  $7,%xmm8,%xmm11
3047         andq    %rcx,%r12
3048         xorq    %rcx,%r13
3049         vpsllq  $56,%xmm8,%xmm9
3050         addq    16(%rsp),%r9
3051         movq    %r10,%r15
3052         vpxor   %xmm10,%xmm11,%xmm8
3053         xorq    %r8,%r12
3054         shrdq   $6,%r14,%r14
3055         vpsrlq  $7,%xmm10,%xmm10
3056         xorq    %r11,%r15
3057         addq    %r12,%r9
3058         vpxor   %xmm9,%xmm8,%xmm8
3059         shrdq   $14,%r13,%r13
3060         andq    %r15,%rdi
3061         vpsllq  $7,%xmm9,%xmm9
3062         xorq    %r10,%r14
3063         addq    %r13,%r9
3064         vpxor   %xmm10,%xmm8,%xmm8
3065         xorq    %r11,%rdi
3066         shrdq   $28,%r14,%r14
3067         vpsrlq  $6,%xmm0,%xmm11
3068         addq    %r9,%rbx
3069         addq    %rdi,%r9
3070         vpxor   %xmm9,%xmm8,%xmm8
3071         movq    %rbx,%r13
3072         addq    %r9,%r14
3073         vpsllq  $3,%xmm0,%xmm10
3074         shrdq   $23,%r13,%r13
3075         movq    %r14,%r9
3076         vpaddq  %xmm8,%xmm1,%xmm1
3077         movq    %rcx,%r12
3078         shrdq   $5,%r14,%r14
3079         vpsrlq  $19,%xmm0,%xmm9
3080         xorq    %rbx,%r13
3081         xorq    %rdx,%r12
3082         vpxor   %xmm10,%xmm11,%xmm11
3083         shrdq   $4,%r13,%r13
3084         xorq    %r9,%r14
3085         vpsllq  $42,%xmm10,%xmm10
3086         andq    %rbx,%r12
3087         xorq    %rbx,%r13
3088         vpxor   %xmm9,%xmm11,%xmm11
3089         addq    24(%rsp),%r8
3090         movq    %r9,%rdi
3091         vpsrlq  $42,%xmm9,%xmm9
3092         xorq    %rdx,%r12
3093         shrdq   $6,%r14,%r14
3094         vpxor   %xmm10,%xmm11,%xmm11
3095         xorq    %r10,%rdi
3096         addq    %r12,%r8
3097         vpxor   %xmm9,%xmm11,%xmm11
3098         shrdq   $14,%r13,%r13
3099         andq    %rdi,%r15
3100         vpaddq  %xmm11,%xmm1,%xmm1
3101         xorq    %r9,%r14
3102         addq    %r13,%r8
3103         vpaddq  -96(%rbp),%xmm1,%xmm10
3104         xorq    %r10,%r15
3105         shrdq   $28,%r14,%r14
3106         addq    %r8,%rax
3107         addq    %r15,%r8
3108         movq    %rax,%r13
3109         addq    %r8,%r14
3110         vmovdqa %xmm10,16(%rsp)
3111         vpalignr        $8,%xmm2,%xmm3,%xmm8
3112         shrdq   $23,%r13,%r13
3113         movq    %r14,%r8
3114         vpalignr        $8,%xmm6,%xmm7,%xmm11
3115         movq    %rbx,%r12
3116         shrdq   $5,%r14,%r14
3117         vpsrlq  $1,%xmm8,%xmm10
3118         xorq    %rax,%r13
3119         xorq    %rcx,%r12
3120         vpaddq  %xmm11,%xmm2,%xmm2
3121         shrdq   $4,%r13,%r13
3122         xorq    %r8,%r14
3123         vpsrlq  $7,%xmm8,%xmm11
3124         andq    %rax,%r12
3125         xorq    %rax,%r13
3126         vpsllq  $56,%xmm8,%xmm9
3127         addq    32(%rsp),%rdx
3128         movq    %r8,%r15
3129         vpxor   %xmm10,%xmm11,%xmm8
3130         xorq    %rcx,%r12
3131         shrdq   $6,%r14,%r14
3132         vpsrlq  $7,%xmm10,%xmm10
3133         xorq    %r9,%r15
3134         addq    %r12,%rdx
3135         vpxor   %xmm9,%xmm8,%xmm8
3136         shrdq   $14,%r13,%r13
3137         andq    %r15,%rdi
3138         vpsllq  $7,%xmm9,%xmm9
3139         xorq    %r8,%r14
3140         addq    %r13,%rdx
3141         vpxor   %xmm10,%xmm8,%xmm8
3142         xorq    %r9,%rdi
3143         shrdq   $28,%r14,%r14
3144         vpsrlq  $6,%xmm1,%xmm11
3145         addq    %rdx,%r11
3146         addq    %rdi,%rdx
3147         vpxor   %xmm9,%xmm8,%xmm8
3148         movq    %r11,%r13
3149         addq    %rdx,%r14
3150         vpsllq  $3,%xmm1,%xmm10
3151         shrdq   $23,%r13,%r13
3152         movq    %r14,%rdx
3153         vpaddq  %xmm8,%xmm2,%xmm2
3154         movq    %rax,%r12
3155         shrdq   $5,%r14,%r14
3156         vpsrlq  $19,%xmm1,%xmm9
3157         xorq    %r11,%r13
3158         xorq    %rbx,%r12
3159         vpxor   %xmm10,%xmm11,%xmm11
3160         shrdq   $4,%r13,%r13
3161         xorq    %rdx,%r14
3162         vpsllq  $42,%xmm10,%xmm10
3163         andq    %r11,%r12
3164         xorq    %r11,%r13
3165         vpxor   %xmm9,%xmm11,%xmm11
3166         addq    40(%rsp),%rcx
3167         movq    %rdx,%rdi
3168         vpsrlq  $42,%xmm9,%xmm9
3169         xorq    %rbx,%r12
3170         shrdq   $6,%r14,%r14
3171         vpxor   %xmm10,%xmm11,%xmm11
3172         xorq    %r8,%rdi
3173         addq    %r12,%rcx
3174         vpxor   %xmm9,%xmm11,%xmm11
3175         shrdq   $14,%r13,%r13
3176         andq    %rdi,%r15
3177         vpaddq  %xmm11,%xmm2,%xmm2
3178         xorq    %rdx,%r14
3179         addq    %r13,%rcx
3180         vpaddq  -64(%rbp),%xmm2,%xmm10
3181         xorq    %r8,%r15
3182         shrdq   $28,%r14,%r14
3183         addq    %rcx,%r10
3184         addq    %r15,%rcx
3185         movq    %r10,%r13
3186         addq    %rcx,%r14
3187         vmovdqa %xmm10,32(%rsp)
3188         vpalignr        $8,%xmm3,%xmm4,%xmm8
3189         shrdq   $23,%r13,%r13
3190         movq    %r14,%rcx
3191         vpalignr        $8,%xmm7,%xmm0,%xmm11
3192         movq    %r11,%r12
3193         shrdq   $5,%r14,%r14
3194         vpsrlq  $1,%xmm8,%xmm10
3195         xorq    %r10,%r13
3196         xorq    %rax,%r12
3197         vpaddq  %xmm11,%xmm3,%xmm3
3198         shrdq   $4,%r13,%r13
3199         xorq    %rcx,%r14
3200         vpsrlq  $7,%xmm8,%xmm11
3201         andq    %r10,%r12
3202         xorq    %r10,%r13
3203         vpsllq  $56,%xmm8,%xmm9
3204         addq    48(%rsp),%rbx
3205         movq    %rcx,%r15
3206         vpxor   %xmm10,%xmm11,%xmm8
3207         xorq    %rax,%r12
3208         shrdq   $6,%r14,%r14
3209         vpsrlq  $7,%xmm10,%xmm10
3210         xorq    %rdx,%r15
3211         addq    %r12,%rbx
3212         vpxor   %xmm9,%xmm8,%xmm8
3213         shrdq   $14,%r13,%r13
3214         andq    %r15,%rdi
3215         vpsllq  $7,%xmm9,%xmm9
3216         xorq    %rcx,%r14
3217         addq    %r13,%rbx
3218         vpxor   %xmm10,%xmm8,%xmm8
3219         xorq    %rdx,%rdi
3220         shrdq   $28,%r14,%r14
3221         vpsrlq  $6,%xmm2,%xmm11
3222         addq    %rbx,%r9
3223         addq    %rdi,%rbx
3224         vpxor   %xmm9,%xmm8,%xmm8
3225         movq    %r9,%r13
3226         addq    %rbx,%r14
3227         vpsllq  $3,%xmm2,%xmm10
3228         shrdq   $23,%r13,%r13
3229         movq    %r14,%rbx
3230         vpaddq  %xmm8,%xmm3,%xmm3
3231         movq    %r10,%r12
3232         shrdq   $5,%r14,%r14
3233         vpsrlq  $19,%xmm2,%xmm9
3234         xorq    %r9,%r13
3235         xorq    %r11,%r12
3236         vpxor   %xmm10,%xmm11,%xmm11
3237         shrdq   $4,%r13,%r13
3238         xorq    %rbx,%r14
3239         vpsllq  $42,%xmm10,%xmm10
3240         andq    %r9,%r12
3241         xorq    %r9,%r13
3242         vpxor   %xmm9,%xmm11,%xmm11
3243         addq    56(%rsp),%rax
3244         movq    %rbx,%rdi
3245         vpsrlq  $42,%xmm9,%xmm9
3246         xorq    %r11,%r12
3247         shrdq   $6,%r14,%r14
3248         vpxor   %xmm10,%xmm11,%xmm11
3249         xorq    %rcx,%rdi
3250         addq    %r12,%rax
3251         vpxor   %xmm9,%xmm11,%xmm11
3252         shrdq   $14,%r13,%r13
3253         andq    %rdi,%r15
3254         vpaddq  %xmm11,%xmm3,%xmm3
3255         xorq    %rbx,%r14
3256         addq    %r13,%rax
3257         vpaddq  -32(%rbp),%xmm3,%xmm10
3258         xorq    %rcx,%r15
3259         shrdq   $28,%r14,%r14
3260         addq    %rax,%r8
3261         addq    %r15,%rax
3262         movq    %r8,%r13
3263         addq    %rax,%r14
3264         vmovdqa %xmm10,48(%rsp)
3265         vpalignr        $8,%xmm4,%xmm5,%xmm8
3266         shrdq   $23,%r13,%r13
3267         movq    %r14,%rax
3268         vpalignr        $8,%xmm0,%xmm1,%xmm11
3269         movq    %r9,%r12
3270         shrdq   $5,%r14,%r14
3271         vpsrlq  $1,%xmm8,%xmm10
3272         xorq    %r8,%r13
3273         xorq    %r10,%r12
3274         vpaddq  %xmm11,%xmm4,%xmm4
3275         shrdq   $4,%r13,%r13
3276         xorq    %rax,%r14
3277         vpsrlq  $7,%xmm8,%xmm11
3278         andq    %r8,%r12
3279         xorq    %r8,%r13
3280         vpsllq  $56,%xmm8,%xmm9
3281         addq    64(%rsp),%r11
3282         movq    %rax,%r15
3283         vpxor   %xmm10,%xmm11,%xmm8
3284         xorq    %r10,%r12
3285         shrdq   $6,%r14,%r14
3286         vpsrlq  $7,%xmm10,%xmm10
3287         xorq    %rbx,%r15
3288         addq    %r12,%r11
3289         vpxor   %xmm9,%xmm8,%xmm8
3290         shrdq   $14,%r13,%r13
3291         andq    %r15,%rdi
3292         vpsllq  $7,%xmm9,%xmm9
3293         xorq    %rax,%r14
3294         addq    %r13,%r11
3295         vpxor   %xmm10,%xmm8,%xmm8
3296         xorq    %rbx,%rdi
3297         shrdq   $28,%r14,%r14
3298         vpsrlq  $6,%xmm3,%xmm11
3299         addq    %r11,%rdx
3300         addq    %rdi,%r11
3301         vpxor   %xmm9,%xmm8,%xmm8
3302         movq    %rdx,%r13
3303         addq    %r11,%r14
3304         vpsllq  $3,%xmm3,%xmm10
3305         shrdq   $23,%r13,%r13
3306         movq    %r14,%r11
3307         vpaddq  %xmm8,%xmm4,%xmm4
3308         movq    %r8,%r12
3309         shrdq   $5,%r14,%r14
3310         vpsrlq  $19,%xmm3,%xmm9
3311         xorq    %rdx,%r13
3312         xorq    %r9,%r12
3313         vpxor   %xmm10,%xmm11,%xmm11
3314         shrdq   $4,%r13,%r13
3315         xorq    %r11,%r14
3316         vpsllq  $42,%xmm10,%xmm10
3317         andq    %rdx,%r12
3318         xorq    %rdx,%r13
3319         vpxor   %xmm9,%xmm11,%xmm11
3320         addq    72(%rsp),%r10
3321         movq    %r11,%rdi
3322         vpsrlq  $42,%xmm9,%xmm9
3323         xorq    %r9,%r12
3324         shrdq   $6,%r14,%r14
3325         vpxor   %xmm10,%xmm11,%xmm11
3326         xorq    %rax,%rdi
3327         addq    %r12,%r10
3328         vpxor   %xmm9,%xmm11,%xmm11
3329         shrdq   $14,%r13,%r13
3330         andq    %rdi,%r15
3331         vpaddq  %xmm11,%xmm4,%xmm4
3332         xorq    %r11,%r14
3333         addq    %r13,%r10
3334         vpaddq  0(%rbp),%xmm4,%xmm10
3335         xorq    %rax,%r15
3336         shrdq   $28,%r14,%r14
3337         addq    %r10,%rcx
3338         addq    %r15,%r10
3339         movq    %rcx,%r13
3340         addq    %r10,%r14
3341         vmovdqa %xmm10,64(%rsp)
3342         vpalignr        $8,%xmm5,%xmm6,%xmm8
3343         shrdq   $23,%r13,%r13
3344         movq    %r14,%r10
3345         vpalignr        $8,%xmm1,%xmm2,%xmm11
3346         movq    %rdx,%r12
3347         shrdq   $5,%r14,%r14
3348         vpsrlq  $1,%xmm8,%xmm10
3349         xorq    %rcx,%r13
3350         xorq    %r8,%r12
3351         vpaddq  %xmm11,%xmm5,%xmm5
3352         shrdq   $4,%r13,%r13
3353         xorq    %r10,%r14
3354         vpsrlq  $7,%xmm8,%xmm11
3355         andq    %rcx,%r12
3356         xorq    %rcx,%r13
3357         vpsllq  $56,%xmm8,%xmm9
3358         addq    80(%rsp),%r9
3359         movq    %r10,%r15
3360         vpxor   %xmm10,%xmm11,%xmm8
3361         xorq    %r8,%r12
3362         shrdq   $6,%r14,%r14
3363         vpsrlq  $7,%xmm10,%xmm10
3364         xorq    %r11,%r15
3365         addq    %r12,%r9
3366         vpxor   %xmm9,%xmm8,%xmm8
3367         shrdq   $14,%r13,%r13
3368         andq    %r15,%rdi
3369         vpsllq  $7,%xmm9,%xmm9
3370         xorq    %r10,%r14
3371         addq    %r13,%r9
3372         vpxor   %xmm10,%xmm8,%xmm8
3373         xorq    %r11,%rdi
3374         shrdq   $28,%r14,%r14
3375         vpsrlq  $6,%xmm4,%xmm11
3376         addq    %r9,%rbx
3377         addq    %rdi,%r9
3378         vpxor   %xmm9,%xmm8,%xmm8
3379         movq    %rbx,%r13
3380         addq    %r9,%r14
3381         vpsllq  $3,%xmm4,%xmm10
3382         shrdq   $23,%r13,%r13
3383         movq    %r14,%r9
3384         vpaddq  %xmm8,%xmm5,%xmm5
3385         movq    %rcx,%r12
3386         shrdq   $5,%r14,%r14
3387         vpsrlq  $19,%xmm4,%xmm9
3388         xorq    %rbx,%r13
3389         xorq    %rdx,%r12
3390         vpxor   %xmm10,%xmm11,%xmm11
3391         shrdq   $4,%r13,%r13
3392         xorq    %r9,%r14
3393         vpsllq  $42,%xmm10,%xmm10
3394         andq    %rbx,%r12
3395         xorq    %rbx,%r13
3396         vpxor   %xmm9,%xmm11,%xmm11
3397         addq    88(%rsp),%r8
3398         movq    %r9,%rdi
3399         vpsrlq  $42,%xmm9,%xmm9
3400         xorq    %rdx,%r12
3401         shrdq   $6,%r14,%r14
3402         vpxor   %xmm10,%xmm11,%xmm11
3403         xorq    %r10,%rdi
3404         addq    %r12,%r8
3405         vpxor   %xmm9,%xmm11,%xmm11
3406         shrdq   $14,%r13,%r13
3407         andq    %rdi,%r15
3408         vpaddq  %xmm11,%xmm5,%xmm5
3409         xorq    %r9,%r14
3410         addq    %r13,%r8
3411         vpaddq  32(%rbp),%xmm5,%xmm10
3412         xorq    %r10,%r15
3413         shrdq   $28,%r14,%r14
3414         addq    %r8,%rax
3415         addq    %r15,%r8
3416         movq    %rax,%r13
3417         addq    %r8,%r14
3418         vmovdqa %xmm10,80(%rsp)
3419         vpalignr        $8,%xmm6,%xmm7,%xmm8
3420         shrdq   $23,%r13,%r13
3421         movq    %r14,%r8
3422         vpalignr        $8,%xmm2,%xmm3,%xmm11
3423         movq    %rbx,%r12
3424         shrdq   $5,%r14,%r14
3425         vpsrlq  $1,%xmm8,%xmm10
3426         xorq    %rax,%r13
3427         xorq    %rcx,%r12
3428         vpaddq  %xmm11,%xmm6,%xmm6
3429         shrdq   $4,%r13,%r13
3430         xorq    %r8,%r14
3431         vpsrlq  $7,%xmm8,%xmm11
3432         andq    %rax,%r12
3433         xorq    %rax,%r13
3434         vpsllq  $56,%xmm8,%xmm9
3435         addq    96(%rsp),%rdx
3436         movq    %r8,%r15
3437         vpxor   %xmm10,%xmm11,%xmm8
3438         xorq    %rcx,%r12
3439         shrdq   $6,%r14,%r14
3440         vpsrlq  $7,%xmm10,%xmm10
3441         xorq    %r9,%r15
3442         addq    %r12,%rdx
3443         vpxor   %xmm9,%xmm8,%xmm8
3444         shrdq   $14,%r13,%r13
3445         andq    %r15,%rdi
3446         vpsllq  $7,%xmm9,%xmm9
3447         xorq    %r8,%r14
3448         addq    %r13,%rdx
3449         vpxor   %xmm10,%xmm8,%xmm8
3450         xorq    %r9,%rdi
3451         shrdq   $28,%r14,%r14
3452         vpsrlq  $6,%xmm5,%xmm11
3453         addq    %rdx,%r11
3454         addq    %rdi,%rdx
3455         vpxor   %xmm9,%xmm8,%xmm8
3456         movq    %r11,%r13
3457         addq    %rdx,%r14
3458         vpsllq  $3,%xmm5,%xmm10
3459         shrdq   $23,%r13,%r13
3460         movq    %r14,%rdx
3461         vpaddq  %xmm8,%xmm6,%xmm6
3462         movq    %rax,%r12
3463         shrdq   $5,%r14,%r14
3464         vpsrlq  $19,%xmm5,%xmm9
3465         xorq    %r11,%r13
3466         xorq    %rbx,%r12
3467         vpxor   %xmm10,%xmm11,%xmm11
3468         shrdq   $4,%r13,%r13
3469         xorq    %rdx,%r14
3470         vpsllq  $42,%xmm10,%xmm10
3471         andq    %r11,%r12
3472         xorq    %r11,%r13
3473         vpxor   %xmm9,%xmm11,%xmm11
3474         addq    104(%rsp),%rcx
3475         movq    %rdx,%rdi
3476         vpsrlq  $42,%xmm9,%xmm9
3477         xorq    %rbx,%r12
3478         shrdq   $6,%r14,%r14
3479         vpxor   %xmm10,%xmm11,%xmm11
3480         xorq    %r8,%rdi
3481         addq    %r12,%rcx
3482         vpxor   %xmm9,%xmm11,%xmm11
3483         shrdq   $14,%r13,%r13
3484         andq    %rdi,%r15
3485         vpaddq  %xmm11,%xmm6,%xmm6
3486         xorq    %rdx,%r14
3487         addq    %r13,%rcx
3488         vpaddq  64(%rbp),%xmm6,%xmm10
3489         xorq    %r8,%r15
3490         shrdq   $28,%r14,%r14
3491         addq    %rcx,%r10
3492         addq    %r15,%rcx
3493         movq    %r10,%r13
3494         addq    %rcx,%r14
3495         vmovdqa %xmm10,96(%rsp)
3496         vpalignr        $8,%xmm7,%xmm0,%xmm8
3497         shrdq   $23,%r13,%r13
3498         movq    %r14,%rcx
3499         vpalignr        $8,%xmm3,%xmm4,%xmm11
3500         movq    %r11,%r12
3501         shrdq   $5,%r14,%r14
3502         vpsrlq  $1,%xmm8,%xmm10
3503         xorq    %r10,%r13
3504         xorq    %rax,%r12
3505         vpaddq  %xmm11,%xmm7,%xmm7
3506         shrdq   $4,%r13,%r13
3507         xorq    %rcx,%r14
3508         vpsrlq  $7,%xmm8,%xmm11
3509         andq    %r10,%r12
3510         xorq    %r10,%r13
3511         vpsllq  $56,%xmm8,%xmm9
3512         addq    112(%rsp),%rbx
3513         movq    %rcx,%r15
3514         vpxor   %xmm10,%xmm11,%xmm8
3515         xorq    %rax,%r12
3516         shrdq   $6,%r14,%r14
3517         vpsrlq  $7,%xmm10,%xmm10
3518         xorq    %rdx,%r15
3519         addq    %r12,%rbx
3520         vpxor   %xmm9,%xmm8,%xmm8
3521         shrdq   $14,%r13,%r13
3522         andq    %r15,%rdi
3523         vpsllq  $7,%xmm9,%xmm9
3524         xorq    %rcx,%r14
3525         addq    %r13,%rbx
3526         vpxor   %xmm10,%xmm8,%xmm8
3527         xorq    %rdx,%rdi
3528         shrdq   $28,%r14,%r14
3529         vpsrlq  $6,%xmm6,%xmm11
3530         addq    %rbx,%r9
3531         addq    %rdi,%rbx
3532         vpxor   %xmm9,%xmm8,%xmm8
3533         movq    %r9,%r13
3534         addq    %rbx,%r14
3535         vpsllq  $3,%xmm6,%xmm10
3536         shrdq   $23,%r13,%r13
3537         movq    %r14,%rbx
3538         vpaddq  %xmm8,%xmm7,%xmm7
3539         movq    %r10,%r12
3540         shrdq   $5,%r14,%r14
3541         vpsrlq  $19,%xmm6,%xmm9
3542         xorq    %r9,%r13
3543         xorq    %r11,%r12
3544         vpxor   %xmm10,%xmm11,%xmm11
3545         shrdq   $4,%r13,%r13
3546         xorq    %rbx,%r14
3547         vpsllq  $42,%xmm10,%xmm10
3548         andq    %r9,%r12
3549         xorq    %r9,%r13
3550         vpxor   %xmm9,%xmm11,%xmm11
3551         addq    120(%rsp),%rax
3552         movq    %rbx,%rdi
3553         vpsrlq  $42,%xmm9,%xmm9
3554         xorq    %r11,%r12
3555         shrdq   $6,%r14,%r14
3556         vpxor   %xmm10,%xmm11,%xmm11
3557         xorq    %rcx,%rdi
3558         addq    %r12,%rax
3559         vpxor   %xmm9,%xmm11,%xmm11
3560         shrdq   $14,%r13,%r13
3561         andq    %rdi,%r15
3562         vpaddq  %xmm11,%xmm7,%xmm7
3563         xorq    %rbx,%r14
3564         addq    %r13,%rax
3565         vpaddq  96(%rbp),%xmm7,%xmm10
3566         xorq    %rcx,%r15
3567         shrdq   $28,%r14,%r14
3568         addq    %rax,%r8
3569         addq    %r15,%rax
3570         movq    %r8,%r13
3571         addq    %rax,%r14
3572         vmovdqa %xmm10,112(%rsp)
3573         cmpb    $0,135(%rbp)
3574         jne     .Lavx_00_47
3575         shrdq   $23,%r13,%r13
3576         movq    %r14,%rax
3577         movq    %r9,%r12
3578         shrdq   $5,%r14,%r14
3579         xorq    %r8,%r13
3580         xorq    %r10,%r12
3581         shrdq   $4,%r13,%r13
3582         xorq    %rax,%r14
3583         andq    %r8,%r12
3584         xorq    %r8,%r13
3585         addq    0(%rsp),%r11
3586         movq    %rax,%r15
3587         xorq    %r10,%r12
3588         shrdq   $6,%r14,%r14
3589         xorq    %rbx,%r15
3590         addq    %r12,%r11
3591         shrdq   $14,%r13,%r13
3592         andq    %r15,%rdi
3593         xorq    %rax,%r14
3594         addq    %r13,%r11
3595         xorq    %rbx,%rdi
3596         shrdq   $28,%r14,%r14
3597         addq    %r11,%rdx
3598         addq    %rdi,%r11
3599         movq    %rdx,%r13
3600         addq    %r11,%r14
3601         shrdq   $23,%r13,%r13
3602         movq    %r14,%r11
3603         movq    %r8,%r12
3604         shrdq   $5,%r14,%r14
3605         xorq    %rdx,%r13
3606         xorq    %r9,%r12
3607         shrdq   $4,%r13,%r13
3608         xorq    %r11,%r14
3609         andq    %rdx,%r12
3610         xorq    %rdx,%r13
3611         addq    8(%rsp),%r10
3612         movq    %r11,%rdi
3613         xorq    %r9,%r12
3614         shrdq   $6,%r14,%r14
3615         xorq    %rax,%rdi
3616         addq    %r12,%r10
3617         shrdq   $14,%r13,%r13
3618         andq    %rdi,%r15
3619         xorq    %r11,%r14
3620         addq    %r13,%r10
3621         xorq    %rax,%r15
3622         shrdq   $28,%r14,%r14
3623         addq    %r10,%rcx
3624         addq    %r15,%r10
3625         movq    %rcx,%r13
3626         addq    %r10,%r14
3627         shrdq   $23,%r13,%r13
3628         movq    %r14,%r10
3629         movq    %rdx,%r12
3630         shrdq   $5,%r14,%r14
3631         xorq    %rcx,%r13
3632         xorq    %r8,%r12
3633         shrdq   $4,%r13,%r13
3634         xorq    %r10,%r14
3635         andq    %rcx,%r12
3636         xorq    %rcx,%r13
3637         addq    16(%rsp),%r9
3638         movq    %r10,%r15
3639         xorq    %r8,%r12
3640         shrdq   $6,%r14,%r14
3641         xorq    %r11,%r15
3642         addq    %r12,%r9
3643         shrdq   $14,%r13,%r13
3644         andq    %r15,%rdi
3645         xorq    %r10,%r14
3646         addq    %r13,%r9
3647         xorq    %r11,%rdi
3648         shrdq   $28,%r14,%r14
3649         addq    %r9,%rbx
3650         addq    %rdi,%r9
3651         movq    %rbx,%r13
3652         addq    %r9,%r14
3653         shrdq   $23,%r13,%r13
3654         movq    %r14,%r9
3655         movq    %rcx,%r12
3656         shrdq   $5,%r14,%r14
3657         xorq    %rbx,%r13
3658         xorq    %rdx,%r12
3659         shrdq   $4,%r13,%r13
3660         xorq    %r9,%r14
3661         andq    %rbx,%r12
3662         xorq    %rbx,%r13
3663         addq    24(%rsp),%r8
3664         movq    %r9,%rdi
3665         xorq    %rdx,%r12
3666         shrdq   $6,%r14,%r14
3667         xorq    %r10,%rdi
3668         addq    %r12,%r8
3669         shrdq   $14,%r13,%r13
3670         andq    %rdi,%r15
3671         xorq    %r9,%r14
3672         addq    %r13,%r8
3673         xorq    %r10,%r15
3674         shrdq   $28,%r14,%r14
3675         addq    %r8,%rax
3676         addq    %r15,%r8
3677         movq    %rax,%r13
3678         addq    %r8,%r14
3679         shrdq   $23,%r13,%r13
3680         movq    %r14,%r8
3681         movq    %rbx,%r12
3682         shrdq   $5,%r14,%r14
3683         xorq    %rax,%r13
3684         xorq    %rcx,%r12
3685         shrdq   $4,%r13,%r13
3686         xorq    %r8,%r14
3687         andq    %rax,%r12
3688         xorq    %rax,%r13
3689         addq    32(%rsp),%rdx
3690         movq    %r8,%r15
3691         xorq    %rcx,%r12
3692         shrdq   $6,%r14,%r14
3693         xorq    %r9,%r15
3694         addq    %r12,%rdx
3695         shrdq   $14,%r13,%r13
3696         andq    %r15,%rdi
3697         xorq    %r8,%r14
3698         addq    %r13,%rdx
3699         xorq    %r9,%rdi
3700         shrdq   $28,%r14,%r14
3701         addq    %rdx,%r11
3702         addq    %rdi,%rdx
3703         movq    %r11,%r13
3704         addq    %rdx,%r14
3705         shrdq   $23,%r13,%r13
3706         movq    %r14,%rdx
3707         movq    %rax,%r12
3708         shrdq   $5,%r14,%r14
3709         xorq    %r11,%r13
3710         xorq    %rbx,%r12
3711         shrdq   $4,%r13,%r13
3712         xorq    %rdx,%r14
3713         andq    %r11,%r12
3714         xorq    %r11,%r13
3715         addq    40(%rsp),%rcx
3716         movq    %rdx,%rdi
3717         xorq    %rbx,%r12
3718         shrdq   $6,%r14,%r14
3719         xorq    %r8,%rdi
3720         addq    %r12,%rcx
3721         shrdq   $14,%r13,%r13
3722         andq    %rdi,%r15
3723         xorq    %rdx,%r14
3724         addq    %r13,%rcx
3725         xorq    %r8,%r15
3726         shrdq   $28,%r14,%r14
3727         addq    %rcx,%r10
3728         addq    %r15,%rcx
3729         movq    %r10,%r13
3730         addq    %rcx,%r14
3731         shrdq   $23,%r13,%r13
3732         movq    %r14,%rcx
3733         movq    %r11,%r12
3734         shrdq   $5,%r14,%r14
3735         xorq    %r10,%r13
3736         xorq    %rax,%r12
3737         shrdq   $4,%r13,%r13
3738         xorq    %rcx,%r14
3739         andq    %r10,%r12
3740         xorq    %r10,%r13
3741         addq    48(%rsp),%rbx
3742         movq    %rcx,%r15
3743         xorq    %rax,%r12
3744         shrdq   $6,%r14,%r14
3745         xorq    %rdx,%r15
3746         addq    %r12,%rbx
3747         shrdq   $14,%r13,%r13
3748         andq    %r15,%rdi
3749         xorq    %rcx,%r14
3750         addq    %r13,%rbx
3751         xorq    %rdx,%rdi
3752         shrdq   $28,%r14,%r14
3753         addq    %rbx,%r9
3754         addq    %rdi,%rbx
3755         movq    %r9,%r13
3756         addq    %rbx,%r14
3757         shrdq   $23,%r13,%r13
3758         movq    %r14,%rbx
3759         movq    %r10,%r12
3760         shrdq   $5,%r14,%r14
3761         xorq    %r9,%r13
3762         xorq    %r11,%r12
3763         shrdq   $4,%r13,%r13
3764         xorq    %rbx,%r14
3765         andq    %r9,%r12
3766         xorq    %r9,%r13
3767         addq    56(%rsp),%rax
3768         movq    %rbx,%rdi
3769         xorq    %r11,%r12
3770         shrdq   $6,%r14,%r14
3771         xorq    %rcx,%rdi
3772         addq    %r12,%rax
3773         shrdq   $14,%r13,%r13
3774         andq    %rdi,%r15
3775         xorq    %rbx,%r14
3776         addq    %r13,%rax
3777         xorq    %rcx,%r15
3778         shrdq   $28,%r14,%r14
3779         addq    %rax,%r8
3780         addq    %r15,%rax
3781         movq    %r8,%r13
3782         addq    %rax,%r14
3783         shrdq   $23,%r13,%r13
3784         movq    %r14,%rax
3785         movq    %r9,%r12
3786         shrdq   $5,%r14,%r14
3787         xorq    %r8,%r13
3788         xorq    %r10,%r12
3789         shrdq   $4,%r13,%r13
3790         xorq    %rax,%r14
3791         andq    %r8,%r12
3792         xorq    %r8,%r13
3793         addq    64(%rsp),%r11
3794         movq    %rax,%r15
3795         xorq    %r10,%r12
3796         shrdq   $6,%r14,%r14
3797         xorq    %rbx,%r15
3798         addq    %r12,%r11
3799         shrdq   $14,%r13,%r13
3800         andq    %r15,%rdi
3801         xorq    %rax,%r14
3802         addq    %r13,%r11
3803         xorq    %rbx,%rdi
3804         shrdq   $28,%r14,%r14
3805         addq    %r11,%rdx
3806         addq    %rdi,%r11
3807         movq    %rdx,%r13
3808         addq    %r11,%r14
3809         shrdq   $23,%r13,%r13
3810         movq    %r14,%r11
3811         movq    %r8,%r12
3812         shrdq   $5,%r14,%r14
3813         xorq    %rdx,%r13
3814         xorq    %r9,%r12
3815         shrdq   $4,%r13,%r13
3816         xorq    %r11,%r14
3817         andq    %rdx,%r12
3818         xorq    %rdx,%r13
3819         addq    72(%rsp),%r10
3820         movq    %r11,%rdi
3821         xorq    %r9,%r12
3822         shrdq   $6,%r14,%r14
3823         xorq    %rax,%rdi
3824         addq    %r12,%r10
3825         shrdq   $14,%r13,%r13
3826         andq    %rdi,%r15
3827         xorq    %r11,%r14
3828         addq    %r13,%r10
3829         xorq    %rax,%r15
3830         shrdq   $28,%r14,%r14
3831         addq    %r10,%rcx
3832         addq    %r15,%r10
3833         movq    %rcx,%r13
3834         addq    %r10,%r14
3835         shrdq   $23,%r13,%r13
3836         movq    %r14,%r10
3837         movq    %rdx,%r12
3838         shrdq   $5,%r14,%r14
3839         xorq    %rcx,%r13
3840         xorq    %r8,%r12
3841         shrdq   $4,%r13,%r13
3842         xorq    %r10,%r14
3843         andq    %rcx,%r12
3844         xorq    %rcx,%r13
3845         addq    80(%rsp),%r9
3846         movq    %r10,%r15
3847         xorq    %r8,%r12
3848         shrdq   $6,%r14,%r14
3849         xorq    %r11,%r15
3850         addq    %r12,%r9
3851         shrdq   $14,%r13,%r13
3852         andq    %r15,%rdi
3853         xorq    %r10,%r14
3854         addq    %r13,%r9
3855         xorq    %r11,%rdi
3856         shrdq   $28,%r14,%r14
3857         addq    %r9,%rbx
3858         addq    %rdi,%r9
3859         movq    %rbx,%r13
3860         addq    %r9,%r14
3861         shrdq   $23,%r13,%r13
3862         movq    %r14,%r9
3863         movq    %rcx,%r12
3864         shrdq   $5,%r14,%r14
3865         xorq    %rbx,%r13
3866         xorq    %rdx,%r12
3867         shrdq   $4,%r13,%r13
3868         xorq    %r9,%r14
3869         andq    %rbx,%r12
3870         xorq    %rbx,%r13
3871         addq    88(%rsp),%r8
3872         movq    %r9,%rdi
3873         xorq    %rdx,%r12
3874         shrdq   $6,%r14,%r14
3875         xorq    %r10,%rdi
3876         addq    %r12,%r8
3877         shrdq   $14,%r13,%r13
3878         andq    %rdi,%r15
3879         xorq    %r9,%r14
3880         addq    %r13,%r8
3881         xorq    %r10,%r15
3882         shrdq   $28,%r14,%r14
3883         addq    %r8,%rax
3884         addq    %r15,%r8
3885         movq    %rax,%r13
3886         addq    %r8,%r14
3887         shrdq   $23,%r13,%r13
3888         movq    %r14,%r8
3889         movq    %rbx,%r12
3890         shrdq   $5,%r14,%r14
3891         xorq    %rax,%r13
3892         xorq    %rcx,%r12
3893         shrdq   $4,%r13,%r13
3894         xorq    %r8,%r14
3895         andq    %rax,%r12
3896         xorq    %rax,%r13
3897         addq    96(%rsp),%rdx
3898         movq    %r8,%r15
3899         xorq    %rcx,%r12
3900         shrdq   $6,%r14,%r14
3901         xorq    %r9,%r15
3902         addq    %r12,%rdx
3903         shrdq   $14,%r13,%r13
3904         andq    %r15,%rdi
3905         xorq    %r8,%r14
3906         addq    %r13,%rdx
3907         xorq    %r9,%rdi
3908         shrdq   $28,%r14,%r14
3909         addq    %rdx,%r11
3910         addq    %rdi,%rdx
3911         movq    %r11,%r13
3912         addq    %rdx,%r14
3913         shrdq   $23,%r13,%r13
3914         movq    %r14,%rdx
3915         movq    %rax,%r12
3916         shrdq   $5,%r14,%r14
3917         xorq    %r11,%r13
3918         xorq    %rbx,%r12
3919         shrdq   $4,%r13,%r13
3920         xorq    %rdx,%r14
3921         andq    %r11,%r12
3922         xorq    %r11,%r13
3923         addq    104(%rsp),%rcx
3924         movq    %rdx,%rdi
3925         xorq    %rbx,%r12
3926         shrdq   $6,%r14,%r14
3927         xorq    %r8,%rdi
3928         addq    %r12,%rcx
3929         shrdq   $14,%r13,%r13
3930         andq    %rdi,%r15
3931         xorq    %rdx,%r14
3932         addq    %r13,%rcx
3933         xorq    %r8,%r15
3934         shrdq   $28,%r14,%r14
3935         addq    %rcx,%r10
3936         addq    %r15,%rcx
3937         movq    %r10,%r13
3938         addq    %rcx,%r14
3939         shrdq   $23,%r13,%r13
3940         movq    %r14,%rcx
3941         movq    %r11,%r12
3942         shrdq   $5,%r14,%r14
3943         xorq    %r10,%r13
3944         xorq    %rax,%r12
3945         shrdq   $4,%r13,%r13
3946         xorq    %rcx,%r14
3947         andq    %r10,%r12
3948         xorq    %r10,%r13
3949         addq    112(%rsp),%rbx
3950         movq    %rcx,%r15
3951         xorq    %rax,%r12
3952         shrdq   $6,%r14,%r14
3953         xorq    %rdx,%r15
3954         addq    %r12,%rbx
3955         shrdq   $14,%r13,%r13
3956         andq    %r15,%rdi
3957         xorq    %rcx,%r14
3958         addq    %r13,%rbx
3959         xorq    %rdx,%rdi
3960         shrdq   $28,%r14,%r14
3961         addq    %rbx,%r9
3962         addq    %rdi,%rbx
3963         movq    %r9,%r13
3964         addq    %rbx,%r14
3965         shrdq   $23,%r13,%r13
3966         movq    %r14,%rbx
3967         movq    %r10,%r12
3968         shrdq   $5,%r14,%r14
3969         xorq    %r9,%r13
3970         xorq    %r11,%r12
3971         shrdq   $4,%r13,%r13
3972         xorq    %rbx,%r14
3973         andq    %r9,%r12
3974         xorq    %r9,%r13
3975         addq    120(%rsp),%rax
3976         movq    %rbx,%rdi
3977         xorq    %r11,%r12
3978         shrdq   $6,%r14,%r14
3979         xorq    %rcx,%rdi
3980         addq    %r12,%rax
3981         shrdq   $14,%r13,%r13
3982         andq    %rdi,%r15
3983         xorq    %rbx,%r14
3984         addq    %r13,%rax
3985         xorq    %rcx,%r15
3986         shrdq   $28,%r14,%r14
3987         addq    %rax,%r8
3988         addq    %r15,%rax
3989         movq    %r8,%r13
3990         addq    %rax,%r14
3991         movq    128+0(%rsp),%rdi
3992         movq    %r14,%rax
3993
3994         addq    0(%rdi),%rax
3995         leaq    128(%rsi),%rsi
3996         addq    8(%rdi),%rbx
3997         addq    16(%rdi),%rcx
3998         addq    24(%rdi),%rdx
3999         addq    32(%rdi),%r8
4000         addq    40(%rdi),%r9
4001         addq    48(%rdi),%r10
4002         addq    56(%rdi),%r11
4003
4004         cmpq    128+16(%rsp),%rsi
4005
4006         movq    %rax,0(%rdi)
4007         movq    %rbx,8(%rdi)
4008         movq    %rcx,16(%rdi)
4009         movq    %rdx,24(%rdi)
4010         movq    %r8,32(%rdi)
4011         movq    %r9,40(%rdi)
4012         movq    %r10,48(%rdi)
4013         movq    %r11,56(%rdi)
4014         jb      .Lloop_avx
4015
4016         movq    128+24(%rsp),%rsi
4017         vzeroupper
4018         movq    (%rsi),%r15
4019         movq    8(%rsi),%r14
4020         movq    16(%rsi),%r13
4021         movq    24(%rsi),%r12
4022         movq    32(%rsi),%rbp
4023         movq    40(%rsi),%rbx
4024         leaq    48(%rsi),%rsp
4025 .Lepilogue_avx:
4026         .byte   0xf3,0xc3
4027 .size   sha512_block_data_order_avx,.-sha512_block_data_order_avx
4028 .type   sha512_block_data_order_avx2,@function
4029 .align  64
4030 sha512_block_data_order_avx2:
4031 .Lavx2_shortcut:
4032         pushq   %rbx
4033         pushq   %rbp
4034         pushq   %r12
4035         pushq   %r13
4036         pushq   %r14
4037         pushq   %r15
4038         movq    %rsp,%r11
4039         subq    $1312,%rsp
4040         shlq    $4,%rdx
4041         andq    $-2048,%rsp
4042         leaq    (%rsi,%rdx,8),%rdx
4043         addq    $1152,%rsp
4044         movq    %rdi,128+0(%rsp)
4045         movq    %rsi,128+8(%rsp)
4046         movq    %rdx,128+16(%rsp)
4047         movq    %r11,128+24(%rsp)
4048 .Lprologue_avx2:
4049
4050         vzeroupper
4051         subq    $-128,%rsi
4052         movq    0(%rdi),%rax
4053         movq    %rsi,%r12
4054         movq    8(%rdi),%rbx
4055         cmpq    %rdx,%rsi
4056         movq    16(%rdi),%rcx
4057         cmoveq  %rsp,%r12
4058         movq    24(%rdi),%rdx
4059         movq    32(%rdi),%r8
4060         movq    40(%rdi),%r9
4061         movq    48(%rdi),%r10
4062         movq    56(%rdi),%r11
4063         jmp     .Loop_avx2
4064 .align  16
4065 .Loop_avx2:
4066         vmovdqu -128(%rsi),%xmm0
4067         vmovdqu -128+16(%rsi),%xmm1
4068         vmovdqu -128+32(%rsi),%xmm2
4069         leaq    K512+128(%rip),%rbp
4070         vmovdqu -128+48(%rsi),%xmm3
4071         vmovdqu -128+64(%rsi),%xmm4
4072         vmovdqu -128+80(%rsi),%xmm5
4073         vmovdqu -128+96(%rsi),%xmm6
4074         vmovdqu -128+112(%rsi),%xmm7
4075
4076         vmovdqa 1152(%rbp),%ymm10
4077         vinserti128     $1,(%r12),%ymm0,%ymm0
4078         vinserti128     $1,16(%r12),%ymm1,%ymm1
4079         vpshufb %ymm10,%ymm0,%ymm0
4080         vinserti128     $1,32(%r12),%ymm2,%ymm2
4081         vpshufb %ymm10,%ymm1,%ymm1
4082         vinserti128     $1,48(%r12),%ymm3,%ymm3
4083         vpshufb %ymm10,%ymm2,%ymm2
4084         vinserti128     $1,64(%r12),%ymm4,%ymm4
4085         vpshufb %ymm10,%ymm3,%ymm3
4086         vinserti128     $1,80(%r12),%ymm5,%ymm5
4087         vpshufb %ymm10,%ymm4,%ymm4
4088         vinserti128     $1,96(%r12),%ymm6,%ymm6
4089         vpshufb %ymm10,%ymm5,%ymm5
4090         vinserti128     $1,112(%r12),%ymm7,%ymm7
4091
4092         vpaddq  -128(%rbp),%ymm0,%ymm8
4093         vpshufb %ymm10,%ymm6,%ymm6
4094         vpaddq  -96(%rbp),%ymm1,%ymm9
4095         vpshufb %ymm10,%ymm7,%ymm7
4096         vpaddq  -64(%rbp),%ymm2,%ymm10
4097         vpaddq  -32(%rbp),%ymm3,%ymm11
4098         vmovdqa %ymm8,0(%rsp)
4099         vpaddq  0(%rbp),%ymm4,%ymm8
4100         vmovdqa %ymm9,32(%rsp)
4101         vpaddq  32(%rbp),%ymm5,%ymm9
4102         vmovdqa %ymm10,64(%rsp)
4103         vpaddq  64(%rbp),%ymm6,%ymm10
4104         vmovdqa %ymm11,96(%rsp)
4105         leaq    -128(%rsp),%rsp
4106         vpaddq  96(%rbp),%ymm7,%ymm11
4107         vmovdqa %ymm8,0(%rsp)
4108         xorq    %r14,%r14
4109         vmovdqa %ymm9,32(%rsp)
4110         movq    %rbx,%rdi
4111         vmovdqa %ymm10,64(%rsp)
4112         xorq    %rcx,%rdi
4113         vmovdqa %ymm11,96(%rsp)
4114         movq    %r9,%r12
4115         addq    $32*8,%rbp
4116         jmp     .Lavx2_00_47
4117
4118 .align  16
4119 .Lavx2_00_47:
4120         leaq    -128(%rsp),%rsp
4121         vpalignr        $8,%ymm0,%ymm1,%ymm8
4122         addq    0+256(%rsp),%r11
4123         andq    %r8,%r12
4124         rorxq   $41,%r8,%r13
4125         vpalignr        $8,%ymm4,%ymm5,%ymm11
4126         rorxq   $18,%r8,%r15
4127         leaq    (%rax,%r14,1),%rax
4128         leaq    (%r11,%r12,1),%r11
4129         vpsrlq  $1,%ymm8,%ymm10
4130         andnq   %r10,%r8,%r12
4131         xorq    %r15,%r13
4132         rorxq   $14,%r8,%r14
4133         vpaddq  %ymm11,%ymm0,%ymm0
4134         vpsrlq  $7,%ymm8,%ymm11
4135         leaq    (%r11,%r12,1),%r11
4136         xorq    %r14,%r13
4137         movq    %rax,%r15
4138         vpsllq  $56,%ymm8,%ymm9
4139         vpxor   %ymm10,%ymm11,%ymm8
4140         rorxq   $39,%rax,%r12
4141         leaq    (%r11,%r13,1),%r11
4142         xorq    %rbx,%r15
4143         vpsrlq  $7,%ymm10,%ymm10
4144         vpxor   %ymm9,%ymm8,%ymm8
4145         rorxq   $34,%rax,%r14
4146         rorxq   $28,%rax,%r13
4147         leaq    (%rdx,%r11,1),%rdx
4148         vpsllq  $7,%ymm9,%ymm9
4149         vpxor   %ymm10,%ymm8,%ymm8
4150         andq    %r15,%rdi
4151         xorq    %r12,%r14
4152         xorq    %rbx,%rdi
4153         vpsrlq  $6,%ymm7,%ymm11
4154         vpxor   %ymm9,%ymm8,%ymm8
4155         xorq    %r13,%r14
4156         leaq    (%r11,%rdi,1),%r11
4157         movq    %r8,%r12
4158         vpsllq  $3,%ymm7,%ymm10
4159         vpaddq  %ymm8,%ymm0,%ymm0
4160         addq    8+256(%rsp),%r10
4161         andq    %rdx,%r12
4162         rorxq   $41,%rdx,%r13
4163         vpsrlq  $19,%ymm7,%ymm9
4164         vpxor   %ymm10,%ymm11,%ymm11
4165         rorxq   $18,%rdx,%rdi
4166         leaq    (%r11,%r14,1),%r11
4167         leaq    (%r10,%r12,1),%r10
4168         vpsllq  $42,%ymm10,%ymm10
4169         vpxor   %ymm9,%ymm11,%ymm11
4170         andnq   %r9,%rdx,%r12
4171         xorq    %rdi,%r13
4172         rorxq   $14,%rdx,%r14
4173         vpsrlq  $42,%ymm9,%ymm9
4174         vpxor   %ymm10,%ymm11,%ymm11
4175         leaq    (%r10,%r12,1),%r10
4176         xorq    %r14,%r13
4177         movq    %r11,%rdi
4178         vpxor   %ymm9,%ymm11,%ymm11
4179         rorxq   $39,%r11,%r12
4180         leaq    (%r10,%r13,1),%r10
4181         xorq    %rax,%rdi
4182         vpaddq  %ymm11,%ymm0,%ymm0
4183         rorxq   $34,%r11,%r14
4184         rorxq   $28,%r11,%r13
4185         leaq    (%rcx,%r10,1),%rcx
4186         vpaddq  -128(%rbp),%ymm0,%ymm10
4187         andq    %rdi,%r15
4188         xorq    %r12,%r14
4189         xorq    %rax,%r15
4190         xorq    %r13,%r14
4191         leaq    (%r10,%r15,1),%r10
4192         movq    %rdx,%r12
4193         vmovdqa %ymm10,0(%rsp)
4194         vpalignr        $8,%ymm1,%ymm2,%ymm8
4195         addq    32+256(%rsp),%r9
4196         andq    %rcx,%r12
4197         rorxq   $41,%rcx,%r13
4198         vpalignr        $8,%ymm5,%ymm6,%ymm11
4199         rorxq   $18,%rcx,%r15
4200         leaq    (%r10,%r14,1),%r10
4201         leaq    (%r9,%r12,1),%r9
4202         vpsrlq  $1,%ymm8,%ymm10
4203         andnq   %r8,%rcx,%r12
4204         xorq    %r15,%r13
4205         rorxq   $14,%rcx,%r14
4206         vpaddq  %ymm11,%ymm1,%ymm1
4207         vpsrlq  $7,%ymm8,%ymm11
4208         leaq    (%r9,%r12,1),%r9
4209         xorq    %r14,%r13
4210         movq    %r10,%r15
4211         vpsllq  $56,%ymm8,%ymm9
4212         vpxor   %ymm10,%ymm11,%ymm8
4213         rorxq   $39,%r10,%r12
4214         leaq    (%r9,%r13,1),%r9
4215         xorq    %r11,%r15
4216         vpsrlq  $7,%ymm10,%ymm10
4217         vpxor   %ymm9,%ymm8,%ymm8
4218         rorxq   $34,%r10,%r14
4219         rorxq   $28,%r10,%r13
4220         leaq    (%rbx,%r9,1),%rbx
4221         vpsllq  $7,%ymm9,%ymm9
4222         vpxor   %ymm10,%ymm8,%ymm8
4223         andq    %r15,%rdi
4224         xorq    %r12,%r14
4225         xorq    %r11,%rdi
4226         vpsrlq  $6,%ymm0,%ymm11
4227         vpxor   %ymm9,%ymm8,%ymm8
4228         xorq    %r13,%r14
4229         leaq    (%r9,%rdi,1),%r9
4230         movq    %rcx,%r12
4231         vpsllq  $3,%ymm0,%ymm10
4232         vpaddq  %ymm8,%ymm1,%ymm1
4233         addq    40+256(%rsp),%r8
4234         andq    %rbx,%r12
4235         rorxq   $41,%rbx,%r13
4236         vpsrlq  $19,%ymm0,%ymm9
4237         vpxor   %ymm10,%ymm11,%ymm11
4238         rorxq   $18,%rbx,%rdi
4239         leaq    (%r9,%r14,1),%r9
4240         leaq    (%r8,%r12,1),%r8
4241         vpsllq  $42,%ymm10,%ymm10
4242         vpxor   %ymm9,%ymm11,%ymm11
4243         andnq   %rdx,%rbx,%r12
4244         xorq    %rdi,%r13
4245         rorxq   $14,%rbx,%r14
4246         vpsrlq  $42,%ymm9,%ymm9
4247         vpxor   %ymm10,%ymm11,%ymm11
4248         leaq    (%r8,%r12,1),%r8
4249         xorq    %r14,%r13
4250         movq    %r9,%rdi
4251         vpxor   %ymm9,%ymm11,%ymm11
4252         rorxq   $39,%r9,%r12
4253         leaq    (%r8,%r13,1),%r8
4254         xorq    %r10,%rdi
4255         vpaddq  %ymm11,%ymm1,%ymm1
4256         rorxq   $34,%r9,%r14
4257         rorxq   $28,%r9,%r13
4258         leaq    (%rax,%r8,1),%rax
4259         vpaddq  -96(%rbp),%ymm1,%ymm10
4260         andq    %rdi,%r15
4261         xorq    %r12,%r14
4262         xorq    %r10,%r15
4263         xorq    %r13,%r14
4264         leaq    (%r8,%r15,1),%r8
4265         movq    %rbx,%r12
4266         vmovdqa %ymm10,32(%rsp)
4267         vpalignr        $8,%ymm2,%ymm3,%ymm8
4268         addq    64+256(%rsp),%rdx
4269         andq    %rax,%r12
4270         rorxq   $41,%rax,%r13
4271         vpalignr        $8,%ymm6,%ymm7,%ymm11
4272         rorxq   $18,%rax,%r15
4273         leaq    (%r8,%r14,1),%r8
4274         leaq    (%rdx,%r12,1),%rdx
4275         vpsrlq  $1,%ymm8,%ymm10
4276         andnq   %rcx,%rax,%r12
4277         xorq    %r15,%r13
4278         rorxq   $14,%rax,%r14
4279         vpaddq  %ymm11,%ymm2,%ymm2
4280         vpsrlq  $7,%ymm8,%ymm11
4281         leaq    (%rdx,%r12,1),%rdx
4282         xorq    %r14,%r13
4283         movq    %r8,%r15
4284         vpsllq  $56,%ymm8,%ymm9
4285         vpxor   %ymm10,%ymm11,%ymm8
4286         rorxq   $39,%r8,%r12
4287         leaq    (%rdx,%r13,1),%rdx
4288         xorq    %r9,%r15
4289         vpsrlq  $7,%ymm10,%ymm10
4290         vpxor   %ymm9,%ymm8,%ymm8
4291         rorxq   $34,%r8,%r14
4292         rorxq   $28,%r8,%r13
4293         leaq    (%r11,%rdx,1),%r11
4294         vpsllq  $7,%ymm9,%ymm9
4295         vpxor   %ymm10,%ymm8,%ymm8
4296         andq    %r15,%rdi
4297         xorq    %r12,%r14
4298         xorq    %r9,%rdi
4299         vpsrlq  $6,%ymm1,%ymm11
4300         vpxor   %ymm9,%ymm8,%ymm8
4301         xorq    %r13,%r14
4302         leaq    (%rdx,%rdi,1),%rdx
4303         movq    %rax,%r12
4304         vpsllq  $3,%ymm1,%ymm10
4305         vpaddq  %ymm8,%ymm2,%ymm2
4306         addq    72+256(%rsp),%rcx
4307         andq    %r11,%r12
4308         rorxq   $41,%r11,%r13
4309         vpsrlq  $19,%ymm1,%ymm9
4310         vpxor   %ymm10,%ymm11,%ymm11
4311         rorxq   $18,%r11,%rdi
4312         leaq    (%rdx,%r14,1),%rdx
4313         leaq    (%rcx,%r12,1),%rcx
4314         vpsllq  $42,%ymm10,%ymm10
4315         vpxor   %ymm9,%ymm11,%ymm11
4316         andnq   %rbx,%r11,%r12
4317         xorq    %rdi,%r13
4318         rorxq   $14,%r11,%r14
4319         vpsrlq  $42,%ymm9,%ymm9
4320         vpxor   %ymm10,%ymm11,%ymm11
4321         leaq    (%rcx,%r12,1),%rcx
4322         xorq    %r14,%r13
4323         movq    %rdx,%rdi
4324         vpxor   %ymm9,%ymm11,%ymm11
4325         rorxq   $39,%rdx,%r12
4326         leaq    (%rcx,%r13,1),%rcx
4327         xorq    %r8,%rdi
4328         vpaddq  %ymm11,%ymm2,%ymm2
4329         rorxq   $34,%rdx,%r14
4330         rorxq   $28,%rdx,%r13
4331         leaq    (%r10,%rcx,1),%r10
4332         vpaddq  -64(%rbp),%ymm2,%ymm10
4333         andq    %rdi,%r15
4334         xorq    %r12,%r14
4335         xorq    %r8,%r15
4336         xorq    %r13,%r14
4337         leaq    (%rcx,%r15,1),%rcx
4338         movq    %r11,%r12
4339         vmovdqa %ymm10,64(%rsp)
4340         vpalignr        $8,%ymm3,%ymm4,%ymm8
4341         addq    96+256(%rsp),%rbx
4342         andq    %r10,%r12
4343         rorxq   $41,%r10,%r13
4344         vpalignr        $8,%ymm7,%ymm0,%ymm11
4345         rorxq   $18,%r10,%r15
4346         leaq    (%rcx,%r14,1),%rcx
4347         leaq    (%rbx,%r12,1),%rbx
4348         vpsrlq  $1,%ymm8,%ymm10
4349         andnq   %rax,%r10,%r12
4350         xorq    %r15,%r13
4351         rorxq   $14,%r10,%r14
4352         vpaddq  %ymm11,%ymm3,%ymm3
4353         vpsrlq  $7,%ymm8,%ymm11
4354         leaq    (%rbx,%r12,1),%rbx
4355         xorq    %r14,%r13
4356         movq    %rcx,%r15
4357         vpsllq  $56,%ymm8,%ymm9
4358         vpxor   %ymm10,%ymm11,%ymm8
4359         rorxq   $39,%rcx,%r12
4360         leaq    (%rbx,%r13,1),%rbx
4361         xorq    %rdx,%r15
4362         vpsrlq  $7,%ymm10,%ymm10
4363         vpxor   %ymm9,%ymm8,%ymm8
4364         rorxq   $34,%rcx,%r14
4365         rorxq   $28,%rcx,%r13
4366         leaq    (%r9,%rbx,1),%r9
4367         vpsllq  $7,%ymm9,%ymm9
4368         vpxor   %ymm10,%ymm8,%ymm8
4369         andq    %r15,%rdi
4370         xorq    %r12,%r14
4371         xorq    %rdx,%rdi
4372         vpsrlq  $6,%ymm2,%ymm11
4373         vpxor   %ymm9,%ymm8,%ymm8
4374         xorq    %r13,%r14
4375         leaq    (%rbx,%rdi,1),%rbx
4376         movq    %r10,%r12
4377         vpsllq  $3,%ymm2,%ymm10
4378         vpaddq  %ymm8,%ymm3,%ymm3
4379         addq    104+256(%rsp),%rax
4380         andq    %r9,%r12
4381         rorxq   $41,%r9,%r13
4382         vpsrlq  $19,%ymm2,%ymm9
4383         vpxor   %ymm10,%ymm11,%ymm11
4384         rorxq   $18,%r9,%rdi
4385         leaq    (%rbx,%r14,1),%rbx
4386         leaq    (%rax,%r12,1),%rax
4387         vpsllq  $42,%ymm10,%ymm10
4388         vpxor   %ymm9,%ymm11,%ymm11
4389         andnq   %r11,%r9,%r12
4390         xorq    %rdi,%r13
4391         rorxq   $14,%r9,%r14
4392         vpsrlq  $42,%ymm9,%ymm9
4393         vpxor   %ymm10,%ymm11,%ymm11
4394         leaq    (%rax,%r12,1),%rax
4395         xorq    %r14,%r13
4396         movq    %rbx,%rdi
4397         vpxor   %ymm9,%ymm11,%ymm11
4398         rorxq   $39,%rbx,%r12
4399         leaq    (%rax,%r13,1),%rax
4400         xorq    %rcx,%rdi
4401         vpaddq  %ymm11,%ymm3,%ymm3
4402         rorxq   $34,%rbx,%r14
4403         rorxq   $28,%rbx,%r13
4404         leaq    (%r8,%rax,1),%r8
4405         vpaddq  -32(%rbp),%ymm3,%ymm10
4406         andq    %rdi,%r15
4407         xorq    %r12,%r14
4408         xorq    %rcx,%r15
4409         xorq    %r13,%r14
4410         leaq    (%rax,%r15,1),%rax
4411         movq    %r9,%r12
4412         vmovdqa %ymm10,96(%rsp)
4413         leaq    -128(%rsp),%rsp
4414         vpalignr        $8,%ymm4,%ymm5,%ymm8
4415         addq    0+256(%rsp),%r11
4416         andq    %r8,%r12
4417         rorxq   $41,%r8,%r13
4418         vpalignr        $8,%ymm0,%ymm1,%ymm11
4419         rorxq   $18,%r8,%r15
4420         leaq    (%rax,%r14,1),%rax
4421         leaq    (%r11,%r12,1),%r11
4422         vpsrlq  $1,%ymm8,%ymm10
4423         andnq   %r10,%r8,%r12
4424         xorq    %r15,%r13
4425         rorxq   $14,%r8,%r14
4426         vpaddq  %ymm11,%ymm4,%ymm4
4427         vpsrlq  $7,%ymm8,%ymm11
4428         leaq    (%r11,%r12,1),%r11
4429         xorq    %r14,%r13
4430         movq    %rax,%r15
4431         vpsllq  $56,%ymm8,%ymm9
4432         vpxor   %ymm10,%ymm11,%ymm8
4433         rorxq   $39,%rax,%r12
4434         leaq    (%r11,%r13,1),%r11
4435         xorq    %rbx,%r15
4436         vpsrlq  $7,%ymm10,%ymm10
4437         vpxor   %ymm9,%ymm8,%ymm8
4438         rorxq   $34,%rax,%r14
4439         rorxq   $28,%rax,%r13
4440         leaq    (%rdx,%r11,1),%rdx
4441         vpsllq  $7,%ymm9,%ymm9
4442         vpxor   %ymm10,%ymm8,%ymm8
4443         andq    %r15,%rdi
4444         xorq    %r12,%r14
4445         xorq    %rbx,%rdi
4446         vpsrlq  $6,%ymm3,%ymm11
4447         vpxor   %ymm9,%ymm8,%ymm8
4448         xorq    %r13,%r14
4449         leaq    (%r11,%rdi,1),%r11
4450         movq    %r8,%r12
4451         vpsllq  $3,%ymm3,%ymm10
4452         vpaddq  %ymm8,%ymm4,%ymm4
4453         addq    8+256(%rsp),%r10
4454         andq    %rdx,%r12
4455         rorxq   $41,%rdx,%r13
4456         vpsrlq  $19,%ymm3,%ymm9
4457         vpxor   %ymm10,%ymm11,%ymm11
4458         rorxq   $18,%rdx,%rdi
4459         leaq    (%r11,%r14,1),%r11
4460         leaq    (%r10,%r12,1),%r10
4461         vpsllq  $42,%ymm10,%ymm10
4462         vpxor   %ymm9,%ymm11,%ymm11
4463         andnq   %r9,%rdx,%r12
4464         xorq    %rdi,%r13
4465         rorxq   $14,%rdx,%r14
4466         vpsrlq  $42,%ymm9,%ymm9
4467         vpxor   %ymm10,%ymm11,%ymm11
4468         leaq    (%r10,%r12,1),%r10
4469         xorq    %r14,%r13
4470         movq    %r11,%rdi
4471         vpxor   %ymm9,%ymm11,%ymm11
4472         rorxq   $39,%r11,%r12
4473         leaq    (%r10,%r13,1),%r10
4474         xorq    %rax,%rdi
4475         vpaddq  %ymm11,%ymm4,%ymm4
4476         rorxq   $34,%r11,%r14
4477         rorxq   $28,%r11,%r13
4478         leaq    (%rcx,%r10,1),%rcx
4479         vpaddq  0(%rbp),%ymm4,%ymm10
4480         andq    %rdi,%r15
4481         xorq    %r12,%r14
4482         xorq    %rax,%r15
4483         xorq    %r13,%r14
4484         leaq    (%r10,%r15,1),%r10
4485         movq    %rdx,%r12
4486         vmovdqa %ymm10,0(%rsp)
4487         vpalignr        $8,%ymm5,%ymm6,%ymm8
4488         addq    32+256(%rsp),%r9
4489         andq    %rcx,%r12
4490         rorxq   $41,%rcx,%r13
4491         vpalignr        $8,%ymm1,%ymm2,%ymm11
4492         rorxq   $18,%rcx,%r15
4493         leaq    (%r10,%r14,1),%r10
4494         leaq    (%r9,%r12,1),%r9
4495         vpsrlq  $1,%ymm8,%ymm10
4496         andnq   %r8,%rcx,%r12
4497         xorq    %r15,%r13
4498         rorxq   $14,%rcx,%r14
4499         vpaddq  %ymm11,%ymm5,%ymm5
4500         vpsrlq  $7,%ymm8,%ymm11
4501         leaq    (%r9,%r12,1),%r9
4502         xorq    %r14,%r13
4503         movq    %r10,%r15
4504         vpsllq  $56,%ymm8,%ymm9
4505         vpxor   %ymm10,%ymm11,%ymm8
4506         rorxq   $39,%r10,%r12
4507         leaq    (%r9,%r13,1),%r9
4508         xorq    %r11,%r15
4509         vpsrlq  $7,%ymm10,%ymm10
4510         vpxor   %ymm9,%ymm8,%ymm8
4511         rorxq   $34,%r10,%r14
4512         rorxq   $28,%r10,%r13
4513         leaq    (%rbx,%r9,1),%rbx
4514         vpsllq  $7,%ymm9,%ymm9
4515         vpxor   %ymm10,%ymm8,%ymm8
4516         andq    %r15,%rdi
4517         xorq    %r12,%r14
4518         xorq    %r11,%rdi
4519         vpsrlq  $6,%ymm4,%ymm11
4520         vpxor   %ymm9,%ymm8,%ymm8
4521         xorq    %r13,%r14
4522         leaq    (%r9,%rdi,1),%r9
4523         movq    %rcx,%r12
4524         vpsllq  $3,%ymm4,%ymm10
4525         vpaddq  %ymm8,%ymm5,%ymm5
4526         addq    40+256(%rsp),%r8
4527         andq    %rbx,%r12
4528         rorxq   $41,%rbx,%r13
4529         vpsrlq  $19,%ymm4,%ymm9
4530         vpxor   %ymm10,%ymm11,%ymm11
4531         rorxq   $18,%rbx,%rdi
4532         leaq    (%r9,%r14,1),%r9
4533         leaq    (%r8,%r12,1),%r8
4534         vpsllq  $42,%ymm10,%ymm10
4535         vpxor   %ymm9,%ymm11,%ymm11
4536         andnq   %rdx,%rbx,%r12
4537         xorq    %rdi,%r13
4538         rorxq   $14,%rbx,%r14
4539         vpsrlq  $42,%ymm9,%ymm9
4540         vpxor   %ymm10,%ymm11,%ymm11
4541         leaq    (%r8,%r12,1),%r8
4542         xorq    %r14,%r13
4543         movq    %r9,%rdi
4544         vpxor   %ymm9,%ymm11,%ymm11
4545         rorxq   $39,%r9,%r12
4546         leaq    (%r8,%r13,1),%r8
4547         xorq    %r10,%rdi
4548         vpaddq  %ymm11,%ymm5,%ymm5
4549         rorxq   $34,%r9,%r14
4550         rorxq   $28,%r9,%r13
4551         leaq    (%rax,%r8,1),%rax
4552         vpaddq  32(%rbp),%ymm5,%ymm10
4553         andq    %rdi,%r15
4554         xorq    %r12,%r14
4555         xorq    %r10,%r15
4556         xorq    %r13,%r14
4557         leaq    (%r8,%r15,1),%r8
4558         movq    %rbx,%r12
4559         vmovdqa %ymm10,32(%rsp)
4560         vpalignr        $8,%ymm6,%ymm7,%ymm8
4561         addq    64+256(%rsp),%rdx
4562         andq    %rax,%r12
4563         rorxq   $41,%rax,%r13
4564         vpalignr        $8,%ymm2,%ymm3,%ymm11
4565         rorxq   $18,%rax,%r15
4566         leaq    (%r8,%r14,1),%r8
4567         leaq    (%rdx,%r12,1),%rdx
4568         vpsrlq  $1,%ymm8,%ymm10
4569         andnq   %rcx,%rax,%r12
4570         xorq    %r15,%r13
4571         rorxq   $14,%rax,%r14
4572         vpaddq  %ymm11,%ymm6,%ymm6
4573         vpsrlq  $7,%ymm8,%ymm11
4574         leaq    (%rdx,%r12,1),%rdx
4575         xorq    %r14,%r13
4576         movq    %r8,%r15
4577         vpsllq  $56,%ymm8,%ymm9
4578         vpxor   %ymm10,%ymm11,%ymm8
4579         rorxq   $39,%r8,%r12
4580         leaq    (%rdx,%r13,1),%rdx
4581         xorq    %r9,%r15
4582         vpsrlq  $7,%ymm10,%ymm10
4583         vpxor   %ymm9,%ymm8,%ymm8
4584         rorxq   $34,%r8,%r14
4585         rorxq   $28,%r8,%r13
4586         leaq    (%r11,%rdx,1),%r11
4587         vpsllq  $7,%ymm9,%ymm9
4588         vpxor   %ymm10,%ymm8,%ymm8
4589         andq    %r15,%rdi
4590         xorq    %r12,%r14
4591         xorq    %r9,%rdi
4592         vpsrlq  $6,%ymm5,%ymm11
4593         vpxor   %ymm9,%ymm8,%ymm8
4594         xorq    %r13,%r14
4595         leaq    (%rdx,%rdi,1),%rdx
4596         movq    %rax,%r12
4597         vpsllq  $3,%ymm5,%ymm10
4598         vpaddq  %ymm8,%ymm6,%ymm6
4599         addq    72+256(%rsp),%rcx
4600         andq    %r11,%r12
4601         rorxq   $41,%r11,%r13
4602         vpsrlq  $19,%ymm5,%ymm9
4603         vpxor   %ymm10,%ymm11,%ymm11
4604         rorxq   $18,%r11,%rdi
4605         leaq    (%rdx,%r14,1),%rdx
4606         leaq    (%rcx,%r12,1),%rcx
4607         vpsllq  $42,%ymm10,%ymm10
4608         vpxor   %ymm9,%ymm11,%ymm11
4609         andnq   %rbx,%r11,%r12
4610         xorq    %rdi,%r13
4611         rorxq   $14,%r11,%r14
4612         vpsrlq  $42,%ymm9,%ymm9
4613         vpxor   %ymm10,%ymm11,%ymm11
4614         leaq    (%rcx,%r12,1),%rcx
4615         xorq    %r14,%r13
4616         movq    %rdx,%rdi
4617         vpxor   %ymm9,%ymm11,%ymm11
4618         rorxq   $39,%rdx,%r12
4619         leaq    (%rcx,%r13,1),%rcx
4620         xorq    %r8,%rdi
4621         vpaddq  %ymm11,%ymm6,%ymm6
4622         rorxq   $34,%rdx,%r14
4623         rorxq   $28,%rdx,%r13
4624         leaq    (%r10,%rcx,1),%r10
4625         vpaddq  64(%rbp),%ymm6,%ymm10
4626         andq    %rdi,%r15
4627         xorq    %r12,%r14
4628         xorq    %r8,%r15
4629         xorq    %r13,%r14
4630         leaq    (%rcx,%r15,1),%rcx
4631         movq    %r11,%r12
4632         vmovdqa %ymm10,64(%rsp)
4633         vpalignr        $8,%ymm7,%ymm0,%ymm8
4634         addq    96+256(%rsp),%rbx
4635         andq    %r10,%r12
4636         rorxq   $41,%r10,%r13
4637         vpalignr        $8,%ymm3,%ymm4,%ymm11
4638         rorxq   $18,%r10,%r15
4639         leaq    (%rcx,%r14,1),%rcx
4640         leaq    (%rbx,%r12,1),%rbx
4641         vpsrlq  $1,%ymm8,%ymm10
4642         andnq   %rax,%r10,%r12
4643         xorq    %r15,%r13
4644         rorxq   $14,%r10,%r14
4645         vpaddq  %ymm11,%ymm7,%ymm7
4646         vpsrlq  $7,%ymm8,%ymm11
4647         leaq    (%rbx,%r12,1),%rbx
4648         xorq    %r14,%r13
4649         movq    %rcx,%r15
4650         vpsllq  $56,%ymm8,%ymm9
4651         vpxor   %ymm10,%ymm11,%ymm8
4652         rorxq   $39,%rcx,%r12
4653         leaq    (%rbx,%r13,1),%rbx
4654         xorq    %rdx,%r15
4655         vpsrlq  $7,%ymm10,%ymm10
4656         vpxor   %ymm9,%ymm8,%ymm8
4657         rorxq   $34,%rcx,%r14
4658         rorxq   $28,%rcx,%r13
4659         leaq    (%r9,%rbx,1),%r9
4660         vpsllq  $7,%ymm9,%ymm9
4661         vpxor   %ymm10,%ymm8,%ymm8
4662         andq    %r15,%rdi
4663         xorq    %r12,%r14
4664         xorq    %rdx,%rdi
4665         vpsrlq  $6,%ymm6,%ymm11
4666         vpxor   %ymm9,%ymm8,%ymm8
4667         xorq    %r13,%r14
4668         leaq    (%rbx,%rdi,1),%rbx
4669         movq    %r10,%r12
4670         vpsllq  $3,%ymm6,%ymm10
4671         vpaddq  %ymm8,%ymm7,%ymm7
4672         addq    104+256(%rsp),%rax
4673         andq    %r9,%r12
4674         rorxq   $41,%r9,%r13
4675         vpsrlq  $19,%ymm6,%ymm9
4676         vpxor   %ymm10,%ymm11,%ymm11
4677         rorxq   $18,%r9,%rdi
4678         leaq    (%rbx,%r14,1),%rbx
4679         leaq    (%rax,%r12,1),%rax
4680         vpsllq  $42,%ymm10,%ymm10
4681         vpxor   %ymm9,%ymm11,%ymm11
4682         andnq   %r11,%r9,%r12
4683         xorq    %rdi,%r13
4684         rorxq   $14,%r9,%r14
4685         vpsrlq  $42,%ymm9,%ymm9
4686         vpxor   %ymm10,%ymm11,%ymm11
4687         leaq    (%rax,%r12,1),%rax
4688         xorq    %r14,%r13
4689         movq    %rbx,%rdi
4690         vpxor   %ymm9,%ymm11,%ymm11
4691         rorxq   $39,%rbx,%r12
4692         leaq    (%rax,%r13,1),%rax
4693         xorq    %rcx,%rdi
4694         vpaddq  %ymm11,%ymm7,%ymm7
4695         rorxq   $34,%rbx,%r14
4696         rorxq   $28,%rbx,%r13
4697         leaq    (%r8,%rax,1),%r8
4698         vpaddq  96(%rbp),%ymm7,%ymm10
4699         andq    %rdi,%r15
4700         xorq    %r12,%r14
4701         xorq    %rcx,%r15
4702         xorq    %r13,%r14
4703         leaq    (%rax,%r15,1),%rax
4704         movq    %r9,%r12
4705         vmovdqa %ymm10,96(%rsp)
4706         leaq    256(%rbp),%rbp
4707         cmpb    $0,-121(%rbp)
4708         jne     .Lavx2_00_47
4709         addq    0+128(%rsp),%r11
4710         andq    %r8,%r12
4711         rorxq   $41,%r8,%r13
4712         rorxq   $18,%r8,%r15
4713         leaq    (%rax,%r14,1),%rax
4714         leaq    (%r11,%r12,1),%r11
4715         andnq   %r10,%r8,%r12
4716         xorq    %r15,%r13
4717         rorxq   $14,%r8,%r14
4718         leaq    (%r11,%r12,1),%r11
4719         xorq    %r14,%r13
4720         movq    %rax,%r15
4721         rorxq   $39,%rax,%r12
4722         leaq    (%r11,%r13,1),%r11
4723         xorq    %rbx,%r15
4724         rorxq   $34,%rax,%r14
4725         rorxq   $28,%rax,%r13
4726         leaq    (%rdx,%r11,1),%rdx
4727         andq    %r15,%rdi
4728         xorq    %r12,%r14
4729         xorq    %rbx,%rdi
4730         xorq    %r13,%r14
4731         leaq    (%r11,%rdi,1),%r11
4732         movq    %r8,%r12
4733         addq    8+128(%rsp),%r10
4734         andq    %rdx,%r12
4735         rorxq   $41,%rdx,%r13
4736         rorxq   $18,%rdx,%rdi
4737         leaq    (%r11,%r14,1),%r11
4738         leaq    (%r10,%r12,1),%r10
4739         andnq   %r9,%rdx,%r12
4740         xorq    %rdi,%r13
4741         rorxq   $14,%rdx,%r14
4742         leaq    (%r10,%r12,1),%r10
4743         xorq    %r14,%r13
4744         movq    %r11,%rdi
4745         rorxq   $39,%r11,%r12
4746         leaq    (%r10,%r13,1),%r10
4747         xorq    %rax,%rdi
4748         rorxq   $34,%r11,%r14
4749         rorxq   $28,%r11,%r13
4750         leaq    (%rcx,%r10,1),%rcx
4751         andq    %rdi,%r15
4752         xorq    %r12,%r14
4753         xorq    %rax,%r15
4754         xorq    %r13,%r14
4755         leaq    (%r10,%r15,1),%r10
4756         movq    %rdx,%r12
4757         addq    32+128(%rsp),%r9
4758         andq    %rcx,%r12
4759         rorxq   $41,%rcx,%r13
4760         rorxq   $18,%rcx,%r15
4761         leaq    (%r10,%r14,1),%r10
4762         leaq    (%r9,%r12,1),%r9
4763         andnq   %r8,%rcx,%r12
4764         xorq    %r15,%r13
4765         rorxq   $14,%rcx,%r14
4766         leaq    (%r9,%r12,1),%r9
4767         xorq    %r14,%r13
4768         movq    %r10,%r15
4769         rorxq   $39,%r10,%r12
4770         leaq    (%r9,%r13,1),%r9
4771         xorq    %r11,%r15
4772         rorxq   $34,%r10,%r14
4773         rorxq   $28,%r10,%r13
4774         leaq    (%rbx,%r9,1),%rbx
4775         andq    %r15,%rdi
4776         xorq    %r12,%r14
4777         xorq    %r11,%rdi
4778         xorq    %r13,%r14
4779         leaq    (%r9,%rdi,1),%r9
4780         movq    %rcx,%r12
4781         addq    40+128(%rsp),%r8
4782         andq    %rbx,%r12
4783         rorxq   $41,%rbx,%r13
4784         rorxq   $18,%rbx,%rdi
4785         leaq    (%r9,%r14,1),%r9
4786         leaq    (%r8,%r12,1),%r8
4787         andnq   %rdx,%rbx,%r12
4788         xorq    %rdi,%r13
4789         rorxq   $14,%rbx,%r14
4790         leaq    (%r8,%r12,1),%r8
4791         xorq    %r14,%r13
4792         movq    %r9,%rdi
4793         rorxq   $39,%r9,%r12
4794         leaq    (%r8,%r13,1),%r8
4795         xorq    %r10,%rdi
4796         rorxq   $34,%r9,%r14
4797         rorxq   $28,%r9,%r13
4798         leaq    (%rax,%r8,1),%rax
4799         andq    %rdi,%r15
4800         xorq    %r12,%r14
4801         xorq    %r10,%r15
4802         xorq    %r13,%r14
4803         leaq    (%r8,%r15,1),%r8
4804         movq    %rbx,%r12
4805         addq    64+128(%rsp),%rdx
4806         andq    %rax,%r12
4807         rorxq   $41,%rax,%r13
4808         rorxq   $18,%rax,%r15
4809         leaq    (%r8,%r14,1),%r8
4810         leaq    (%rdx,%r12,1),%rdx
4811         andnq   %rcx,%rax,%r12
4812         xorq    %r15,%r13
4813         rorxq   $14,%rax,%r14
4814         leaq    (%rdx,%r12,1),%rdx
4815         xorq    %r14,%r13
4816         movq    %r8,%r15
4817         rorxq   $39,%r8,%r12
4818         leaq    (%rdx,%r13,1),%rdx
4819         xorq    %r9,%r15
4820         rorxq   $34,%r8,%r14
4821         rorxq   $28,%r8,%r13
4822         leaq    (%r11,%rdx,1),%r11
4823         andq    %r15,%rdi
4824         xorq    %r12,%r14
4825         xorq    %r9,%rdi
4826         xorq    %r13,%r14
4827         leaq    (%rdx,%rdi,1),%rdx
4828         movq    %rax,%r12
4829         addq    72+128(%rsp),%rcx
4830         andq    %r11,%r12
4831         rorxq   $41,%r11,%r13
4832         rorxq   $18,%r11,%rdi
4833         leaq    (%rdx,%r14,1),%rdx
4834         leaq    (%rcx,%r12,1),%rcx
4835         andnq   %rbx,%r11,%r12
4836         xorq    %rdi,%r13
4837         rorxq   $14,%r11,%r14
4838         leaq    (%rcx,%r12,1),%rcx
4839         xorq    %r14,%r13
4840         movq    %rdx,%rdi
4841         rorxq   $39,%rdx,%r12
4842         leaq    (%rcx,%r13,1),%rcx
4843         xorq    %r8,%rdi
4844         rorxq   $34,%rdx,%r14
4845         rorxq   $28,%rdx,%r13
4846         leaq    (%r10,%rcx,1),%r10
4847         andq    %rdi,%r15
4848         xorq    %r12,%r14
4849         xorq    %r8,%r15
4850         xorq    %r13,%r14
4851         leaq    (%rcx,%r15,1),%rcx
4852         movq    %r11,%r12
4853         addq    96+128(%rsp),%rbx
4854         andq    %r10,%r12
4855         rorxq   $41,%r10,%r13
4856         rorxq   $18,%r10,%r15
4857         leaq    (%rcx,%r14,1),%rcx
4858         leaq    (%rbx,%r12,1),%rbx
4859         andnq   %rax,%r10,%r12
4860         xorq    %r15,%r13
4861         rorxq   $14,%r10,%r14
4862         leaq    (%rbx,%r12,1),%rbx
4863         xorq    %r14,%r13
4864         movq    %rcx,%r15
4865         rorxq   $39,%rcx,%r12
4866         leaq    (%rbx,%r13,1),%rbx
4867         xorq    %rdx,%r15
4868         rorxq   $34,%rcx,%r14
4869         rorxq   $28,%rcx,%r13
4870         leaq    (%r9,%rbx,1),%r9
4871         andq    %r15,%rdi
4872         xorq    %r12,%r14
4873         xorq    %rdx,%rdi
4874         xorq    %r13,%r14
4875         leaq    (%rbx,%rdi,1),%rbx
4876         movq    %r10,%r12
4877         addq    104+128(%rsp),%rax
4878         andq    %r9,%r12
4879         rorxq   $41,%r9,%r13
4880         rorxq   $18,%r9,%rdi
4881         leaq    (%rbx,%r14,1),%rbx
4882         leaq    (%rax,%r12,1),%rax
4883         andnq   %r11,%r9,%r12
4884         xorq    %rdi,%r13
4885         rorxq   $14,%r9,%r14
4886         leaq    (%rax,%r12,1),%rax
4887         xorq    %r14,%r13
4888         movq    %rbx,%rdi
4889         rorxq   $39,%rbx,%r12
4890         leaq    (%rax,%r13,1),%rax
4891         xorq    %rcx,%rdi
4892         rorxq   $34,%rbx,%r14
4893         rorxq   $28,%rbx,%r13
4894         leaq    (%r8,%rax,1),%r8
4895         andq    %rdi,%r15
4896         xorq    %r12,%r14
4897         xorq    %rcx,%r15
4898         xorq    %r13,%r14
4899         leaq    (%rax,%r15,1),%rax
4900         movq    %r9,%r12
4901         addq    0(%rsp),%r11
4902         andq    %r8,%r12
4903         rorxq   $41,%r8,%r13
4904         rorxq   $18,%r8,%r15
4905         leaq    (%rax,%r14,1),%rax
4906         leaq    (%r11,%r12,1),%r11
4907         andnq   %r10,%r8,%r12
4908         xorq    %r15,%r13
4909         rorxq   $14,%r8,%r14
4910         leaq    (%r11,%r12,1),%r11
4911         xorq    %r14,%r13
4912         movq    %rax,%r15
4913         rorxq   $39,%rax,%r12
4914         leaq    (%r11,%r13,1),%r11
4915         xorq    %rbx,%r15
4916         rorxq   $34,%rax,%r14
4917         rorxq   $28,%rax,%r13
4918         leaq    (%rdx,%r11,1),%rdx
4919         andq    %r15,%rdi
4920         xorq    %r12,%r14
4921         xorq    %rbx,%rdi
4922         xorq    %r13,%r14
4923         leaq    (%r11,%rdi,1),%r11
4924         movq    %r8,%r12
4925         addq    8(%rsp),%r10
4926         andq    %rdx,%r12
4927         rorxq   $41,%rdx,%r13
4928         rorxq   $18,%rdx,%rdi
4929         leaq    (%r11,%r14,1),%r11
4930         leaq    (%r10,%r12,1),%r10
4931         andnq   %r9,%rdx,%r12
4932         xorq    %rdi,%r13
4933         rorxq   $14,%rdx,%r14
4934         leaq    (%r10,%r12,1),%r10
4935         xorq    %r14,%r13
4936         movq    %r11,%rdi
4937         rorxq   $39,%r11,%r12
4938         leaq    (%r10,%r13,1),%r10
4939         xorq    %rax,%rdi
4940         rorxq   $34,%r11,%r14
4941         rorxq   $28,%r11,%r13
4942         leaq    (%rcx,%r10,1),%rcx
4943         andq    %rdi,%r15
4944         xorq    %r12,%r14
4945         xorq    %rax,%r15
4946         xorq    %r13,%r14
4947         leaq    (%r10,%r15,1),%r10
4948         movq    %rdx,%r12
4949         addq    32(%rsp),%r9
4950         andq    %rcx,%r12
4951         rorxq   $41,%rcx,%r13
4952         rorxq   $18,%rcx,%r15
4953         leaq    (%r10,%r14,1),%r10
4954         leaq    (%r9,%r12,1),%r9
4955         andnq   %r8,%rcx,%r12
4956         xorq    %r15,%r13
4957         rorxq   $14,%rcx,%r14
4958         leaq    (%r9,%r12,1),%r9
4959         xorq    %r14,%r13
4960         movq    %r10,%r15
4961         rorxq   $39,%r10,%r12
4962         leaq    (%r9,%r13,1),%r9
4963         xorq    %r11,%r15
4964         rorxq   $34,%r10,%r14
4965         rorxq   $28,%r10,%r13
4966         leaq    (%rbx,%r9,1),%rbx
4967         andq    %r15,%rdi
4968         xorq    %r12,%r14
4969         xorq    %r11,%rdi
4970         xorq    %r13,%r14
4971         leaq    (%r9,%rdi,1),%r9
4972         movq    %rcx,%r12
4973         addq    40(%rsp),%r8
4974         andq    %rbx,%r12
4975         rorxq   $41,%rbx,%r13
4976         rorxq   $18,%rbx,%rdi
4977         leaq    (%r9,%r14,1),%r9
4978         leaq    (%r8,%r12,1),%r8
4979         andnq   %rdx,%rbx,%r12
4980         xorq    %rdi,%r13
4981         rorxq   $14,%rbx,%r14
4982         leaq    (%r8,%r12,1),%r8
4983         xorq    %r14,%r13
4984         movq    %r9,%rdi
4985         rorxq   $39,%r9,%r12
4986         leaq    (%r8,%r13,1),%r8
4987         xorq    %r10,%rdi
4988         rorxq   $34,%r9,%r14
4989         rorxq   $28,%r9,%r13
4990         leaq    (%rax,%r8,1),%rax
4991         andq    %rdi,%r15
4992         xorq    %r12,%r14
4993         xorq    %r10,%r15
4994         xorq    %r13,%r14
4995         leaq    (%r8,%r15,1),%r8
4996         movq    %rbx,%r12
4997         addq    64(%rsp),%rdx
4998         andq    %rax,%r12
4999         rorxq   $41,%rax,%r13
5000         rorxq   $18,%rax,%r15
5001         leaq    (%r8,%r14,1),%r8
5002         leaq    (%rdx,%r12,1),%rdx
5003         andnq   %rcx,%rax,%r12
5004         xorq    %r15,%r13
5005         rorxq   $14,%rax,%r14
5006         leaq    (%rdx,%r12,1),%rdx
5007         xorq    %r14,%r13
5008         movq    %r8,%r15
5009         rorxq   $39,%r8,%r12
5010         leaq    (%rdx,%r13,1),%rdx
5011         xorq    %r9,%r15
5012         rorxq   $34,%r8,%r14
5013         rorxq   $28,%r8,%r13
5014         leaq    (%r11,%rdx,1),%r11
5015         andq    %r15,%rdi
5016         xorq    %r12,%r14
5017         xorq    %r9,%rdi
5018         xorq    %r13,%r14
5019         leaq    (%rdx,%rdi,1),%rdx
5020         movq    %rax,%r12
5021         addq    72(%rsp),%rcx
5022         andq    %r11,%r12
5023         rorxq   $41,%r11,%r13
5024         rorxq   $18,%r11,%rdi
5025         leaq    (%rdx,%r14,1),%rdx
5026         leaq    (%rcx,%r12,1),%rcx
5027         andnq   %rbx,%r11,%r12
5028         xorq    %rdi,%r13
5029         rorxq   $14,%r11,%r14
5030         leaq    (%rcx,%r12,1),%rcx
5031         xorq    %r14,%r13
5032         movq    %rdx,%rdi
5033         rorxq   $39,%rdx,%r12
5034         leaq    (%rcx,%r13,1),%rcx
5035         xorq    %r8,%rdi
5036         rorxq   $34,%rdx,%r14
5037         rorxq   $28,%rdx,%r13
5038         leaq    (%r10,%rcx,1),%r10
5039         andq    %rdi,%r15
5040         xorq    %r12,%r14
5041         xorq    %r8,%r15
5042         xorq    %r13,%r14
5043         leaq    (%rcx,%r15,1),%rcx
5044         movq    %r11,%r12
5045         addq    96(%rsp),%rbx
5046         andq    %r10,%r12
5047         rorxq   $41,%r10,%r13
5048         rorxq   $18,%r10,%r15
5049         leaq    (%rcx,%r14,1),%rcx
5050         leaq    (%rbx,%r12,1),%rbx
5051         andnq   %rax,%r10,%r12
5052         xorq    %r15,%r13
5053         rorxq   $14,%r10,%r14
5054         leaq    (%rbx,%r12,1),%rbx
5055         xorq    %r14,%r13
5056         movq    %rcx,%r15
5057         rorxq   $39,%rcx,%r12
5058         leaq    (%rbx,%r13,1),%rbx
5059         xorq    %rdx,%r15
5060         rorxq   $34,%rcx,%r14
5061         rorxq   $28,%rcx,%r13
5062         leaq    (%r9,%rbx,1),%r9
5063         andq    %r15,%rdi
5064         xorq    %r12,%r14
5065         xorq    %rdx,%rdi
5066         xorq    %r13,%r14
5067         leaq    (%rbx,%rdi,1),%rbx
5068         movq    %r10,%r12
5069         addq    104(%rsp),%rax
5070         andq    %r9,%r12
5071         rorxq   $41,%r9,%r13
5072         rorxq   $18,%r9,%rdi
5073         leaq    (%rbx,%r14,1),%rbx
5074         leaq    (%rax,%r12,1),%rax
5075         andnq   %r11,%r9,%r12
5076         xorq    %rdi,%r13
5077         rorxq   $14,%r9,%r14
5078         leaq    (%rax,%r12,1),%rax
5079         xorq    %r14,%r13
5080         movq    %rbx,%rdi
5081         rorxq   $39,%rbx,%r12
5082         leaq    (%rax,%r13,1),%rax
5083         xorq    %rcx,%rdi
5084         rorxq   $34,%rbx,%r14
5085         rorxq   $28,%rbx,%r13
5086         leaq    (%r8,%rax,1),%r8
5087         andq    %rdi,%r15
5088         xorq    %r12,%r14
5089         xorq    %rcx,%r15
5090         xorq    %r13,%r14
5091         leaq    (%rax,%r15,1),%rax
5092         movq    %r9,%r12
5093         movq    1280(%rsp),%rdi
5094         addq    %r14,%rax
5095
5096         leaq    1152(%rsp),%rbp
5097
5098         addq    0(%rdi),%rax
5099         addq    8(%rdi),%rbx
5100         addq    16(%rdi),%rcx
5101         addq    24(%rdi),%rdx
5102         addq    32(%rdi),%r8
5103         addq    40(%rdi),%r9
5104         addq    48(%rdi),%r10
5105         addq    56(%rdi),%r11
5106
5107         movq    %rax,0(%rdi)
5108         movq    %rbx,8(%rdi)
5109         movq    %rcx,16(%rdi)
5110         movq    %rdx,24(%rdi)
5111         movq    %r8,32(%rdi)
5112         movq    %r9,40(%rdi)
5113         movq    %r10,48(%rdi)
5114         movq    %r11,56(%rdi)
5115
5116         cmpq    144(%rbp),%rsi
5117         je      .Ldone_avx2
5118
5119         xorq    %r14,%r14
5120         movq    %rbx,%rdi
5121         xorq    %rcx,%rdi
5122         movq    %r9,%r12
5123         jmp     .Lower_avx2
5124 .align  16
5125 .Lower_avx2:
5126         addq    0+16(%rbp),%r11
5127         andq    %r8,%r12
5128         rorxq   $41,%r8,%r13
5129         rorxq   $18,%r8,%r15
5130         leaq    (%rax,%r14,1),%rax
5131         leaq    (%r11,%r12,1),%r11
5132         andnq   %r10,%r8,%r12
5133         xorq    %r15,%r13
5134         rorxq   $14,%r8,%r14
5135         leaq    (%r11,%r12,1),%r11
5136         xorq    %r14,%r13
5137         movq    %rax,%r15
5138         rorxq   $39,%rax,%r12
5139         leaq    (%r11,%r13,1),%r11
5140         xorq    %rbx,%r15
5141         rorxq   $34,%rax,%r14
5142         rorxq   $28,%rax,%r13
5143         leaq    (%rdx,%r11,1),%rdx
5144         andq    %r15,%rdi
5145         xorq    %r12,%r14
5146         xorq    %rbx,%rdi
5147         xorq    %r13,%r14
5148         leaq    (%r11,%rdi,1),%r11
5149         movq    %r8,%r12
5150         addq    8+16(%rbp),%r10
5151         andq    %rdx,%r12
5152         rorxq   $41,%rdx,%r13
5153         rorxq   $18,%rdx,%rdi
5154         leaq    (%r11,%r14,1),%r11
5155         leaq    (%r10,%r12,1),%r10
5156         andnq   %r9,%rdx,%r12
5157         xorq    %rdi,%r13
5158         rorxq   $14,%rdx,%r14
5159         leaq    (%r10,%r12,1),%r10
5160         xorq    %r14,%r13
5161         movq    %r11,%rdi
5162         rorxq   $39,%r11,%r12
5163         leaq    (%r10,%r13,1),%r10
5164         xorq    %rax,%rdi
5165         rorxq   $34,%r11,%r14
5166         rorxq   $28,%r11,%r13
5167         leaq    (%rcx,%r10,1),%rcx
5168         andq    %rdi,%r15
5169         xorq    %r12,%r14
5170         xorq    %rax,%r15
5171         xorq    %r13,%r14
5172         leaq    (%r10,%r15,1),%r10
5173         movq    %rdx,%r12
5174         addq    32+16(%rbp),%r9
5175         andq    %rcx,%r12
5176         rorxq   $41,%rcx,%r13
5177         rorxq   $18,%rcx,%r15
5178         leaq    (%r10,%r14,1),%r10
5179         leaq    (%r9,%r12,1),%r9
5180         andnq   %r8,%rcx,%r12
5181         xorq    %r15,%r13
5182         rorxq   $14,%rcx,%r14
5183         leaq    (%r9,%r12,1),%r9
5184         xorq    %r14,%r13
5185         movq    %r10,%r15
5186         rorxq   $39,%r10,%r12
5187         leaq    (%r9,%r13,1),%r9
5188         xorq    %r11,%r15
5189         rorxq   $34,%r10,%r14
5190         rorxq   $28,%r10,%r13
5191         leaq    (%rbx,%r9,1),%rbx
5192         andq    %r15,%rdi
5193         xorq    %r12,%r14
5194         xorq    %r11,%rdi
5195         xorq    %r13,%r14
5196         leaq    (%r9,%rdi,1),%r9
5197         movq    %rcx,%r12
5198         addq    40+16(%rbp),%r8
5199         andq    %rbx,%r12
5200         rorxq   $41,%rbx,%r13
5201         rorxq   $18,%rbx,%rdi
5202         leaq    (%r9,%r14,1),%r9
5203         leaq    (%r8,%r12,1),%r8
5204         andnq   %rdx,%rbx,%r12
5205         xorq    %rdi,%r13
5206         rorxq   $14,%rbx,%r14
5207         leaq    (%r8,%r12,1),%r8
5208         xorq    %r14,%r13
5209         movq    %r9,%rdi
5210         rorxq   $39,%r9,%r12
5211         leaq    (%r8,%r13,1),%r8
5212         xorq    %r10,%rdi
5213         rorxq   $34,%r9,%r14
5214         rorxq   $28,%r9,%r13
5215         leaq    (%rax,%r8,1),%rax
5216         andq    %rdi,%r15
5217         xorq    %r12,%r14
5218         xorq    %r10,%r15
5219         xorq    %r13,%r14
5220         leaq    (%r8,%r15,1),%r8
5221         movq    %rbx,%r12
5222         addq    64+16(%rbp),%rdx
5223         andq    %rax,%r12
5224         rorxq   $41,%rax,%r13
5225         rorxq   $18,%rax,%r15
5226         leaq    (%r8,%r14,1),%r8
5227         leaq    (%rdx,%r12,1),%rdx
5228         andnq   %rcx,%rax,%r12
5229         xorq    %r15,%r13
5230         rorxq   $14,%rax,%r14
5231         leaq    (%rdx,%r12,1),%rdx
5232         xorq    %r14,%r13
5233         movq    %r8,%r15
5234         rorxq   $39,%r8,%r12
5235         leaq    (%rdx,%r13,1),%rdx
5236         xorq    %r9,%r15
5237         rorxq   $34,%r8,%r14
5238         rorxq   $28,%r8,%r13
5239         leaq    (%r11,%rdx,1),%r11
5240         andq    %r15,%rdi
5241         xorq    %r12,%r14
5242         xorq    %r9,%rdi
5243         xorq    %r13,%r14
5244         leaq    (%rdx,%rdi,1),%rdx
5245         movq    %rax,%r12
5246         addq    72+16(%rbp),%rcx
5247         andq    %r11,%r12
5248         rorxq   $41,%r11,%r13
5249         rorxq   $18,%r11,%rdi
5250         leaq    (%rdx,%r14,1),%rdx
5251         leaq    (%rcx,%r12,1),%rcx
5252         andnq   %rbx,%r11,%r12
5253         xorq    %rdi,%r13
5254         rorxq   $14,%r11,%r14
5255         leaq    (%rcx,%r12,1),%rcx
5256         xorq    %r14,%r13
5257         movq    %rdx,%rdi
5258         rorxq   $39,%rdx,%r12
5259         leaq    (%rcx,%r13,1),%rcx
5260         xorq    %r8,%rdi
5261         rorxq   $34,%rdx,%r14
5262         rorxq   $28,%rdx,%r13
5263         leaq    (%r10,%rcx,1),%r10
5264         andq    %rdi,%r15
5265         xorq    %r12,%r14
5266         xorq    %r8,%r15
5267         xorq    %r13,%r14
5268         leaq    (%rcx,%r15,1),%rcx
5269         movq    %r11,%r12
5270         addq    96+16(%rbp),%rbx
5271         andq    %r10,%r12
5272         rorxq   $41,%r10,%r13
5273         rorxq   $18,%r10,%r15
5274         leaq    (%rcx,%r14,1),%rcx
5275         leaq    (%rbx,%r12,1),%rbx
5276         andnq   %rax,%r10,%r12
5277         xorq    %r15,%r13
5278         rorxq   $14,%r10,%r14
5279         leaq    (%rbx,%r12,1),%rbx
5280         xorq    %r14,%r13
5281         movq    %rcx,%r15
5282         rorxq   $39,%rcx,%r12
5283         leaq    (%rbx,%r13,1),%rbx
5284         xorq    %rdx,%r15
5285         rorxq   $34,%rcx,%r14
5286         rorxq   $28,%rcx,%r13
5287         leaq    (%r9,%rbx,1),%r9
5288         andq    %r15,%rdi
5289         xorq    %r12,%r14
5290         xorq    %rdx,%rdi
5291         xorq    %r13,%r14
5292         leaq    (%rbx,%rdi,1),%rbx
5293         movq    %r10,%r12
5294         addq    104+16(%rbp),%rax
5295         andq    %r9,%r12
5296         rorxq   $41,%r9,%r13
5297         rorxq   $18,%r9,%rdi
5298         leaq    (%rbx,%r14,1),%rbx
5299         leaq    (%rax,%r12,1),%rax
5300         andnq   %r11,%r9,%r12
5301         xorq    %rdi,%r13
5302         rorxq   $14,%r9,%r14
5303         leaq    (%rax,%r12,1),%rax
5304         xorq    %r14,%r13
5305         movq    %rbx,%rdi
5306         rorxq   $39,%rbx,%r12
5307         leaq    (%rax,%r13,1),%rax
5308         xorq    %rcx,%rdi
5309         rorxq   $34,%rbx,%r14
5310         rorxq   $28,%rbx,%r13
5311         leaq    (%r8,%rax,1),%r8
5312         andq    %rdi,%r15
5313         xorq    %r12,%r14
5314         xorq    %rcx,%r15
5315         xorq    %r13,%r14
5316         leaq    (%rax,%r15,1),%rax
5317         movq    %r9,%r12
5318         leaq    -128(%rbp),%rbp
5319         cmpq    %rsp,%rbp
5320         jae     .Lower_avx2
5321
5322         movq    1280(%rsp),%rdi
5323         addq    %r14,%rax
5324
5325         leaq    1152(%rsp),%rsp
5326
5327         addq    0(%rdi),%rax
5328         addq    8(%rdi),%rbx
5329         addq    16(%rdi),%rcx
5330         addq    24(%rdi),%rdx
5331         addq    32(%rdi),%r8
5332         addq    40(%rdi),%r9
5333         leaq    256(%rsi),%rsi
5334         addq    48(%rdi),%r10
5335         movq    %rsi,%r12
5336         addq    56(%rdi),%r11
5337         cmpq    128+16(%rsp),%rsi
5338
5339         movq    %rax,0(%rdi)
5340         cmoveq  %rsp,%r12
5341         movq    %rbx,8(%rdi)
5342         movq    %rcx,16(%rdi)
5343         movq    %rdx,24(%rdi)
5344         movq    %r8,32(%rdi)
5345         movq    %r9,40(%rdi)
5346         movq    %r10,48(%rdi)
5347         movq    %r11,56(%rdi)
5348
5349         jbe     .Loop_avx2
5350         leaq    (%rsp),%rbp
5351
5352 .Ldone_avx2:
5353         leaq    (%rbp),%rsp
5354         movq    128+24(%rsp),%rsi
5355         vzeroupper
5356         movq    (%rsi),%r15
5357         movq    8(%rsi),%r14
5358         movq    16(%rsi),%r13
5359         movq    24(%rsi),%r12
5360         movq    32(%rsi),%rbp
5361         movq    40(%rsi),%rbx
5362         leaq    48(%rsi),%rsp
5363 .Lepilogue_avx2:
5364         .byte   0xf3,0xc3
5365 .size   sha512_block_data_order_avx2,.-sha512_block_data_order_avx2
5366 .section .note.GNU-stack,"",%progbits