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

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

Issue 1319703002: Breaking Change: merge BoringSSL branch into master (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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 test r10d,512
27 jnz NEAR $L$ssse3_shortcut
28 push rbx
29 push rbp
30 push r12
31 push r13
32 push r14
33 push r15
34 mov r11,rsp
35 shl rdx,4
36 sub rsp,16*4+4*8
37 lea rdx,[rdx*4+rsi]
38 and rsp,-64
39 mov QWORD[((64+0))+rsp],rdi
40 mov QWORD[((64+8))+rsp],rsi
41 mov QWORD[((64+16))+rsp],rdx
42 mov QWORD[((64+24))+rsp],r11
43 $L$prologue:
44
45 mov eax,DWORD[rdi]
46 mov ebx,DWORD[4+rdi]
47 mov ecx,DWORD[8+rdi]
48 mov edx,DWORD[12+rdi]
49 mov r8d,DWORD[16+rdi]
50 mov r9d,DWORD[20+rdi]
51 mov r10d,DWORD[24+rdi]
52 mov r11d,DWORD[28+rdi]
53 jmp NEAR $L$loop
54
55 ALIGN 16
56 $L$loop:
57 mov edi,ebx
58 lea rbp,[K256]
59 xor edi,ecx
60 mov r12d,DWORD[rsi]
61 mov r13d,r8d
62 mov r14d,eax
63 bswap r12d
64 ror r13d,14
65 mov r15d,r9d
66
67 xor r13d,r8d
68 ror r14d,9
69 xor r15d,r10d
70
71 mov DWORD[rsp],r12d
72 xor r14d,eax
73 and r15d,r8d
74
75 ror r13d,5
76 add r12d,r11d
77 xor r15d,r10d
78
79 ror r14d,11
80 xor r13d,r8d
81 add r12d,r15d
82
83 mov r15d,eax
84 add r12d,DWORD[rbp]
85 xor r14d,eax
86
87 xor r15d,ebx
88 ror r13d,6
89 mov r11d,ebx
90
91 and edi,r15d
92 ror r14d,2
93 add r12d,r13d
94
95 xor r11d,edi
96 add edx,r12d
97 add r11d,r12d
98
99 lea rbp,[4+rbp]
100 add r11d,r14d
101 mov r12d,DWORD[4+rsi]
102 mov r13d,edx
103 mov r14d,r11d
104 bswap r12d
105 ror r13d,14
106 mov edi,r8d
107
108 xor r13d,edx
109 ror r14d,9
110 xor edi,r9d
111
112 mov DWORD[4+rsp],r12d
113 xor r14d,r11d
114 and edi,edx
115
116 ror r13d,5
117 add r12d,r10d
118 xor edi,r9d
119
120 ror r14d,11
121 xor r13d,edx
122 add r12d,edi
123
124 mov edi,r11d
125 add r12d,DWORD[rbp]
126 xor r14d,r11d
127
128 xor edi,eax
129 ror r13d,6
130 mov r10d,eax
131
132 and r15d,edi
133 ror r14d,2
134 add r12d,r13d
135
136 xor r10d,r15d
137 add ecx,r12d
138 add r10d,r12d
139
140 lea rbp,[4+rbp]
141 add r10d,r14d
142 mov r12d,DWORD[8+rsi]
143 mov r13d,ecx
144 mov r14d,r10d
145 bswap r12d
146 ror r13d,14
147 mov r15d,edx
148
149 xor r13d,ecx
150 ror r14d,9
151 xor r15d,r8d
152
153 mov DWORD[8+rsp],r12d
154 xor r14d,r10d
155 and r15d,ecx
156
157 ror r13d,5
158 add r12d,r9d
159 xor r15d,r8d
160
161 ror r14d,11
162 xor r13d,ecx
163 add r12d,r15d
164
165 mov r15d,r10d
166 add r12d,DWORD[rbp]
167 xor r14d,r10d
168
169 xor r15d,r11d
170 ror r13d,6
171 mov r9d,r11d
172
173 and edi,r15d
174 ror r14d,2
175 add r12d,r13d
176
177 xor r9d,edi
178 add ebx,r12d
179 add r9d,r12d
180
181 lea rbp,[4+rbp]
182 add r9d,r14d
183 mov r12d,DWORD[12+rsi]
184 mov r13d,ebx
185 mov r14d,r9d
186 bswap r12d
187 ror r13d,14
188 mov edi,ecx
189
190 xor r13d,ebx
191 ror r14d,9
192 xor edi,edx
193
194 mov DWORD[12+rsp],r12d
195 xor r14d,r9d
196 and edi,ebx
197
198 ror r13d,5
199 add r12d,r8d
200 xor edi,edx
201
202 ror r14d,11
203 xor r13d,ebx
204 add r12d,edi
205
206 mov edi,r9d
207 add r12d,DWORD[rbp]
208 xor r14d,r9d
209
210 xor edi,r10d
211 ror r13d,6
212 mov r8d,r10d
213
214 and r15d,edi
215 ror r14d,2
216 add r12d,r13d
217
218 xor r8d,r15d
219 add eax,r12d
220 add r8d,r12d
221
222 lea rbp,[20+rbp]
223 add r8d,r14d
224 mov r12d,DWORD[16+rsi]
225 mov r13d,eax
226 mov r14d,r8d
227 bswap r12d
228 ror r13d,14
229 mov r15d,ebx
230
231 xor r13d,eax
232 ror r14d,9
233 xor r15d,ecx
234
235 mov DWORD[16+rsp],r12d
236 xor r14d,r8d
237 and r15d,eax
238
239 ror r13d,5
240 add r12d,edx
241 xor r15d,ecx
242
243 ror r14d,11
244 xor r13d,eax
245 add r12d,r15d
246
247 mov r15d,r8d
248 add r12d,DWORD[rbp]
249 xor r14d,r8d
250
251 xor r15d,r9d
252 ror r13d,6
253 mov edx,r9d
254
255 and edi,r15d
256 ror r14d,2
257 add r12d,r13d
258
259 xor edx,edi
260 add r11d,r12d
261 add edx,r12d
262
263 lea rbp,[4+rbp]
264 add edx,r14d
265 mov r12d,DWORD[20+rsi]
266 mov r13d,r11d
267 mov r14d,edx
268 bswap r12d
269 ror r13d,14
270 mov edi,eax
271
272 xor r13d,r11d
273 ror r14d,9
274 xor edi,ebx
275
276 mov DWORD[20+rsp],r12d
277 xor r14d,edx
278 and edi,r11d
279
280 ror r13d,5
281 add r12d,ecx
282 xor edi,ebx
283
284 ror r14d,11
285 xor r13d,r11d
286 add r12d,edi
287
288 mov edi,edx
289 add r12d,DWORD[rbp]
290 xor r14d,edx
291
292 xor edi,r8d
293 ror r13d,6
294 mov ecx,r8d
295
296 and r15d,edi
297 ror r14d,2
298 add r12d,r13d
299
300 xor ecx,r15d
301 add r10d,r12d
302 add ecx,r12d
303
304 lea rbp,[4+rbp]
305 add ecx,r14d
306 mov r12d,DWORD[24+rsi]
307 mov r13d,r10d
308 mov r14d,ecx
309 bswap r12d
310 ror r13d,14
311 mov r15d,r11d
312
313 xor r13d,r10d
314 ror r14d,9
315 xor r15d,eax
316
317 mov DWORD[24+rsp],r12d
318 xor r14d,ecx
319 and r15d,r10d
320
321 ror r13d,5
322 add r12d,ebx
323 xor r15d,eax
324
325 ror r14d,11
326 xor r13d,r10d
327 add r12d,r15d
328
329 mov r15d,ecx
330 add r12d,DWORD[rbp]
331 xor r14d,ecx
332
333 xor r15d,edx
334 ror r13d,6
335 mov ebx,edx
336
337 and edi,r15d
338 ror r14d,2
339 add r12d,r13d
340
341 xor ebx,edi
342 add r9d,r12d
343 add ebx,r12d
344
345 lea rbp,[4+rbp]
346 add ebx,r14d
347 mov r12d,DWORD[28+rsi]
348 mov r13d,r9d
349 mov r14d,ebx
350 bswap r12d
351 ror r13d,14
352 mov edi,r10d
353
354 xor r13d,r9d
355 ror r14d,9
356 xor edi,r11d
357
358 mov DWORD[28+rsp],r12d
359 xor r14d,ebx
360 and edi,r9d
361
362 ror r13d,5
363 add r12d,eax
364 xor edi,r11d
365
366 ror r14d,11
367 xor r13d,r9d
368 add r12d,edi
369
370 mov edi,ebx
371 add r12d,DWORD[rbp]
372 xor r14d,ebx
373
374 xor edi,ecx
375 ror r13d,6
376 mov eax,ecx
377
378 and r15d,edi
379 ror r14d,2
380 add r12d,r13d
381
382 xor eax,r15d
383 add r8d,r12d
384 add eax,r12d
385
386 lea rbp,[20+rbp]
387 add eax,r14d
388 mov r12d,DWORD[32+rsi]
389 mov r13d,r8d
390 mov r14d,eax
391 bswap r12d
392 ror r13d,14
393 mov r15d,r9d
394
395 xor r13d,r8d
396 ror r14d,9
397 xor r15d,r10d
398
399 mov DWORD[32+rsp],r12d
400 xor r14d,eax
401 and r15d,r8d
402
403 ror r13d,5
404 add r12d,r11d
405 xor r15d,r10d
406
407 ror r14d,11
408 xor r13d,r8d
409 add r12d,r15d
410
411 mov r15d,eax
412 add r12d,DWORD[rbp]
413 xor r14d,eax
414
415 xor r15d,ebx
416 ror r13d,6
417 mov r11d,ebx
418
419 and edi,r15d
420 ror r14d,2
421 add r12d,r13d
422
423 xor r11d,edi
424 add edx,r12d
425 add r11d,r12d
426
427 lea rbp,[4+rbp]
428 add r11d,r14d
429 mov r12d,DWORD[36+rsi]
430 mov r13d,edx
431 mov r14d,r11d
432 bswap r12d
433 ror r13d,14
434 mov edi,r8d
435
436 xor r13d,edx
437 ror r14d,9
438 xor edi,r9d
439
440 mov DWORD[36+rsp],r12d
441 xor r14d,r11d
442 and edi,edx
443
444 ror r13d,5
445 add r12d,r10d
446 xor edi,r9d
447
448 ror r14d,11
449 xor r13d,edx
450 add r12d,edi
451
452 mov edi,r11d
453 add r12d,DWORD[rbp]
454 xor r14d,r11d
455
456 xor edi,eax
457 ror r13d,6
458 mov r10d,eax
459
460 and r15d,edi
461 ror r14d,2
462 add r12d,r13d
463
464 xor r10d,r15d
465 add ecx,r12d
466 add r10d,r12d
467
468 lea rbp,[4+rbp]
469 add r10d,r14d
470 mov r12d,DWORD[40+rsi]
471 mov r13d,ecx
472 mov r14d,r10d
473 bswap r12d
474 ror r13d,14
475 mov r15d,edx
476
477 xor r13d,ecx
478 ror r14d,9
479 xor r15d,r8d
480
481 mov DWORD[40+rsp],r12d
482 xor r14d,r10d
483 and r15d,ecx
484
485 ror r13d,5
486 add r12d,r9d
487 xor r15d,r8d
488
489 ror r14d,11
490 xor r13d,ecx
491 add r12d,r15d
492
493 mov r15d,r10d
494 add r12d,DWORD[rbp]
495 xor r14d,r10d
496
497 xor r15d,r11d
498 ror r13d,6
499 mov r9d,r11d
500
501 and edi,r15d
502 ror r14d,2
503 add r12d,r13d
504
505 xor r9d,edi
506 add ebx,r12d
507 add r9d,r12d
508
509 lea rbp,[4+rbp]
510 add r9d,r14d
511 mov r12d,DWORD[44+rsi]
512 mov r13d,ebx
513 mov r14d,r9d
514 bswap r12d
515 ror r13d,14
516 mov edi,ecx
517
518 xor r13d,ebx
519 ror r14d,9
520 xor edi,edx
521
522 mov DWORD[44+rsp],r12d
523 xor r14d,r9d
524 and edi,ebx
525
526 ror r13d,5
527 add r12d,r8d
528 xor edi,edx
529
530 ror r14d,11
531 xor r13d,ebx
532 add r12d,edi
533
534 mov edi,r9d
535 add r12d,DWORD[rbp]
536 xor r14d,r9d
537
538 xor edi,r10d
539 ror r13d,6
540 mov r8d,r10d
541
542 and r15d,edi
543 ror r14d,2
544 add r12d,r13d
545
546 xor r8d,r15d
547 add eax,r12d
548 add r8d,r12d
549
550 lea rbp,[20+rbp]
551 add r8d,r14d
552 mov r12d,DWORD[48+rsi]
553 mov r13d,eax
554 mov r14d,r8d
555 bswap r12d
556 ror r13d,14
557 mov r15d,ebx
558
559 xor r13d,eax
560 ror r14d,9
561 xor r15d,ecx
562
563 mov DWORD[48+rsp],r12d
564 xor r14d,r8d
565 and r15d,eax
566
567 ror r13d,5
568 add r12d,edx
569 xor r15d,ecx
570
571 ror r14d,11
572 xor r13d,eax
573 add r12d,r15d
574
575 mov r15d,r8d
576 add r12d,DWORD[rbp]
577 xor r14d,r8d
578
579 xor r15d,r9d
580 ror r13d,6
581 mov edx,r9d
582
583 and edi,r15d
584 ror r14d,2
585 add r12d,r13d
586
587 xor edx,edi
588 add r11d,r12d
589 add edx,r12d
590
591 lea rbp,[4+rbp]
592 add edx,r14d
593 mov r12d,DWORD[52+rsi]
594 mov r13d,r11d
595 mov r14d,edx
596 bswap r12d
597 ror r13d,14
598 mov edi,eax
599
600 xor r13d,r11d
601 ror r14d,9
602 xor edi,ebx
603
604 mov DWORD[52+rsp],r12d
605 xor r14d,edx
606 and edi,r11d
607
608 ror r13d,5
609 add r12d,ecx
610 xor edi,ebx
611
612 ror r14d,11
613 xor r13d,r11d
614 add r12d,edi
615
616 mov edi,edx
617 add r12d,DWORD[rbp]
618 xor r14d,edx
619
620 xor edi,r8d
621 ror r13d,6
622 mov ecx,r8d
623
624 and r15d,edi
625 ror r14d,2
626 add r12d,r13d
627
628 xor ecx,r15d
629 add r10d,r12d
630 add ecx,r12d
631
632 lea rbp,[4+rbp]
633 add ecx,r14d
634 mov r12d,DWORD[56+rsi]
635 mov r13d,r10d
636 mov r14d,ecx
637 bswap r12d
638 ror r13d,14
639 mov r15d,r11d
640
641 xor r13d,r10d
642 ror r14d,9
643 xor r15d,eax
644
645 mov DWORD[56+rsp],r12d
646 xor r14d,ecx
647 and r15d,r10d
648
649 ror r13d,5
650 add r12d,ebx
651 xor r15d,eax
652
653 ror r14d,11
654 xor r13d,r10d
655 add r12d,r15d
656
657 mov r15d,ecx
658 add r12d,DWORD[rbp]
659 xor r14d,ecx
660
661 xor r15d,edx
662 ror r13d,6
663 mov ebx,edx
664
665 and edi,r15d
666 ror r14d,2
667 add r12d,r13d
668
669 xor ebx,edi
670 add r9d,r12d
671 add ebx,r12d
672
673 lea rbp,[4+rbp]
674 add ebx,r14d
675 mov r12d,DWORD[60+rsi]
676 mov r13d,r9d
677 mov r14d,ebx
678 bswap r12d
679 ror r13d,14
680 mov edi,r10d
681
682 xor r13d,r9d
683 ror r14d,9
684 xor edi,r11d
685
686 mov DWORD[60+rsp],r12d
687 xor r14d,ebx
688 and edi,r9d
689
690 ror r13d,5
691 add r12d,eax
692 xor edi,r11d
693
694 ror r14d,11
695 xor r13d,r9d
696 add r12d,edi
697
698 mov edi,ebx
699 add r12d,DWORD[rbp]
700 xor r14d,ebx
701
702 xor edi,ecx
703 ror r13d,6
704 mov eax,ecx
705
706 and r15d,edi
707 ror r14d,2
708 add r12d,r13d
709
710 xor eax,r15d
711 add r8d,r12d
712 add eax,r12d
713
714 lea rbp,[20+rbp]
715 jmp NEAR $L$rounds_16_xx
716 ALIGN 16
717 $L$rounds_16_xx:
718 mov r13d,DWORD[4+rsp]
719 mov r15d,DWORD[56+rsp]
720
721 mov r12d,r13d
722 ror r13d,11
723 add eax,r14d
724 mov r14d,r15d
725 ror r15d,2
726
727 xor r13d,r12d
728 shr r12d,3
729 ror r13d,7
730 xor r15d,r14d
731 shr r14d,10
732
733 ror r15d,17
734 xor r12d,r13d
735 xor r15d,r14d
736 add r12d,DWORD[36+rsp]
737
738 add r12d,DWORD[rsp]
739 mov r13d,r8d
740 add r12d,r15d
741 mov r14d,eax
742 ror r13d,14
743 mov r15d,r9d
744
745 xor r13d,r8d
746 ror r14d,9
747 xor r15d,r10d
748
749 mov DWORD[rsp],r12d
750 xor r14d,eax
751 and r15d,r8d
752
753 ror r13d,5
754 add r12d,r11d
755 xor r15d,r10d
756
757 ror r14d,11
758 xor r13d,r8d
759 add r12d,r15d
760
761 mov r15d,eax
762 add r12d,DWORD[rbp]
763 xor r14d,eax
764
765 xor r15d,ebx
766 ror r13d,6
767 mov r11d,ebx
768
769 and edi,r15d
770 ror r14d,2
771 add r12d,r13d
772
773 xor r11d,edi
774 add edx,r12d
775 add r11d,r12d
776
777 lea rbp,[4+rbp]
778 mov r13d,DWORD[8+rsp]
779 mov edi,DWORD[60+rsp]
780
781 mov r12d,r13d
782 ror r13d,11
783 add r11d,r14d
784 mov r14d,edi
785 ror edi,2
786
787 xor r13d,r12d
788 shr r12d,3
789 ror r13d,7
790 xor edi,r14d
791 shr r14d,10
792
793 ror edi,17
794 xor r12d,r13d
795 xor edi,r14d
796 add r12d,DWORD[40+rsp]
797
798 add r12d,DWORD[4+rsp]
799 mov r13d,edx
800 add r12d,edi
801 mov r14d,r11d
802 ror r13d,14
803 mov edi,r8d
804
805 xor r13d,edx
806 ror r14d,9
807 xor edi,r9d
808
809 mov DWORD[4+rsp],r12d
810 xor r14d,r11d
811 and edi,edx
812
813 ror r13d,5
814 add r12d,r10d
815 xor edi,r9d
816
817 ror r14d,11
818 xor r13d,edx
819 add r12d,edi
820
821 mov edi,r11d
822 add r12d,DWORD[rbp]
823 xor r14d,r11d
824
825 xor edi,eax
826 ror r13d,6
827 mov r10d,eax
828
829 and r15d,edi
830 ror r14d,2
831 add r12d,r13d
832
833 xor r10d,r15d
834 add ecx,r12d
835 add r10d,r12d
836
837 lea rbp,[4+rbp]
838 mov r13d,DWORD[12+rsp]
839 mov r15d,DWORD[rsp]
840
841 mov r12d,r13d
842 ror r13d,11
843 add r10d,r14d
844 mov r14d,r15d
845 ror r15d,2
846
847 xor r13d,r12d
848 shr r12d,3
849 ror r13d,7
850 xor r15d,r14d
851 shr r14d,10
852
853 ror r15d,17
854 xor r12d,r13d
855 xor r15d,r14d
856 add r12d,DWORD[44+rsp]
857
858 add r12d,DWORD[8+rsp]
859 mov r13d,ecx
860 add r12d,r15d
861 mov r14d,r10d
862 ror r13d,14
863 mov r15d,edx
864
865 xor r13d,ecx
866 ror r14d,9
867 xor r15d,r8d
868
869 mov DWORD[8+rsp],r12d
870 xor r14d,r10d
871 and r15d,ecx
872
873 ror r13d,5
874 add r12d,r9d
875 xor r15d,r8d
876
877 ror r14d,11
878 xor r13d,ecx
879 add r12d,r15d
880
881 mov r15d,r10d
882 add r12d,DWORD[rbp]
883 xor r14d,r10d
884
885 xor r15d,r11d
886 ror r13d,6
887 mov r9d,r11d
888
889 and edi,r15d
890 ror r14d,2
891 add r12d,r13d
892
893 xor r9d,edi
894 add ebx,r12d
895 add r9d,r12d
896
897 lea rbp,[4+rbp]
898 mov r13d,DWORD[16+rsp]
899 mov edi,DWORD[4+rsp]
900
901 mov r12d,r13d
902 ror r13d,11
903 add r9d,r14d
904 mov r14d,edi
905 ror edi,2
906
907 xor r13d,r12d
908 shr r12d,3
909 ror r13d,7
910 xor edi,r14d
911 shr r14d,10
912
913 ror edi,17
914 xor r12d,r13d
915 xor edi,r14d
916 add r12d,DWORD[48+rsp]
917
918 add r12d,DWORD[12+rsp]
919 mov r13d,ebx
920 add r12d,edi
921 mov r14d,r9d
922 ror r13d,14
923 mov edi,ecx
924
925 xor r13d,ebx
926 ror r14d,9
927 xor edi,edx
928
929 mov DWORD[12+rsp],r12d
930 xor r14d,r9d
931 and edi,ebx
932
933 ror r13d,5
934 add r12d,r8d
935 xor edi,edx
936
937 ror r14d,11
938 xor r13d,ebx
939 add r12d,edi
940
941 mov edi,r9d
942 add r12d,DWORD[rbp]
943 xor r14d,r9d
944
945 xor edi,r10d
946 ror r13d,6
947 mov r8d,r10d
948
949 and r15d,edi
950 ror r14d,2
951 add r12d,r13d
952
953 xor r8d,r15d
954 add eax,r12d
955 add r8d,r12d
956
957 lea rbp,[20+rbp]
958 mov r13d,DWORD[20+rsp]
959 mov r15d,DWORD[8+rsp]
960
961 mov r12d,r13d
962 ror r13d,11
963 add r8d,r14d
964 mov r14d,r15d
965 ror r15d,2
966
967 xor r13d,r12d
968 shr r12d,3
969 ror r13d,7
970 xor r15d,r14d
971 shr r14d,10
972
973 ror r15d,17
974 xor r12d,r13d
975 xor r15d,r14d
976 add r12d,DWORD[52+rsp]
977
978 add r12d,DWORD[16+rsp]
979 mov r13d,eax
980 add r12d,r15d
981 mov r14d,r8d
982 ror r13d,14
983 mov r15d,ebx
984
985 xor r13d,eax
986 ror r14d,9
987 xor r15d,ecx
988
989 mov DWORD[16+rsp],r12d
990 xor r14d,r8d
991 and r15d,eax
992
993 ror r13d,5
994 add r12d,edx
995 xor r15d,ecx
996
997 ror r14d,11
998 xor r13d,eax
999 add r12d,r15d
1000
1001 mov r15d,r8d
1002 add r12d,DWORD[rbp]
1003 xor r14d,r8d
1004
1005 xor r15d,r9d
1006 ror r13d,6
1007 mov edx,r9d
1008
1009 and edi,r15d
1010 ror r14d,2
1011 add r12d,r13d
1012
1013 xor edx,edi
1014 add r11d,r12d
1015 add edx,r12d
1016
1017 lea rbp,[4+rbp]
1018 mov r13d,DWORD[24+rsp]
1019 mov edi,DWORD[12+rsp]
1020
1021 mov r12d,r13d
1022 ror r13d,11
1023 add edx,r14d
1024 mov r14d,edi
1025 ror edi,2
1026
1027 xor r13d,r12d
1028 shr r12d,3
1029 ror r13d,7
1030 xor edi,r14d
1031 shr r14d,10
1032
1033 ror edi,17
1034 xor r12d,r13d
1035 xor edi,r14d
1036 add r12d,DWORD[56+rsp]
1037
1038 add r12d,DWORD[20+rsp]
1039 mov r13d,r11d
1040 add r12d,edi
1041 mov r14d,edx
1042 ror r13d,14
1043 mov edi,eax
1044
1045 xor r13d,r11d
1046 ror r14d,9
1047 xor edi,ebx
1048
1049 mov DWORD[20+rsp],r12d
1050 xor r14d,edx
1051 and edi,r11d
1052
1053 ror r13d,5
1054 add r12d,ecx
1055 xor edi,ebx
1056
1057 ror r14d,11
1058 xor r13d,r11d
1059 add r12d,edi
1060
1061 mov edi,edx
1062 add r12d,DWORD[rbp]
1063 xor r14d,edx
1064
1065 xor edi,r8d
1066 ror r13d,6
1067 mov ecx,r8d
1068
1069 and r15d,edi
1070 ror r14d,2
1071 add r12d,r13d
1072
1073 xor ecx,r15d
1074 add r10d,r12d
1075 add ecx,r12d
1076
1077 lea rbp,[4+rbp]
1078 mov r13d,DWORD[28+rsp]
1079 mov r15d,DWORD[16+rsp]
1080
1081 mov r12d,r13d
1082 ror r13d,11
1083 add ecx,r14d
1084 mov r14d,r15d
1085 ror r15d,2
1086
1087 xor r13d,r12d
1088 shr r12d,3
1089 ror r13d,7
1090 xor r15d,r14d
1091 shr r14d,10
1092
1093 ror r15d,17
1094 xor r12d,r13d
1095 xor r15d,r14d
1096 add r12d,DWORD[60+rsp]
1097
1098 add r12d,DWORD[24+rsp]
1099 mov r13d,r10d
1100 add r12d,r15d
1101 mov r14d,ecx
1102 ror r13d,14
1103 mov r15d,r11d
1104
1105 xor r13d,r10d
1106 ror r14d,9
1107 xor r15d,eax
1108
1109 mov DWORD[24+rsp],r12d
1110 xor r14d,ecx
1111 and r15d,r10d
1112
1113 ror r13d,5
1114 add r12d,ebx
1115 xor r15d,eax
1116
1117 ror r14d,11
1118 xor r13d,r10d
1119 add r12d,r15d
1120
1121 mov r15d,ecx
1122 add r12d,DWORD[rbp]
1123 xor r14d,ecx
1124
1125 xor r15d,edx
1126 ror r13d,6
1127 mov ebx,edx
1128
1129 and edi,r15d
1130 ror r14d,2
1131 add r12d,r13d
1132
1133 xor ebx,edi
1134 add r9d,r12d
1135 add ebx,r12d
1136
1137 lea rbp,[4+rbp]
1138 mov r13d,DWORD[32+rsp]
1139 mov edi,DWORD[20+rsp]
1140
1141 mov r12d,r13d
1142 ror r13d,11
1143 add ebx,r14d
1144 mov r14d,edi
1145 ror edi,2
1146
1147 xor r13d,r12d
1148 shr r12d,3
1149 ror r13d,7
1150 xor edi,r14d
1151 shr r14d,10
1152
1153 ror edi,17
1154 xor r12d,r13d
1155 xor edi,r14d
1156 add r12d,DWORD[rsp]
1157
1158 add r12d,DWORD[28+rsp]
1159 mov r13d,r9d
1160 add r12d,edi
1161 mov r14d,ebx
1162 ror r13d,14
1163 mov edi,r10d
1164
1165 xor r13d,r9d
1166 ror r14d,9
1167 xor edi,r11d
1168
1169 mov DWORD[28+rsp],r12d
1170 xor r14d,ebx
1171 and edi,r9d
1172
1173 ror r13d,5
1174 add r12d,eax
1175 xor edi,r11d
1176
1177 ror r14d,11
1178 xor r13d,r9d
1179 add r12d,edi
1180
1181 mov edi,ebx
1182 add r12d,DWORD[rbp]
1183 xor r14d,ebx
1184
1185 xor edi,ecx
1186 ror r13d,6
1187 mov eax,ecx
1188
1189 and r15d,edi
1190 ror r14d,2
1191 add r12d,r13d
1192
1193 xor eax,r15d
1194 add r8d,r12d
1195 add eax,r12d
1196
1197 lea rbp,[20+rbp]
1198 mov r13d,DWORD[36+rsp]
1199 mov r15d,DWORD[24+rsp]
1200
1201 mov r12d,r13d
1202 ror r13d,11
1203 add eax,r14d
1204 mov r14d,r15d
1205 ror r15d,2
1206
1207 xor r13d,r12d
1208 shr r12d,3
1209 ror r13d,7
1210 xor r15d,r14d
1211 shr r14d,10
1212
1213 ror r15d,17
1214 xor r12d,r13d
1215 xor r15d,r14d
1216 add r12d,DWORD[4+rsp]
1217
1218 add r12d,DWORD[32+rsp]
1219 mov r13d,r8d
1220 add r12d,r15d
1221 mov r14d,eax
1222 ror r13d,14
1223 mov r15d,r9d
1224
1225 xor r13d,r8d
1226 ror r14d,9
1227 xor r15d,r10d
1228
1229 mov DWORD[32+rsp],r12d
1230 xor r14d,eax
1231 and r15d,r8d
1232
1233 ror r13d,5
1234 add r12d,r11d
1235 xor r15d,r10d
1236
1237 ror r14d,11
1238 xor r13d,r8d
1239 add r12d,r15d
1240
1241 mov r15d,eax
1242 add r12d,DWORD[rbp]
1243 xor r14d,eax
1244
1245 xor r15d,ebx
1246 ror r13d,6
1247 mov r11d,ebx
1248
1249 and edi,r15d
1250 ror r14d,2
1251 add r12d,r13d
1252
1253 xor r11d,edi
1254 add edx,r12d
1255 add r11d,r12d
1256
1257 lea rbp,[4+rbp]
1258 mov r13d,DWORD[40+rsp]
1259 mov edi,DWORD[28+rsp]
1260
1261 mov r12d,r13d
1262 ror r13d,11
1263 add r11d,r14d
1264 mov r14d,edi
1265 ror edi,2
1266
1267 xor r13d,r12d
1268 shr r12d,3
1269 ror r13d,7
1270 xor edi,r14d
1271 shr r14d,10
1272
1273 ror edi,17
1274 xor r12d,r13d
1275 xor edi,r14d
1276 add r12d,DWORD[8+rsp]
1277
1278 add r12d,DWORD[36+rsp]
1279 mov r13d,edx
1280 add r12d,edi
1281 mov r14d,r11d
1282 ror r13d,14
1283 mov edi,r8d
1284
1285 xor r13d,edx
1286 ror r14d,9
1287 xor edi,r9d
1288
1289 mov DWORD[36+rsp],r12d
1290 xor r14d,r11d
1291 and edi,edx
1292
1293 ror r13d,5
1294 add r12d,r10d
1295 xor edi,r9d
1296
1297 ror r14d,11
1298 xor r13d,edx
1299 add r12d,edi
1300
1301 mov edi,r11d
1302 add r12d,DWORD[rbp]
1303 xor r14d,r11d
1304
1305 xor edi,eax
1306 ror r13d,6
1307 mov r10d,eax
1308
1309 and r15d,edi
1310 ror r14d,2
1311 add r12d,r13d
1312
1313 xor r10d,r15d
1314 add ecx,r12d
1315 add r10d,r12d
1316
1317 lea rbp,[4+rbp]
1318 mov r13d,DWORD[44+rsp]
1319 mov r15d,DWORD[32+rsp]
1320
1321 mov r12d,r13d
1322 ror r13d,11
1323 add r10d,r14d
1324 mov r14d,r15d
1325 ror r15d,2
1326
1327 xor r13d,r12d
1328 shr r12d,3
1329 ror r13d,7
1330 xor r15d,r14d
1331 shr r14d,10
1332
1333 ror r15d,17
1334 xor r12d,r13d
1335 xor r15d,r14d
1336 add r12d,DWORD[12+rsp]
1337
1338 add r12d,DWORD[40+rsp]
1339 mov r13d,ecx
1340 add r12d,r15d
1341 mov r14d,r10d
1342 ror r13d,14
1343 mov r15d,edx
1344
1345 xor r13d,ecx
1346 ror r14d,9
1347 xor r15d,r8d
1348
1349 mov DWORD[40+rsp],r12d
1350 xor r14d,r10d
1351 and r15d,ecx
1352
1353 ror r13d,5
1354 add r12d,r9d
1355 xor r15d,r8d
1356
1357 ror r14d,11
1358 xor r13d,ecx
1359 add r12d,r15d
1360
1361 mov r15d,r10d
1362 add r12d,DWORD[rbp]
1363 xor r14d,r10d
1364
1365 xor r15d,r11d
1366 ror r13d,6
1367 mov r9d,r11d
1368
1369 and edi,r15d
1370 ror r14d,2
1371 add r12d,r13d
1372
1373 xor r9d,edi
1374 add ebx,r12d
1375 add r9d,r12d
1376
1377 lea rbp,[4+rbp]
1378 mov r13d,DWORD[48+rsp]
1379 mov edi,DWORD[36+rsp]
1380
1381 mov r12d,r13d
1382 ror r13d,11
1383 add r9d,r14d
1384 mov r14d,edi
1385 ror edi,2
1386
1387 xor r13d,r12d
1388 shr r12d,3
1389 ror r13d,7
1390 xor edi,r14d
1391 shr r14d,10
1392
1393 ror edi,17
1394 xor r12d,r13d
1395 xor edi,r14d
1396 add r12d,DWORD[16+rsp]
1397
1398 add r12d,DWORD[44+rsp]
1399 mov r13d,ebx
1400 add r12d,edi
1401 mov r14d,r9d
1402 ror r13d,14
1403 mov edi,ecx
1404
1405 xor r13d,ebx
1406 ror r14d,9
1407 xor edi,edx
1408
1409 mov DWORD[44+rsp],r12d
1410 xor r14d,r9d
1411 and edi,ebx
1412
1413 ror r13d,5
1414 add r12d,r8d
1415 xor edi,edx
1416
1417 ror r14d,11
1418 xor r13d,ebx
1419 add r12d,edi
1420
1421 mov edi,r9d
1422 add r12d,DWORD[rbp]
1423 xor r14d,r9d
1424
1425 xor edi,r10d
1426 ror r13d,6
1427 mov r8d,r10d
1428
1429 and r15d,edi
1430 ror r14d,2
1431 add r12d,r13d
1432
1433 xor r8d,r15d
1434 add eax,r12d
1435 add r8d,r12d
1436
1437 lea rbp,[20+rbp]
1438 mov r13d,DWORD[52+rsp]
1439 mov r15d,DWORD[40+rsp]
1440
1441 mov r12d,r13d
1442 ror r13d,11
1443 add r8d,r14d
1444 mov r14d,r15d
1445 ror r15d,2
1446
1447 xor r13d,r12d
1448 shr r12d,3
1449 ror r13d,7
1450 xor r15d,r14d
1451 shr r14d,10
1452
1453 ror r15d,17
1454 xor r12d,r13d
1455 xor r15d,r14d
1456 add r12d,DWORD[20+rsp]
1457
1458 add r12d,DWORD[48+rsp]
1459 mov r13d,eax
1460 add r12d,r15d
1461 mov r14d,r8d
1462 ror r13d,14
1463 mov r15d,ebx
1464
1465 xor r13d,eax
1466 ror r14d,9
1467 xor r15d,ecx
1468
1469 mov DWORD[48+rsp],r12d
1470 xor r14d,r8d
1471 and r15d,eax
1472
1473 ror r13d,5
1474 add r12d,edx
1475 xor r15d,ecx
1476
1477 ror r14d,11
1478 xor r13d,eax
1479 add r12d,r15d
1480
1481 mov r15d,r8d
1482 add r12d,DWORD[rbp]
1483 xor r14d,r8d
1484
1485 xor r15d,r9d
1486 ror r13d,6
1487 mov edx,r9d
1488
1489 and edi,r15d
1490 ror r14d,2
1491 add r12d,r13d
1492
1493 xor edx,edi
1494 add r11d,r12d
1495 add edx,r12d
1496
1497 lea rbp,[4+rbp]
1498 mov r13d,DWORD[56+rsp]
1499 mov edi,DWORD[44+rsp]
1500
1501 mov r12d,r13d
1502 ror r13d,11
1503 add edx,r14d
1504 mov r14d,edi
1505 ror edi,2
1506
1507 xor r13d,r12d
1508 shr r12d,3
1509 ror r13d,7
1510 xor edi,r14d
1511 shr r14d,10
1512
1513 ror edi,17
1514 xor r12d,r13d
1515 xor edi,r14d
1516 add r12d,DWORD[24+rsp]
1517
1518 add r12d,DWORD[52+rsp]
1519 mov r13d,r11d
1520 add r12d,edi
1521 mov r14d,edx
1522 ror r13d,14
1523 mov edi,eax
1524
1525 xor r13d,r11d
1526 ror r14d,9
1527 xor edi,ebx
1528
1529 mov DWORD[52+rsp],r12d
1530 xor r14d,edx
1531 and edi,r11d
1532
1533 ror r13d,5
1534 add r12d,ecx
1535 xor edi,ebx
1536
1537 ror r14d,11
1538 xor r13d,r11d
1539 add r12d,edi
1540
1541 mov edi,edx
1542 add r12d,DWORD[rbp]
1543 xor r14d,edx
1544
1545 xor edi,r8d
1546 ror r13d,6
1547 mov ecx,r8d
1548
1549 and r15d,edi
1550 ror r14d,2
1551 add r12d,r13d
1552
1553 xor ecx,r15d
1554 add r10d,r12d
1555 add ecx,r12d
1556
1557 lea rbp,[4+rbp]
1558 mov r13d,DWORD[60+rsp]
1559 mov r15d,DWORD[48+rsp]
1560
1561 mov r12d,r13d
1562 ror r13d,11
1563 add ecx,r14d
1564 mov r14d,r15d
1565 ror r15d,2
1566
1567 xor r13d,r12d
1568 shr r12d,3
1569 ror r13d,7
1570 xor r15d,r14d
1571 shr r14d,10
1572
1573 ror r15d,17
1574 xor r12d,r13d
1575 xor r15d,r14d
1576 add r12d,DWORD[28+rsp]
1577
1578 add r12d,DWORD[56+rsp]
1579 mov r13d,r10d
1580 add r12d,r15d
1581 mov r14d,ecx
1582 ror r13d,14
1583 mov r15d,r11d
1584
1585 xor r13d,r10d
1586 ror r14d,9
1587 xor r15d,eax
1588
1589 mov DWORD[56+rsp],r12d
1590 xor r14d,ecx
1591 and r15d,r10d
1592
1593 ror r13d,5
1594 add r12d,ebx
1595 xor r15d,eax
1596
1597 ror r14d,11
1598 xor r13d,r10d
1599 add r12d,r15d
1600
1601 mov r15d,ecx
1602 add r12d,DWORD[rbp]
1603 xor r14d,ecx
1604
1605 xor r15d,edx
1606 ror r13d,6
1607 mov ebx,edx
1608
1609 and edi,r15d
1610 ror r14d,2
1611 add r12d,r13d
1612
1613 xor ebx,edi
1614 add r9d,r12d
1615 add ebx,r12d
1616
1617 lea rbp,[4+rbp]
1618 mov r13d,DWORD[rsp]
1619 mov edi,DWORD[52+rsp]
1620
1621 mov r12d,r13d
1622 ror r13d,11
1623 add ebx,r14d
1624 mov r14d,edi
1625 ror edi,2
1626
1627 xor r13d,r12d
1628 shr r12d,3
1629 ror r13d,7
1630 xor edi,r14d
1631 shr r14d,10
1632
1633 ror edi,17
1634 xor r12d,r13d
1635 xor edi,r14d
1636 add r12d,DWORD[32+rsp]
1637
1638 add r12d,DWORD[60+rsp]
1639 mov r13d,r9d
1640 add r12d,edi
1641 mov r14d,ebx
1642 ror r13d,14
1643 mov edi,r10d
1644
1645 xor r13d,r9d
1646 ror r14d,9
1647 xor edi,r11d
1648
1649 mov DWORD[60+rsp],r12d
1650 xor r14d,ebx
1651 and edi,r9d
1652
1653 ror r13d,5
1654 add r12d,eax
1655 xor edi,r11d
1656
1657 ror r14d,11
1658 xor r13d,r9d
1659 add r12d,edi
1660
1661 mov edi,ebx
1662 add r12d,DWORD[rbp]
1663 xor r14d,ebx
1664
1665 xor edi,ecx
1666 ror r13d,6
1667 mov eax,ecx
1668
1669 and r15d,edi
1670 ror r14d,2
1671 add r12d,r13d
1672
1673 xor eax,r15d
1674 add r8d,r12d
1675 add eax,r12d
1676
1677 lea rbp,[20+rbp]
1678 cmp BYTE[3+rbp],0
1679 jnz NEAR $L$rounds_16_xx
1680
1681 mov rdi,QWORD[((64+0))+rsp]
1682 add eax,r14d
1683 lea rsi,[64+rsi]
1684
1685 add eax,DWORD[rdi]
1686 add ebx,DWORD[4+rdi]
1687 add ecx,DWORD[8+rdi]
1688 add edx,DWORD[12+rdi]
1689 add r8d,DWORD[16+rdi]
1690 add r9d,DWORD[20+rdi]
1691 add r10d,DWORD[24+rdi]
1692 add r11d,DWORD[28+rdi]
1693
1694 cmp rsi,QWORD[((64+16))+rsp]
1695
1696 mov DWORD[rdi],eax
1697 mov DWORD[4+rdi],ebx
1698 mov DWORD[8+rdi],ecx
1699 mov DWORD[12+rdi],edx
1700 mov DWORD[16+rdi],r8d
1701 mov DWORD[20+rdi],r9d
1702 mov DWORD[24+rdi],r10d
1703 mov DWORD[28+rdi],r11d
1704 jb NEAR $L$loop
1705
1706 mov rsi,QWORD[((64+24))+rsp]
1707 mov r15,QWORD[rsi]
1708 mov r14,QWORD[8+rsi]
1709 mov r13,QWORD[16+rsi]
1710 mov r12,QWORD[24+rsi]
1711 mov rbp,QWORD[32+rsi]
1712 mov rbx,QWORD[40+rsi]
1713 lea rsp,[48+rsi]
1714 $L$epilogue:
1715 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1716 mov rsi,QWORD[16+rsp]
1717 DB 0F3h,0C3h ;repret
1718 $L$SEH_end_sha256_block_data_order:
1719 ALIGN 64
1720
1721 K256:
1722 DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
1723 DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
1724 DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
1725 DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
1726 DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
1727 DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
1728 DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
1729 DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
1730 DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
1731 DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
1732 DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
1733 DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
1734 DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
1735 DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
1736 DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
1737 DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
1738 DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
1739 DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
1740 DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
1741 DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
1742 DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
1743 DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
1744 DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
1745 DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
1746 DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
1747 DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
1748 DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
1749 DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
1750 DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
1751 DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
1752 DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
1753 DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
1754
1755 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
1756 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
1757 DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff
1758 DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff
1759 DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908
1760 DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908
1761 DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
1762 DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
1763 DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
1764 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
1765 DB 111,114,103,62,0
1766
1767 ALIGN 64
1768 sha256_block_data_order_ssse3:
1769 mov QWORD[8+rsp],rdi ;WIN64 prologue
1770 mov QWORD[16+rsp],rsi
1771 mov rax,rsp
1772 $L$SEH_begin_sha256_block_data_order_ssse3:
1773 mov rdi,rcx
1774 mov rsi,rdx
1775 mov rdx,r8
1776
1777
1778 $L$ssse3_shortcut:
1779 push rbx
1780 push rbp
1781 push r12
1782 push r13
1783 push r14
1784 push r15
1785 mov r11,rsp
1786 shl rdx,4
1787 sub rsp,160
1788 lea rdx,[rdx*4+rsi]
1789 and rsp,-64
1790 mov QWORD[((64+0))+rsp],rdi
1791 mov QWORD[((64+8))+rsp],rsi
1792 mov QWORD[((64+16))+rsp],rdx
1793 mov QWORD[((64+24))+rsp],r11
1794 movaps XMMWORD[(64+32)+rsp],xmm6
1795 movaps XMMWORD[(64+48)+rsp],xmm7
1796 movaps XMMWORD[(64+64)+rsp],xmm8
1797 movaps XMMWORD[(64+80)+rsp],xmm9
1798 $L$prologue_ssse3:
1799
1800 mov eax,DWORD[rdi]
1801 mov ebx,DWORD[4+rdi]
1802 mov ecx,DWORD[8+rdi]
1803 mov edx,DWORD[12+rdi]
1804 mov r8d,DWORD[16+rdi]
1805 mov r9d,DWORD[20+rdi]
1806 mov r10d,DWORD[24+rdi]
1807 mov r11d,DWORD[28+rdi]
1808
1809
1810 jmp NEAR $L$loop_ssse3
1811 ALIGN 16
1812 $L$loop_ssse3:
1813 movdqa xmm7,XMMWORD[((K256+512))]
1814 movdqu xmm0,XMMWORD[rsi]
1815 movdqu xmm1,XMMWORD[16+rsi]
1816 movdqu xmm2,XMMWORD[32+rsi]
1817 DB 102,15,56,0,199
1818 movdqu xmm3,XMMWORD[48+rsi]
1819 lea rbp,[K256]
1820 DB 102,15,56,0,207
1821 movdqa xmm4,XMMWORD[rbp]
1822 movdqa xmm5,XMMWORD[32+rbp]
1823 DB 102,15,56,0,215
1824 paddd xmm4,xmm0
1825 movdqa xmm6,XMMWORD[64+rbp]
1826 DB 102,15,56,0,223
1827 movdqa xmm7,XMMWORD[96+rbp]
1828 paddd xmm5,xmm1
1829 paddd xmm6,xmm2
1830 paddd xmm7,xmm3
1831 movdqa XMMWORD[rsp],xmm4
1832 mov r14d,eax
1833 movdqa XMMWORD[16+rsp],xmm5
1834 mov edi,ebx
1835 movdqa XMMWORD[32+rsp],xmm6
1836 xor edi,ecx
1837 movdqa XMMWORD[48+rsp],xmm7
1838 mov r13d,r8d
1839 jmp NEAR $L$ssse3_00_47
1840
1841 ALIGN 16
1842 $L$ssse3_00_47:
1843 sub rbp,-128
1844 ror r13d,14
1845 movdqa xmm4,xmm1
1846 mov eax,r14d
1847 mov r12d,r9d
1848 movdqa xmm7,xmm3
1849 ror r14d,9
1850 xor r13d,r8d
1851 xor r12d,r10d
1852 ror r13d,5
1853 xor r14d,eax
1854 DB 102,15,58,15,224,4
1855 and r12d,r8d
1856 xor r13d,r8d
1857 DB 102,15,58,15,250,4
1858 add r11d,DWORD[rsp]
1859 mov r15d,eax
1860 xor r12d,r10d
1861 ror r14d,11
1862 movdqa xmm5,xmm4
1863 xor r15d,ebx
1864 add r11d,r12d
1865 movdqa xmm6,xmm4
1866 ror r13d,6
1867 and edi,r15d
1868 psrld xmm4,3
1869 xor r14d,eax
1870 add r11d,r13d
1871 xor edi,ebx
1872 paddd xmm0,xmm7
1873 ror r14d,2
1874 add edx,r11d
1875 psrld xmm6,7
1876 add r11d,edi
1877 mov r13d,edx
1878 pshufd xmm7,xmm3,250
1879 add r14d,r11d
1880 ror r13d,14
1881 pslld xmm5,14
1882 mov r11d,r14d
1883 mov r12d,r8d
1884 pxor xmm4,xmm6
1885 ror r14d,9
1886 xor r13d,edx
1887 xor r12d,r9d
1888 ror r13d,5
1889 psrld xmm6,11
1890 xor r14d,r11d
1891 pxor xmm4,xmm5
1892 and r12d,edx
1893 xor r13d,edx
1894 pslld xmm5,11
1895 add r10d,DWORD[4+rsp]
1896 mov edi,r11d
1897 pxor xmm4,xmm6
1898 xor r12d,r9d
1899 ror r14d,11
1900 movdqa xmm6,xmm7
1901 xor edi,eax
1902 add r10d,r12d
1903 pxor xmm4,xmm5
1904 ror r13d,6
1905 and r15d,edi
1906 xor r14d,r11d
1907 psrld xmm7,10
1908 add r10d,r13d
1909 xor r15d,eax
1910 paddd xmm0,xmm4
1911 ror r14d,2
1912 add ecx,r10d
1913 psrlq xmm6,17
1914 add r10d,r15d
1915 mov r13d,ecx
1916 add r14d,r10d
1917 pxor xmm7,xmm6
1918 ror r13d,14
1919 mov r10d,r14d
1920 mov r12d,edx
1921 ror r14d,9
1922 psrlq xmm6,2
1923 xor r13d,ecx
1924 xor r12d,r8d
1925 pxor xmm7,xmm6
1926 ror r13d,5
1927 xor r14d,r10d
1928 and r12d,ecx
1929 pshufd xmm7,xmm7,128
1930 xor r13d,ecx
1931 add r9d,DWORD[8+rsp]
1932 mov r15d,r10d
1933 psrldq xmm7,8
1934 xor r12d,r8d
1935 ror r14d,11
1936 xor r15d,r11d
1937 add r9d,r12d
1938 ror r13d,6
1939 paddd xmm0,xmm7
1940 and edi,r15d
1941 xor r14d,r10d
1942 add r9d,r13d
1943 pshufd xmm7,xmm0,80
1944 xor edi,r11d
1945 ror r14d,2
1946 add ebx,r9d
1947 movdqa xmm6,xmm7
1948 add r9d,edi
1949 mov r13d,ebx
1950 psrld xmm7,10
1951 add r14d,r9d
1952 ror r13d,14
1953 psrlq xmm6,17
1954 mov r9d,r14d
1955 mov r12d,ecx
1956 pxor xmm7,xmm6
1957 ror r14d,9
1958 xor r13d,ebx
1959 xor r12d,edx
1960 ror r13d,5
1961 xor r14d,r9d
1962 psrlq xmm6,2
1963 and r12d,ebx
1964 xor r13d,ebx
1965 add r8d,DWORD[12+rsp]
1966 pxor xmm7,xmm6
1967 mov edi,r9d
1968 xor r12d,edx
1969 ror r14d,11
1970 pshufd xmm7,xmm7,8
1971 xor edi,r10d
1972 add r8d,r12d
1973 movdqa xmm6,XMMWORD[rbp]
1974 ror r13d,6
1975 and r15d,edi
1976 pslldq xmm7,8
1977 xor r14d,r9d
1978 add r8d,r13d
1979 xor r15d,r10d
1980 paddd xmm0,xmm7
1981 ror r14d,2
1982 add eax,r8d
1983 add r8d,r15d
1984 paddd xmm6,xmm0
1985 mov r13d,eax
1986 add r14d,r8d
1987 movdqa XMMWORD[rsp],xmm6
1988 ror r13d,14
1989 movdqa xmm4,xmm2
1990 mov r8d,r14d
1991 mov r12d,ebx
1992 movdqa xmm7,xmm0
1993 ror r14d,9
1994 xor r13d,eax
1995 xor r12d,ecx
1996 ror r13d,5
1997 xor r14d,r8d
1998 DB 102,15,58,15,225,4
1999 and r12d,eax
2000 xor r13d,eax
2001 DB 102,15,58,15,251,4
2002 add edx,DWORD[16+rsp]
2003 mov r15d,r8d
2004 xor r12d,ecx
2005 ror r14d,11
2006 movdqa xmm5,xmm4
2007 xor r15d,r9d
2008 add edx,r12d
2009 movdqa xmm6,xmm4
2010 ror r13d,6
2011 and edi,r15d
2012 psrld xmm4,3
2013 xor r14d,r8d
2014 add edx,r13d
2015 xor edi,r9d
2016 paddd xmm1,xmm7
2017 ror r14d,2
2018 add r11d,edx
2019 psrld xmm6,7
2020 add edx,edi
2021 mov r13d,r11d
2022 pshufd xmm7,xmm0,250
2023 add r14d,edx
2024 ror r13d,14
2025 pslld xmm5,14
2026 mov edx,r14d
2027 mov r12d,eax
2028 pxor xmm4,xmm6
2029 ror r14d,9
2030 xor r13d,r11d
2031 xor r12d,ebx
2032 ror r13d,5
2033 psrld xmm6,11
2034 xor r14d,edx
2035 pxor xmm4,xmm5
2036 and r12d,r11d
2037 xor r13d,r11d
2038 pslld xmm5,11
2039 add ecx,DWORD[20+rsp]
2040 mov edi,edx
2041 pxor xmm4,xmm6
2042 xor r12d,ebx
2043 ror r14d,11
2044 movdqa xmm6,xmm7
2045 xor edi,r8d
2046 add ecx,r12d
2047 pxor xmm4,xmm5
2048 ror r13d,6
2049 and r15d,edi
2050 xor r14d,edx
2051 psrld xmm7,10
2052 add ecx,r13d
2053 xor r15d,r8d
2054 paddd xmm1,xmm4
2055 ror r14d,2
2056 add r10d,ecx
2057 psrlq xmm6,17
2058 add ecx,r15d
2059 mov r13d,r10d
2060 add r14d,ecx
2061 pxor xmm7,xmm6
2062 ror r13d,14
2063 mov ecx,r14d
2064 mov r12d,r11d
2065 ror r14d,9
2066 psrlq xmm6,2
2067 xor r13d,r10d
2068 xor r12d,eax
2069 pxor xmm7,xmm6
2070 ror r13d,5
2071 xor r14d,ecx
2072 and r12d,r10d
2073 pshufd xmm7,xmm7,128
2074 xor r13d,r10d
2075 add ebx,DWORD[24+rsp]
2076 mov r15d,ecx
2077 psrldq xmm7,8
2078 xor r12d,eax
2079 ror r14d,11
2080 xor r15d,edx
2081 add ebx,r12d
2082 ror r13d,6
2083 paddd xmm1,xmm7
2084 and edi,r15d
2085 xor r14d,ecx
2086 add ebx,r13d
2087 pshufd xmm7,xmm1,80
2088 xor edi,edx
2089 ror r14d,2
2090 add r9d,ebx
2091 movdqa xmm6,xmm7
2092 add ebx,edi
2093 mov r13d,r9d
2094 psrld xmm7,10
2095 add r14d,ebx
2096 ror r13d,14
2097 psrlq xmm6,17
2098 mov ebx,r14d
2099 mov r12d,r10d
2100 pxor xmm7,xmm6
2101 ror r14d,9
2102 xor r13d,r9d
2103 xor r12d,r11d
2104 ror r13d,5
2105 xor r14d,ebx
2106 psrlq xmm6,2
2107 and r12d,r9d
2108 xor r13d,r9d
2109 add eax,DWORD[28+rsp]
2110 pxor xmm7,xmm6
2111 mov edi,ebx
2112 xor r12d,r11d
2113 ror r14d,11
2114 pshufd xmm7,xmm7,8
2115 xor edi,ecx
2116 add eax,r12d
2117 movdqa xmm6,XMMWORD[32+rbp]
2118 ror r13d,6
2119 and r15d,edi
2120 pslldq xmm7,8
2121 xor r14d,ebx
2122 add eax,r13d
2123 xor r15d,ecx
2124 paddd xmm1,xmm7
2125 ror r14d,2
2126 add r8d,eax
2127 add eax,r15d
2128 paddd xmm6,xmm1
2129 mov r13d,r8d
2130 add r14d,eax
2131 movdqa XMMWORD[16+rsp],xmm6
2132 ror r13d,14
2133 movdqa xmm4,xmm3
2134 mov eax,r14d
2135 mov r12d,r9d
2136 movdqa xmm7,xmm1
2137 ror r14d,9
2138 xor r13d,r8d
2139 xor r12d,r10d
2140 ror r13d,5
2141 xor r14d,eax
2142 DB 102,15,58,15,226,4
2143 and r12d,r8d
2144 xor r13d,r8d
2145 DB 102,15,58,15,248,4
2146 add r11d,DWORD[32+rsp]
2147 mov r15d,eax
2148 xor r12d,r10d
2149 ror r14d,11
2150 movdqa xmm5,xmm4
2151 xor r15d,ebx
2152 add r11d,r12d
2153 movdqa xmm6,xmm4
2154 ror r13d,6
2155 and edi,r15d
2156 psrld xmm4,3
2157 xor r14d,eax
2158 add r11d,r13d
2159 xor edi,ebx
2160 paddd xmm2,xmm7
2161 ror r14d,2
2162 add edx,r11d
2163 psrld xmm6,7
2164 add r11d,edi
2165 mov r13d,edx
2166 pshufd xmm7,xmm1,250
2167 add r14d,r11d
2168 ror r13d,14
2169 pslld xmm5,14
2170 mov r11d,r14d
2171 mov r12d,r8d
2172 pxor xmm4,xmm6
2173 ror r14d,9
2174 xor r13d,edx
2175 xor r12d,r9d
2176 ror r13d,5
2177 psrld xmm6,11
2178 xor r14d,r11d
2179 pxor xmm4,xmm5
2180 and r12d,edx
2181 xor r13d,edx
2182 pslld xmm5,11
2183 add r10d,DWORD[36+rsp]
2184 mov edi,r11d
2185 pxor xmm4,xmm6
2186 xor r12d,r9d
2187 ror r14d,11
2188 movdqa xmm6,xmm7
2189 xor edi,eax
2190 add r10d,r12d
2191 pxor xmm4,xmm5
2192 ror r13d,6
2193 and r15d,edi
2194 xor r14d,r11d
2195 psrld xmm7,10
2196 add r10d,r13d
2197 xor r15d,eax
2198 paddd xmm2,xmm4
2199 ror r14d,2
2200 add ecx,r10d
2201 psrlq xmm6,17
2202 add r10d,r15d
2203 mov r13d,ecx
2204 add r14d,r10d
2205 pxor xmm7,xmm6
2206 ror r13d,14
2207 mov r10d,r14d
2208 mov r12d,edx
2209 ror r14d,9
2210 psrlq xmm6,2
2211 xor r13d,ecx
2212 xor r12d,r8d
2213 pxor xmm7,xmm6
2214 ror r13d,5
2215 xor r14d,r10d
2216 and r12d,ecx
2217 pshufd xmm7,xmm7,128
2218 xor r13d,ecx
2219 add r9d,DWORD[40+rsp]
2220 mov r15d,r10d
2221 psrldq xmm7,8
2222 xor r12d,r8d
2223 ror r14d,11
2224 xor r15d,r11d
2225 add r9d,r12d
2226 ror r13d,6
2227 paddd xmm2,xmm7
2228 and edi,r15d
2229 xor r14d,r10d
2230 add r9d,r13d
2231 pshufd xmm7,xmm2,80
2232 xor edi,r11d
2233 ror r14d,2
2234 add ebx,r9d
2235 movdqa xmm6,xmm7
2236 add r9d,edi
2237 mov r13d,ebx
2238 psrld xmm7,10
2239 add r14d,r9d
2240 ror r13d,14
2241 psrlq xmm6,17
2242 mov r9d,r14d
2243 mov r12d,ecx
2244 pxor xmm7,xmm6
2245 ror r14d,9
2246 xor r13d,ebx
2247 xor r12d,edx
2248 ror r13d,5
2249 xor r14d,r9d
2250 psrlq xmm6,2
2251 and r12d,ebx
2252 xor r13d,ebx
2253 add r8d,DWORD[44+rsp]
2254 pxor xmm7,xmm6
2255 mov edi,r9d
2256 xor r12d,edx
2257 ror r14d,11
2258 pshufd xmm7,xmm7,8
2259 xor edi,r10d
2260 add r8d,r12d
2261 movdqa xmm6,XMMWORD[64+rbp]
2262 ror r13d,6
2263 and r15d,edi
2264 pslldq xmm7,8
2265 xor r14d,r9d
2266 add r8d,r13d
2267 xor r15d,r10d
2268 paddd xmm2,xmm7
2269 ror r14d,2
2270 add eax,r8d
2271 add r8d,r15d
2272 paddd xmm6,xmm2
2273 mov r13d,eax
2274 add r14d,r8d
2275 movdqa XMMWORD[32+rsp],xmm6
2276 ror r13d,14
2277 movdqa xmm4,xmm0
2278 mov r8d,r14d
2279 mov r12d,ebx
2280 movdqa xmm7,xmm2
2281 ror r14d,9
2282 xor r13d,eax
2283 xor r12d,ecx
2284 ror r13d,5
2285 xor r14d,r8d
2286 DB 102,15,58,15,227,4
2287 and r12d,eax
2288 xor r13d,eax
2289 DB 102,15,58,15,249,4
2290 add edx,DWORD[48+rsp]
2291 mov r15d,r8d
2292 xor r12d,ecx
2293 ror r14d,11
2294 movdqa xmm5,xmm4
2295 xor r15d,r9d
2296 add edx,r12d
2297 movdqa xmm6,xmm4
2298 ror r13d,6
2299 and edi,r15d
2300 psrld xmm4,3
2301 xor r14d,r8d
2302 add edx,r13d
2303 xor edi,r9d
2304 paddd xmm3,xmm7
2305 ror r14d,2
2306 add r11d,edx
2307 psrld xmm6,7
2308 add edx,edi
2309 mov r13d,r11d
2310 pshufd xmm7,xmm2,250
2311 add r14d,edx
2312 ror r13d,14
2313 pslld xmm5,14
2314 mov edx,r14d
2315 mov r12d,eax
2316 pxor xmm4,xmm6
2317 ror r14d,9
2318 xor r13d,r11d
2319 xor r12d,ebx
2320 ror r13d,5
2321 psrld xmm6,11
2322 xor r14d,edx
2323 pxor xmm4,xmm5
2324 and r12d,r11d
2325 xor r13d,r11d
2326 pslld xmm5,11
2327 add ecx,DWORD[52+rsp]
2328 mov edi,edx
2329 pxor xmm4,xmm6
2330 xor r12d,ebx
2331 ror r14d,11
2332 movdqa xmm6,xmm7
2333 xor edi,r8d
2334 add ecx,r12d
2335 pxor xmm4,xmm5
2336 ror r13d,6
2337 and r15d,edi
2338 xor r14d,edx
2339 psrld xmm7,10
2340 add ecx,r13d
2341 xor r15d,r8d
2342 paddd xmm3,xmm4
2343 ror r14d,2
2344 add r10d,ecx
2345 psrlq xmm6,17
2346 add ecx,r15d
2347 mov r13d,r10d
2348 add r14d,ecx
2349 pxor xmm7,xmm6
2350 ror r13d,14
2351 mov ecx,r14d
2352 mov r12d,r11d
2353 ror r14d,9
2354 psrlq xmm6,2
2355 xor r13d,r10d
2356 xor r12d,eax
2357 pxor xmm7,xmm6
2358 ror r13d,5
2359 xor r14d,ecx
2360 and r12d,r10d
2361 pshufd xmm7,xmm7,128
2362 xor r13d,r10d
2363 add ebx,DWORD[56+rsp]
2364 mov r15d,ecx
2365 psrldq xmm7,8
2366 xor r12d,eax
2367 ror r14d,11
2368 xor r15d,edx
2369 add ebx,r12d
2370 ror r13d,6
2371 paddd xmm3,xmm7
2372 and edi,r15d
2373 xor r14d,ecx
2374 add ebx,r13d
2375 pshufd xmm7,xmm3,80
2376 xor edi,edx
2377 ror r14d,2
2378 add r9d,ebx
2379 movdqa xmm6,xmm7
2380 add ebx,edi
2381 mov r13d,r9d
2382 psrld xmm7,10
2383 add r14d,ebx
2384 ror r13d,14
2385 psrlq xmm6,17
2386 mov ebx,r14d
2387 mov r12d,r10d
2388 pxor xmm7,xmm6
2389 ror r14d,9
2390 xor r13d,r9d
2391 xor r12d,r11d
2392 ror r13d,5
2393 xor r14d,ebx
2394 psrlq xmm6,2
2395 and r12d,r9d
2396 xor r13d,r9d
2397 add eax,DWORD[60+rsp]
2398 pxor xmm7,xmm6
2399 mov edi,ebx
2400 xor r12d,r11d
2401 ror r14d,11
2402 pshufd xmm7,xmm7,8
2403 xor edi,ecx
2404 add eax,r12d
2405 movdqa xmm6,XMMWORD[96+rbp]
2406 ror r13d,6
2407 and r15d,edi
2408 pslldq xmm7,8
2409 xor r14d,ebx
2410 add eax,r13d
2411 xor r15d,ecx
2412 paddd xmm3,xmm7
2413 ror r14d,2
2414 add r8d,eax
2415 add eax,r15d
2416 paddd xmm6,xmm3
2417 mov r13d,r8d
2418 add r14d,eax
2419 movdqa XMMWORD[48+rsp],xmm6
2420 cmp BYTE[131+rbp],0
2421 jne NEAR $L$ssse3_00_47
2422 ror r13d,14
2423 mov eax,r14d
2424 mov r12d,r9d
2425 ror r14d,9
2426 xor r13d,r8d
2427 xor r12d,r10d
2428 ror r13d,5
2429 xor r14d,eax
2430 and r12d,r8d
2431 xor r13d,r8d
2432 add r11d,DWORD[rsp]
2433 mov r15d,eax
2434 xor r12d,r10d
2435 ror r14d,11
2436 xor r15d,ebx
2437 add r11d,r12d
2438 ror r13d,6
2439 and edi,r15d
2440 xor r14d,eax
2441 add r11d,r13d
2442 xor edi,ebx
2443 ror r14d,2
2444 add edx,r11d
2445 add r11d,edi
2446 mov r13d,edx
2447 add r14d,r11d
2448 ror r13d,14
2449 mov r11d,r14d
2450 mov r12d,r8d
2451 ror r14d,9
2452 xor r13d,edx
2453 xor r12d,r9d
2454 ror r13d,5
2455 xor r14d,r11d
2456 and r12d,edx
2457 xor r13d,edx
2458 add r10d,DWORD[4+rsp]
2459 mov edi,r11d
2460 xor r12d,r9d
2461 ror r14d,11
2462 xor edi,eax
2463 add r10d,r12d
2464 ror r13d,6
2465 and r15d,edi
2466 xor r14d,r11d
2467 add r10d,r13d
2468 xor r15d,eax
2469 ror r14d,2
2470 add ecx,r10d
2471 add r10d,r15d
2472 mov r13d,ecx
2473 add r14d,r10d
2474 ror r13d,14
2475 mov r10d,r14d
2476 mov r12d,edx
2477 ror r14d,9
2478 xor r13d,ecx
2479 xor r12d,r8d
2480 ror r13d,5
2481 xor r14d,r10d
2482 and r12d,ecx
2483 xor r13d,ecx
2484 add r9d,DWORD[8+rsp]
2485 mov r15d,r10d
2486 xor r12d,r8d
2487 ror r14d,11
2488 xor r15d,r11d
2489 add r9d,r12d
2490 ror r13d,6
2491 and edi,r15d
2492 xor r14d,r10d
2493 add r9d,r13d
2494 xor edi,r11d
2495 ror r14d,2
2496 add ebx,r9d
2497 add r9d,edi
2498 mov r13d,ebx
2499 add r14d,r9d
2500 ror r13d,14
2501 mov r9d,r14d
2502 mov r12d,ecx
2503 ror r14d,9
2504 xor r13d,ebx
2505 xor r12d,edx
2506 ror r13d,5
2507 xor r14d,r9d
2508 and r12d,ebx
2509 xor r13d,ebx
2510 add r8d,DWORD[12+rsp]
2511 mov edi,r9d
2512 xor r12d,edx
2513 ror r14d,11
2514 xor edi,r10d
2515 add r8d,r12d
2516 ror r13d,6
2517 and r15d,edi
2518 xor r14d,r9d
2519 add r8d,r13d
2520 xor r15d,r10d
2521 ror r14d,2
2522 add eax,r8d
2523 add r8d,r15d
2524 mov r13d,eax
2525 add r14d,r8d
2526 ror r13d,14
2527 mov r8d,r14d
2528 mov r12d,ebx
2529 ror r14d,9
2530 xor r13d,eax
2531 xor r12d,ecx
2532 ror r13d,5
2533 xor r14d,r8d
2534 and r12d,eax
2535 xor r13d,eax
2536 add edx,DWORD[16+rsp]
2537 mov r15d,r8d
2538 xor r12d,ecx
2539 ror r14d,11
2540 xor r15d,r9d
2541 add edx,r12d
2542 ror r13d,6
2543 and edi,r15d
2544 xor r14d,r8d
2545 add edx,r13d
2546 xor edi,r9d
2547 ror r14d,2
2548 add r11d,edx
2549 add edx,edi
2550 mov r13d,r11d
2551 add r14d,edx
2552 ror r13d,14
2553 mov edx,r14d
2554 mov r12d,eax
2555 ror r14d,9
2556 xor r13d,r11d
2557 xor r12d,ebx
2558 ror r13d,5
2559 xor r14d,edx
2560 and r12d,r11d
2561 xor r13d,r11d
2562 add ecx,DWORD[20+rsp]
2563 mov edi,edx
2564 xor r12d,ebx
2565 ror r14d,11
2566 xor edi,r8d
2567 add ecx,r12d
2568 ror r13d,6
2569 and r15d,edi
2570 xor r14d,edx
2571 add ecx,r13d
2572 xor r15d,r8d
2573 ror r14d,2
2574 add r10d,ecx
2575 add ecx,r15d
2576 mov r13d,r10d
2577 add r14d,ecx
2578 ror r13d,14
2579 mov ecx,r14d
2580 mov r12d,r11d
2581 ror r14d,9
2582 xor r13d,r10d
2583 xor r12d,eax
2584 ror r13d,5
2585 xor r14d,ecx
2586 and r12d,r10d
2587 xor r13d,r10d
2588 add ebx,DWORD[24+rsp]
2589 mov r15d,ecx
2590 xor r12d,eax
2591 ror r14d,11
2592 xor r15d,edx
2593 add ebx,r12d
2594 ror r13d,6
2595 and edi,r15d
2596 xor r14d,ecx
2597 add ebx,r13d
2598 xor edi,edx
2599 ror r14d,2
2600 add r9d,ebx
2601 add ebx,edi
2602 mov r13d,r9d
2603 add r14d,ebx
2604 ror r13d,14
2605 mov ebx,r14d
2606 mov r12d,r10d
2607 ror r14d,9
2608 xor r13d,r9d
2609 xor r12d,r11d
2610 ror r13d,5
2611 xor r14d,ebx
2612 and r12d,r9d
2613 xor r13d,r9d
2614 add eax,DWORD[28+rsp]
2615 mov edi,ebx
2616 xor r12d,r11d
2617 ror r14d,11
2618 xor edi,ecx
2619 add eax,r12d
2620 ror r13d,6
2621 and r15d,edi
2622 xor r14d,ebx
2623 add eax,r13d
2624 xor r15d,ecx
2625 ror r14d,2
2626 add r8d,eax
2627 add eax,r15d
2628 mov r13d,r8d
2629 add r14d,eax
2630 ror r13d,14
2631 mov eax,r14d
2632 mov r12d,r9d
2633 ror r14d,9
2634 xor r13d,r8d
2635 xor r12d,r10d
2636 ror r13d,5
2637 xor r14d,eax
2638 and r12d,r8d
2639 xor r13d,r8d
2640 add r11d,DWORD[32+rsp]
2641 mov r15d,eax
2642 xor r12d,r10d
2643 ror r14d,11
2644 xor r15d,ebx
2645 add r11d,r12d
2646 ror r13d,6
2647 and edi,r15d
2648 xor r14d,eax
2649 add r11d,r13d
2650 xor edi,ebx
2651 ror r14d,2
2652 add edx,r11d
2653 add r11d,edi
2654 mov r13d,edx
2655 add r14d,r11d
2656 ror r13d,14
2657 mov r11d,r14d
2658 mov r12d,r8d
2659 ror r14d,9
2660 xor r13d,edx
2661 xor r12d,r9d
2662 ror r13d,5
2663 xor r14d,r11d
2664 and r12d,edx
2665 xor r13d,edx
2666 add r10d,DWORD[36+rsp]
2667 mov edi,r11d
2668 xor r12d,r9d
2669 ror r14d,11
2670 xor edi,eax
2671 add r10d,r12d
2672 ror r13d,6
2673 and r15d,edi
2674 xor r14d,r11d
2675 add r10d,r13d
2676 xor r15d,eax
2677 ror r14d,2
2678 add ecx,r10d
2679 add r10d,r15d
2680 mov r13d,ecx
2681 add r14d,r10d
2682 ror r13d,14
2683 mov r10d,r14d
2684 mov r12d,edx
2685 ror r14d,9
2686 xor r13d,ecx
2687 xor r12d,r8d
2688 ror r13d,5
2689 xor r14d,r10d
2690 and r12d,ecx
2691 xor r13d,ecx
2692 add r9d,DWORD[40+rsp]
2693 mov r15d,r10d
2694 xor r12d,r8d
2695 ror r14d,11
2696 xor r15d,r11d
2697 add r9d,r12d
2698 ror r13d,6
2699 and edi,r15d
2700 xor r14d,r10d
2701 add r9d,r13d
2702 xor edi,r11d
2703 ror r14d,2
2704 add ebx,r9d
2705 add r9d,edi
2706 mov r13d,ebx
2707 add r14d,r9d
2708 ror r13d,14
2709 mov r9d,r14d
2710 mov r12d,ecx
2711 ror r14d,9
2712 xor r13d,ebx
2713 xor r12d,edx
2714 ror r13d,5
2715 xor r14d,r9d
2716 and r12d,ebx
2717 xor r13d,ebx
2718 add r8d,DWORD[44+rsp]
2719 mov edi,r9d
2720 xor r12d,edx
2721 ror r14d,11
2722 xor edi,r10d
2723 add r8d,r12d
2724 ror r13d,6
2725 and r15d,edi
2726 xor r14d,r9d
2727 add r8d,r13d
2728 xor r15d,r10d
2729 ror r14d,2
2730 add eax,r8d
2731 add r8d,r15d
2732 mov r13d,eax
2733 add r14d,r8d
2734 ror r13d,14
2735 mov r8d,r14d
2736 mov r12d,ebx
2737 ror r14d,9
2738 xor r13d,eax
2739 xor r12d,ecx
2740 ror r13d,5
2741 xor r14d,r8d
2742 and r12d,eax
2743 xor r13d,eax
2744 add edx,DWORD[48+rsp]
2745 mov r15d,r8d
2746 xor r12d,ecx
2747 ror r14d,11
2748 xor r15d,r9d
2749 add edx,r12d
2750 ror r13d,6
2751 and edi,r15d
2752 xor r14d,r8d
2753 add edx,r13d
2754 xor edi,r9d
2755 ror r14d,2
2756 add r11d,edx
2757 add edx,edi
2758 mov r13d,r11d
2759 add r14d,edx
2760 ror r13d,14
2761 mov edx,r14d
2762 mov r12d,eax
2763 ror r14d,9
2764 xor r13d,r11d
2765 xor r12d,ebx
2766 ror r13d,5
2767 xor r14d,edx
2768 and r12d,r11d
2769 xor r13d,r11d
2770 add ecx,DWORD[52+rsp]
2771 mov edi,edx
2772 xor r12d,ebx
2773 ror r14d,11
2774 xor edi,r8d
2775 add ecx,r12d
2776 ror r13d,6
2777 and r15d,edi
2778 xor r14d,edx
2779 add ecx,r13d
2780 xor r15d,r8d
2781 ror r14d,2
2782 add r10d,ecx
2783 add ecx,r15d
2784 mov r13d,r10d
2785 add r14d,ecx
2786 ror r13d,14
2787 mov ecx,r14d
2788 mov r12d,r11d
2789 ror r14d,9
2790 xor r13d,r10d
2791 xor r12d,eax
2792 ror r13d,5
2793 xor r14d,ecx
2794 and r12d,r10d
2795 xor r13d,r10d
2796 add ebx,DWORD[56+rsp]
2797 mov r15d,ecx
2798 xor r12d,eax
2799 ror r14d,11
2800 xor r15d,edx
2801 add ebx,r12d
2802 ror r13d,6
2803 and edi,r15d
2804 xor r14d,ecx
2805 add ebx,r13d
2806 xor edi,edx
2807 ror r14d,2
2808 add r9d,ebx
2809 add ebx,edi
2810 mov r13d,r9d
2811 add r14d,ebx
2812 ror r13d,14
2813 mov ebx,r14d
2814 mov r12d,r10d
2815 ror r14d,9
2816 xor r13d,r9d
2817 xor r12d,r11d
2818 ror r13d,5
2819 xor r14d,ebx
2820 and r12d,r9d
2821 xor r13d,r9d
2822 add eax,DWORD[60+rsp]
2823 mov edi,ebx
2824 xor r12d,r11d
2825 ror r14d,11
2826 xor edi,ecx
2827 add eax,r12d
2828 ror r13d,6
2829 and r15d,edi
2830 xor r14d,ebx
2831 add eax,r13d
2832 xor r15d,ecx
2833 ror r14d,2
2834 add r8d,eax
2835 add eax,r15d
2836 mov r13d,r8d
2837 add r14d,eax
2838 mov rdi,QWORD[((64+0))+rsp]
2839 mov eax,r14d
2840
2841 add eax,DWORD[rdi]
2842 lea rsi,[64+rsi]
2843 add ebx,DWORD[4+rdi]
2844 add ecx,DWORD[8+rdi]
2845 add edx,DWORD[12+rdi]
2846 add r8d,DWORD[16+rdi]
2847 add r9d,DWORD[20+rdi]
2848 add r10d,DWORD[24+rdi]
2849 add r11d,DWORD[28+rdi]
2850
2851 cmp rsi,QWORD[((64+16))+rsp]
2852
2853 mov DWORD[rdi],eax
2854 mov DWORD[4+rdi],ebx
2855 mov DWORD[8+rdi],ecx
2856 mov DWORD[12+rdi],edx
2857 mov DWORD[16+rdi],r8d
2858 mov DWORD[20+rdi],r9d
2859 mov DWORD[24+rdi],r10d
2860 mov DWORD[28+rdi],r11d
2861 jb NEAR $L$loop_ssse3
2862
2863 mov rsi,QWORD[((64+24))+rsp]
2864 movaps xmm6,XMMWORD[((64+32))+rsp]
2865 movaps xmm7,XMMWORD[((64+48))+rsp]
2866 movaps xmm8,XMMWORD[((64+64))+rsp]
2867 movaps xmm9,XMMWORD[((64+80))+rsp]
2868 mov r15,QWORD[rsi]
2869 mov r14,QWORD[8+rsi]
2870 mov r13,QWORD[16+rsi]
2871 mov r12,QWORD[24+rsi]
2872 mov rbp,QWORD[32+rsi]
2873 mov rbx,QWORD[40+rsi]
2874 lea rsp,[48+rsi]
2875 $L$epilogue_ssse3:
2876 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
2877 mov rsi,QWORD[16+rsp]
2878 DB 0F3h,0C3h ;repret
2879 $L$SEH_end_sha256_block_data_order_ssse3:
2880 EXTERN __imp_RtlVirtualUnwind
2881
2882 ALIGN 16
2883 se_handler:
2884 push rsi
2885 push rdi
2886 push rbx
2887 push rbp
2888 push r12
2889 push r13
2890 push r14
2891 push r15
2892 pushfq
2893 sub rsp,64
2894
2895 mov rax,QWORD[120+r8]
2896 mov rbx,QWORD[248+r8]
2897
2898 mov rsi,QWORD[8+r9]
2899 mov r11,QWORD[56+r9]
2900
2901 mov r10d,DWORD[r11]
2902 lea r10,[r10*1+rsi]
2903 cmp rbx,r10
2904 jb NEAR $L$in_prologue
2905
2906 mov rax,QWORD[152+r8]
2907
2908 mov r10d,DWORD[4+r11]
2909 lea r10,[r10*1+rsi]
2910 cmp rbx,r10
2911 jae NEAR $L$in_prologue
2912 mov rsi,rax
2913 mov rax,QWORD[((64+24))+rax]
2914 lea rax,[48+rax]
2915
2916 mov rbx,QWORD[((-8))+rax]
2917 mov rbp,QWORD[((-16))+rax]
2918 mov r12,QWORD[((-24))+rax]
2919 mov r13,QWORD[((-32))+rax]
2920 mov r14,QWORD[((-40))+rax]
2921 mov r15,QWORD[((-48))+rax]
2922 mov QWORD[144+r8],rbx
2923 mov QWORD[160+r8],rbp
2924 mov QWORD[216+r8],r12
2925 mov QWORD[224+r8],r13
2926 mov QWORD[232+r8],r14
2927 mov QWORD[240+r8],r15
2928
2929 lea r10,[$L$epilogue]
2930 cmp rbx,r10
2931 jb NEAR $L$in_prologue
2932
2933 lea rsi,[((64+32))+rsi]
2934 lea rdi,[512+r8]
2935 mov ecx,8
2936 DD 0xa548f3fc
2937
2938 $L$in_prologue:
2939 mov rdi,QWORD[8+rax]
2940 mov rsi,QWORD[16+rax]
2941 mov QWORD[152+r8],rax
2942 mov QWORD[168+r8],rsi
2943 mov QWORD[176+r8],rdi
2944
2945 mov rdi,QWORD[40+r9]
2946 mov rsi,r8
2947 mov ecx,154
2948 DD 0xa548f3fc
2949
2950 mov rsi,r9
2951 xor rcx,rcx
2952 mov rdx,QWORD[8+rsi]
2953 mov r8,QWORD[rsi]
2954 mov r9,QWORD[16+rsi]
2955 mov r10,QWORD[40+rsi]
2956 lea r11,[56+rsi]
2957 lea r12,[24+rsi]
2958 mov QWORD[32+rsp],r10
2959 mov QWORD[40+rsp],r11
2960 mov QWORD[48+rsp],r12
2961 mov QWORD[56+rsp],rcx
2962 call QWORD[__imp_RtlVirtualUnwind]
2963
2964 mov eax,1
2965 add rsp,64
2966 popfq
2967 pop r15
2968 pop r14
2969 pop r13
2970 pop r12
2971 pop rbp
2972 pop rbx
2973 pop rdi
2974 pop rsi
2975 DB 0F3h,0C3h ;repret
2976
2977 section .pdata rdata align=4
2978 ALIGN 4
2979 DD $L$SEH_begin_sha256_block_data_order wrt ..imagebase
2980 DD $L$SEH_end_sha256_block_data_order wrt ..imagebase
2981 DD $L$SEH_info_sha256_block_data_order wrt ..imagebase
2982 DD $L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase
2983 DD $L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase
2984 DD $L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase
2985 section .xdata rdata align=8
2986 ALIGN 8
2987 $L$SEH_info_sha256_block_data_order:
2988 DB 9,0,0,0
2989 DD se_handler wrt ..imagebase
2990 DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase
2991 $L$SEH_info_sha256_block_data_order_ssse3:
2992 DB 9,0,0,0
2993 DD se_handler wrt ..imagebase
2994 DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imageb ase
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698