5 section .text code
align=64
7 EXTERN OPENSSL_ia32cap_P
9 global sha1_block_data_order
12 sha1_block_data_order:
13 mov QWORD[8+rsp
],rdi
;WIN64 prologue
16 $L$
SEH_begin_sha1_block_data_order:
22 mov r9d
,DWORD[((OPENSSL_ia32cap_P
+0))]
23 mov r8d
,DWORD[((OPENSSL_ia32cap_P
+4))]
24 mov r10d
,DWORD[((OPENSSL_ia32cap_P
+8))]
27 jmp NEAR _ssse3_shortcut
64 lea r13d
,[1518500249+r13
*1+rdx
]
77 lea r12d
,[1518500249+r12
*1+rbp
]
90 lea r11d
,[1518500249+r11
*1+r14
]
103 lea edi,[1518500249+rdi
*1+rdx
]
108 mov r14d
,DWORD[20+r9
]
110 mov DWORD[16+rsp
],ebp
116 lea esi,[1518500249+rsi
*1+rbp
]
123 mov DWORD[20+rsp
],r14d
129 lea r13d
,[1518500249+r13
*1+r14
]
136 mov DWORD[24+rsp
],edx
142 lea r12d
,[1518500249+r12
*1+rdx
]
147 mov r14d
,DWORD[32+r9
]
149 mov DWORD[28+rsp
],ebp
155 lea r11d
,[1518500249+r11
*1+rbp
]
162 mov DWORD[32+rsp
],r14d
168 lea edi,[1518500249+rdi
*1+r14
]
175 mov DWORD[36+rsp
],edx
181 lea esi,[1518500249+rsi
*1+rdx
]
186 mov r14d
,DWORD[44+r9
]
188 mov DWORD[40+rsp
],ebp
194 lea r13d
,[1518500249+r13
*1+rbp
]
201 mov DWORD[44+rsp
],r14d
207 lea r12d
,[1518500249+r12
*1+r14
]
214 mov DWORD[48+rsp
],edx
220 lea r11d
,[1518500249+r11
*1+rdx
]
225 mov r14d
,DWORD[56+r9
]
227 mov DWORD[52+rsp
],ebp
233 lea edi,[1518500249+rdi
*1+rbp
]
240 mov DWORD[56+rsp
],r14d
246 lea esi,[1518500249+rsi
*1+r14
]
253 mov DWORD[60+rsp
],edx
258 xor ebp,DWORD[32+rsp
]
260 lea r13d
,[1518500249+r13
*1+rdx
]
266 xor r14d
,DWORD[4+rsp
]
270 xor r14d
,DWORD[12+rsp
]
273 xor r14d
,DWORD[36+rsp
]
275 lea r12d
,[1518500249+r12
*1+rbp
]
283 mov DWORD[4+rsp
],r14d
285 xor edx,DWORD[16+rsp
]
288 xor edx,DWORD[40+rsp
]
290 lea r11d
,[1518500249+r11
*1+r14
]
296 xor ebp,DWORD[12+rsp
]
300 xor ebp,DWORD[20+rsp
]
303 xor ebp,DWORD[44+rsp
]
305 lea edi,[1518500249+rdi
*1+rdx
]
311 xor r14d
,DWORD[16+rsp
]
313 mov DWORD[12+rsp
],ebp
315 xor r14d
,DWORD[24+rsp
]
318 xor r14d
,DWORD[48+rsp
]
320 lea esi,[1518500249+rsi
*1+rbp
]
326 xor edx,DWORD[20+rsp
]
328 mov DWORD[16+rsp
],r14d
330 xor edx,DWORD[28+rsp
]
333 xor edx,DWORD[52+rsp
]
334 lea r13d
,[1859775393+r13
*1+r14
]
340 xor ebp,DWORD[24+rsp
]
342 mov DWORD[20+rsp
],edx
344 xor ebp,DWORD[32+rsp
]
347 xor ebp,DWORD[56+rsp
]
348 lea r12d
,[1859775393+r12
*1+rdx
]
354 xor r14d
,DWORD[28+rsp
]
356 mov DWORD[24+rsp
],ebp
358 xor r14d
,DWORD[36+rsp
]
361 xor r14d
,DWORD[60+rsp
]
362 lea r11d
,[1859775393+r11
*1+rbp
]
368 xor edx,DWORD[32+rsp
]
370 mov DWORD[28+rsp
],r14d
372 xor edx,DWORD[40+rsp
]
376 lea edi,[1859775393+rdi
*1+r14
]
382 xor ebp,DWORD[36+rsp
]
384 mov DWORD[32+rsp
],edx
386 xor ebp,DWORD[44+rsp
]
390 lea esi,[1859775393+rsi
*1+rdx
]
396 xor r14d
,DWORD[40+rsp
]
398 mov DWORD[36+rsp
],ebp
400 xor r14d
,DWORD[48+rsp
]
403 xor r14d
,DWORD[8+rsp
]
404 lea r13d
,[1859775393+r13
*1+rbp
]
410 xor edx,DWORD[44+rsp
]
412 mov DWORD[40+rsp
],r14d
414 xor edx,DWORD[52+rsp
]
417 xor edx,DWORD[12+rsp
]
418 lea r12d
,[1859775393+r12
*1+r14
]
424 xor ebp,DWORD[48+rsp
]
426 mov DWORD[44+rsp
],edx
428 xor ebp,DWORD[56+rsp
]
431 xor ebp,DWORD[16+rsp
]
432 lea r11d
,[1859775393+r11
*1+rdx
]
438 xor r14d
,DWORD[52+rsp
]
440 mov DWORD[48+rsp
],ebp
442 xor r14d
,DWORD[60+rsp
]
445 xor r14d
,DWORD[20+rsp
]
446 lea edi,[1859775393+rdi
*1+rbp
]
452 xor edx,DWORD[56+rsp
]
454 mov DWORD[52+rsp
],r14d
459 xor edx,DWORD[24+rsp
]
460 lea esi,[1859775393+rsi
*1+r14
]
466 xor ebp,DWORD[60+rsp
]
468 mov DWORD[56+rsp
],edx
473 xor ebp,DWORD[28+rsp
]
474 lea r13d
,[1859775393+r13
*1+rdx
]
482 mov DWORD[60+rsp
],ebp
484 xor r14d
,DWORD[8+rsp
]
487 xor r14d
,DWORD[32+rsp
]
488 lea r12d
,[1859775393+r12
*1+rbp
]
498 xor edx,DWORD[12+rsp
]
501 xor edx,DWORD[36+rsp
]
502 lea r11d
,[1859775393+r11
*1+r14
]
512 xor ebp,DWORD[16+rsp
]
515 xor ebp,DWORD[40+rsp
]
516 lea edi,[1859775393+rdi
*1+rdx
]
522 xor r14d
,DWORD[12+rsp
]
526 xor r14d
,DWORD[20+rsp
]
529 xor r14d
,DWORD[44+rsp
]
530 lea esi,[1859775393+rsi
*1+rbp
]
536 xor edx,DWORD[16+rsp
]
538 mov DWORD[12+rsp
],r14d
540 xor edx,DWORD[24+rsp
]
543 xor edx,DWORD[48+rsp
]
544 lea r13d
,[1859775393+r13
*1+r14
]
550 xor ebp,DWORD[20+rsp
]
552 mov DWORD[16+rsp
],edx
554 xor ebp,DWORD[28+rsp
]
557 xor ebp,DWORD[52+rsp
]
558 lea r12d
,[1859775393+r12
*1+rdx
]
564 xor r14d
,DWORD[24+rsp
]
566 mov DWORD[20+rsp
],ebp
568 xor r14d
,DWORD[32+rsp
]
571 xor r14d
,DWORD[56+rsp
]
572 lea r11d
,[1859775393+r11
*1+rbp
]
578 xor edx,DWORD[28+rsp
]
580 mov DWORD[24+rsp
],r14d
582 xor edx,DWORD[36+rsp
]
585 xor edx,DWORD[60+rsp
]
586 lea edi,[1859775393+rdi
*1+r14
]
592 xor ebp,DWORD[32+rsp
]
594 mov DWORD[28+rsp
],edx
596 xor ebp,DWORD[40+rsp
]
600 lea esi,[1859775393+rsi
*1+rdx
]
606 xor r14d
,DWORD[36+rsp
]
608 mov DWORD[32+rsp
],ebp
610 xor r14d
,DWORD[44+rsp
]
613 xor r14d
,DWORD[4+rsp
]
614 lea r13d
,[((-1894007588))+r13
*1+rbp
]
623 xor edx,DWORD[40+rsp
]
625 mov DWORD[36+rsp
],r14d
627 xor edx,DWORD[48+rsp
]
631 lea r12d
,[((-1894007588))+r12
*1+r14
]
640 xor ebp,DWORD[44+rsp
]
642 mov DWORD[40+rsp
],edx
644 xor ebp,DWORD[52+rsp
]
647 xor ebp,DWORD[12+rsp
]
648 lea r11d
,[((-1894007588))+r11
*1+rdx
]
657 xor r14d
,DWORD[48+rsp
]
659 mov DWORD[44+rsp
],ebp
661 xor r14d
,DWORD[56+rsp
]
664 xor r14d
,DWORD[16+rsp
]
665 lea edi,[((-1894007588))+rdi
*1+rbp
]
674 xor edx,DWORD[52+rsp
]
676 mov DWORD[48+rsp
],r14d
678 xor edx,DWORD[60+rsp
]
681 xor edx,DWORD[20+rsp
]
682 lea esi,[((-1894007588))+rsi
*1+r14
]
691 xor ebp,DWORD[56+rsp
]
693 mov DWORD[52+rsp
],edx
698 xor ebp,DWORD[24+rsp
]
699 lea r13d
,[((-1894007588))+r13
*1+rdx
]
708 xor r14d
,DWORD[60+rsp
]
710 mov DWORD[56+rsp
],ebp
712 xor r14d
,DWORD[4+rsp
]
715 xor r14d
,DWORD[28+rsp
]
716 lea r12d
,[((-1894007588))+r12
*1+rbp
]
727 mov DWORD[60+rsp
],r14d
732 xor edx,DWORD[32+rsp
]
733 lea r11d
,[((-1894007588))+r11
*1+r14
]
746 xor ebp,DWORD[12+rsp
]
749 xor ebp,DWORD[36+rsp
]
750 lea edi,[((-1894007588))+rdi
*1+rdx
]
759 xor r14d
,DWORD[8+rsp
]
763 xor r14d
,DWORD[16+rsp
]
766 xor r14d
,DWORD[40+rsp
]
767 lea esi,[((-1894007588))+rsi
*1+rbp
]
776 xor edx,DWORD[12+rsp
]
778 mov DWORD[8+rsp
],r14d
780 xor edx,DWORD[20+rsp
]
783 xor edx,DWORD[44+rsp
]
784 lea r13d
,[((-1894007588))+r13
*1+r14
]
793 xor ebp,DWORD[16+rsp
]
795 mov DWORD[12+rsp
],edx
797 xor ebp,DWORD[24+rsp
]
800 xor ebp,DWORD[48+rsp
]
801 lea r12d
,[((-1894007588))+r12
*1+rdx
]
810 xor r14d
,DWORD[20+rsp
]
812 mov DWORD[16+rsp
],ebp
814 xor r14d
,DWORD[28+rsp
]
817 xor r14d
,DWORD[52+rsp
]
818 lea r11d
,[((-1894007588))+r11
*1+rbp
]
827 xor edx,DWORD[24+rsp
]
829 mov DWORD[20+rsp
],r14d
831 xor edx,DWORD[32+rsp
]
834 xor edx,DWORD[56+rsp
]
835 lea edi,[((-1894007588))+rdi
*1+r14
]
844 xor ebp,DWORD[28+rsp
]
846 mov DWORD[24+rsp
],edx
848 xor ebp,DWORD[36+rsp
]
851 xor ebp,DWORD[60+rsp
]
852 lea esi,[((-1894007588))+rsi
*1+rdx
]
861 xor r14d
,DWORD[32+rsp
]
863 mov DWORD[28+rsp
],ebp
865 xor r14d
,DWORD[40+rsp
]
869 lea r13d
,[((-1894007588))+r13
*1+rbp
]
878 xor edx,DWORD[36+rsp
]
880 mov DWORD[32+rsp
],r14d
882 xor edx,DWORD[44+rsp
]
886 lea r12d
,[((-1894007588))+r12
*1+r14
]
895 xor ebp,DWORD[40+rsp
]
897 mov DWORD[36+rsp
],edx
899 xor ebp,DWORD[48+rsp
]
903 lea r11d
,[((-1894007588))+r11
*1+rdx
]
912 xor r14d
,DWORD[44+rsp
]
914 mov DWORD[40+rsp
],ebp
916 xor r14d
,DWORD[52+rsp
]
919 xor r14d
,DWORD[12+rsp
]
920 lea edi,[((-1894007588))+rdi
*1+rbp
]
929 xor edx,DWORD[48+rsp
]
931 mov DWORD[44+rsp
],r14d
933 xor edx,DWORD[56+rsp
]
936 xor edx,DWORD[16+rsp
]
937 lea esi,[((-1894007588))+rsi
*1+r14
]
946 xor ebp,DWORD[52+rsp
]
948 mov DWORD[48+rsp
],edx
950 xor ebp,DWORD[60+rsp
]
953 xor ebp,DWORD[20+rsp
]
954 lea r13d
,[((-899497514))+r13
*1+rdx
]
960 xor r14d
,DWORD[56+rsp
]
962 mov DWORD[52+rsp
],ebp
967 xor r14d
,DWORD[24+rsp
]
968 lea r12d
,[((-899497514))+r12
*1+rbp
]
974 xor edx,DWORD[60+rsp
]
976 mov DWORD[56+rsp
],r14d
981 xor edx,DWORD[28+rsp
]
982 lea r11d
,[((-899497514))+r11
*1+r14
]
990 mov DWORD[60+rsp
],edx
995 xor ebp,DWORD[32+rsp
]
996 lea edi,[((-899497514))+rdi
*1+rdx
]
1002 xor r14d
,DWORD[4+rsp
]
1006 xor r14d
,DWORD[12+rsp
]
1009 xor r14d
,DWORD[36+rsp
]
1010 lea esi,[((-899497514))+rsi
*1+rbp
]
1016 xor edx,DWORD[8+rsp
]
1018 mov DWORD[4+rsp
],r14d
1020 xor edx,DWORD[16+rsp
]
1023 xor edx,DWORD[40+rsp
]
1024 lea r13d
,[((-899497514))+r13
*1+r14
]
1030 xor ebp,DWORD[12+rsp
]
1032 mov DWORD[8+rsp
],edx
1034 xor ebp,DWORD[20+rsp
]
1037 xor ebp,DWORD[44+rsp
]
1038 lea r12d
,[((-899497514))+r12
*1+rdx
]
1044 xor r14d
,DWORD[16+rsp
]
1046 mov DWORD[12+rsp
],ebp
1048 xor r14d
,DWORD[24+rsp
]
1051 xor r14d
,DWORD[48+rsp
]
1052 lea r11d
,[((-899497514))+r11
*1+rbp
]
1058 xor edx,DWORD[20+rsp
]
1060 mov DWORD[16+rsp
],r14d
1062 xor edx,DWORD[28+rsp
]
1065 xor edx,DWORD[52+rsp
]
1066 lea edi,[((-899497514))+rdi
*1+r14
]
1072 xor ebp,DWORD[24+rsp
]
1074 mov DWORD[20+rsp
],edx
1076 xor ebp,DWORD[32+rsp
]
1079 xor ebp,DWORD[56+rsp
]
1080 lea esi,[((-899497514))+rsi
*1+rdx
]
1086 xor r14d
,DWORD[28+rsp
]
1088 mov DWORD[24+rsp
],ebp
1090 xor r14d
,DWORD[36+rsp
]
1093 xor r14d
,DWORD[60+rsp
]
1094 lea r13d
,[((-899497514))+r13
*1+rbp
]
1100 xor edx,DWORD[32+rsp
]
1102 mov DWORD[28+rsp
],r14d
1104 xor edx,DWORD[40+rsp
]
1108 lea r12d
,[((-899497514))+r12
*1+r14
]
1114 xor ebp,DWORD[36+rsp
]
1118 xor ebp,DWORD[44+rsp
]
1121 xor ebp,DWORD[4+rsp
]
1122 lea r11d
,[((-899497514))+r11
*1+rdx
]
1128 xor r14d
,DWORD[40+rsp
]
1132 xor r14d
,DWORD[48+rsp
]
1135 xor r14d
,DWORD[8+rsp
]
1136 lea edi,[((-899497514))+rdi
*1+rbp
]
1142 xor edx,DWORD[44+rsp
]
1146 xor edx,DWORD[52+rsp
]
1149 xor edx,DWORD[12+rsp
]
1150 lea esi,[((-899497514))+rsi
*1+r14
]
1156 xor ebp,DWORD[48+rsp
]
1160 xor ebp,DWORD[56+rsp
]
1163 xor ebp,DWORD[16+rsp
]
1164 lea r13d
,[((-899497514))+r13
*1+rdx
]
1170 xor r14d
,DWORD[52+rsp
]
1174 xor r14d
,DWORD[60+rsp
]
1177 xor r14d
,DWORD[20+rsp
]
1178 lea r12d
,[((-899497514))+r12
*1+rbp
]
1184 xor edx,DWORD[56+rsp
]
1191 xor edx,DWORD[24+rsp
]
1192 lea r11d
,[((-899497514))+r11
*1+r14
]
1198 xor ebp,DWORD[60+rsp
]
1202 xor ebp,DWORD[4+rsp
]
1205 xor ebp,DWORD[28+rsp
]
1206 lea edi,[((-899497514))+rdi
*1+rdx
]
1215 lea esi,[((-899497514))+rsi
*1+rbp
]
1223 add r11d
,DWORD[8+r8
]
1224 add r12d
,DWORD[12+r8
]
1225 add r13d
,DWORD[16+r8
]
1228 mov DWORD[8+r8
],r11d
1229 mov DWORD[12+r8
],r12d
1230 mov DWORD[16+r8
],r13d
1236 mov rsi
,QWORD[64+rsp
]
1237 mov r14
,QWORD[((-40))+rsi
]
1238 mov r13
,QWORD[((-32))+rsi
]
1239 mov r12
,QWORD[((-24))+rsi
]
1240 mov rbp
,QWORD[((-16))+rsi
]
1241 mov rbx
,QWORD[((-8))+rsi
]
1244 mov rdi
,QWORD[8+rsp
] ;WIN64 epilogue
1245 mov rsi
,QWORD[16+rsp
]
1246 DB 0F3h
,0C3h
;repret
1247 $L$
SEH_end_sha1_block_data_order:
1250 sha1_block_data_order_ssse3:
1251 mov QWORD[8+rsp
],rdi
;WIN64 prologue
1252 mov QWORD[16+rsp
],rsi
1254 $L$
SEH_begin_sha1_block_data_order_ssse3:
1267 lea rsp
,[((-160))+rsp
]
1268 movaps XMMWORD
[(-40-96)+rax
],xmm6
1269 movaps XMMWORD
[(-40-80)+rax
],xmm7
1270 movaps XMMWORD
[(-40-64)+rax
],xmm8
1271 movaps XMMWORD
[(-40-48)+rax
],xmm9
1272 movaps XMMWORD
[(-40-32)+rax
],xmm10
1273 movaps XMMWORD
[(-40-16)+rax
],xmm11
1283 lea r11
,[((K_XX_XX
+64))]
1288 mov edx,DWORD[12+r8
]
1290 mov ebp,DWORD[16+r8
]
1295 movdqa xmm6
,XMMWORD
[64+r11
]
1296 movdqa xmm9
,XMMWORD
[((-64))+r11
]
1297 movdqu xmm0
,XMMWORD
[r9
]
1298 movdqu xmm1
,XMMWORD
[16+r9
]
1299 movdqu xmm2
,XMMWORD
[32+r9
]
1300 movdqu xmm3
,XMMWORD
[48+r9
]
1309 movdqa XMMWORD
[rsp
],xmm0
1311 movdqa XMMWORD
[16+rsp
],xmm1
1313 movdqa XMMWORD
[32+rsp
],xmm2
1315 jmp NEAR $L$oop_ssse3
1319 pshufd xmm4
,xmm0
,238
1325 punpcklqdq xmm4
,xmm1
1338 add edx,DWORD[4+rsp
]
1342 movdqa XMMWORD
[48+rsp
],xmm9
1354 add ecx,DWORD[8+rsp
]
1368 add ebx,DWORD[12+rsp
]
1372 movdqa xmm10
,XMMWORD
[((-64))+r11
]
1380 pshufd xmm5
,xmm1
,238
1385 add eax,DWORD[16+rsp
]
1386 punpcklqdq xmm5
,xmm2
1399 add ebp,DWORD[20+rsp
]
1403 movdqa XMMWORD
[rsp
],xmm10
1415 add edx,DWORD[24+rsp
]
1429 add ecx,DWORD[28+rsp
]
1433 movdqa xmm8
,XMMWORD
[((-32))+r11
]
1441 pshufd xmm6
,xmm2
,238
1446 add ebx,DWORD[32+rsp
]
1447 punpcklqdq xmm6
,xmm3
1460 add eax,DWORD[36+rsp
]
1464 movdqa XMMWORD
[16+rsp
],xmm8
1476 add ebp,DWORD[40+rsp
]
1490 add edx,DWORD[44+rsp
]
1494 movdqa xmm9
,XMMWORD
[((-32))+r11
]
1502 pshufd xmm7
,xmm3
,238
1507 add ecx,DWORD[48+rsp
]
1508 punpcklqdq xmm7
,xmm4
1521 add ebx,DWORD[52+rsp
]
1525 movdqa XMMWORD
[32+rsp
],xmm9
1537 add eax,DWORD[56+rsp
]
1551 add ebp,DWORD[60+rsp
]
1555 movdqa xmm10
,XMMWORD
[((-32))+r11
]
1560 pshufd xmm9
,xmm6
,238
1568 punpcklqdq xmm9
,xmm7
1582 add ecx,DWORD[4+rsp
]
1586 movdqa XMMWORD
[48+rsp
],xmm10
1596 add ebx,DWORD[8+rsp
]
1600 pshufd xmm10
,xmm7
,238
1605 add eax,DWORD[12+rsp
]
1614 add ebp,DWORD[16+rsp
]
1616 punpcklqdq xmm10
,xmm0
1627 add edx,DWORD[20+rsp
]
1634 movdqa XMMWORD
[rsp
],xmm8
1637 add ecx,DWORD[24+rsp
]
1648 add ebx,DWORD[28+rsp
]
1649 pshufd xmm8
,xmm0
,238
1658 add eax,DWORD[32+rsp
]
1660 punpcklqdq xmm8
,xmm1
1666 movdqa xmm10
,XMMWORD
[r11
]
1671 add ebp,DWORD[36+rsp
]
1678 movdqa XMMWORD
[16+rsp
],xmm9
1681 add edx,DWORD[40+rsp
]
1692 add ecx,DWORD[44+rsp
]
1693 pshufd xmm9
,xmm1
,238
1702 add ebx,DWORD[48+rsp
]
1704 punpcklqdq xmm9
,xmm2
1715 add eax,DWORD[52+rsp
]
1722 movdqa XMMWORD
[32+rsp
],xmm10
1725 add ebp,DWORD[56+rsp
]
1736 add edx,DWORD[60+rsp
]
1737 pshufd xmm10
,xmm2
,238
1748 punpcklqdq xmm10
,xmm3
1759 add ebx,DWORD[4+rsp
]
1766 movdqa XMMWORD
[48+rsp
],xmm8
1769 add eax,DWORD[8+rsp
]
1780 add ebp,DWORD[12+rsp
]
1781 pshufd xmm8
,xmm3
,238
1790 add edx,DWORD[16+rsp
]
1792 punpcklqdq xmm8
,xmm4
1803 add ecx,DWORD[20+rsp
]
1810 movdqa XMMWORD
[rsp
],xmm9
1813 add ebx,DWORD[24+rsp
]
1824 add eax,DWORD[28+rsp
]
1825 pshufd xmm9
,xmm4
,238
1835 add ebp,DWORD[32+rsp
]
1839 punpcklqdq xmm9
,xmm5
1851 add edx,DWORD[36+rsp
]
1858 movdqa XMMWORD
[16+rsp
],xmm10
1866 add ecx,DWORD[40+rsp
]
1874 pshufd xmm10
,xmm5
,238
1879 add ebx,DWORD[44+rsp
]
1891 add eax,DWORD[48+rsp
]
1895 punpcklqdq xmm10
,xmm6
1901 movdqa xmm9
,XMMWORD
[32+r11
]
1907 add ebp,DWORD[52+rsp
]
1914 movdqa XMMWORD
[32+rsp
],xmm8
1922 add edx,DWORD[56+rsp
]
1930 pshufd xmm8
,xmm6
,238
1935 add ecx,DWORD[60+rsp
]
1951 punpcklqdq xmm8
,xmm7
1963 add eax,DWORD[4+rsp
]
1970 movdqa XMMWORD
[48+rsp
],xmm9
1978 add ebp,DWORD[8+rsp
]
1986 pshufd xmm9
,xmm7
,238
1991 add edx,DWORD[12+rsp
]
2003 add ecx,DWORD[16+rsp
]
2007 punpcklqdq xmm9
,xmm0
2019 add ebx,DWORD[20+rsp
]
2026 movdqa XMMWORD
[rsp
],xmm10
2034 add eax,DWORD[24+rsp
]
2042 pshufd xmm10
,xmm0
,238
2047 add ebp,DWORD[28+rsp
]
2059 add edx,DWORD[32+rsp
]
2063 punpcklqdq xmm10
,xmm1
2075 add ecx,DWORD[36+rsp
]
2082 movdqa XMMWORD
[16+rsp
],xmm8
2090 add ebx,DWORD[40+rsp
]
2098 pshufd xmm8
,xmm1
,238
2103 add eax,DWORD[44+rsp
]
2114 add ebp,DWORD[48+rsp
]
2116 punpcklqdq xmm8
,xmm2
2127 add edx,DWORD[52+rsp
]
2134 movdqa XMMWORD
[32+rsp
],xmm9
2137 add ecx,DWORD[56+rsp
]
2148 add ebx,DWORD[60+rsp
]
2163 movdqa XMMWORD
[48+rsp
],xmm10
2166 add ebp,DWORD[4+rsp
]
2174 add edx,DWORD[8+rsp
]
2182 add ecx,DWORD[12+rsp
]
2191 je NEAR $L
$done_ssse
3
2192 movdqa xmm6
,XMMWORD
[64+r11
]
2193 movdqa xmm9
,XMMWORD
[((-64))+r11
]
2194 movdqu xmm0
,XMMWORD
[r9
]
2195 movdqu xmm1
,XMMWORD
[16+r9
]
2196 movdqu xmm2
,XMMWORD
[32+r9
]
2197 movdqu xmm3
,XMMWORD
[48+r9
]
2200 add ebx,DWORD[16+rsp
]
2210 add eax,DWORD[20+rsp
]
2213 movdqa XMMWORD
[rsp
],xmm0
2220 add ebp,DWORD[24+rsp
]
2228 add edx,DWORD[28+rsp
]
2236 add ecx,DWORD[32+rsp
]
2246 add ebx,DWORD[36+rsp
]
2249 movdqa XMMWORD
[16+rsp
],xmm1
2256 add eax,DWORD[40+rsp
]
2264 add ebp,DWORD[44+rsp
]
2272 add edx,DWORD[48+rsp
]
2282 add ecx,DWORD[52+rsp
]
2285 movdqa XMMWORD
[32+rsp
],xmm2
2292 add ebx,DWORD[56+rsp
]
2300 add eax,DWORD[60+rsp
]
2310 add edx,DWORD[12+r8
]
2312 add ebp,DWORD[16+r8
]
2317 mov DWORD[12+r8
],edx
2319 mov DWORD[16+r8
],ebp
2321 jmp NEAR $L$oop_ssse3
2325 add ebx,DWORD[16+rsp
]
2333 add eax,DWORD[20+rsp
]
2341 add ebp,DWORD[24+rsp
]
2349 add edx,DWORD[28+rsp
]
2357 add ecx,DWORD[32+rsp
]
2365 add ebx,DWORD[36+rsp
]
2373 add eax,DWORD[40+rsp
]
2381 add ebp,DWORD[44+rsp
]
2389 add edx,DWORD[48+rsp
]
2397 add ecx,DWORD[52+rsp
]
2405 add ebx,DWORD[56+rsp
]
2413 add eax,DWORD[60+rsp
]
2424 add edx,DWORD[12+r8
]
2426 add ebp,DWORD[16+r8
]
2428 mov DWORD[12+r8
],edx
2429 mov DWORD[16+r8
],ebp
2430 movaps xmm6
,XMMWORD
[((-40-96))+r14
]
2431 movaps xmm7
,XMMWORD
[((-40-80))+r14
]
2432 movaps xmm8
,XMMWORD
[((-40-64))+r14
]
2433 movaps xmm9
,XMMWORD
[((-40-48))+r14
]
2434 movaps xmm10
,XMMWORD
[((-40-32))+r14
]
2435 movaps xmm11
,XMMWORD
[((-40-16))+r14
]
2437 mov r14
,QWORD[((-40))+rsi
]
2438 mov r13
,QWORD[((-32))+rsi
]
2439 mov r12
,QWORD[((-24))+rsi
]
2440 mov rbp
,QWORD[((-16))+rsi
]
2441 mov rbx
,QWORD[((-8))+rsi
]
2444 mov rdi
,QWORD[8+rsp
] ;WIN64 epilogue
2445 mov rsi
,QWORD[16+rsp
]
2446 DB 0F3h
,0C3h
;repret
2447 $L$
SEH_end_sha1_block_data_order_ssse3:
2450 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999
2451 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999
2452 DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
2453 DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
2454 DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
2455 DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
2456 DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
2457 DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
2458 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2459 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2460 DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
2461 DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
2462 DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44
2463 DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60
2464 DB 97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114
2467 EXTERN __imp_RtlVirtualUnwind
2482 mov rax
,QWORD[120+r8
]
2483 mov rbx
,QWORD[248+r8
]
2485 lea r10
,[$L$prologue
]
2487 jb NEAR $L
$common_seh_tail
2489 mov rax
,QWORD[152+r8
]
2491 lea r10
,[$L
$epilogue
]
2493 jae NEAR $L
$common_seh_tail
2495 mov rax
,QWORD[64+rax
]
2497 mov rbx
,QWORD[((-8))+rax
]
2498 mov rbp
,QWORD[((-16))+rax
]
2499 mov r12
,QWORD[((-24))+rax
]
2500 mov r13
,QWORD[((-32))+rax
]
2501 mov r14
,QWORD[((-40))+rax
]
2502 mov QWORD[144+r8
],rbx
2503 mov QWORD[160+r8
],rbp
2504 mov QWORD[216+r8
],r12
2505 mov QWORD[224+r8
],r13
2506 mov QWORD[232+r8
],r14
2508 jmp NEAR $L
$common_seh_tail
2524 mov rax
,QWORD[120+r8
]
2525 mov rbx
,QWORD[248+r8
]
2528 mov r11
,QWORD[56+r9
]
2533 jb NEAR $L
$common_seh_tail
2535 mov rax
,QWORD[152+r8
]
2537 mov r10d
,DWORD[4+r11
]
2540 jae NEAR $L
$common_seh_tail
2542 mov rax
,QWORD[232+r8
]
2544 lea rsi
,[((-40-96))+rax
]
2549 mov rbx
,QWORD[((-8))+rax
]
2550 mov rbp
,QWORD[((-16))+rax
]
2551 mov r12
,QWORD[((-24))+rax
]
2552 mov r13
,QWORD[((-32))+rax
]
2553 mov r14
,QWORD[((-40))+rax
]
2554 mov QWORD[144+r8
],rbx
2555 mov QWORD[160+r8
],rbp
2556 mov QWORD[216+r8
],r12
2557 mov QWORD[224+r8
],r13
2558 mov QWORD[232+r8
],r14
2561 mov rdi
,QWORD[8+rax
]
2562 mov rsi
,QWORD[16+rax
]
2563 mov QWORD[152+r8
],rax
2564 mov QWORD[168+r8
],rsi
2565 mov QWORD[176+r8
],rdi
2567 mov rdi
,QWORD[40+r9
]
2574 mov rdx
,QWORD[8+rsi
]
2576 mov r9
,QWORD[16+rsi
]
2577 mov r10
,QWORD[40+rsi
]
2580 mov QWORD[32+rsp
],r10
2581 mov QWORD[40+rsp
],r11
2582 mov QWORD[48+rsp
],r12
2583 mov QWORD[56+rsp
],rcx
2584 call QWORD[__imp_RtlVirtualUnwind
]
2597 DB 0F3h
,0C3h
;repret
2600 section .pdata rdata
align=4
2602 DD $L$SEH_begin_sha1_block_data_order wrt ..imagebase
2603 DD $L$SEH_end_sha1_block_data_order wrt ..imagebase
2604 DD $L$SEH_info_sha1_block_data_order wrt ..imagebase
2605 DD $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase
2606 DD $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase
2607 DD $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase
2608 section .xdata rdata
align=8
2610 $L$
SEH_info_sha1_block_data_order:
2612 DD se_handler wrt ..imagebase
2613 $L$
SEH_info_sha1_block_data_order_ssse3:
2615 DD ssse3_handler wrt ..imagebase
2616 DD $L$prologue_ssse3 wrt ..imagebase
,$L
$epilogue_ssse
3 wrt ..imagebase