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