Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: third_party/boringssl/win-x86_64/crypto/sha/sha256-x86_64.asm

Issue 2811393005: Roll src/third_party/boringssl/src c8ff30cbe..bc6a76b0e (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 default rel
2 %define XMMWORD
3 %define YMMWORD
4 %define ZMMWORD
5 section .text code align=64
6
7
8 EXTERN OPENSSL_ia32cap_P
9 global sha256_block_data_order
10
11 ALIGN 16
12 sha256_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 lea r11,[OPENSSL_ia32cap_P]
23 mov r9d,DWORD[r11]
24 mov r10d,DWORD[4+r11]
25 mov r11d,DWORD[8+r11]
26 and r9d,1073741824
27 and r10d,268435968
28 or r10d,r9d
29 cmp r10d,1342177792
30 je NEAR $L$avx_shortcut
31 test r10d,512
32 jnz NEAR $L$ssse3_shortcut
33 mov rax,rsp
34 push rbx
35 push rbp
36 push r12
37 push r13
38 push r14
39 push r15
40 shl rdx,4
41 sub rsp,16*4+4*8
42 lea rdx,[rdx*4+rsi]
43 and rsp,-64
44 mov QWORD[((64+0))+rsp],rdi
45 mov QWORD[((64+8))+rsp],rsi
46 mov QWORD[((64+16))+rsp],rdx
47 mov QWORD[((64+24))+rsp],rax
48 $L$prologue:
49
50 mov eax,DWORD[rdi]
51 mov ebx,DWORD[4+rdi]
52 mov ecx,DWORD[8+rdi]
53 mov edx,DWORD[12+rdi]
54 mov r8d,DWORD[16+rdi]
55 mov r9d,DWORD[20+rdi]
56 mov r10d,DWORD[24+rdi]
57 mov r11d,DWORD[28+rdi]
58 jmp NEAR $L$loop
59
60 ALIGN 16
61 $L$loop:
62 mov edi,ebx
63 lea rbp,[K256]
64 xor edi,ecx
65 mov r12d,DWORD[rsi]
66 mov r13d,r8d
67 mov r14d,eax
68 bswap r12d
69 ror r13d,14
70 mov r15d,r9d
71
72 xor r13d,r8d
73 ror r14d,9
74 xor r15d,r10d
75
76 mov DWORD[rsp],r12d
77 xor r14d,eax
78 and r15d,r8d
79
80 ror r13d,5
81 add r12d,r11d
82 xor r15d,r10d
83
84 ror r14d,11
85 xor r13d,r8d
86 add r12d,r15d
87
88 mov r15d,eax
89 add r12d,DWORD[rbp]
90 xor r14d,eax
91
92 xor r15d,ebx
93 ror r13d,6
94 mov r11d,ebx
95
96 and edi,r15d
97 ror r14d,2
98 add r12d,r13d
99
100 xor r11d,edi
101 add edx,r12d
102 add r11d,r12d
103
104 lea rbp,[4+rbp]
105 add r11d,r14d
106 mov r12d,DWORD[4+rsi]
107 mov r13d,edx
108 mov r14d,r11d
109 bswap r12d
110 ror r13d,14
111 mov edi,r8d
112
113 xor r13d,edx
114 ror r14d,9
115 xor edi,r9d
116
117 mov DWORD[4+rsp],r12d
118 xor r14d,r11d
119 and edi,edx
120
121 ror r13d,5
122 add r12d,r10d
123 xor edi,r9d
124
125 ror r14d,11
126 xor r13d,edx
127 add r12d,edi
128
129 mov edi,r11d
130 add r12d,DWORD[rbp]
131 xor r14d,r11d
132
133 xor edi,eax
134 ror r13d,6
135 mov r10d,eax
136
137 and r15d,edi
138 ror r14d,2
139 add r12d,r13d
140
141 xor r10d,r15d
142 add ecx,r12d
143 add r10d,r12d
144
145 lea rbp,[4+rbp]
146 add r10d,r14d
147 mov r12d,DWORD[8+rsi]
148 mov r13d,ecx
149 mov r14d,r10d
150 bswap r12d
151 ror r13d,14
152 mov r15d,edx
153
154 xor r13d,ecx
155 ror r14d,9
156 xor r15d,r8d
157
158 mov DWORD[8+rsp],r12d
159 xor r14d,r10d
160 and r15d,ecx
161
162 ror r13d,5
163 add r12d,r9d
164 xor r15d,r8d
165
166 ror r14d,11
167 xor r13d,ecx
168 add r12d,r15d
169
170 mov r15d,r10d
171 add r12d,DWORD[rbp]
172 xor r14d,r10d
173
174 xor r15d,r11d
175 ror r13d,6
176 mov r9d,r11d
177
178 and edi,r15d
179 ror r14d,2
180 add r12d,r13d
181
182 xor r9d,edi
183 add ebx,r12d
184 add r9d,r12d
185
186 lea rbp,[4+rbp]
187 add r9d,r14d
188 mov r12d,DWORD[12+rsi]
189 mov r13d,ebx
190 mov r14d,r9d
191 bswap r12d
192 ror r13d,14
193 mov edi,ecx
194
195 xor r13d,ebx
196 ror r14d,9
197 xor edi,edx
198
199 mov DWORD[12+rsp],r12d
200 xor r14d,r9d
201 and edi,ebx
202
203 ror r13d,5
204 add r12d,r8d
205 xor edi,edx
206
207 ror r14d,11
208 xor r13d,ebx
209 add r12d,edi
210
211 mov edi,r9d
212 add r12d,DWORD[rbp]
213 xor r14d,r9d
214
215 xor edi,r10d
216 ror r13d,6
217 mov r8d,r10d
218
219 and r15d,edi
220 ror r14d,2
221 add r12d,r13d
222
223 xor r8d,r15d
224 add eax,r12d
225 add r8d,r12d
226
227 lea rbp,[20+rbp]
228 add r8d,r14d
229 mov r12d,DWORD[16+rsi]
230 mov r13d,eax
231 mov r14d,r8d
232 bswap r12d
233 ror r13d,14
234 mov r15d,ebx
235
236 xor r13d,eax
237 ror r14d,9
238 xor r15d,ecx
239
240 mov DWORD[16+rsp],r12d
241 xor r14d,r8d
242 and r15d,eax
243
244 ror r13d,5
245 add r12d,edx
246 xor r15d,ecx
247
248 ror r14d,11
249 xor r13d,eax
250 add r12d,r15d
251
252 mov r15d,r8d
253 add r12d,DWORD[rbp]
254 xor r14d,r8d
255
256 xor r15d,r9d
257 ror r13d,6
258 mov edx,r9d
259
260 and edi,r15d
261 ror r14d,2
262 add r12d,r13d
263
264 xor edx,edi
265 add r11d,r12d
266 add edx,r12d
267
268 lea rbp,[4+rbp]
269 add edx,r14d
270 mov r12d,DWORD[20+rsi]
271 mov r13d,r11d
272 mov r14d,edx
273 bswap r12d
274 ror r13d,14
275 mov edi,eax
276
277 xor r13d,r11d
278 ror r14d,9
279 xor edi,ebx
280
281 mov DWORD[20+rsp],r12d
282 xor r14d,edx
283 and edi,r11d
284
285 ror r13d,5
286 add r12d,ecx
287 xor edi,ebx
288
289 ror r14d,11
290 xor r13d,r11d
291 add r12d,edi
292
293 mov edi,edx
294 add r12d,DWORD[rbp]
295 xor r14d,edx
296
297 xor edi,r8d
298 ror r13d,6
299 mov ecx,r8d
300
301 and r15d,edi
302 ror r14d,2
303 add r12d,r13d
304
305 xor ecx,r15d
306 add r10d,r12d
307 add ecx,r12d
308
309 lea rbp,[4+rbp]
310 add ecx,r14d
311 mov r12d,DWORD[24+rsi]
312 mov r13d,r10d
313 mov r14d,ecx
314 bswap r12d
315 ror r13d,14
316 mov r15d,r11d
317
318 xor r13d,r10d
319 ror r14d,9
320 xor r15d,eax
321
322 mov DWORD[24+rsp],r12d
323 xor r14d,ecx
324 and r15d,r10d
325
326 ror r13d,5
327 add r12d,ebx
328 xor r15d,eax
329
330 ror r14d,11
331 xor r13d,r10d
332 add r12d,r15d
333
334 mov r15d,ecx
335 add r12d,DWORD[rbp]
336 xor r14d,ecx
337
338 xor r15d,edx
339 ror r13d,6
340 mov ebx,edx
341
342 and edi,r15d
343 ror r14d,2
344 add r12d,r13d
345
346 xor ebx,edi
347 add r9d,r12d
348 add ebx,r12d
349
350 lea rbp,[4+rbp]
351 add ebx,r14d
352 mov r12d,DWORD[28+rsi]
353 mov r13d,r9d
354 mov r14d,ebx
355 bswap r12d
356 ror r13d,14
357 mov edi,r10d
358
359 xor r13d,r9d
360 ror r14d,9
361 xor edi,r11d
362
363 mov DWORD[28+rsp],r12d
364 xor r14d,ebx
365 and edi,r9d
366
367 ror r13d,5
368 add r12d,eax
369 xor edi,r11d
370
371 ror r14d,11
372 xor r13d,r9d
373 add r12d,edi
374
375 mov edi,ebx
376 add r12d,DWORD[rbp]
377 xor r14d,ebx
378
379 xor edi,ecx
380 ror r13d,6
381 mov eax,ecx
382
383 and r15d,edi
384 ror r14d,2
385 add r12d,r13d
386
387 xor eax,r15d
388 add r8d,r12d
389 add eax,r12d
390
391 lea rbp,[20+rbp]
392 add eax,r14d
393 mov r12d,DWORD[32+rsi]
394 mov r13d,r8d
395 mov r14d,eax
396 bswap r12d
397 ror r13d,14
398 mov r15d,r9d
399
400 xor r13d,r8d
401 ror r14d,9
402 xor r15d,r10d
403
404 mov DWORD[32+rsp],r12d
405 xor r14d,eax
406 and r15d,r8d
407
408 ror r13d,5
409 add r12d,r11d
410 xor r15d,r10d
411
412 ror r14d,11
413 xor r13d,r8d
414 add r12d,r15d
415
416 mov r15d,eax
417 add r12d,DWORD[rbp]
418 xor r14d,eax
419
420 xor r15d,ebx
421 ror r13d,6
422 mov r11d,ebx
423
424 and edi,r15d
425 ror r14d,2
426 add r12d,r13d
427
428 xor r11d,edi
429 add edx,r12d
430 add r11d,r12d
431
432 lea rbp,[4+rbp]
433 add r11d,r14d
434 mov r12d,DWORD[36+rsi]
435 mov r13d,edx
436 mov r14d,r11d
437 bswap r12d
438 ror r13d,14
439 mov edi,r8d
440
441 xor r13d,edx
442 ror r14d,9
443 xor edi,r9d
444
445 mov DWORD[36+rsp],r12d
446 xor r14d,r11d
447 and edi,edx
448
449 ror r13d,5
450 add r12d,r10d
451 xor edi,r9d
452
453 ror r14d,11
454 xor r13d,edx
455 add r12d,edi
456
457 mov edi,r11d
458 add r12d,DWORD[rbp]
459 xor r14d,r11d
460
461 xor edi,eax
462 ror r13d,6
463 mov r10d,eax
464
465 and r15d,edi
466 ror r14d,2
467 add r12d,r13d
468
469 xor r10d,r15d
470 add ecx,r12d
471 add r10d,r12d
472
473 lea rbp,[4+rbp]
474 add r10d,r14d
475 mov r12d,DWORD[40+rsi]
476 mov r13d,ecx
477 mov r14d,r10d
478 bswap r12d
479 ror r13d,14
480 mov r15d,edx
481
482 xor r13d,ecx
483 ror r14d,9
484 xor r15d,r8d
485
486 mov DWORD[40+rsp],r12d
487 xor r14d,r10d
488 and r15d,ecx
489
490 ror r13d,5
491 add r12d,r9d
492 xor r15d,r8d
493
494 ror r14d,11
495 xor r13d,ecx
496 add r12d,r15d
497
498 mov r15d,r10d
499 add r12d,DWORD[rbp]
500 xor r14d,r10d
501
502 xor r15d,r11d
503 ror r13d,6
504 mov r9d,r11d
505
506 and edi,r15d
507 ror r14d,2
508 add r12d,r13d
509
510 xor r9d,edi
511 add ebx,r12d
512 add r9d,r12d
513
514 lea rbp,[4+rbp]
515 add r9d,r14d
516 mov r12d,DWORD[44+rsi]
517 mov r13d,ebx
518 mov r14d,r9d
519 bswap r12d
520 ror r13d,14
521 mov edi,ecx
522
523 xor r13d,ebx
524 ror r14d,9
525 xor edi,edx
526
527 mov DWORD[44+rsp],r12d
528 xor r14d,r9d
529 and edi,ebx
530
531 ror r13d,5
532 add r12d,r8d
533 xor edi,edx
534
535 ror r14d,11
536 xor r13d,ebx
537 add r12d,edi
538
539 mov edi,r9d
540 add r12d,DWORD[rbp]
541 xor r14d,r9d
542
543 xor edi,r10d
544 ror r13d,6
545 mov r8d,r10d
546
547 and r15d,edi
548 ror r14d,2
549 add r12d,r13d
550
551 xor r8d,r15d
552 add eax,r12d
553 add r8d,r12d
554
555 lea rbp,[20+rbp]
556 add r8d,r14d
557 mov r12d,DWORD[48+rsi]
558 mov r13d,eax
559 mov r14d,r8d
560 bswap r12d
561 ror r13d,14
562 mov r15d,ebx
563
564 xor r13d,eax
565 ror r14d,9
566 xor r15d,ecx
567
568 mov DWORD[48+rsp],r12d
569 xor r14d,r8d
570 and r15d,eax
571
572 ror r13d,5
573 add r12d,edx
574 xor r15d,ecx
575
576 ror r14d,11
577 xor r13d,eax
578 add r12d,r15d
579
580 mov r15d,r8d
581 add r12d,DWORD[rbp]
582 xor r14d,r8d
583
584 xor r15d,r9d
585 ror r13d,6
586 mov edx,r9d
587
588 and edi,r15d
589 ror r14d,2
590 add r12d,r13d
591
592 xor edx,edi
593 add r11d,r12d
594 add edx,r12d
595
596 lea rbp,[4+rbp]
597 add edx,r14d
598 mov r12d,DWORD[52+rsi]
599 mov r13d,r11d
600 mov r14d,edx
601 bswap r12d
602 ror r13d,14
603 mov edi,eax
604
605 xor r13d,r11d
606 ror r14d,9
607 xor edi,ebx
608
609 mov DWORD[52+rsp],r12d
610 xor r14d,edx
611 and edi,r11d
612
613 ror r13d,5
614 add r12d,ecx
615 xor edi,ebx
616
617 ror r14d,11
618 xor r13d,r11d
619 add r12d,edi
620
621 mov edi,edx
622 add r12d,DWORD[rbp]
623 xor r14d,edx
624
625 xor edi,r8d
626 ror r13d,6
627 mov ecx,r8d
628
629 and r15d,edi
630 ror r14d,2
631 add r12d,r13d
632
633 xor ecx,r15d
634 add r10d,r12d
635 add ecx,r12d
636
637 lea rbp,[4+rbp]
638 add ecx,r14d
639 mov r12d,DWORD[56+rsi]
640 mov r13d,r10d
641 mov r14d,ecx
642 bswap r12d
643 ror r13d,14
644 mov r15d,r11d
645
646 xor r13d,r10d
647 ror r14d,9
648 xor r15d,eax
649
650 mov DWORD[56+rsp],r12d
651 xor r14d,ecx
652 and r15d,r10d
653
654 ror r13d,5
655 add r12d,ebx
656 xor r15d,eax
657
658 ror r14d,11
659 xor r13d,r10d
660 add r12d,r15d
661
662 mov r15d,ecx
663 add r12d,DWORD[rbp]
664 xor r14d,ecx
665
666 xor r15d,edx
667 ror r13d,6
668 mov ebx,edx
669
670 and edi,r15d
671 ror r14d,2
672 add r12d,r13d
673
674 xor ebx,edi
675 add r9d,r12d
676 add ebx,r12d
677
678 lea rbp,[4+rbp]
679 add ebx,r14d
680 mov r12d,DWORD[60+rsi]
681 mov r13d,r9d
682 mov r14d,ebx
683 bswap r12d
684 ror r13d,14
685 mov edi,r10d
686
687 xor r13d,r9d
688 ror r14d,9
689 xor edi,r11d
690
691 mov DWORD[60+rsp],r12d
692 xor r14d,ebx
693 and edi,r9d
694
695 ror r13d,5
696 add r12d,eax
697 xor edi,r11d
698
699 ror r14d,11
700 xor r13d,r9d
701 add r12d,edi
702
703 mov edi,ebx
704 add r12d,DWORD[rbp]
705 xor r14d,ebx
706
707 xor edi,ecx
708 ror r13d,6
709 mov eax,ecx
710
711 and r15d,edi
712 ror r14d,2
713 add r12d,r13d
714
715 xor eax,r15d
716 add r8d,r12d
717 add eax,r12d
718
719 lea rbp,[20+rbp]
720 jmp NEAR $L$rounds_16_xx
721 ALIGN 16
722 $L$rounds_16_xx:
723 mov r13d,DWORD[4+rsp]
724 mov r15d,DWORD[56+rsp]
725
726 mov r12d,r13d
727 ror r13d,11
728 add eax,r14d
729 mov r14d,r15d
730 ror r15d,2
731
732 xor r13d,r12d
733 shr r12d,3
734 ror r13d,7
735 xor r15d,r14d
736 shr r14d,10
737
738 ror r15d,17
739 xor r12d,r13d
740 xor r15d,r14d
741 add r12d,DWORD[36+rsp]
742
743 add r12d,DWORD[rsp]
744 mov r13d,r8d
745 add r12d,r15d
746 mov r14d,eax
747 ror r13d,14
748 mov r15d,r9d
749
750 xor r13d,r8d
751 ror r14d,9
752 xor r15d,r10d
753
754 mov DWORD[rsp],r12d
755 xor r14d,eax
756 and r15d,r8d
757
758 ror r13d,5
759 add r12d,r11d
760 xor r15d,r10d
761
762 ror r14d,11
763 xor r13d,r8d
764 add r12d,r15d
765
766 mov r15d,eax
767 add r12d,DWORD[rbp]
768 xor r14d,eax
769
770 xor r15d,ebx
771 ror r13d,6
772 mov r11d,ebx
773
774 and edi,r15d
775 ror r14d,2
776 add r12d,r13d
777
778 xor r11d,edi
779 add edx,r12d
780 add r11d,r12d
781
782 lea rbp,[4+rbp]
783 mov r13d,DWORD[8+rsp]
784 mov edi,DWORD[60+rsp]
785
786 mov r12d,r13d
787 ror r13d,11
788 add r11d,r14d
789 mov r14d,edi
790 ror edi,2
791
792 xor r13d,r12d
793 shr r12d,3
794 ror r13d,7
795 xor edi,r14d
796 shr r14d,10
797
798 ror edi,17
799 xor r12d,r13d
800 xor edi,r14d
801 add r12d,DWORD[40+rsp]
802
803 add r12d,DWORD[4+rsp]
804 mov r13d,edx
805 add r12d,edi
806 mov r14d,r11d
807 ror r13d,14
808 mov edi,r8d
809
810 xor r13d,edx
811 ror r14d,9
812 xor edi,r9d
813
814 mov DWORD[4+rsp],r12d
815 xor r14d,r11d
816 and edi,edx
817
818 ror r13d,5
819 add r12d,r10d
820 xor edi,r9d
821
822 ror r14d,11
823 xor r13d,edx
824 add r12d,edi
825
826 mov edi,r11d
827 add r12d,DWORD[rbp]
828 xor r14d,r11d
829
830 xor edi,eax
831 ror r13d,6
832 mov r10d,eax
833
834 and r15d,edi
835 ror r14d,2
836 add r12d,r13d
837
838 xor r10d,r15d
839 add ecx,r12d
840 add r10d,r12d
841
842 lea rbp,[4+rbp]
843 mov r13d,DWORD[12+rsp]
844 mov r15d,DWORD[rsp]
845
846 mov r12d,r13d
847 ror r13d,11
848 add r10d,r14d
849 mov r14d,r15d
850 ror r15d,2
851
852 xor r13d,r12d
853 shr r12d,3
854 ror r13d,7
855 xor r15d,r14d
856 shr r14d,10
857
858 ror r15d,17
859 xor r12d,r13d
860 xor r15d,r14d
861 add r12d,DWORD[44+rsp]
862
863 add r12d,DWORD[8+rsp]
864 mov r13d,ecx
865 add r12d,r15d
866 mov r14d,r10d
867 ror r13d,14
868 mov r15d,edx
869
870 xor r13d,ecx
871 ror r14d,9
872 xor r15d,r8d
873
874 mov DWORD[8+rsp],r12d
875 xor r14d,r10d
876 and r15d,ecx
877
878 ror r13d,5
879 add r12d,r9d
880 xor r15d,r8d
881
882 ror r14d,11
883 xor r13d,ecx
884 add r12d,r15d
885
886 mov r15d,r10d
887 add r12d,DWORD[rbp]
888 xor r14d,r10d
889
890 xor r15d,r11d
891 ror r13d,6
892 mov r9d,r11d
893
894 and edi,r15d
895 ror r14d,2
896 add r12d,r13d
897
898 xor r9d,edi
899 add ebx,r12d
900 add r9d,r12d
901
902 lea rbp,[4+rbp]
903 mov r13d,DWORD[16+rsp]
904 mov edi,DWORD[4+rsp]
905
906 mov r12d,r13d
907 ror r13d,11
908 add r9d,r14d
909 mov r14d,edi
910 ror edi,2
911
912 xor r13d,r12d
913 shr r12d,3
914 ror r13d,7
915 xor edi,r14d
916 shr r14d,10
917
918 ror edi,17
919 xor r12d,r13d
920 xor edi,r14d
921 add r12d,DWORD[48+rsp]
922
923 add r12d,DWORD[12+rsp]
924 mov r13d,ebx
925 add r12d,edi
926 mov r14d,r9d
927 ror r13d,14
928 mov edi,ecx
929
930 xor r13d,ebx
931 ror r14d,9
932 xor edi,edx
933
934 mov DWORD[12+rsp],r12d
935 xor r14d,r9d
936 and edi,ebx
937
938 ror r13d,5
939 add r12d,r8d
940 xor edi,edx
941
942 ror r14d,11
943 xor r13d,ebx
944 add r12d,edi
945
946 mov edi,r9d
947 add r12d,DWORD[rbp]
948 xor r14d,r9d
949
950 xor edi,r10d
951 ror r13d,6
952 mov r8d,r10d
953
954 and r15d,edi
955 ror r14d,2
956 add r12d,r13d
957
958 xor r8d,r15d
959 add eax,r12d
960 add r8d,r12d
961
962 lea rbp,[20+rbp]
963 mov r13d,DWORD[20+rsp]
964 mov r15d,DWORD[8+rsp]
965
966 mov r12d,r13d
967 ror r13d,11
968 add r8d,r14d
969 mov r14d,r15d
970 ror r15d,2
971
972 xor r13d,r12d
973 shr r12d,3
974 ror r13d,7
975 xor r15d,r14d
976 shr r14d,10
977
978 ror r15d,17
979 xor r12d,r13d
980 xor r15d,r14d
981 add r12d,DWORD[52+rsp]
982
983 add r12d,DWORD[16+rsp]
984 mov r13d,eax
985 add r12d,r15d
986 mov r14d,r8d
987 ror r13d,14
988 mov r15d,ebx
989
990 xor r13d,eax
991 ror r14d,9
992 xor r15d,ecx
993
994 mov DWORD[16+rsp],r12d
995 xor r14d,r8d
996 and r15d,eax
997
998 ror r13d,5
999 add r12d,edx
1000 xor r15d,ecx
1001
1002 ror r14d,11
1003 xor r13d,eax
1004 add r12d,r15d
1005
1006 mov r15d,r8d
1007 add r12d,DWORD[rbp]
1008 xor r14d,r8d
1009
1010 xor r15d,r9d
1011 ror r13d,6
1012 mov edx,r9d
1013
1014 and edi,r15d
1015 ror r14d,2
1016 add r12d,r13d
1017
1018 xor edx,edi
1019 add r11d,r12d
1020 add edx,r12d
1021
1022 lea rbp,[4+rbp]
1023 mov r13d,DWORD[24+rsp]
1024 mov edi,DWORD[12+rsp]
1025
1026 mov r12d,r13d
1027 ror r13d,11
1028 add edx,r14d
1029 mov r14d,edi
1030 ror edi,2
1031
1032 xor r13d,r12d
1033 shr r12d,3
1034 ror r13d,7
1035 xor edi,r14d
1036 shr r14d,10
1037
1038 ror edi,17
1039 xor r12d,r13d
1040 xor edi,r14d
1041 add r12d,DWORD[56+rsp]
1042
1043 add r12d,DWORD[20+rsp]
1044 mov r13d,r11d
1045 add r12d,edi
1046 mov r14d,edx
1047 ror r13d,14
1048 mov edi,eax
1049
1050 xor r13d,r11d
1051 ror r14d,9
1052 xor edi,ebx
1053
1054 mov DWORD[20+rsp],r12d
1055 xor r14d,edx
1056 and edi,r11d
1057
1058 ror r13d,5
1059 add r12d,ecx
1060 xor edi,ebx
1061
1062 ror r14d,11
1063 xor r13d,r11d
1064 add r12d,edi
1065
1066 mov edi,edx
1067 add r12d,DWORD[rbp]
1068 xor r14d,edx
1069
1070 xor edi,r8d
1071 ror r13d,6
1072 mov ecx,r8d
1073
1074 and r15d,edi
1075 ror r14d,2
1076 add r12d,r13d
1077
1078 xor ecx,r15d
1079 add r10d,r12d
1080 add ecx,r12d
1081
1082 lea rbp,[4+rbp]
1083 mov r13d,DWORD[28+rsp]
1084 mov r15d,DWORD[16+rsp]
1085
1086 mov r12d,r13d
1087 ror r13d,11
1088 add ecx,r14d
1089 mov r14d,r15d
1090 ror r15d,2
1091
1092 xor r13d,r12d
1093 shr r12d,3
1094 ror r13d,7
1095 xor r15d,r14d
1096 shr r14d,10
1097
1098 ror r15d,17
1099 xor r12d,r13d
1100 xor r15d,r14d
1101 add r12d,DWORD[60+rsp]
1102
1103 add r12d,DWORD[24+rsp]
1104 mov r13d,r10d
1105 add r12d,r15d
1106 mov r14d,ecx
1107 ror r13d,14
1108 mov r15d,r11d
1109
1110 xor r13d,r10d
1111 ror r14d,9
1112 xor r15d,eax
1113
1114 mov DWORD[24+rsp],r12d
1115 xor r14d,ecx
1116 and r15d,r10d
1117
1118 ror r13d,5
1119 add r12d,ebx
1120 xor r15d,eax
1121
1122 ror r14d,11
1123 xor r13d,r10d
1124 add r12d,r15d
1125
1126 mov r15d,ecx
1127 add r12d,DWORD[rbp]
1128 xor r14d,ecx
1129
1130 xor r15d,edx
1131 ror r13d,6
1132 mov ebx,edx
1133
1134 and edi,r15d
1135 ror r14d,2
1136 add r12d,r13d
1137
1138 xor ebx,edi
1139 add r9d,r12d
1140 add ebx,r12d
1141
1142 lea rbp,[4+rbp]
1143 mov r13d,DWORD[32+rsp]
1144 mov edi,DWORD[20+rsp]
1145
1146 mov r12d,r13d
1147 ror r13d,11
1148 add ebx,r14d
1149 mov r14d,edi
1150 ror edi,2
1151
1152 xor r13d,r12d
1153 shr r12d,3
1154 ror r13d,7
1155 xor edi,r14d
1156 shr r14d,10
1157
1158 ror edi,17
1159 xor r12d,r13d
1160 xor edi,r14d
1161 add r12d,DWORD[rsp]
1162
1163 add r12d,DWORD[28+rsp]
1164 mov r13d,r9d
1165 add r12d,edi
1166 mov r14d,ebx
1167 ror r13d,14
1168 mov edi,r10d
1169
1170 xor r13d,r9d
1171 ror r14d,9
1172 xor edi,r11d
1173
1174 mov DWORD[28+rsp],r12d
1175 xor r14d,ebx
1176 and edi,r9d
1177
1178 ror r13d,5
1179 add r12d,eax
1180 xor edi,r11d
1181
1182 ror r14d,11
1183 xor r13d,r9d
1184 add r12d,edi
1185
1186 mov edi,ebx
1187 add r12d,DWORD[rbp]
1188 xor r14d,ebx
1189
1190 xor edi,ecx
1191 ror r13d,6
1192 mov eax,ecx
1193
1194 and r15d,edi
1195 ror r14d,2
1196 add r12d,r13d
1197
1198 xor eax,r15d
1199 add r8d,r12d
1200 add eax,r12d
1201
1202 lea rbp,[20+rbp]
1203 mov r13d,DWORD[36+rsp]
1204 mov r15d,DWORD[24+rsp]
1205
1206 mov r12d,r13d
1207 ror r13d,11
1208 add eax,r14d
1209 mov r14d,r15d
1210 ror r15d,2
1211
1212 xor r13d,r12d
1213 shr r12d,3
1214 ror r13d,7
1215 xor r15d,r14d
1216 shr r14d,10
1217
1218 ror r15d,17
1219 xor r12d,r13d
1220 xor r15d,r14d
1221 add r12d,DWORD[4+rsp]
1222
1223 add r12d,DWORD[32+rsp]
1224 mov r13d,r8d
1225 add r12d,r15d
1226 mov r14d,eax
1227 ror r13d,14
1228 mov r15d,r9d
1229
1230 xor r13d,r8d
1231 ror r14d,9
1232 xor r15d,r10d
1233
1234 mov DWORD[32+rsp],r12d
1235 xor r14d,eax
1236 and r15d,r8d
1237
1238 ror r13d,5
1239 add r12d,r11d
1240 xor r15d,r10d
1241
1242 ror r14d,11
1243 xor r13d,r8d
1244 add r12d,r15d
1245
1246 mov r15d,eax
1247 add r12d,DWORD[rbp]
1248 xor r14d,eax
1249
1250 xor r15d,ebx
1251 ror r13d,6
1252 mov r11d,ebx
1253
1254 and edi,r15d
1255 ror r14d,2
1256 add r12d,r13d
1257
1258 xor r11d,edi
1259 add edx,r12d
1260 add r11d,r12d
1261
1262 lea rbp,[4+rbp]
1263 mov r13d,DWORD[40+rsp]
1264 mov edi,DWORD[28+rsp]
1265
1266 mov r12d,r13d
1267 ror r13d,11
1268 add r11d,r14d
1269 mov r14d,edi
1270 ror edi,2
1271
1272 xor r13d,r12d
1273 shr r12d,3
1274 ror r13d,7
1275 xor edi,r14d
1276 shr r14d,10
1277
1278 ror edi,17
1279 xor r12d,r13d
1280 xor edi,r14d
1281 add r12d,DWORD[8+rsp]
1282
1283 add r12d,DWORD[36+rsp]
1284 mov r13d,edx
1285 add r12d,edi
1286 mov r14d,r11d
1287 ror r13d,14
1288 mov edi,r8d
1289
1290 xor r13d,edx
1291 ror r14d,9
1292 xor edi,r9d
1293
1294 mov DWORD[36+rsp],r12d
1295 xor r14d,r11d
1296 and edi,edx
1297
1298 ror r13d,5
1299 add r12d,r10d
1300 xor edi,r9d
1301
1302 ror r14d,11
1303 xor r13d,edx
1304 add r12d,edi
1305
1306 mov edi,r11d
1307 add r12d,DWORD[rbp]
1308 xor r14d,r11d
1309
1310 xor edi,eax
1311 ror r13d,6
1312 mov r10d,eax
1313
1314 and r15d,edi
1315 ror r14d,2
1316 add r12d,r13d
1317
1318 xor r10d,r15d
1319 add ecx,r12d
1320 add r10d,r12d
1321
1322 lea rbp,[4+rbp]
1323 mov r13d,DWORD[44+rsp]
1324 mov r15d,DWORD[32+rsp]
1325
1326 mov r12d,r13d
1327 ror r13d,11
1328 add r10d,r14d
1329 mov r14d,r15d
1330 ror r15d,2
1331
1332 xor r13d,r12d
1333 shr r12d,3
1334 ror r13d,7
1335 xor r15d,r14d
1336 shr r14d,10
1337
1338 ror r15d,17
1339 xor r12d,r13d
1340 xor r15d,r14d
1341 add r12d,DWORD[12+rsp]
1342
1343 add r12d,DWORD[40+rsp]
1344 mov r13d,ecx
1345 add r12d,r15d
1346 mov r14d,r10d
1347 ror r13d,14
1348 mov r15d,edx
1349
1350 xor r13d,ecx
1351 ror r14d,9
1352 xor r15d,r8d
1353
1354 mov DWORD[40+rsp],r12d
1355 xor r14d,r10d
1356 and r15d,ecx
1357
1358 ror r13d,5
1359 add r12d,r9d
1360 xor r15d,r8d
1361
1362 ror r14d,11
1363 xor r13d,ecx
1364 add r12d,r15d
1365
1366 mov r15d,r10d
1367 add r12d,DWORD[rbp]
1368 xor r14d,r10d
1369
1370 xor r15d,r11d
1371 ror r13d,6
1372 mov r9d,r11d
1373
1374 and edi,r15d
1375 ror r14d,2
1376 add r12d,r13d
1377
1378 xor r9d,edi
1379 add ebx,r12d
1380 add r9d,r12d
1381
1382 lea rbp,[4+rbp]
1383 mov r13d,DWORD[48+rsp]
1384 mov edi,DWORD[36+rsp]
1385
1386 mov r12d,r13d
1387 ror r13d,11
1388 add r9d,r14d
1389 mov r14d,edi
1390 ror edi,2
1391
1392 xor r13d,r12d
1393 shr r12d,3
1394 ror r13d,7
1395 xor edi,r14d
1396 shr r14d,10
1397
1398 ror edi,17
1399 xor r12d,r13d
1400 xor edi,r14d
1401 add r12d,DWORD[16+rsp]
1402
1403 add r12d,DWORD[44+rsp]
1404 mov r13d,ebx
1405 add r12d,edi
1406 mov r14d,r9d
1407 ror r13d,14
1408 mov edi,ecx
1409
1410 xor r13d,ebx
1411 ror r14d,9
1412 xor edi,edx
1413
1414 mov DWORD[44+rsp],r12d
1415 xor r14d,r9d
1416 and edi,ebx
1417
1418 ror r13d,5
1419 add r12d,r8d
1420 xor edi,edx
1421
1422 ror r14d,11
1423 xor r13d,ebx
1424 add r12d,edi
1425
1426 mov edi,r9d
1427 add r12d,DWORD[rbp]
1428 xor r14d,r9d
1429
1430 xor edi,r10d
1431 ror r13d,6
1432 mov r8d,r10d
1433
1434 and r15d,edi
1435 ror r14d,2
1436 add r12d,r13d
1437
1438 xor r8d,r15d
1439 add eax,r12d
1440 add r8d,r12d
1441
1442 lea rbp,[20+rbp]
1443 mov r13d,DWORD[52+rsp]
1444 mov r15d,DWORD[40+rsp]
1445
1446 mov r12d,r13d
1447 ror r13d,11
1448 add r8d,r14d
1449 mov r14d,r15d
1450 ror r15d,2
1451
1452 xor r13d,r12d
1453 shr r12d,3
1454 ror r13d,7
1455 xor r15d,r14d
1456 shr r14d,10
1457
1458 ror r15d,17
1459 xor r12d,r13d
1460 xor r15d,r14d
1461 add r12d,DWORD[20+rsp]
1462
1463 add r12d,DWORD[48+rsp]
1464 mov r13d,eax
1465 add r12d,r15d
1466 mov r14d,r8d
1467 ror r13d,14
1468 mov r15d,ebx
1469
1470 xor r13d,eax
1471 ror r14d,9
1472 xor r15d,ecx
1473
1474 mov DWORD[48+rsp],r12d
1475 xor r14d,r8d
1476 and r15d,eax
1477
1478 ror r13d,5
1479 add r12d,edx
1480 xor r15d,ecx
1481
1482 ror r14d,11
1483 xor r13d,eax
1484 add r12d,r15d
1485
1486 mov r15d,r8d
1487 add r12d,DWORD[rbp]
1488 xor r14d,r8d
1489
1490 xor r15d,r9d
1491 ror r13d,6
1492 mov edx,r9d
1493
1494 and edi,r15d
1495 ror r14d,2
1496 add r12d,r13d
1497
1498 xor edx,edi
1499 add r11d,r12d
1500 add edx,r12d
1501
1502 lea rbp,[4+rbp]
1503 mov r13d,DWORD[56+rsp]
1504 mov edi,DWORD[44+rsp]
1505
1506 mov r12d,r13d
1507 ror r13d,11
1508 add edx,r14d
1509 mov r14d,edi
1510 ror edi,2
1511
1512 xor r13d,r12d
1513 shr r12d,3
1514 ror r13d,7
1515 xor edi,r14d
1516 shr r14d,10
1517
1518 ror edi,17
1519 xor r12d,r13d
1520 xor edi,r14d
1521 add r12d,DWORD[24+rsp]
1522
1523 add r12d,DWORD[52+rsp]
1524 mov r13d,r11d
1525 add r12d,edi
1526 mov r14d,edx
1527 ror r13d,14
1528 mov edi,eax
1529
1530 xor r13d,r11d
1531 ror r14d,9
1532 xor edi,ebx
1533
1534 mov DWORD[52+rsp],r12d
1535 xor r14d,edx
1536 and edi,r11d
1537
1538 ror r13d,5
1539 add r12d,ecx
1540 xor edi,ebx
1541
1542 ror r14d,11
1543 xor r13d,r11d
1544 add r12d,edi
1545
1546 mov edi,edx
1547 add r12d,DWORD[rbp]
1548 xor r14d,edx
1549
1550 xor edi,r8d
1551 ror r13d,6
1552 mov ecx,r8d
1553
1554 and r15d,edi
1555 ror r14d,2
1556 add r12d,r13d
1557
1558 xor ecx,r15d
1559 add r10d,r12d
1560 add ecx,r12d
1561
1562 lea rbp,[4+rbp]
1563 mov r13d,DWORD[60+rsp]
1564 mov r15d,DWORD[48+rsp]
1565
1566 mov r12d,r13d
1567 ror r13d,11
1568 add ecx,r14d
1569 mov r14d,r15d
1570 ror r15d,2
1571
1572 xor r13d,r12d
1573 shr r12d,3
1574 ror r13d,7
1575 xor r15d,r14d
1576 shr r14d,10
1577
1578 ror r15d,17
1579 xor r12d,r13d
1580 xor r15d,r14d
1581 add r12d,DWORD[28+rsp]
1582
1583 add r12d,DWORD[56+rsp]
1584 mov r13d,r10d
1585 add r12d,r15d
1586 mov r14d,ecx
1587 ror r13d,14
1588 mov r15d,r11d
1589
1590 xor r13d,r10d
1591 ror r14d,9
1592 xor r15d,eax
1593
1594 mov DWORD[56+rsp],r12d
1595 xor r14d,ecx
1596 and r15d,r10d
1597
1598 ror r13d,5
1599 add r12d,ebx
1600 xor r15d,eax
1601
1602 ror r14d,11
1603 xor r13d,r10d
1604 add r12d,r15d
1605
1606 mov r15d,ecx
1607 add r12d,DWORD[rbp]
1608 xor r14d,ecx
1609
1610 xor r15d,edx
1611 ror r13d,6
1612 mov ebx,edx
1613
1614 and edi,r15d
1615 ror r14d,2
1616 add r12d,r13d
1617
1618 xor ebx,edi
1619 add r9d,r12d
1620 add ebx,r12d
1621
1622 lea rbp,[4+rbp]
1623 mov r13d,DWORD[rsp]
1624 mov edi,DWORD[52+rsp]
1625
1626 mov r12d,r13d
1627 ror r13d,11
1628 add ebx,r14d
1629 mov r14d,edi
1630 ror edi,2
1631
1632 xor r13d,r12d
1633 shr r12d,3
1634 ror r13d,7
1635 xor edi,r14d
1636 shr r14d,10
1637
1638 ror edi,17
1639 xor r12d,r13d
1640 xor edi,r14d
1641 add r12d,DWORD[32+rsp]
1642
1643 add r12d,DWORD[60+rsp]
1644 mov r13d,r9d
1645 add r12d,edi
1646 mov r14d,ebx
1647 ror r13d,14
1648 mov edi,r10d
1649
1650 xor r13d,r9d
1651 ror r14d,9
1652 xor edi,r11d
1653
1654 mov DWORD[60+rsp],r12d
1655 xor r14d,ebx
1656 and edi,r9d
1657
1658 ror r13d,5
1659 add r12d,eax
1660 xor edi,r11d
1661
1662 ror r14d,11
1663 xor r13d,r9d
1664 add r12d,edi
1665
1666 mov edi,ebx
1667 add r12d,DWORD[rbp]
1668 xor r14d,ebx
1669
1670 xor edi,ecx
1671 ror r13d,6
1672 mov eax,ecx
1673
1674 and r15d,edi
1675 ror r14d,2
1676 add r12d,r13d
1677
1678 xor eax,r15d
1679 add r8d,r12d
1680 add eax,r12d
1681
1682 lea rbp,[20+rbp]
1683 cmp BYTE[3+rbp],0
1684 jnz NEAR $L$rounds_16_xx
1685
1686 mov rdi,QWORD[((64+0))+rsp]
1687 add eax,r14d
1688 lea rsi,[64+rsi]
1689
1690 add eax,DWORD[rdi]
1691 add ebx,DWORD[4+rdi]
1692 add ecx,DWORD[8+rdi]
1693 add edx,DWORD[12+rdi]
1694 add r8d,DWORD[16+rdi]
1695 add r9d,DWORD[20+rdi]
1696 add r10d,DWORD[24+rdi]
1697 add r11d,DWORD[28+rdi]
1698
1699 cmp rsi,QWORD[((64+16))+rsp]
1700
1701 mov DWORD[rdi],eax
1702 mov DWORD[4+rdi],ebx
1703 mov DWORD[8+rdi],ecx
1704 mov DWORD[12+rdi],edx
1705 mov DWORD[16+rdi],r8d
1706 mov DWORD[20+rdi],r9d
1707 mov DWORD[24+rdi],r10d
1708 mov DWORD[28+rdi],r11d
1709 jb NEAR $L$loop
1710
1711 mov rsi,QWORD[((64+24))+rsp]
1712 mov r15,QWORD[((-48))+rsi]
1713 mov r14,QWORD[((-40))+rsi]
1714 mov r13,QWORD[((-32))+rsi]
1715 mov r12,QWORD[((-24))+rsi]
1716 mov rbp,QWORD[((-16))+rsi]
1717 mov rbx,QWORD[((-8))+rsi]
1718 lea rsp,[rsi]
1719 $L$epilogue:
1720 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1721 mov rsi,QWORD[16+rsp]
1722 DB 0F3h,0C3h ;repret
1723 $L$SEH_end_sha256_block_data_order:
1724 ALIGN 64
1725
1726 K256:
1727 DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
1728 DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
1729 DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
1730 DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
1731 DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
1732 DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
1733 DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
1734 DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
1735 DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
1736 DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
1737 DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
1738 DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
1739 DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
1740 DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
1741 DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
1742 DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
1743 DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
1744 DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
1745 DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
1746 DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
1747 DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
1748 DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
1749 DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
1750 DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
1751 DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
1752 DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
1753 DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
1754 DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
1755 DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
1756 DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
1757 DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
1758 DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
1759
1760 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
1761 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
1762 DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff
1763 DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff
1764 DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908
1765 DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908
1766 DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
1767 DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
1768 DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
1769 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
1770 DB 111,114,103,62,0
1771
1772 ALIGN 64
1773 sha256_block_data_order_ssse3:
1774 mov QWORD[8+rsp],rdi ;WIN64 prologue
1775 mov QWORD[16+rsp],rsi
1776 mov rax,rsp
1777 $L$SEH_begin_sha256_block_data_order_ssse3:
1778 mov rdi,rcx
1779 mov rsi,rdx
1780 mov rdx,r8
1781
1782
1783 $L$ssse3_shortcut:
1784 mov rax,rsp
1785 push rbx
1786 push rbp
1787 push r12
1788 push r13
1789 push r14
1790 push r15
1791 shl rdx,4
1792 sub rsp,160
1793 lea rdx,[rdx*4+rsi]
1794 and rsp,-64
1795 mov QWORD[((64+0))+rsp],rdi
1796 mov QWORD[((64+8))+rsp],rsi
1797 mov QWORD[((64+16))+rsp],rdx
1798 mov QWORD[((64+24))+rsp],rax
1799 movaps XMMWORD[(64+32)+rsp],xmm6
1800 movaps XMMWORD[(64+48)+rsp],xmm7
1801 movaps XMMWORD[(64+64)+rsp],xmm8
1802 movaps XMMWORD[(64+80)+rsp],xmm9
1803 $L$prologue_ssse3:
1804
1805 mov eax,DWORD[rdi]
1806 mov ebx,DWORD[4+rdi]
1807 mov ecx,DWORD[8+rdi]
1808 mov edx,DWORD[12+rdi]
1809 mov r8d,DWORD[16+rdi]
1810 mov r9d,DWORD[20+rdi]
1811 mov r10d,DWORD[24+rdi]
1812 mov r11d,DWORD[28+rdi]
1813
1814
1815 jmp NEAR $L$loop_ssse3
1816 ALIGN 16
1817 $L$loop_ssse3:
1818 movdqa xmm7,XMMWORD[((K256+512))]
1819 movdqu xmm0,XMMWORD[rsi]
1820 movdqu xmm1,XMMWORD[16+rsi]
1821 movdqu xmm2,XMMWORD[32+rsi]
1822 DB 102,15,56,0,199
1823 movdqu xmm3,XMMWORD[48+rsi]
1824 lea rbp,[K256]
1825 DB 102,15,56,0,207
1826 movdqa xmm4,XMMWORD[rbp]
1827 movdqa xmm5,XMMWORD[32+rbp]
1828 DB 102,15,56,0,215
1829 paddd xmm4,xmm0
1830 movdqa xmm6,XMMWORD[64+rbp]
1831 DB 102,15,56,0,223
1832 movdqa xmm7,XMMWORD[96+rbp]
1833 paddd xmm5,xmm1
1834 paddd xmm6,xmm2
1835 paddd xmm7,xmm3
1836 movdqa XMMWORD[rsp],xmm4
1837 mov r14d,eax
1838 movdqa XMMWORD[16+rsp],xmm5
1839 mov edi,ebx
1840 movdqa XMMWORD[32+rsp],xmm6
1841 xor edi,ecx
1842 movdqa XMMWORD[48+rsp],xmm7
1843 mov r13d,r8d
1844 jmp NEAR $L$ssse3_00_47
1845
1846 ALIGN 16
1847 $L$ssse3_00_47:
1848 sub rbp,-128
1849 ror r13d,14
1850 movdqa xmm4,xmm1
1851 mov eax,r14d
1852 mov r12d,r9d
1853 movdqa xmm7,xmm3
1854 ror r14d,9
1855 xor r13d,r8d
1856 xor r12d,r10d
1857 ror r13d,5
1858 xor r14d,eax
1859 DB 102,15,58,15,224,4
1860 and r12d,r8d
1861 xor r13d,r8d
1862 DB 102,15,58,15,250,4
1863 add r11d,DWORD[rsp]
1864 mov r15d,eax
1865 xor r12d,r10d
1866 ror r14d,11
1867 movdqa xmm5,xmm4
1868 xor r15d,ebx
1869 add r11d,r12d
1870 movdqa xmm6,xmm4
1871 ror r13d,6
1872 and edi,r15d
1873 psrld xmm4,3
1874 xor r14d,eax
1875 add r11d,r13d
1876 xor edi,ebx
1877 paddd xmm0,xmm7
1878 ror r14d,2
1879 add edx,r11d
1880 psrld xmm6,7
1881 add r11d,edi
1882 mov r13d,edx
1883 pshufd xmm7,xmm3,250
1884 add r14d,r11d
1885 ror r13d,14
1886 pslld xmm5,14
1887 mov r11d,r14d
1888 mov r12d,r8d
1889 pxor xmm4,xmm6
1890 ror r14d,9
1891 xor r13d,edx
1892 xor r12d,r9d
1893 ror r13d,5
1894 psrld xmm6,11
1895 xor r14d,r11d
1896 pxor xmm4,xmm5
1897 and r12d,edx
1898 xor r13d,edx
1899 pslld xmm5,11
1900 add r10d,DWORD[4+rsp]
1901 mov edi,r11d
1902 pxor xmm4,xmm6
1903 xor r12d,r9d
1904 ror r14d,11
1905 movdqa xmm6,xmm7
1906 xor edi,eax
1907 add r10d,r12d
1908 pxor xmm4,xmm5
1909 ror r13d,6
1910 and r15d,edi
1911 xor r14d,r11d
1912 psrld xmm7,10
1913 add r10d,r13d
1914 xor r15d,eax
1915 paddd xmm0,xmm4
1916 ror r14d,2
1917 add ecx,r10d
1918 psrlq xmm6,17
1919 add r10d,r15d
1920 mov r13d,ecx
1921 add r14d,r10d
1922 pxor xmm7,xmm6
1923 ror r13d,14
1924 mov r10d,r14d
1925 mov r12d,edx
1926 ror r14d,9
1927 psrlq xmm6,2
1928 xor r13d,ecx
1929 xor r12d,r8d
1930 pxor xmm7,xmm6
1931 ror r13d,5
1932 xor r14d,r10d
1933 and r12d,ecx
1934 pshufd xmm7,xmm7,128
1935 xor r13d,ecx
1936 add r9d,DWORD[8+rsp]
1937 mov r15d,r10d
1938 psrldq xmm7,8
1939 xor r12d,r8d
1940 ror r14d,11
1941 xor r15d,r11d
1942 add r9d,r12d
1943 ror r13d,6
1944 paddd xmm0,xmm7
1945 and edi,r15d
1946 xor r14d,r10d
1947 add r9d,r13d
1948 pshufd xmm7,xmm0,80
1949 xor edi,r11d
1950 ror r14d,2
1951 add ebx,r9d
1952 movdqa xmm6,xmm7
1953 add r9d,edi
1954 mov r13d,ebx
1955 psrld xmm7,10
1956 add r14d,r9d
1957 ror r13d,14
1958 psrlq xmm6,17
1959 mov r9d,r14d
1960 mov r12d,ecx
1961 pxor xmm7,xmm6
1962 ror r14d,9
1963 xor r13d,ebx
1964 xor r12d,edx
1965 ror r13d,5
1966 xor r14d,r9d
1967 psrlq xmm6,2
1968 and r12d,ebx
1969 xor r13d,ebx
1970 add r8d,DWORD[12+rsp]
1971 pxor xmm7,xmm6
1972 mov edi,r9d
1973 xor r12d,edx
1974 ror r14d,11
1975 pshufd xmm7,xmm7,8
1976 xor edi,r10d
1977 add r8d,r12d
1978 movdqa xmm6,XMMWORD[rbp]
1979 ror r13d,6
1980 and r15d,edi
1981 pslldq xmm7,8
1982 xor r14d,r9d
1983 add r8d,r13d
1984 xor r15d,r10d
1985 paddd xmm0,xmm7
1986 ror r14d,2
1987 add eax,r8d
1988 add r8d,r15d
1989 paddd xmm6,xmm0
1990 mov r13d,eax
1991 add r14d,r8d
1992 movdqa XMMWORD[rsp],xmm6
1993 ror r13d,14
1994 movdqa xmm4,xmm2
1995 mov r8d,r14d
1996 mov r12d,ebx
1997 movdqa xmm7,xmm0
1998 ror r14d,9
1999 xor r13d,eax
2000 xor r12d,ecx
2001 ror r13d,5
2002 xor r14d,r8d
2003 DB 102,15,58,15,225,4
2004 and r12d,eax
2005 xor r13d,eax
2006 DB 102,15,58,15,251,4
2007 add edx,DWORD[16+rsp]
2008 mov r15d,r8d
2009 xor r12d,ecx
2010 ror r14d,11
2011 movdqa xmm5,xmm4
2012 xor r15d,r9d
2013 add edx,r12d
2014 movdqa xmm6,xmm4
2015 ror r13d,6
2016 and edi,r15d
2017 psrld xmm4,3
2018 xor r14d,r8d
2019 add edx,r13d
2020 xor edi,r9d
2021 paddd xmm1,xmm7
2022 ror r14d,2
2023 add r11d,edx
2024 psrld xmm6,7
2025 add edx,edi
2026 mov r13d,r11d
2027 pshufd xmm7,xmm0,250
2028 add r14d,edx
2029 ror r13d,14
2030 pslld xmm5,14
2031 mov edx,r14d
2032 mov r12d,eax
2033 pxor xmm4,xmm6
2034 ror r14d,9
2035 xor r13d,r11d
2036 xor r12d,ebx
2037 ror r13d,5
2038 psrld xmm6,11
2039 xor r14d,edx
2040 pxor xmm4,xmm5
2041 and r12d,r11d
2042 xor r13d,r11d
2043 pslld xmm5,11
2044 add ecx,DWORD[20+rsp]
2045 mov edi,edx
2046 pxor xmm4,xmm6
2047 xor r12d,ebx
2048 ror r14d,11
2049 movdqa xmm6,xmm7
2050 xor edi,r8d
2051 add ecx,r12d
2052 pxor xmm4,xmm5
2053 ror r13d,6
2054 and r15d,edi
2055 xor r14d,edx
2056 psrld xmm7,10
2057 add ecx,r13d
2058 xor r15d,r8d
2059 paddd xmm1,xmm4
2060 ror r14d,2
2061 add r10d,ecx
2062 psrlq xmm6,17
2063 add ecx,r15d
2064 mov r13d,r10d
2065 add r14d,ecx
2066 pxor xmm7,xmm6
2067 ror r13d,14
2068 mov ecx,r14d
2069 mov r12d,r11d
2070 ror r14d,9
2071 psrlq xmm6,2
2072 xor r13d,r10d
2073 xor r12d,eax
2074 pxor xmm7,xmm6
2075 ror r13d,5
2076 xor r14d,ecx
2077 and r12d,r10d
2078 pshufd xmm7,xmm7,128
2079 xor r13d,r10d
2080 add ebx,DWORD[24+rsp]
2081 mov r15d,ecx
2082 psrldq xmm7,8
2083 xor r12d,eax
2084 ror r14d,11
2085 xor r15d,edx
2086 add ebx,r12d
2087 ror r13d,6
2088 paddd xmm1,xmm7
2089 and edi,r15d
2090 xor r14d,ecx
2091 add ebx,r13d
2092 pshufd xmm7,xmm1,80
2093 xor edi,edx
2094 ror r14d,2
2095 add r9d,ebx
2096 movdqa xmm6,xmm7
2097 add ebx,edi
2098 mov r13d,r9d
2099 psrld xmm7,10
2100 add r14d,ebx
2101 ror r13d,14
2102 psrlq xmm6,17
2103 mov ebx,r14d
2104 mov r12d,r10d
2105 pxor xmm7,xmm6
2106 ror r14d,9
2107 xor r13d,r9d
2108 xor r12d,r11d
2109 ror r13d,5
2110 xor r14d,ebx
2111 psrlq xmm6,2
2112 and r12d,r9d
2113 xor r13d,r9d
2114 add eax,DWORD[28+rsp]
2115 pxor xmm7,xmm6
2116 mov edi,ebx
2117 xor r12d,r11d
2118 ror r14d,11
2119 pshufd xmm7,xmm7,8
2120 xor edi,ecx
2121 add eax,r12d
2122 movdqa xmm6,XMMWORD[32+rbp]
2123 ror r13d,6
2124 and r15d,edi
2125 pslldq xmm7,8
2126 xor r14d,ebx
2127 add eax,r13d
2128 xor r15d,ecx
2129 paddd xmm1,xmm7
2130 ror r14d,2
2131 add r8d,eax
2132 add eax,r15d
2133 paddd xmm6,xmm1
2134 mov r13d,r8d
2135 add r14d,eax
2136 movdqa XMMWORD[16+rsp],xmm6
2137 ror r13d,14
2138 movdqa xmm4,xmm3
2139 mov eax,r14d
2140 mov r12d,r9d
2141 movdqa xmm7,xmm1
2142 ror r14d,9
2143 xor r13d,r8d
2144 xor r12d,r10d
2145 ror r13d,5
2146 xor r14d,eax
2147 DB 102,15,58,15,226,4
2148 and r12d,r8d
2149 xor r13d,r8d
2150 DB 102,15,58,15,248,4
2151 add r11d,DWORD[32+rsp]
2152 mov r15d,eax
2153 xor r12d,r10d
2154 ror r14d,11
2155 movdqa xmm5,xmm4
2156 xor r15d,ebx
2157 add r11d,r12d
2158 movdqa xmm6,xmm4
2159 ror r13d,6
2160 and edi,r15d
2161 psrld xmm4,3
2162 xor r14d,eax
2163 add r11d,r13d
2164 xor edi,ebx
2165 paddd xmm2,xmm7
2166 ror r14d,2
2167 add edx,r11d
2168 psrld xmm6,7
2169 add r11d,edi
2170 mov r13d,edx
2171 pshufd xmm7,xmm1,250
2172 add r14d,r11d
2173 ror r13d,14
2174 pslld xmm5,14
2175 mov r11d,r14d
2176 mov r12d,r8d
2177 pxor xmm4,xmm6
2178 ror r14d,9
2179 xor r13d,edx
2180 xor r12d,r9d
2181 ror r13d,5
2182 psrld xmm6,11
2183 xor r14d,r11d
2184 pxor xmm4,xmm5
2185 and r12d,edx
2186 xor r13d,edx
2187 pslld xmm5,11
2188 add r10d,DWORD[36+rsp]
2189 mov edi,r11d
2190 pxor xmm4,xmm6
2191 xor r12d,r9d
2192 ror r14d,11
2193 movdqa xmm6,xmm7
2194 xor edi,eax
2195 add r10d,r12d
2196 pxor xmm4,xmm5
2197 ror r13d,6
2198 and r15d,edi
2199 xor r14d,r11d
2200 psrld xmm7,10
2201 add r10d,r13d
2202 xor r15d,eax
2203 paddd xmm2,xmm4
2204 ror r14d,2
2205 add ecx,r10d
2206 psrlq xmm6,17
2207 add r10d,r15d
2208 mov r13d,ecx
2209 add r14d,r10d
2210 pxor xmm7,xmm6
2211 ror r13d,14
2212 mov r10d,r14d
2213 mov r12d,edx
2214 ror r14d,9
2215 psrlq xmm6,2
2216 xor r13d,ecx
2217 xor r12d,r8d
2218 pxor xmm7,xmm6
2219 ror r13d,5
2220 xor r14d,r10d
2221 and r12d,ecx
2222 pshufd xmm7,xmm7,128
2223 xor r13d,ecx
2224 add r9d,DWORD[40+rsp]
2225 mov r15d,r10d
2226 psrldq xmm7,8
2227 xor r12d,r8d
2228 ror r14d,11
2229 xor r15d,r11d
2230 add r9d,r12d
2231 ror r13d,6
2232 paddd xmm2,xmm7
2233 and edi,r15d
2234 xor r14d,r10d
2235 add r9d,r13d
2236 pshufd xmm7,xmm2,80
2237 xor edi,r11d
2238 ror r14d,2
2239 add ebx,r9d
2240 movdqa xmm6,xmm7
2241 add r9d,edi
2242 mov r13d,ebx
2243 psrld xmm7,10
2244 add r14d,r9d
2245 ror r13d,14
2246 psrlq xmm6,17
2247 mov r9d,r14d
2248 mov r12d,ecx
2249 pxor xmm7,xmm6
2250 ror r14d,9
2251 xor r13d,ebx
2252 xor r12d,edx
2253 ror r13d,5
2254 xor r14d,r9d
2255 psrlq xmm6,2
2256 and r12d,ebx
2257 xor r13d,ebx
2258 add r8d,DWORD[44+rsp]
2259 pxor xmm7,xmm6
2260 mov edi,r9d
2261 xor r12d,edx
2262 ror r14d,11
2263 pshufd xmm7,xmm7,8
2264 xor edi,r10d
2265 add r8d,r12d
2266 movdqa xmm6,XMMWORD[64+rbp]
2267 ror r13d,6
2268 and r15d,edi
2269 pslldq xmm7,8
2270 xor r14d,r9d
2271 add r8d,r13d
2272 xor r15d,r10d
2273 paddd xmm2,xmm7
2274 ror r14d,2
2275 add eax,r8d
2276 add r8d,r15d
2277 paddd xmm6,xmm2
2278 mov r13d,eax
2279 add r14d,r8d
2280 movdqa XMMWORD[32+rsp],xmm6
2281 ror r13d,14
2282 movdqa xmm4,xmm0
2283 mov r8d,r14d
2284 mov r12d,ebx
2285 movdqa xmm7,xmm2
2286 ror r14d,9
2287 xor r13d,eax
2288 xor r12d,ecx
2289 ror r13d,5
2290 xor r14d,r8d
2291 DB 102,15,58,15,227,4
2292 and r12d,eax
2293 xor r13d,eax
2294 DB 102,15,58,15,249,4
2295 add edx,DWORD[48+rsp]
2296 mov r15d,r8d
2297 xor r12d,ecx
2298 ror r14d,11
2299 movdqa xmm5,xmm4
2300 xor r15d,r9d
2301 add edx,r12d
2302 movdqa xmm6,xmm4
2303 ror r13d,6
2304 and edi,r15d
2305 psrld xmm4,3
2306 xor r14d,r8d
2307 add edx,r13d
2308 xor edi,r9d
2309 paddd xmm3,xmm7
2310 ror r14d,2
2311 add r11d,edx
2312 psrld xmm6,7
2313 add edx,edi
2314 mov r13d,r11d
2315 pshufd xmm7,xmm2,250
2316 add r14d,edx
2317 ror r13d,14
2318 pslld xmm5,14
2319 mov edx,r14d
2320 mov r12d,eax
2321 pxor xmm4,xmm6
2322 ror r14d,9
2323 xor r13d,r11d
2324 xor r12d,ebx
2325 ror r13d,5
2326 psrld xmm6,11
2327 xor r14d,edx
2328 pxor xmm4,xmm5
2329 and r12d,r11d
2330 xor r13d,r11d
2331 pslld xmm5,11
2332 add ecx,DWORD[52+rsp]
2333 mov edi,edx
2334 pxor xmm4,xmm6
2335 xor r12d,ebx
2336 ror r14d,11
2337 movdqa xmm6,xmm7
2338 xor edi,r8d
2339 add ecx,r12d
2340 pxor xmm4,xmm5
2341 ror r13d,6
2342 and r15d,edi
2343 xor r14d,edx
2344 psrld xmm7,10
2345 add ecx,r13d
2346 xor r15d,r8d
2347 paddd xmm3,xmm4
2348 ror r14d,2
2349 add r10d,ecx
2350 psrlq xmm6,17
2351 add ecx,r15d
2352 mov r13d,r10d
2353 add r14d,ecx
2354 pxor xmm7,xmm6
2355 ror r13d,14
2356 mov ecx,r14d
2357 mov r12d,r11d
2358 ror r14d,9
2359 psrlq xmm6,2
2360 xor r13d,r10d
2361 xor r12d,eax
2362 pxor xmm7,xmm6
2363 ror r13d,5
2364 xor r14d,ecx
2365 and r12d,r10d
2366 pshufd xmm7,xmm7,128
2367 xor r13d,r10d
2368 add ebx,DWORD[56+rsp]
2369 mov r15d,ecx
2370 psrldq xmm7,8
2371 xor r12d,eax
2372 ror r14d,11
2373 xor r15d,edx
2374 add ebx,r12d
2375 ror r13d,6
2376 paddd xmm3,xmm7
2377 and edi,r15d
2378 xor r14d,ecx
2379 add ebx,r13d
2380 pshufd xmm7,xmm3,80
2381 xor edi,edx
2382 ror r14d,2
2383 add r9d,ebx
2384 movdqa xmm6,xmm7
2385 add ebx,edi
2386 mov r13d,r9d
2387 psrld xmm7,10
2388 add r14d,ebx
2389 ror r13d,14
2390 psrlq xmm6,17
2391 mov ebx,r14d
2392 mov r12d,r10d
2393 pxor xmm7,xmm6
2394 ror r14d,9
2395 xor r13d,r9d
2396 xor r12d,r11d
2397 ror r13d,5
2398 xor r14d,ebx
2399 psrlq xmm6,2
2400 and r12d,r9d
2401 xor r13d,r9d
2402 add eax,DWORD[60+rsp]
2403 pxor xmm7,xmm6
2404 mov edi,ebx
2405 xor r12d,r11d
2406 ror r14d,11
2407 pshufd xmm7,xmm7,8
2408 xor edi,ecx
2409 add eax,r12d
2410 movdqa xmm6,XMMWORD[96+rbp]
2411 ror r13d,6
2412 and r15d,edi
2413 pslldq xmm7,8
2414 xor r14d,ebx
2415 add eax,r13d
2416 xor r15d,ecx
2417 paddd xmm3,xmm7
2418 ror r14d,2
2419 add r8d,eax
2420 add eax,r15d
2421 paddd xmm6,xmm3
2422 mov r13d,r8d
2423 add r14d,eax
2424 movdqa XMMWORD[48+rsp],xmm6
2425 cmp BYTE[131+rbp],0
2426 jne NEAR $L$ssse3_00_47
2427 ror r13d,14
2428 mov eax,r14d
2429 mov r12d,r9d
2430 ror r14d,9
2431 xor r13d,r8d
2432 xor r12d,r10d
2433 ror r13d,5
2434 xor r14d,eax
2435 and r12d,r8d
2436 xor r13d,r8d
2437 add r11d,DWORD[rsp]
2438 mov r15d,eax
2439 xor r12d,r10d
2440 ror r14d,11
2441 xor r15d,ebx
2442 add r11d,r12d
2443 ror r13d,6
2444 and edi,r15d
2445 xor r14d,eax
2446 add r11d,r13d
2447 xor edi,ebx
2448 ror r14d,2
2449 add edx,r11d
2450 add r11d,edi
2451 mov r13d,edx
2452 add r14d,r11d
2453 ror r13d,14
2454 mov r11d,r14d
2455 mov r12d,r8d
2456 ror r14d,9
2457 xor r13d,edx
2458 xor r12d,r9d
2459 ror r13d,5
2460 xor r14d,r11d
2461 and r12d,edx
2462 xor r13d,edx
2463 add r10d,DWORD[4+rsp]
2464 mov edi,r11d
2465 xor r12d,r9d
2466 ror r14d,11
2467 xor edi,eax
2468 add r10d,r12d
2469 ror r13d,6
2470 and r15d,edi
2471 xor r14d,r11d
2472 add r10d,r13d
2473 xor r15d,eax
2474 ror r14d,2
2475 add ecx,r10d
2476 add r10d,r15d
2477 mov r13d,ecx
2478 add r14d,r10d
2479 ror r13d,14
2480 mov r10d,r14d
2481 mov r12d,edx
2482 ror r14d,9
2483 xor r13d,ecx
2484 xor r12d,r8d
2485 ror r13d,5
2486 xor r14d,r10d
2487 and r12d,ecx
2488 xor r13d,ecx
2489 add r9d,DWORD[8+rsp]
2490 mov r15d,r10d
2491 xor r12d,r8d
2492 ror r14d,11
2493 xor r15d,r11d
2494 add r9d,r12d
2495 ror r13d,6
2496 and edi,r15d
2497 xor r14d,r10d
2498 add r9d,r13d
2499 xor edi,r11d
2500 ror r14d,2
2501 add ebx,r9d
2502 add r9d,edi
2503 mov r13d,ebx
2504 add r14d,r9d
2505 ror r13d,14
2506 mov r9d,r14d
2507 mov r12d,ecx
2508 ror r14d,9
2509 xor r13d,ebx
2510 xor r12d,edx
2511 ror r13d,5
2512 xor r14d,r9d
2513 and r12d,ebx
2514 xor r13d,ebx
2515 add r8d,DWORD[12+rsp]
2516 mov edi,r9d
2517 xor r12d,edx
2518 ror r14d,11
2519 xor edi,r10d
2520 add r8d,r12d
2521 ror r13d,6
2522 and r15d,edi
2523 xor r14d,r9d
2524 add r8d,r13d
2525 xor r15d,r10d
2526 ror r14d,2
2527 add eax,r8d
2528 add r8d,r15d
2529 mov r13d,eax
2530 add r14d,r8d
2531 ror r13d,14
2532 mov r8d,r14d
2533 mov r12d,ebx
2534 ror r14d,9
2535 xor r13d,eax
2536 xor r12d,ecx
2537 ror r13d,5
2538 xor r14d,r8d
2539 and r12d,eax
2540 xor r13d,eax
2541 add edx,DWORD[16+rsp]
2542 mov r15d,r8d
2543 xor r12d,ecx
2544 ror r14d,11
2545 xor r15d,r9d
2546 add edx,r12d
2547 ror r13d,6
2548 and edi,r15d
2549 xor r14d,r8d
2550 add edx,r13d
2551 xor edi,r9d
2552 ror r14d,2
2553 add r11d,edx
2554 add edx,edi
2555 mov r13d,r11d
2556 add r14d,edx
2557 ror r13d,14
2558 mov edx,r14d
2559 mov r12d,eax
2560 ror r14d,9
2561 xor r13d,r11d
2562 xor r12d,ebx
2563 ror r13d,5
2564 xor r14d,edx
2565 and r12d,r11d
2566 xor r13d,r11d
2567 add ecx,DWORD[20+rsp]
2568 mov edi,edx
2569 xor r12d,ebx
2570 ror r14d,11
2571 xor edi,r8d
2572 add ecx,r12d
2573 ror r13d,6
2574 and r15d,edi
2575 xor r14d,edx
2576 add ecx,r13d
2577 xor r15d,r8d
2578 ror r14d,2
2579 add r10d,ecx
2580 add ecx,r15d
2581 mov r13d,r10d
2582 add r14d,ecx
2583 ror r13d,14
2584 mov ecx,r14d
2585 mov r12d,r11d
2586 ror r14d,9
2587 xor r13d,r10d
2588 xor r12d,eax
2589 ror r13d,5
2590 xor r14d,ecx
2591 and r12d,r10d
2592 xor r13d,r10d
2593 add ebx,DWORD[24+rsp]
2594 mov r15d,ecx
2595 xor r12d,eax
2596 ror r14d,11
2597 xor r15d,edx
2598 add ebx,r12d
2599 ror r13d,6
2600 and edi,r15d
2601 xor r14d,ecx
2602 add ebx,r13d
2603 xor edi,edx
2604 ror r14d,2
2605 add r9d,ebx
2606 add ebx,edi
2607 mov r13d,r9d
2608 add r14d,ebx
2609 ror r13d,14
2610 mov ebx,r14d
2611 mov r12d,r10d
2612 ror r14d,9
2613 xor r13d,r9d
2614 xor r12d,r11d
2615 ror r13d,5
2616 xor r14d,ebx
2617 and r12d,r9d
2618 xor r13d,r9d
2619 add eax,DWORD[28+rsp]
2620 mov edi,ebx
2621 xor r12d,r11d
2622 ror r14d,11
2623 xor edi,ecx
2624 add eax,r12d
2625 ror r13d,6
2626 and r15d,edi
2627 xor r14d,ebx
2628 add eax,r13d
2629 xor r15d,ecx
2630 ror r14d,2
2631 add r8d,eax
2632 add eax,r15d
2633 mov r13d,r8d
2634 add r14d,eax
2635 ror r13d,14
2636 mov eax,r14d
2637 mov r12d,r9d
2638 ror r14d,9
2639 xor r13d,r8d
2640 xor r12d,r10d
2641 ror r13d,5
2642 xor r14d,eax
2643 and r12d,r8d
2644 xor r13d,r8d
2645 add r11d,DWORD[32+rsp]
2646 mov r15d,eax
2647 xor r12d,r10d
2648 ror r14d,11
2649 xor r15d,ebx
2650 add r11d,r12d
2651 ror r13d,6
2652 and edi,r15d
2653 xor r14d,eax
2654 add r11d,r13d
2655 xor edi,ebx
2656 ror r14d,2
2657 add edx,r11d
2658 add r11d,edi
2659 mov r13d,edx
2660 add r14d,r11d
2661 ror r13d,14
2662 mov r11d,r14d
2663 mov r12d,r8d
2664 ror r14d,9
2665 xor r13d,edx
2666 xor r12d,r9d
2667 ror r13d,5
2668 xor r14d,r11d
2669 and r12d,edx
2670 xor r13d,edx
2671 add r10d,DWORD[36+rsp]
2672 mov edi,r11d
2673 xor r12d,r9d
2674 ror r14d,11
2675 xor edi,eax
2676 add r10d,r12d
2677 ror r13d,6
2678 and r15d,edi
2679 xor r14d,r11d
2680 add r10d,r13d
2681 xor r15d,eax
2682 ror r14d,2
2683 add ecx,r10d
2684 add r10d,r15d
2685 mov r13d,ecx
2686 add r14d,r10d
2687 ror r13d,14
2688 mov r10d,r14d
2689 mov r12d,edx
2690 ror r14d,9
2691 xor r13d,ecx
2692 xor r12d,r8d
2693 ror r13d,5
2694 xor r14d,r10d
2695 and r12d,ecx
2696 xor r13d,ecx
2697 add r9d,DWORD[40+rsp]
2698 mov r15d,r10d
2699 xor r12d,r8d
2700 ror r14d,11
2701 xor r15d,r11d
2702 add r9d,r12d
2703 ror r13d,6
2704 and edi,r15d
2705 xor r14d,r10d
2706 add r9d,r13d
2707 xor edi,r11d
2708 ror r14d,2
2709 add ebx,r9d
2710 add r9d,edi
2711 mov r13d,ebx
2712 add r14d,r9d
2713 ror r13d,14
2714 mov r9d,r14d
2715 mov r12d,ecx
2716 ror r14d,9
2717 xor r13d,ebx
2718 xor r12d,edx
2719 ror r13d,5
2720 xor r14d,r9d
2721 and r12d,ebx
2722 xor r13d,ebx
2723 add r8d,DWORD[44+rsp]
2724 mov edi,r9d
2725 xor r12d,edx
2726 ror r14d,11
2727 xor edi,r10d
2728 add r8d,r12d
2729 ror r13d,6
2730 and r15d,edi
2731 xor r14d,r9d
2732 add r8d,r13d
2733 xor r15d,r10d
2734 ror r14d,2
2735 add eax,r8d
2736 add r8d,r15d
2737 mov r13d,eax
2738 add r14d,r8d
2739 ror r13d,14
2740 mov r8d,r14d
2741 mov r12d,ebx
2742 ror r14d,9
2743 xor r13d,eax
2744 xor r12d,ecx
2745 ror r13d,5
2746 xor r14d,r8d
2747 and r12d,eax
2748 xor r13d,eax
2749 add edx,DWORD[48+rsp]
2750 mov r15d,r8d
2751 xor r12d,ecx
2752 ror r14d,11
2753 xor r15d,r9d
2754 add edx,r12d
2755 ror r13d,6
2756 and edi,r15d
2757 xor r14d,r8d
2758 add edx,r13d
2759 xor edi,r9d
2760 ror r14d,2
2761 add r11d,edx
2762 add edx,edi
2763 mov r13d,r11d
2764 add r14d,edx
2765 ror r13d,14
2766 mov edx,r14d
2767 mov r12d,eax
2768 ror r14d,9
2769 xor r13d,r11d
2770 xor r12d,ebx
2771 ror r13d,5
2772 xor r14d,edx
2773 and r12d,r11d
2774 xor r13d,r11d
2775 add ecx,DWORD[52+rsp]
2776 mov edi,edx
2777 xor r12d,ebx
2778 ror r14d,11
2779 xor edi,r8d
2780 add ecx,r12d
2781 ror r13d,6
2782 and r15d,edi
2783 xor r14d,edx
2784 add ecx,r13d
2785 xor r15d,r8d
2786 ror r14d,2
2787 add r10d,ecx
2788 add ecx,r15d
2789 mov r13d,r10d
2790 add r14d,ecx
2791 ror r13d,14
2792 mov ecx,r14d
2793 mov r12d,r11d
2794 ror r14d,9
2795 xor r13d,r10d
2796 xor r12d,eax
2797 ror r13d,5
2798 xor r14d,ecx
2799 and r12d,r10d
2800 xor r13d,r10d
2801 add ebx,DWORD[56+rsp]
2802 mov r15d,ecx
2803 xor r12d,eax
2804 ror r14d,11
2805 xor r15d,edx
2806 add ebx,r12d
2807 ror r13d,6
2808 and edi,r15d
2809 xor r14d,ecx
2810 add ebx,r13d
2811 xor edi,edx
2812 ror r14d,2
2813 add r9d,ebx
2814 add ebx,edi
2815 mov r13d,r9d
2816 add r14d,ebx
2817 ror r13d,14
2818 mov ebx,r14d
2819 mov r12d,r10d
2820 ror r14d,9
2821 xor r13d,r9d
2822 xor r12d,r11d
2823 ror r13d,5
2824 xor r14d,ebx
2825 and r12d,r9d
2826 xor r13d,r9d
2827 add eax,DWORD[60+rsp]
2828 mov edi,ebx
2829 xor r12d,r11d
2830 ror r14d,11
2831 xor edi,ecx
2832 add eax,r12d
2833 ror r13d,6
2834 and r15d,edi
2835 xor r14d,ebx
2836 add eax,r13d
2837 xor r15d,ecx
2838 ror r14d,2
2839 add r8d,eax
2840 add eax,r15d
2841 mov r13d,r8d
2842 add r14d,eax
2843 mov rdi,QWORD[((64+0))+rsp]
2844 mov eax,r14d
2845
2846 add eax,DWORD[rdi]
2847 lea rsi,[64+rsi]
2848 add ebx,DWORD[4+rdi]
2849 add ecx,DWORD[8+rdi]
2850 add edx,DWORD[12+rdi]
2851 add r8d,DWORD[16+rdi]
2852 add r9d,DWORD[20+rdi]
2853 add r10d,DWORD[24+rdi]
2854 add r11d,DWORD[28+rdi]
2855
2856 cmp rsi,QWORD[((64+16))+rsp]
2857
2858 mov DWORD[rdi],eax
2859 mov DWORD[4+rdi],ebx
2860 mov DWORD[8+rdi],ecx
2861 mov DWORD[12+rdi],edx
2862 mov DWORD[16+rdi],r8d
2863 mov DWORD[20+rdi],r9d
2864 mov DWORD[24+rdi],r10d
2865 mov DWORD[28+rdi],r11d
2866 jb NEAR $L$loop_ssse3
2867
2868 mov rsi,QWORD[((64+24))+rsp]
2869 movaps xmm6,XMMWORD[((64+32))+rsp]
2870 movaps xmm7,XMMWORD[((64+48))+rsp]
2871 movaps xmm8,XMMWORD[((64+64))+rsp]
2872 movaps xmm9,XMMWORD[((64+80))+rsp]
2873 mov r15,QWORD[((-48))+rsi]
2874 mov r14,QWORD[((-40))+rsi]
2875 mov r13,QWORD[((-32))+rsi]
2876 mov r12,QWORD[((-24))+rsi]
2877 mov rbp,QWORD[((-16))+rsi]
2878 mov rbx,QWORD[((-8))+rsi]
2879 lea rsp,[rsi]
2880 $L$epilogue_ssse3:
2881 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
2882 mov rsi,QWORD[16+rsp]
2883 DB 0F3h,0C3h ;repret
2884 $L$SEH_end_sha256_block_data_order_ssse3:
2885
2886 ALIGN 64
2887 sha256_block_data_order_avx:
2888 mov QWORD[8+rsp],rdi ;WIN64 prologue
2889 mov QWORD[16+rsp],rsi
2890 mov rax,rsp
2891 $L$SEH_begin_sha256_block_data_order_avx:
2892 mov rdi,rcx
2893 mov rsi,rdx
2894 mov rdx,r8
2895
2896
2897 $L$avx_shortcut:
2898 mov rax,rsp
2899 push rbx
2900 push rbp
2901 push r12
2902 push r13
2903 push r14
2904 push r15
2905 shl rdx,4
2906 sub rsp,160
2907 lea rdx,[rdx*4+rsi]
2908 and rsp,-64
2909 mov QWORD[((64+0))+rsp],rdi
2910 mov QWORD[((64+8))+rsp],rsi
2911 mov QWORD[((64+16))+rsp],rdx
2912 mov QWORD[((64+24))+rsp],rax
2913 movaps XMMWORD[(64+32)+rsp],xmm6
2914 movaps XMMWORD[(64+48)+rsp],xmm7
2915 movaps XMMWORD[(64+64)+rsp],xmm8
2916 movaps XMMWORD[(64+80)+rsp],xmm9
2917 $L$prologue_avx:
2918
2919 vzeroupper
2920 mov eax,DWORD[rdi]
2921 mov ebx,DWORD[4+rdi]
2922 mov ecx,DWORD[8+rdi]
2923 mov edx,DWORD[12+rdi]
2924 mov r8d,DWORD[16+rdi]
2925 mov r9d,DWORD[20+rdi]
2926 mov r10d,DWORD[24+rdi]
2927 mov r11d,DWORD[28+rdi]
2928 vmovdqa xmm8,XMMWORD[((K256+512+32))]
2929 vmovdqa xmm9,XMMWORD[((K256+512+64))]
2930 jmp NEAR $L$loop_avx
2931 ALIGN 16
2932 $L$loop_avx:
2933 vmovdqa xmm7,XMMWORD[((K256+512))]
2934 vmovdqu xmm0,XMMWORD[rsi]
2935 vmovdqu xmm1,XMMWORD[16+rsi]
2936 vmovdqu xmm2,XMMWORD[32+rsi]
2937 vmovdqu xmm3,XMMWORD[48+rsi]
2938 vpshufb xmm0,xmm0,xmm7
2939 lea rbp,[K256]
2940 vpshufb xmm1,xmm1,xmm7
2941 vpshufb xmm2,xmm2,xmm7
2942 vpaddd xmm4,xmm0,XMMWORD[rbp]
2943 vpshufb xmm3,xmm3,xmm7
2944 vpaddd xmm5,xmm1,XMMWORD[32+rbp]
2945 vpaddd xmm6,xmm2,XMMWORD[64+rbp]
2946 vpaddd xmm7,xmm3,XMMWORD[96+rbp]
2947 vmovdqa XMMWORD[rsp],xmm4
2948 mov r14d,eax
2949 vmovdqa XMMWORD[16+rsp],xmm5
2950 mov edi,ebx
2951 vmovdqa XMMWORD[32+rsp],xmm6
2952 xor edi,ecx
2953 vmovdqa XMMWORD[48+rsp],xmm7
2954 mov r13d,r8d
2955 jmp NEAR $L$avx_00_47
2956
2957 ALIGN 16
2958 $L$avx_00_47:
2959 sub rbp,-128
2960 vpalignr xmm4,xmm1,xmm0,4
2961 shrd r13d,r13d,14
2962 mov eax,r14d
2963 mov r12d,r9d
2964 vpalignr xmm7,xmm3,xmm2,4
2965 shrd r14d,r14d,9
2966 xor r13d,r8d
2967 xor r12d,r10d
2968 vpsrld xmm6,xmm4,7
2969 shrd r13d,r13d,5
2970 xor r14d,eax
2971 and r12d,r8d
2972 vpaddd xmm0,xmm0,xmm7
2973 xor r13d,r8d
2974 add r11d,DWORD[rsp]
2975 mov r15d,eax
2976 vpsrld xmm7,xmm4,3
2977 xor r12d,r10d
2978 shrd r14d,r14d,11
2979 xor r15d,ebx
2980 vpslld xmm5,xmm4,14
2981 add r11d,r12d
2982 shrd r13d,r13d,6
2983 and edi,r15d
2984 vpxor xmm4,xmm7,xmm6
2985 xor r14d,eax
2986 add r11d,r13d
2987 xor edi,ebx
2988 vpshufd xmm7,xmm3,250
2989 shrd r14d,r14d,2
2990 add edx,r11d
2991 add r11d,edi
2992 vpsrld xmm6,xmm6,11
2993 mov r13d,edx
2994 add r14d,r11d
2995 shrd r13d,r13d,14
2996 vpxor xmm4,xmm4,xmm5
2997 mov r11d,r14d
2998 mov r12d,r8d
2999 shrd r14d,r14d,9
3000 vpslld xmm5,xmm5,11
3001 xor r13d,edx
3002 xor r12d,r9d
3003 shrd r13d,r13d,5
3004 vpxor xmm4,xmm4,xmm6
3005 xor r14d,r11d
3006 and r12d,edx
3007 xor r13d,edx
3008 vpsrld xmm6,xmm7,10
3009 add r10d,DWORD[4+rsp]
3010 mov edi,r11d
3011 xor r12d,r9d
3012 vpxor xmm4,xmm4,xmm5
3013 shrd r14d,r14d,11
3014 xor edi,eax
3015 add r10d,r12d
3016 vpsrlq xmm7,xmm7,17
3017 shrd r13d,r13d,6
3018 and r15d,edi
3019 xor r14d,r11d
3020 vpaddd xmm0,xmm0,xmm4
3021 add r10d,r13d
3022 xor r15d,eax
3023 shrd r14d,r14d,2
3024 vpxor xmm6,xmm6,xmm7
3025 add ecx,r10d
3026 add r10d,r15d
3027 mov r13d,ecx
3028 vpsrlq xmm7,xmm7,2
3029 add r14d,r10d
3030 shrd r13d,r13d,14
3031 mov r10d,r14d
3032 vpxor xmm6,xmm6,xmm7
3033 mov r12d,edx
3034 shrd r14d,r14d,9
3035 xor r13d,ecx
3036 vpshufb xmm6,xmm6,xmm8
3037 xor r12d,r8d
3038 shrd r13d,r13d,5
3039 xor r14d,r10d
3040 vpaddd xmm0,xmm0,xmm6
3041 and r12d,ecx
3042 xor r13d,ecx
3043 add r9d,DWORD[8+rsp]
3044 vpshufd xmm7,xmm0,80
3045 mov r15d,r10d
3046 xor r12d,r8d
3047 shrd r14d,r14d,11
3048 vpsrld xmm6,xmm7,10
3049 xor r15d,r11d
3050 add r9d,r12d
3051 shrd r13d,r13d,6
3052 vpsrlq xmm7,xmm7,17
3053 and edi,r15d
3054 xor r14d,r10d
3055 add r9d,r13d
3056 vpxor xmm6,xmm6,xmm7
3057 xor edi,r11d
3058 shrd r14d,r14d,2
3059 add ebx,r9d
3060 vpsrlq xmm7,xmm7,2
3061 add r9d,edi
3062 mov r13d,ebx
3063 add r14d,r9d
3064 vpxor xmm6,xmm6,xmm7
3065 shrd r13d,r13d,14
3066 mov r9d,r14d
3067 mov r12d,ecx
3068 vpshufb xmm6,xmm6,xmm9
3069 shrd r14d,r14d,9
3070 xor r13d,ebx
3071 xor r12d,edx
3072 vpaddd xmm0,xmm0,xmm6
3073 shrd r13d,r13d,5
3074 xor r14d,r9d
3075 and r12d,ebx
3076 vpaddd xmm6,xmm0,XMMWORD[rbp]
3077 xor r13d,ebx
3078 add r8d,DWORD[12+rsp]
3079 mov edi,r9d
3080 xor r12d,edx
3081 shrd r14d,r14d,11
3082 xor edi,r10d
3083 add r8d,r12d
3084 shrd r13d,r13d,6
3085 and r15d,edi
3086 xor r14d,r9d
3087 add r8d,r13d
3088 xor r15d,r10d
3089 shrd r14d,r14d,2
3090 add eax,r8d
3091 add r8d,r15d
3092 mov r13d,eax
3093 add r14d,r8d
3094 vmovdqa XMMWORD[rsp],xmm6
3095 vpalignr xmm4,xmm2,xmm1,4
3096 shrd r13d,r13d,14
3097 mov r8d,r14d
3098 mov r12d,ebx
3099 vpalignr xmm7,xmm0,xmm3,4
3100 shrd r14d,r14d,9
3101 xor r13d,eax
3102 xor r12d,ecx
3103 vpsrld xmm6,xmm4,7
3104 shrd r13d,r13d,5
3105 xor r14d,r8d
3106 and r12d,eax
3107 vpaddd xmm1,xmm1,xmm7
3108 xor r13d,eax
3109 add edx,DWORD[16+rsp]
3110 mov r15d,r8d
3111 vpsrld xmm7,xmm4,3
3112 xor r12d,ecx
3113 shrd r14d,r14d,11
3114 xor r15d,r9d
3115 vpslld xmm5,xmm4,14
3116 add edx,r12d
3117 shrd r13d,r13d,6
3118 and edi,r15d
3119 vpxor xmm4,xmm7,xmm6
3120 xor r14d,r8d
3121 add edx,r13d
3122 xor edi,r9d
3123 vpshufd xmm7,xmm0,250
3124 shrd r14d,r14d,2
3125 add r11d,edx
3126 add edx,edi
3127 vpsrld xmm6,xmm6,11
3128 mov r13d,r11d
3129 add r14d,edx
3130 shrd r13d,r13d,14
3131 vpxor xmm4,xmm4,xmm5
3132 mov edx,r14d
3133 mov r12d,eax
3134 shrd r14d,r14d,9
3135 vpslld xmm5,xmm5,11
3136 xor r13d,r11d
3137 xor r12d,ebx
3138 shrd r13d,r13d,5
3139 vpxor xmm4,xmm4,xmm6
3140 xor r14d,edx
3141 and r12d,r11d
3142 xor r13d,r11d
3143 vpsrld xmm6,xmm7,10
3144 add ecx,DWORD[20+rsp]
3145 mov edi,edx
3146 xor r12d,ebx
3147 vpxor xmm4,xmm4,xmm5
3148 shrd r14d,r14d,11
3149 xor edi,r8d
3150 add ecx,r12d
3151 vpsrlq xmm7,xmm7,17
3152 shrd r13d,r13d,6
3153 and r15d,edi
3154 xor r14d,edx
3155 vpaddd xmm1,xmm1,xmm4
3156 add ecx,r13d
3157 xor r15d,r8d
3158 shrd r14d,r14d,2
3159 vpxor xmm6,xmm6,xmm7
3160 add r10d,ecx
3161 add ecx,r15d
3162 mov r13d,r10d
3163 vpsrlq xmm7,xmm7,2
3164 add r14d,ecx
3165 shrd r13d,r13d,14
3166 mov ecx,r14d
3167 vpxor xmm6,xmm6,xmm7
3168 mov r12d,r11d
3169 shrd r14d,r14d,9
3170 xor r13d,r10d
3171 vpshufb xmm6,xmm6,xmm8
3172 xor r12d,eax
3173 shrd r13d,r13d,5
3174 xor r14d,ecx
3175 vpaddd xmm1,xmm1,xmm6
3176 and r12d,r10d
3177 xor r13d,r10d
3178 add ebx,DWORD[24+rsp]
3179 vpshufd xmm7,xmm1,80
3180 mov r15d,ecx
3181 xor r12d,eax
3182 shrd r14d,r14d,11
3183 vpsrld xmm6,xmm7,10
3184 xor r15d,edx
3185 add ebx,r12d
3186 shrd r13d,r13d,6
3187 vpsrlq xmm7,xmm7,17
3188 and edi,r15d
3189 xor r14d,ecx
3190 add ebx,r13d
3191 vpxor xmm6,xmm6,xmm7
3192 xor edi,edx
3193 shrd r14d,r14d,2
3194 add r9d,ebx
3195 vpsrlq xmm7,xmm7,2
3196 add ebx,edi
3197 mov r13d,r9d
3198 add r14d,ebx
3199 vpxor xmm6,xmm6,xmm7
3200 shrd r13d,r13d,14
3201 mov ebx,r14d
3202 mov r12d,r10d
3203 vpshufb xmm6,xmm6,xmm9
3204 shrd r14d,r14d,9
3205 xor r13d,r9d
3206 xor r12d,r11d
3207 vpaddd xmm1,xmm1,xmm6
3208 shrd r13d,r13d,5
3209 xor r14d,ebx
3210 and r12d,r9d
3211 vpaddd xmm6,xmm1,XMMWORD[32+rbp]
3212 xor r13d,r9d
3213 add eax,DWORD[28+rsp]
3214 mov edi,ebx
3215 xor r12d,r11d
3216 shrd r14d,r14d,11
3217 xor edi,ecx
3218 add eax,r12d
3219 shrd r13d,r13d,6
3220 and r15d,edi
3221 xor r14d,ebx
3222 add eax,r13d
3223 xor r15d,ecx
3224 shrd r14d,r14d,2
3225 add r8d,eax
3226 add eax,r15d
3227 mov r13d,r8d
3228 add r14d,eax
3229 vmovdqa XMMWORD[16+rsp],xmm6
3230 vpalignr xmm4,xmm3,xmm2,4
3231 shrd r13d,r13d,14
3232 mov eax,r14d
3233 mov r12d,r9d
3234 vpalignr xmm7,xmm1,xmm0,4
3235 shrd r14d,r14d,9
3236 xor r13d,r8d
3237 xor r12d,r10d
3238 vpsrld xmm6,xmm4,7
3239 shrd r13d,r13d,5
3240 xor r14d,eax
3241 and r12d,r8d
3242 vpaddd xmm2,xmm2,xmm7
3243 xor r13d,r8d
3244 add r11d,DWORD[32+rsp]
3245 mov r15d,eax
3246 vpsrld xmm7,xmm4,3
3247 xor r12d,r10d
3248 shrd r14d,r14d,11
3249 xor r15d,ebx
3250 vpslld xmm5,xmm4,14
3251 add r11d,r12d
3252 shrd r13d,r13d,6
3253 and edi,r15d
3254 vpxor xmm4,xmm7,xmm6
3255 xor r14d,eax
3256 add r11d,r13d
3257 xor edi,ebx
3258 vpshufd xmm7,xmm1,250
3259 shrd r14d,r14d,2
3260 add edx,r11d
3261 add r11d,edi
3262 vpsrld xmm6,xmm6,11
3263 mov r13d,edx
3264 add r14d,r11d
3265 shrd r13d,r13d,14
3266 vpxor xmm4,xmm4,xmm5
3267 mov r11d,r14d
3268 mov r12d,r8d
3269 shrd r14d,r14d,9
3270 vpslld xmm5,xmm5,11
3271 xor r13d,edx
3272 xor r12d,r9d
3273 shrd r13d,r13d,5
3274 vpxor xmm4,xmm4,xmm6
3275 xor r14d,r11d
3276 and r12d,edx
3277 xor r13d,edx
3278 vpsrld xmm6,xmm7,10
3279 add r10d,DWORD[36+rsp]
3280 mov edi,r11d
3281 xor r12d,r9d
3282 vpxor xmm4,xmm4,xmm5
3283 shrd r14d,r14d,11
3284 xor edi,eax
3285 add r10d,r12d
3286 vpsrlq xmm7,xmm7,17
3287 shrd r13d,r13d,6
3288 and r15d,edi
3289 xor r14d,r11d
3290 vpaddd xmm2,xmm2,xmm4
3291 add r10d,r13d
3292 xor r15d,eax
3293 shrd r14d,r14d,2
3294 vpxor xmm6,xmm6,xmm7
3295 add ecx,r10d
3296 add r10d,r15d
3297 mov r13d,ecx
3298 vpsrlq xmm7,xmm7,2
3299 add r14d,r10d
3300 shrd r13d,r13d,14
3301 mov r10d,r14d
3302 vpxor xmm6,xmm6,xmm7
3303 mov r12d,edx
3304 shrd r14d,r14d,9
3305 xor r13d,ecx
3306 vpshufb xmm6,xmm6,xmm8
3307 xor r12d,r8d
3308 shrd r13d,r13d,5
3309 xor r14d,r10d
3310 vpaddd xmm2,xmm2,xmm6
3311 and r12d,ecx
3312 xor r13d,ecx
3313 add r9d,DWORD[40+rsp]
3314 vpshufd xmm7,xmm2,80
3315 mov r15d,r10d
3316 xor r12d,r8d
3317 shrd r14d,r14d,11
3318 vpsrld xmm6,xmm7,10
3319 xor r15d,r11d
3320 add r9d,r12d
3321 shrd r13d,r13d,6
3322 vpsrlq xmm7,xmm7,17
3323 and edi,r15d
3324 xor r14d,r10d
3325 add r9d,r13d
3326 vpxor xmm6,xmm6,xmm7
3327 xor edi,r11d
3328 shrd r14d,r14d,2
3329 add ebx,r9d
3330 vpsrlq xmm7,xmm7,2
3331 add r9d,edi
3332 mov r13d,ebx
3333 add r14d,r9d
3334 vpxor xmm6,xmm6,xmm7
3335 shrd r13d,r13d,14
3336 mov r9d,r14d
3337 mov r12d,ecx
3338 vpshufb xmm6,xmm6,xmm9
3339 shrd r14d,r14d,9
3340 xor r13d,ebx
3341 xor r12d,edx
3342 vpaddd xmm2,xmm2,xmm6
3343 shrd r13d,r13d,5
3344 xor r14d,r9d
3345 and r12d,ebx
3346 vpaddd xmm6,xmm2,XMMWORD[64+rbp]
3347 xor r13d,ebx
3348 add r8d,DWORD[44+rsp]
3349 mov edi,r9d
3350 xor r12d,edx
3351 shrd r14d,r14d,11
3352 xor edi,r10d
3353 add r8d,r12d
3354 shrd r13d,r13d,6
3355 and r15d,edi
3356 xor r14d,r9d
3357 add r8d,r13d
3358 xor r15d,r10d
3359 shrd r14d,r14d,2
3360 add eax,r8d
3361 add r8d,r15d
3362 mov r13d,eax
3363 add r14d,r8d
3364 vmovdqa XMMWORD[32+rsp],xmm6
3365 vpalignr xmm4,xmm0,xmm3,4
3366 shrd r13d,r13d,14
3367 mov r8d,r14d
3368 mov r12d,ebx
3369 vpalignr xmm7,xmm2,xmm1,4
3370 shrd r14d,r14d,9
3371 xor r13d,eax
3372 xor r12d,ecx
3373 vpsrld xmm6,xmm4,7
3374 shrd r13d,r13d,5
3375 xor r14d,r8d
3376 and r12d,eax
3377 vpaddd xmm3,xmm3,xmm7
3378 xor r13d,eax
3379 add edx,DWORD[48+rsp]
3380 mov r15d,r8d
3381 vpsrld xmm7,xmm4,3
3382 xor r12d,ecx
3383 shrd r14d,r14d,11
3384 xor r15d,r9d
3385 vpslld xmm5,xmm4,14
3386 add edx,r12d
3387 shrd r13d,r13d,6
3388 and edi,r15d
3389 vpxor xmm4,xmm7,xmm6
3390 xor r14d,r8d
3391 add edx,r13d
3392 xor edi,r9d
3393 vpshufd xmm7,xmm2,250
3394 shrd r14d,r14d,2
3395 add r11d,edx
3396 add edx,edi
3397 vpsrld xmm6,xmm6,11
3398 mov r13d,r11d
3399 add r14d,edx
3400 shrd r13d,r13d,14
3401 vpxor xmm4,xmm4,xmm5
3402 mov edx,r14d
3403 mov r12d,eax
3404 shrd r14d,r14d,9
3405 vpslld xmm5,xmm5,11
3406 xor r13d,r11d
3407 xor r12d,ebx
3408 shrd r13d,r13d,5
3409 vpxor xmm4,xmm4,xmm6
3410 xor r14d,edx
3411 and r12d,r11d
3412 xor r13d,r11d
3413 vpsrld xmm6,xmm7,10
3414 add ecx,DWORD[52+rsp]
3415 mov edi,edx
3416 xor r12d,ebx
3417 vpxor xmm4,xmm4,xmm5
3418 shrd r14d,r14d,11
3419 xor edi,r8d
3420 add ecx,r12d
3421 vpsrlq xmm7,xmm7,17
3422 shrd r13d,r13d,6
3423 and r15d,edi
3424 xor r14d,edx
3425 vpaddd xmm3,xmm3,xmm4
3426 add ecx,r13d
3427 xor r15d,r8d
3428 shrd r14d,r14d,2
3429 vpxor xmm6,xmm6,xmm7
3430 add r10d,ecx
3431 add ecx,r15d
3432 mov r13d,r10d
3433 vpsrlq xmm7,xmm7,2
3434 add r14d,ecx
3435 shrd r13d,r13d,14
3436 mov ecx,r14d
3437 vpxor xmm6,xmm6,xmm7
3438 mov r12d,r11d
3439 shrd r14d,r14d,9
3440 xor r13d,r10d
3441 vpshufb xmm6,xmm6,xmm8
3442 xor r12d,eax
3443 shrd r13d,r13d,5
3444 xor r14d,ecx
3445 vpaddd xmm3,xmm3,xmm6
3446 and r12d,r10d
3447 xor r13d,r10d
3448 add ebx,DWORD[56+rsp]
3449 vpshufd xmm7,xmm3,80
3450 mov r15d,ecx
3451 xor r12d,eax
3452 shrd r14d,r14d,11
3453 vpsrld xmm6,xmm7,10
3454 xor r15d,edx
3455 add ebx,r12d
3456 shrd r13d,r13d,6
3457 vpsrlq xmm7,xmm7,17
3458 and edi,r15d
3459 xor r14d,ecx
3460 add ebx,r13d
3461 vpxor xmm6,xmm6,xmm7
3462 xor edi,edx
3463 shrd r14d,r14d,2
3464 add r9d,ebx
3465 vpsrlq xmm7,xmm7,2
3466 add ebx,edi
3467 mov r13d,r9d
3468 add r14d,ebx
3469 vpxor xmm6,xmm6,xmm7
3470 shrd r13d,r13d,14
3471 mov ebx,r14d
3472 mov r12d,r10d
3473 vpshufb xmm6,xmm6,xmm9
3474 shrd r14d,r14d,9
3475 xor r13d,r9d
3476 xor r12d,r11d
3477 vpaddd xmm3,xmm3,xmm6
3478 shrd r13d,r13d,5
3479 xor r14d,ebx
3480 and r12d,r9d
3481 vpaddd xmm6,xmm3,XMMWORD[96+rbp]
3482 xor r13d,r9d
3483 add eax,DWORD[60+rsp]
3484 mov edi,ebx
3485 xor r12d,r11d
3486 shrd r14d,r14d,11
3487 xor edi,ecx
3488 add eax,r12d
3489 shrd r13d,r13d,6
3490 and r15d,edi
3491 xor r14d,ebx
3492 add eax,r13d
3493 xor r15d,ecx
3494 shrd r14d,r14d,2
3495 add r8d,eax
3496 add eax,r15d
3497 mov r13d,r8d
3498 add r14d,eax
3499 vmovdqa XMMWORD[48+rsp],xmm6
3500 cmp BYTE[131+rbp],0
3501 jne NEAR $L$avx_00_47
3502 shrd r13d,r13d,14
3503 mov eax,r14d
3504 mov r12d,r9d
3505 shrd r14d,r14d,9
3506 xor r13d,r8d
3507 xor r12d,r10d
3508 shrd r13d,r13d,5
3509 xor r14d,eax
3510 and r12d,r8d
3511 xor r13d,r8d
3512 add r11d,DWORD[rsp]
3513 mov r15d,eax
3514 xor r12d,r10d
3515 shrd r14d,r14d,11
3516 xor r15d,ebx
3517 add r11d,r12d
3518 shrd r13d,r13d,6
3519 and edi,r15d
3520 xor r14d,eax
3521 add r11d,r13d
3522 xor edi,ebx
3523 shrd r14d,r14d,2
3524 add edx,r11d
3525 add r11d,edi
3526 mov r13d,edx
3527 add r14d,r11d
3528 shrd r13d,r13d,14
3529 mov r11d,r14d
3530 mov r12d,r8d
3531 shrd r14d,r14d,9
3532 xor r13d,edx
3533 xor r12d,r9d
3534 shrd r13d,r13d,5
3535 xor r14d,r11d
3536 and r12d,edx
3537 xor r13d,edx
3538 add r10d,DWORD[4+rsp]
3539 mov edi,r11d
3540 xor r12d,r9d
3541 shrd r14d,r14d,11
3542 xor edi,eax
3543 add r10d,r12d
3544 shrd r13d,r13d,6
3545 and r15d,edi
3546 xor r14d,r11d
3547 add r10d,r13d
3548 xor r15d,eax
3549 shrd r14d,r14d,2
3550 add ecx,r10d
3551 add r10d,r15d
3552 mov r13d,ecx
3553 add r14d,r10d
3554 shrd r13d,r13d,14
3555 mov r10d,r14d
3556 mov r12d,edx
3557 shrd r14d,r14d,9
3558 xor r13d,ecx
3559 xor r12d,r8d
3560 shrd r13d,r13d,5
3561 xor r14d,r10d
3562 and r12d,ecx
3563 xor r13d,ecx
3564 add r9d,DWORD[8+rsp]
3565 mov r15d,r10d
3566 xor r12d,r8d
3567 shrd r14d,r14d,11
3568 xor r15d,r11d
3569 add r9d,r12d
3570 shrd r13d,r13d,6
3571 and edi,r15d
3572 xor r14d,r10d
3573 add r9d,r13d
3574 xor edi,r11d
3575 shrd r14d,r14d,2
3576 add ebx,r9d
3577 add r9d,edi
3578 mov r13d,ebx
3579 add r14d,r9d
3580 shrd r13d,r13d,14
3581 mov r9d,r14d
3582 mov r12d,ecx
3583 shrd r14d,r14d,9
3584 xor r13d,ebx
3585 xor r12d,edx
3586 shrd r13d,r13d,5
3587 xor r14d,r9d
3588 and r12d,ebx
3589 xor r13d,ebx
3590 add r8d,DWORD[12+rsp]
3591 mov edi,r9d
3592 xor r12d,edx
3593 shrd r14d,r14d,11
3594 xor edi,r10d
3595 add r8d,r12d
3596 shrd r13d,r13d,6
3597 and r15d,edi
3598 xor r14d,r9d
3599 add r8d,r13d
3600 xor r15d,r10d
3601 shrd r14d,r14d,2
3602 add eax,r8d
3603 add r8d,r15d
3604 mov r13d,eax
3605 add r14d,r8d
3606 shrd r13d,r13d,14
3607 mov r8d,r14d
3608 mov r12d,ebx
3609 shrd r14d,r14d,9
3610 xor r13d,eax
3611 xor r12d,ecx
3612 shrd r13d,r13d,5
3613 xor r14d,r8d
3614 and r12d,eax
3615 xor r13d,eax
3616 add edx,DWORD[16+rsp]
3617 mov r15d,r8d
3618 xor r12d,ecx
3619 shrd r14d,r14d,11
3620 xor r15d,r9d
3621 add edx,r12d
3622 shrd r13d,r13d,6
3623 and edi,r15d
3624 xor r14d,r8d
3625 add edx,r13d
3626 xor edi,r9d
3627 shrd r14d,r14d,2
3628 add r11d,edx
3629 add edx,edi
3630 mov r13d,r11d
3631 add r14d,edx
3632 shrd r13d,r13d,14
3633 mov edx,r14d
3634 mov r12d,eax
3635 shrd r14d,r14d,9
3636 xor r13d,r11d
3637 xor r12d,ebx
3638 shrd r13d,r13d,5
3639 xor r14d,edx
3640 and r12d,r11d
3641 xor r13d,r11d
3642 add ecx,DWORD[20+rsp]
3643 mov edi,edx
3644 xor r12d,ebx
3645 shrd r14d,r14d,11
3646 xor edi,r8d
3647 add ecx,r12d
3648 shrd r13d,r13d,6
3649 and r15d,edi
3650 xor r14d,edx
3651 add ecx,r13d
3652 xor r15d,r8d
3653 shrd r14d,r14d,2
3654 add r10d,ecx
3655 add ecx,r15d
3656 mov r13d,r10d
3657 add r14d,ecx
3658 shrd r13d,r13d,14
3659 mov ecx,r14d
3660 mov r12d,r11d
3661 shrd r14d,r14d,9
3662 xor r13d,r10d
3663 xor r12d,eax
3664 shrd r13d,r13d,5
3665 xor r14d,ecx
3666 and r12d,r10d
3667 xor r13d,r10d
3668 add ebx,DWORD[24+rsp]
3669 mov r15d,ecx
3670 xor r12d,eax
3671 shrd r14d,r14d,11
3672 xor r15d,edx
3673 add ebx,r12d
3674 shrd r13d,r13d,6
3675 and edi,r15d
3676 xor r14d,ecx
3677 add ebx,r13d
3678 xor edi,edx
3679 shrd r14d,r14d,2
3680 add r9d,ebx
3681 add ebx,edi
3682 mov r13d,r9d
3683 add r14d,ebx
3684 shrd r13d,r13d,14
3685 mov ebx,r14d
3686 mov r12d,r10d
3687 shrd r14d,r14d,9
3688 xor r13d,r9d
3689 xor r12d,r11d
3690 shrd r13d,r13d,5
3691 xor r14d,ebx
3692 and r12d,r9d
3693 xor r13d,r9d
3694 add eax,DWORD[28+rsp]
3695 mov edi,ebx
3696 xor r12d,r11d
3697 shrd r14d,r14d,11
3698 xor edi,ecx
3699 add eax,r12d
3700 shrd r13d,r13d,6
3701 and r15d,edi
3702 xor r14d,ebx
3703 add eax,r13d
3704 xor r15d,ecx
3705 shrd r14d,r14d,2
3706 add r8d,eax
3707 add eax,r15d
3708 mov r13d,r8d
3709 add r14d,eax
3710 shrd r13d,r13d,14
3711 mov eax,r14d
3712 mov r12d,r9d
3713 shrd r14d,r14d,9
3714 xor r13d,r8d
3715 xor r12d,r10d
3716 shrd r13d,r13d,5
3717 xor r14d,eax
3718 and r12d,r8d
3719 xor r13d,r8d
3720 add r11d,DWORD[32+rsp]
3721 mov r15d,eax
3722 xor r12d,r10d
3723 shrd r14d,r14d,11
3724 xor r15d,ebx
3725 add r11d,r12d
3726 shrd r13d,r13d,6
3727 and edi,r15d
3728 xor r14d,eax
3729 add r11d,r13d
3730 xor edi,ebx
3731 shrd r14d,r14d,2
3732 add edx,r11d
3733 add r11d,edi
3734 mov r13d,edx
3735 add r14d,r11d
3736 shrd r13d,r13d,14
3737 mov r11d,r14d
3738 mov r12d,r8d
3739 shrd r14d,r14d,9
3740 xor r13d,edx
3741 xor r12d,r9d
3742 shrd r13d,r13d,5
3743 xor r14d,r11d
3744 and r12d,edx
3745 xor r13d,edx
3746 add r10d,DWORD[36+rsp]
3747 mov edi,r11d
3748 xor r12d,r9d
3749 shrd r14d,r14d,11
3750 xor edi,eax
3751 add r10d,r12d
3752 shrd r13d,r13d,6
3753 and r15d,edi
3754 xor r14d,r11d
3755 add r10d,r13d
3756 xor r15d,eax
3757 shrd r14d,r14d,2
3758 add ecx,r10d
3759 add r10d,r15d
3760 mov r13d,ecx
3761 add r14d,r10d
3762 shrd r13d,r13d,14
3763 mov r10d,r14d
3764 mov r12d,edx
3765 shrd r14d,r14d,9
3766 xor r13d,ecx
3767 xor r12d,r8d
3768 shrd r13d,r13d,5
3769 xor r14d,r10d
3770 and r12d,ecx
3771 xor r13d,ecx
3772 add r9d,DWORD[40+rsp]
3773 mov r15d,r10d
3774 xor r12d,r8d
3775 shrd r14d,r14d,11
3776 xor r15d,r11d
3777 add r9d,r12d
3778 shrd r13d,r13d,6
3779 and edi,r15d
3780 xor r14d,r10d
3781 add r9d,r13d
3782 xor edi,r11d
3783 shrd r14d,r14d,2
3784 add ebx,r9d
3785 add r9d,edi
3786 mov r13d,ebx
3787 add r14d,r9d
3788 shrd r13d,r13d,14
3789 mov r9d,r14d
3790 mov r12d,ecx
3791 shrd r14d,r14d,9
3792 xor r13d,ebx
3793 xor r12d,edx
3794 shrd r13d,r13d,5
3795 xor r14d,r9d
3796 and r12d,ebx
3797 xor r13d,ebx
3798 add r8d,DWORD[44+rsp]
3799 mov edi,r9d
3800 xor r12d,edx
3801 shrd r14d,r14d,11
3802 xor edi,r10d
3803 add r8d,r12d
3804 shrd r13d,r13d,6
3805 and r15d,edi
3806 xor r14d,r9d
3807 add r8d,r13d
3808 xor r15d,r10d
3809 shrd r14d,r14d,2
3810 add eax,r8d
3811 add r8d,r15d
3812 mov r13d,eax
3813 add r14d,r8d
3814 shrd r13d,r13d,14
3815 mov r8d,r14d
3816 mov r12d,ebx
3817 shrd r14d,r14d,9
3818 xor r13d,eax
3819 xor r12d,ecx
3820 shrd r13d,r13d,5
3821 xor r14d,r8d
3822 and r12d,eax
3823 xor r13d,eax
3824 add edx,DWORD[48+rsp]
3825 mov r15d,r8d
3826 xor r12d,ecx
3827 shrd r14d,r14d,11
3828 xor r15d,r9d
3829 add edx,r12d
3830 shrd r13d,r13d,6
3831 and edi,r15d
3832 xor r14d,r8d
3833 add edx,r13d
3834 xor edi,r9d
3835 shrd r14d,r14d,2
3836 add r11d,edx
3837 add edx,edi
3838 mov r13d,r11d
3839 add r14d,edx
3840 shrd r13d,r13d,14
3841 mov edx,r14d
3842 mov r12d,eax
3843 shrd r14d,r14d,9
3844 xor r13d,r11d
3845 xor r12d,ebx
3846 shrd r13d,r13d,5
3847 xor r14d,edx
3848 and r12d,r11d
3849 xor r13d,r11d
3850 add ecx,DWORD[52+rsp]
3851 mov edi,edx
3852 xor r12d,ebx
3853 shrd r14d,r14d,11
3854 xor edi,r8d
3855 add ecx,r12d
3856 shrd r13d,r13d,6
3857 and r15d,edi
3858 xor r14d,edx
3859 add ecx,r13d
3860 xor r15d,r8d
3861 shrd r14d,r14d,2
3862 add r10d,ecx
3863 add ecx,r15d
3864 mov r13d,r10d
3865 add r14d,ecx
3866 shrd r13d,r13d,14
3867 mov ecx,r14d
3868 mov r12d,r11d
3869 shrd r14d,r14d,9
3870 xor r13d,r10d
3871 xor r12d,eax
3872 shrd r13d,r13d,5
3873 xor r14d,ecx
3874 and r12d,r10d
3875 xor r13d,r10d
3876 add ebx,DWORD[56+rsp]
3877 mov r15d,ecx
3878 xor r12d,eax
3879 shrd r14d,r14d,11
3880 xor r15d,edx
3881 add ebx,r12d
3882 shrd r13d,r13d,6
3883 and edi,r15d
3884 xor r14d,ecx
3885 add ebx,r13d
3886 xor edi,edx
3887 shrd r14d,r14d,2
3888 add r9d,ebx
3889 add ebx,edi
3890 mov r13d,r9d
3891 add r14d,ebx
3892 shrd r13d,r13d,14
3893 mov ebx,r14d
3894 mov r12d,r10d
3895 shrd r14d,r14d,9
3896 xor r13d,r9d
3897 xor r12d,r11d
3898 shrd r13d,r13d,5
3899 xor r14d,ebx
3900 and r12d,r9d
3901 xor r13d,r9d
3902 add eax,DWORD[60+rsp]
3903 mov edi,ebx
3904 xor r12d,r11d
3905 shrd r14d,r14d,11
3906 xor edi,ecx
3907 add eax,r12d
3908 shrd r13d,r13d,6
3909 and r15d,edi
3910 xor r14d,ebx
3911 add eax,r13d
3912 xor r15d,ecx
3913 shrd r14d,r14d,2
3914 add r8d,eax
3915 add eax,r15d
3916 mov r13d,r8d
3917 add r14d,eax
3918 mov rdi,QWORD[((64+0))+rsp]
3919 mov eax,r14d
3920
3921 add eax,DWORD[rdi]
3922 lea rsi,[64+rsi]
3923 add ebx,DWORD[4+rdi]
3924 add ecx,DWORD[8+rdi]
3925 add edx,DWORD[12+rdi]
3926 add r8d,DWORD[16+rdi]
3927 add r9d,DWORD[20+rdi]
3928 add r10d,DWORD[24+rdi]
3929 add r11d,DWORD[28+rdi]
3930
3931 cmp rsi,QWORD[((64+16))+rsp]
3932
3933 mov DWORD[rdi],eax
3934 mov DWORD[4+rdi],ebx
3935 mov DWORD[8+rdi],ecx
3936 mov DWORD[12+rdi],edx
3937 mov DWORD[16+rdi],r8d
3938 mov DWORD[20+rdi],r9d
3939 mov DWORD[24+rdi],r10d
3940 mov DWORD[28+rdi],r11d
3941 jb NEAR $L$loop_avx
3942
3943 mov rsi,QWORD[((64+24))+rsp]
3944 vzeroupper
3945 movaps xmm6,XMMWORD[((64+32))+rsp]
3946 movaps xmm7,XMMWORD[((64+48))+rsp]
3947 movaps xmm8,XMMWORD[((64+64))+rsp]
3948 movaps xmm9,XMMWORD[((64+80))+rsp]
3949 mov r15,QWORD[((-48))+rsi]
3950 mov r14,QWORD[((-40))+rsi]
3951 mov r13,QWORD[((-32))+rsi]
3952 mov r12,QWORD[((-24))+rsi]
3953 mov rbp,QWORD[((-16))+rsi]
3954 mov rbx,QWORD[((-8))+rsi]
3955 lea rsp,[rsi]
3956 $L$epilogue_avx:
3957 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
3958 mov rsi,QWORD[16+rsp]
3959 DB 0F3h,0C3h ;repret
3960 $L$SEH_end_sha256_block_data_order_avx:
3961 EXTERN __imp_RtlVirtualUnwind
3962
3963 ALIGN 16
3964 se_handler:
3965 push rsi
3966 push rdi
3967 push rbx
3968 push rbp
3969 push r12
3970 push r13
3971 push r14
3972 push r15
3973 pushfq
3974 sub rsp,64
3975
3976 mov rax,QWORD[120+r8]
3977 mov rbx,QWORD[248+r8]
3978
3979 mov rsi,QWORD[8+r9]
3980 mov r11,QWORD[56+r9]
3981
3982 mov r10d,DWORD[r11]
3983 lea r10,[r10*1+rsi]
3984 cmp rbx,r10
3985 jb NEAR $L$in_prologue
3986
3987 mov rax,QWORD[152+r8]
3988
3989 mov r10d,DWORD[4+r11]
3990 lea r10,[r10*1+rsi]
3991 cmp rbx,r10
3992 jae NEAR $L$in_prologue
3993 mov rsi,rax
3994 mov rax,QWORD[((64+24))+rax]
3995
3996 mov rbx,QWORD[((-8))+rax]
3997 mov rbp,QWORD[((-16))+rax]
3998 mov r12,QWORD[((-24))+rax]
3999 mov r13,QWORD[((-32))+rax]
4000 mov r14,QWORD[((-40))+rax]
4001 mov r15,QWORD[((-48))+rax]
4002 mov QWORD[144+r8],rbx
4003 mov QWORD[160+r8],rbp
4004 mov QWORD[216+r8],r12
4005 mov QWORD[224+r8],r13
4006 mov QWORD[232+r8],r14
4007 mov QWORD[240+r8],r15
4008
4009 lea r10,[$L$epilogue]
4010 cmp rbx,r10
4011 jb NEAR $L$in_prologue
4012
4013 lea rsi,[((64+32))+rsi]
4014 lea rdi,[512+r8]
4015 mov ecx,8
4016 DD 0xa548f3fc
4017
4018 $L$in_prologue:
4019 mov rdi,QWORD[8+rax]
4020 mov rsi,QWORD[16+rax]
4021 mov QWORD[152+r8],rax
4022 mov QWORD[168+r8],rsi
4023 mov QWORD[176+r8],rdi
4024
4025 mov rdi,QWORD[40+r9]
4026 mov rsi,r8
4027 mov ecx,154
4028 DD 0xa548f3fc
4029
4030 mov rsi,r9
4031 xor rcx,rcx
4032 mov rdx,QWORD[8+rsi]
4033 mov r8,QWORD[rsi]
4034 mov r9,QWORD[16+rsi]
4035 mov r10,QWORD[40+rsi]
4036 lea r11,[56+rsi]
4037 lea r12,[24+rsi]
4038 mov QWORD[32+rsp],r10
4039 mov QWORD[40+rsp],r11
4040 mov QWORD[48+rsp],r12
4041 mov QWORD[56+rsp],rcx
4042 call QWORD[__imp_RtlVirtualUnwind]
4043
4044 mov eax,1
4045 add rsp,64
4046 popfq
4047 pop r15
4048 pop r14
4049 pop r13
4050 pop r12
4051 pop rbp
4052 pop rbx
4053 pop rdi
4054 pop rsi
4055 DB 0F3h,0C3h ;repret
4056
4057 section .pdata rdata align=4
4058 ALIGN 4
4059 DD $L$SEH_begin_sha256_block_data_order wrt ..imagebase
4060 DD $L$SEH_end_sha256_block_data_order wrt ..imagebase
4061 DD $L$SEH_info_sha256_block_data_order wrt ..imagebase
4062 DD $L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase
4063 DD $L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase
4064 DD $L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase
4065 DD $L$SEH_begin_sha256_block_data_order_avx wrt ..imagebase
4066 DD $L$SEH_end_sha256_block_data_order_avx wrt ..imagebase
4067 DD $L$SEH_info_sha256_block_data_order_avx wrt ..imagebase
4068 section .xdata rdata align=8
4069 ALIGN 8
4070 $L$SEH_info_sha256_block_data_order:
4071 DB 9,0,0,0
4072 DD se_handler wrt ..imagebase
4073 DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase
4074 $L$SEH_info_sha256_block_data_order_ssse3:
4075 DB 9,0,0,0
4076 DD se_handler wrt ..imagebase
4077 DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imageb ase
4078 $L$SEH_info_sha256_block_data_order_avx:
4079 DB 9,0,0,0
4080 DD se_handler wrt ..imagebase
4081 DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698