VirtualBox

source: vbox/trunk/src/libs/openssl-3.0.1/crypto/genasm-nasm/sha256-x86_64.S@ 94083

Last change on this file since 94083 was 94083, checked in by vboxsync, 3 years ago

libs/openssl-3.0.1: Recreate asm files, bugref:10128

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette