Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / boringssl / win-x86_64 / crypto / sha / sha1-x86_64.asm
blob0f5361a1b54d5e5dab0a18bb790020c572a771f5
1 default rel
2 %define XMMWORD
3 %define YMMWORD
4 %define ZMMWORD
5 section .text code align=64
7 EXTERN OPENSSL_ia32cap_P
9 global sha1_block_data_order
11 ALIGN 16
12 sha1_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_sha1_block_data_order:
17 mov rdi,rcx
18 mov rsi,rdx
19 mov rdx,r8
22 mov r9d,DWORD[((OPENSSL_ia32cap_P+0))]
23 mov r8d,DWORD[((OPENSSL_ia32cap_P+4))]
24 mov r10d,DWORD[((OPENSSL_ia32cap_P+8))]
25 test r8d,512
26 jz NEAR $L$ialu
27 jmp NEAR _ssse3_shortcut
29 ALIGN 16
30 $L$ialu:
31 mov rax,rsp
32 push rbx
33 push rbp
34 push r12
35 push r13
36 push r14
37 mov r8,rdi
38 sub rsp,72
39 mov r9,rsi
40 and rsp,-64
41 mov r10,rdx
42 mov QWORD[64+rsp],rax
43 $L$prologue:
45 mov esi,DWORD[r8]
46 mov edi,DWORD[4+r8]
47 mov r11d,DWORD[8+r8]
48 mov r12d,DWORD[12+r8]
49 mov r13d,DWORD[16+r8]
50 jmp NEAR $L$loop
52 ALIGN 16
53 $L$loop:
54 mov edx,DWORD[r9]
55 bswap edx
56 mov ebp,DWORD[4+r9]
57 mov eax,r12d
58 mov DWORD[rsp],edx
59 mov ecx,esi
60 bswap ebp
61 xor eax,r11d
62 rol ecx,5
63 and eax,edi
64 lea r13d,[1518500249+r13*1+rdx]
65 add r13d,ecx
66 xor eax,r12d
67 rol edi,30
68 add r13d,eax
69 mov r14d,DWORD[8+r9]
70 mov eax,r11d
71 mov DWORD[4+rsp],ebp
72 mov ecx,r13d
73 bswap r14d
74 xor eax,edi
75 rol ecx,5
76 and eax,esi
77 lea r12d,[1518500249+r12*1+rbp]
78 add r12d,ecx
79 xor eax,r11d
80 rol esi,30
81 add r12d,eax
82 mov edx,DWORD[12+r9]
83 mov eax,edi
84 mov DWORD[8+rsp],r14d
85 mov ecx,r12d
86 bswap edx
87 xor eax,esi
88 rol ecx,5
89 and eax,r13d
90 lea r11d,[1518500249+r11*1+r14]
91 add r11d,ecx
92 xor eax,edi
93 rol r13d,30
94 add r11d,eax
95 mov ebp,DWORD[16+r9]
96 mov eax,esi
97 mov DWORD[12+rsp],edx
98 mov ecx,r11d
99 bswap ebp
100 xor eax,r13d
101 rol ecx,5
102 and eax,r12d
103 lea edi,[1518500249+rdi*1+rdx]
104 add edi,ecx
105 xor eax,esi
106 rol r12d,30
107 add edi,eax
108 mov r14d,DWORD[20+r9]
109 mov eax,r13d
110 mov DWORD[16+rsp],ebp
111 mov ecx,edi
112 bswap r14d
113 xor eax,r12d
114 rol ecx,5
115 and eax,r11d
116 lea esi,[1518500249+rsi*1+rbp]
117 add esi,ecx
118 xor eax,r13d
119 rol r11d,30
120 add esi,eax
121 mov edx,DWORD[24+r9]
122 mov eax,r12d
123 mov DWORD[20+rsp],r14d
124 mov ecx,esi
125 bswap edx
126 xor eax,r11d
127 rol ecx,5
128 and eax,edi
129 lea r13d,[1518500249+r13*1+r14]
130 add r13d,ecx
131 xor eax,r12d
132 rol edi,30
133 add r13d,eax
134 mov ebp,DWORD[28+r9]
135 mov eax,r11d
136 mov DWORD[24+rsp],edx
137 mov ecx,r13d
138 bswap ebp
139 xor eax,edi
140 rol ecx,5
141 and eax,esi
142 lea r12d,[1518500249+r12*1+rdx]
143 add r12d,ecx
144 xor eax,r11d
145 rol esi,30
146 add r12d,eax
147 mov r14d,DWORD[32+r9]
148 mov eax,edi
149 mov DWORD[28+rsp],ebp
150 mov ecx,r12d
151 bswap r14d
152 xor eax,esi
153 rol ecx,5
154 and eax,r13d
155 lea r11d,[1518500249+r11*1+rbp]
156 add r11d,ecx
157 xor eax,edi
158 rol r13d,30
159 add r11d,eax
160 mov edx,DWORD[36+r9]
161 mov eax,esi
162 mov DWORD[32+rsp],r14d
163 mov ecx,r11d
164 bswap edx
165 xor eax,r13d
166 rol ecx,5
167 and eax,r12d
168 lea edi,[1518500249+rdi*1+r14]
169 add edi,ecx
170 xor eax,esi
171 rol r12d,30
172 add edi,eax
173 mov ebp,DWORD[40+r9]
174 mov eax,r13d
175 mov DWORD[36+rsp],edx
176 mov ecx,edi
177 bswap ebp
178 xor eax,r12d
179 rol ecx,5
180 and eax,r11d
181 lea esi,[1518500249+rsi*1+rdx]
182 add esi,ecx
183 xor eax,r13d
184 rol r11d,30
185 add esi,eax
186 mov r14d,DWORD[44+r9]
187 mov eax,r12d
188 mov DWORD[40+rsp],ebp
189 mov ecx,esi
190 bswap r14d
191 xor eax,r11d
192 rol ecx,5
193 and eax,edi
194 lea r13d,[1518500249+r13*1+rbp]
195 add r13d,ecx
196 xor eax,r12d
197 rol edi,30
198 add r13d,eax
199 mov edx,DWORD[48+r9]
200 mov eax,r11d
201 mov DWORD[44+rsp],r14d
202 mov ecx,r13d
203 bswap edx
204 xor eax,edi
205 rol ecx,5
206 and eax,esi
207 lea r12d,[1518500249+r12*1+r14]
208 add r12d,ecx
209 xor eax,r11d
210 rol esi,30
211 add r12d,eax
212 mov ebp,DWORD[52+r9]
213 mov eax,edi
214 mov DWORD[48+rsp],edx
215 mov ecx,r12d
216 bswap ebp
217 xor eax,esi
218 rol ecx,5
219 and eax,r13d
220 lea r11d,[1518500249+r11*1+rdx]
221 add r11d,ecx
222 xor eax,edi
223 rol r13d,30
224 add r11d,eax
225 mov r14d,DWORD[56+r9]
226 mov eax,esi
227 mov DWORD[52+rsp],ebp
228 mov ecx,r11d
229 bswap r14d
230 xor eax,r13d
231 rol ecx,5
232 and eax,r12d
233 lea edi,[1518500249+rdi*1+rbp]
234 add edi,ecx
235 xor eax,esi
236 rol r12d,30
237 add edi,eax
238 mov edx,DWORD[60+r9]
239 mov eax,r13d
240 mov DWORD[56+rsp],r14d
241 mov ecx,edi
242 bswap edx
243 xor eax,r12d
244 rol ecx,5
245 and eax,r11d
246 lea esi,[1518500249+rsi*1+r14]
247 add esi,ecx
248 xor eax,r13d
249 rol r11d,30
250 add esi,eax
251 xor ebp,DWORD[rsp]
252 mov eax,r12d
253 mov DWORD[60+rsp],edx
254 mov ecx,esi
255 xor ebp,DWORD[8+rsp]
256 xor eax,r11d
257 rol ecx,5
258 xor ebp,DWORD[32+rsp]
259 and eax,edi
260 lea r13d,[1518500249+r13*1+rdx]
261 rol edi,30
262 xor eax,r12d
263 add r13d,ecx
264 rol ebp,1
265 add r13d,eax
266 xor r14d,DWORD[4+rsp]
267 mov eax,r11d
268 mov DWORD[rsp],ebp
269 mov ecx,r13d
270 xor r14d,DWORD[12+rsp]
271 xor eax,edi
272 rol ecx,5
273 xor r14d,DWORD[36+rsp]
274 and eax,esi
275 lea r12d,[1518500249+r12*1+rbp]
276 rol esi,30
277 xor eax,r11d
278 add r12d,ecx
279 rol r14d,1
280 add r12d,eax
281 xor edx,DWORD[8+rsp]
282 mov eax,edi
283 mov DWORD[4+rsp],r14d
284 mov ecx,r12d
285 xor edx,DWORD[16+rsp]
286 xor eax,esi
287 rol ecx,5
288 xor edx,DWORD[40+rsp]
289 and eax,r13d
290 lea r11d,[1518500249+r11*1+r14]
291 rol r13d,30
292 xor eax,edi
293 add r11d,ecx
294 rol edx,1
295 add r11d,eax
296 xor ebp,DWORD[12+rsp]
297 mov eax,esi
298 mov DWORD[8+rsp],edx
299 mov ecx,r11d
300 xor ebp,DWORD[20+rsp]
301 xor eax,r13d
302 rol ecx,5
303 xor ebp,DWORD[44+rsp]
304 and eax,r12d
305 lea edi,[1518500249+rdi*1+rdx]
306 rol r12d,30
307 xor eax,esi
308 add edi,ecx
309 rol ebp,1
310 add edi,eax
311 xor r14d,DWORD[16+rsp]
312 mov eax,r13d
313 mov DWORD[12+rsp],ebp
314 mov ecx,edi
315 xor r14d,DWORD[24+rsp]
316 xor eax,r12d
317 rol ecx,5
318 xor r14d,DWORD[48+rsp]
319 and eax,r11d
320 lea esi,[1518500249+rsi*1+rbp]
321 rol r11d,30
322 xor eax,r13d
323 add esi,ecx
324 rol r14d,1
325 add esi,eax
326 xor edx,DWORD[20+rsp]
327 mov eax,edi
328 mov DWORD[16+rsp],r14d
329 mov ecx,esi
330 xor edx,DWORD[28+rsp]
331 xor eax,r12d
332 rol ecx,5
333 xor edx,DWORD[52+rsp]
334 lea r13d,[1859775393+r13*1+r14]
335 xor eax,r11d
336 add r13d,ecx
337 rol edi,30
338 add r13d,eax
339 rol edx,1
340 xor ebp,DWORD[24+rsp]
341 mov eax,esi
342 mov DWORD[20+rsp],edx
343 mov ecx,r13d
344 xor ebp,DWORD[32+rsp]
345 xor eax,r11d
346 rol ecx,5
347 xor ebp,DWORD[56+rsp]
348 lea r12d,[1859775393+r12*1+rdx]
349 xor eax,edi
350 add r12d,ecx
351 rol esi,30
352 add r12d,eax
353 rol ebp,1
354 xor r14d,DWORD[28+rsp]
355 mov eax,r13d
356 mov DWORD[24+rsp],ebp
357 mov ecx,r12d
358 xor r14d,DWORD[36+rsp]
359 xor eax,edi
360 rol ecx,5
361 xor r14d,DWORD[60+rsp]
362 lea r11d,[1859775393+r11*1+rbp]
363 xor eax,esi
364 add r11d,ecx
365 rol r13d,30
366 add r11d,eax
367 rol r14d,1
368 xor edx,DWORD[32+rsp]
369 mov eax,r12d
370 mov DWORD[28+rsp],r14d
371 mov ecx,r11d
372 xor edx,DWORD[40+rsp]
373 xor eax,esi
374 rol ecx,5
375 xor edx,DWORD[rsp]
376 lea edi,[1859775393+rdi*1+r14]
377 xor eax,r13d
378 add edi,ecx
379 rol r12d,30
380 add edi,eax
381 rol edx,1
382 xor ebp,DWORD[36+rsp]
383 mov eax,r11d
384 mov DWORD[32+rsp],edx
385 mov ecx,edi
386 xor ebp,DWORD[44+rsp]
387 xor eax,r13d
388 rol ecx,5
389 xor ebp,DWORD[4+rsp]
390 lea esi,[1859775393+rsi*1+rdx]
391 xor eax,r12d
392 add esi,ecx
393 rol r11d,30
394 add esi,eax
395 rol ebp,1
396 xor r14d,DWORD[40+rsp]
397 mov eax,edi
398 mov DWORD[36+rsp],ebp
399 mov ecx,esi
400 xor r14d,DWORD[48+rsp]
401 xor eax,r12d
402 rol ecx,5
403 xor r14d,DWORD[8+rsp]
404 lea r13d,[1859775393+r13*1+rbp]
405 xor eax,r11d
406 add r13d,ecx
407 rol edi,30
408 add r13d,eax
409 rol r14d,1
410 xor edx,DWORD[44+rsp]
411 mov eax,esi
412 mov DWORD[40+rsp],r14d
413 mov ecx,r13d
414 xor edx,DWORD[52+rsp]
415 xor eax,r11d
416 rol ecx,5
417 xor edx,DWORD[12+rsp]
418 lea r12d,[1859775393+r12*1+r14]
419 xor eax,edi
420 add r12d,ecx
421 rol esi,30
422 add r12d,eax
423 rol edx,1
424 xor ebp,DWORD[48+rsp]
425 mov eax,r13d
426 mov DWORD[44+rsp],edx
427 mov ecx,r12d
428 xor ebp,DWORD[56+rsp]
429 xor eax,edi
430 rol ecx,5
431 xor ebp,DWORD[16+rsp]
432 lea r11d,[1859775393+r11*1+rdx]
433 xor eax,esi
434 add r11d,ecx
435 rol r13d,30
436 add r11d,eax
437 rol ebp,1
438 xor r14d,DWORD[52+rsp]
439 mov eax,r12d
440 mov DWORD[48+rsp],ebp
441 mov ecx,r11d
442 xor r14d,DWORD[60+rsp]
443 xor eax,esi
444 rol ecx,5
445 xor r14d,DWORD[20+rsp]
446 lea edi,[1859775393+rdi*1+rbp]
447 xor eax,r13d
448 add edi,ecx
449 rol r12d,30
450 add edi,eax
451 rol r14d,1
452 xor edx,DWORD[56+rsp]
453 mov eax,r11d
454 mov DWORD[52+rsp],r14d
455 mov ecx,edi
456 xor edx,DWORD[rsp]
457 xor eax,r13d
458 rol ecx,5
459 xor edx,DWORD[24+rsp]
460 lea esi,[1859775393+rsi*1+r14]
461 xor eax,r12d
462 add esi,ecx
463 rol r11d,30
464 add esi,eax
465 rol edx,1
466 xor ebp,DWORD[60+rsp]
467 mov eax,edi
468 mov DWORD[56+rsp],edx
469 mov ecx,esi
470 xor ebp,DWORD[4+rsp]
471 xor eax,r12d
472 rol ecx,5
473 xor ebp,DWORD[28+rsp]
474 lea r13d,[1859775393+r13*1+rdx]
475 xor eax,r11d
476 add r13d,ecx
477 rol edi,30
478 add r13d,eax
479 rol ebp,1
480 xor r14d,DWORD[rsp]
481 mov eax,esi
482 mov DWORD[60+rsp],ebp
483 mov ecx,r13d
484 xor r14d,DWORD[8+rsp]
485 xor eax,r11d
486 rol ecx,5
487 xor r14d,DWORD[32+rsp]
488 lea r12d,[1859775393+r12*1+rbp]
489 xor eax,edi
490 add r12d,ecx
491 rol esi,30
492 add r12d,eax
493 rol r14d,1
494 xor edx,DWORD[4+rsp]
495 mov eax,r13d
496 mov DWORD[rsp],r14d
497 mov ecx,r12d
498 xor edx,DWORD[12+rsp]
499 xor eax,edi
500 rol ecx,5
501 xor edx,DWORD[36+rsp]
502 lea r11d,[1859775393+r11*1+r14]
503 xor eax,esi
504 add r11d,ecx
505 rol r13d,30
506 add r11d,eax
507 rol edx,1
508 xor ebp,DWORD[8+rsp]
509 mov eax,r12d
510 mov DWORD[4+rsp],edx
511 mov ecx,r11d
512 xor ebp,DWORD[16+rsp]
513 xor eax,esi
514 rol ecx,5
515 xor ebp,DWORD[40+rsp]
516 lea edi,[1859775393+rdi*1+rdx]
517 xor eax,r13d
518 add edi,ecx
519 rol r12d,30
520 add edi,eax
521 rol ebp,1
522 xor r14d,DWORD[12+rsp]
523 mov eax,r11d
524 mov DWORD[8+rsp],ebp
525 mov ecx,edi
526 xor r14d,DWORD[20+rsp]
527 xor eax,r13d
528 rol ecx,5
529 xor r14d,DWORD[44+rsp]
530 lea esi,[1859775393+rsi*1+rbp]
531 xor eax,r12d
532 add esi,ecx
533 rol r11d,30
534 add esi,eax
535 rol r14d,1
536 xor edx,DWORD[16+rsp]
537 mov eax,edi
538 mov DWORD[12+rsp],r14d
539 mov ecx,esi
540 xor edx,DWORD[24+rsp]
541 xor eax,r12d
542 rol ecx,5
543 xor edx,DWORD[48+rsp]
544 lea r13d,[1859775393+r13*1+r14]
545 xor eax,r11d
546 add r13d,ecx
547 rol edi,30
548 add r13d,eax
549 rol edx,1
550 xor ebp,DWORD[20+rsp]
551 mov eax,esi
552 mov DWORD[16+rsp],edx
553 mov ecx,r13d
554 xor ebp,DWORD[28+rsp]
555 xor eax,r11d
556 rol ecx,5
557 xor ebp,DWORD[52+rsp]
558 lea r12d,[1859775393+r12*1+rdx]
559 xor eax,edi
560 add r12d,ecx
561 rol esi,30
562 add r12d,eax
563 rol ebp,1
564 xor r14d,DWORD[24+rsp]
565 mov eax,r13d
566 mov DWORD[20+rsp],ebp
567 mov ecx,r12d
568 xor r14d,DWORD[32+rsp]
569 xor eax,edi
570 rol ecx,5
571 xor r14d,DWORD[56+rsp]
572 lea r11d,[1859775393+r11*1+rbp]
573 xor eax,esi
574 add r11d,ecx
575 rol r13d,30
576 add r11d,eax
577 rol r14d,1
578 xor edx,DWORD[28+rsp]
579 mov eax,r12d
580 mov DWORD[24+rsp],r14d
581 mov ecx,r11d
582 xor edx,DWORD[36+rsp]
583 xor eax,esi
584 rol ecx,5
585 xor edx,DWORD[60+rsp]
586 lea edi,[1859775393+rdi*1+r14]
587 xor eax,r13d
588 add edi,ecx
589 rol r12d,30
590 add edi,eax
591 rol edx,1
592 xor ebp,DWORD[32+rsp]
593 mov eax,r11d
594 mov DWORD[28+rsp],edx
595 mov ecx,edi
596 xor ebp,DWORD[40+rsp]
597 xor eax,r13d
598 rol ecx,5
599 xor ebp,DWORD[rsp]
600 lea esi,[1859775393+rsi*1+rdx]
601 xor eax,r12d
602 add esi,ecx
603 rol r11d,30
604 add esi,eax
605 rol ebp,1
606 xor r14d,DWORD[36+rsp]
607 mov eax,r12d
608 mov DWORD[32+rsp],ebp
609 mov ebx,r12d
610 xor r14d,DWORD[44+rsp]
611 and eax,r11d
612 mov ecx,esi
613 xor r14d,DWORD[4+rsp]
614 lea r13d,[((-1894007588))+r13*1+rbp]
615 xor ebx,r11d
616 rol ecx,5
617 add r13d,eax
618 rol r14d,1
619 and ebx,edi
620 add r13d,ecx
621 rol edi,30
622 add r13d,ebx
623 xor edx,DWORD[40+rsp]
624 mov eax,r11d
625 mov DWORD[36+rsp],r14d
626 mov ebx,r11d
627 xor edx,DWORD[48+rsp]
628 and eax,edi
629 mov ecx,r13d
630 xor edx,DWORD[8+rsp]
631 lea r12d,[((-1894007588))+r12*1+r14]
632 xor ebx,edi
633 rol ecx,5
634 add r12d,eax
635 rol edx,1
636 and ebx,esi
637 add r12d,ecx
638 rol esi,30
639 add r12d,ebx
640 xor ebp,DWORD[44+rsp]
641 mov eax,edi
642 mov DWORD[40+rsp],edx
643 mov ebx,edi
644 xor ebp,DWORD[52+rsp]
645 and eax,esi
646 mov ecx,r12d
647 xor ebp,DWORD[12+rsp]
648 lea r11d,[((-1894007588))+r11*1+rdx]
649 xor ebx,esi
650 rol ecx,5
651 add r11d,eax
652 rol ebp,1
653 and ebx,r13d
654 add r11d,ecx
655 rol r13d,30
656 add r11d,ebx
657 xor r14d,DWORD[48+rsp]
658 mov eax,esi
659 mov DWORD[44+rsp],ebp
660 mov ebx,esi
661 xor r14d,DWORD[56+rsp]
662 and eax,r13d
663 mov ecx,r11d
664 xor r14d,DWORD[16+rsp]
665 lea edi,[((-1894007588))+rdi*1+rbp]
666 xor ebx,r13d
667 rol ecx,5
668 add edi,eax
669 rol r14d,1
670 and ebx,r12d
671 add edi,ecx
672 rol r12d,30
673 add edi,ebx
674 xor edx,DWORD[52+rsp]
675 mov eax,r13d
676 mov DWORD[48+rsp],r14d
677 mov ebx,r13d
678 xor edx,DWORD[60+rsp]
679 and eax,r12d
680 mov ecx,edi
681 xor edx,DWORD[20+rsp]
682 lea esi,[((-1894007588))+rsi*1+r14]
683 xor ebx,r12d
684 rol ecx,5
685 add esi,eax
686 rol edx,1
687 and ebx,r11d
688 add esi,ecx
689 rol r11d,30
690 add esi,ebx
691 xor ebp,DWORD[56+rsp]
692 mov eax,r12d
693 mov DWORD[52+rsp],edx
694 mov ebx,r12d
695 xor ebp,DWORD[rsp]
696 and eax,r11d
697 mov ecx,esi
698 xor ebp,DWORD[24+rsp]
699 lea r13d,[((-1894007588))+r13*1+rdx]
700 xor ebx,r11d
701 rol ecx,5
702 add r13d,eax
703 rol ebp,1
704 and ebx,edi
705 add r13d,ecx
706 rol edi,30
707 add r13d,ebx
708 xor r14d,DWORD[60+rsp]
709 mov eax,r11d
710 mov DWORD[56+rsp],ebp
711 mov ebx,r11d
712 xor r14d,DWORD[4+rsp]
713 and eax,edi
714 mov ecx,r13d
715 xor r14d,DWORD[28+rsp]
716 lea r12d,[((-1894007588))+r12*1+rbp]
717 xor ebx,edi
718 rol ecx,5
719 add r12d,eax
720 rol r14d,1
721 and ebx,esi
722 add r12d,ecx
723 rol esi,30
724 add r12d,ebx
725 xor edx,DWORD[rsp]
726 mov eax,edi
727 mov DWORD[60+rsp],r14d
728 mov ebx,edi
729 xor edx,DWORD[8+rsp]
730 and eax,esi
731 mov ecx,r12d
732 xor edx,DWORD[32+rsp]
733 lea r11d,[((-1894007588))+r11*1+r14]
734 xor ebx,esi
735 rol ecx,5
736 add r11d,eax
737 rol edx,1
738 and ebx,r13d
739 add r11d,ecx
740 rol r13d,30
741 add r11d,ebx
742 xor ebp,DWORD[4+rsp]
743 mov eax,esi
744 mov DWORD[rsp],edx
745 mov ebx,esi
746 xor ebp,DWORD[12+rsp]
747 and eax,r13d
748 mov ecx,r11d
749 xor ebp,DWORD[36+rsp]
750 lea edi,[((-1894007588))+rdi*1+rdx]
751 xor ebx,r13d
752 rol ecx,5
753 add edi,eax
754 rol ebp,1
755 and ebx,r12d
756 add edi,ecx
757 rol r12d,30
758 add edi,ebx
759 xor r14d,DWORD[8+rsp]
760 mov eax,r13d
761 mov DWORD[4+rsp],ebp
762 mov ebx,r13d
763 xor r14d,DWORD[16+rsp]
764 and eax,r12d
765 mov ecx,edi
766 xor r14d,DWORD[40+rsp]
767 lea esi,[((-1894007588))+rsi*1+rbp]
768 xor ebx,r12d
769 rol ecx,5
770 add esi,eax
771 rol r14d,1
772 and ebx,r11d
773 add esi,ecx
774 rol r11d,30
775 add esi,ebx
776 xor edx,DWORD[12+rsp]
777 mov eax,r12d
778 mov DWORD[8+rsp],r14d
779 mov ebx,r12d
780 xor edx,DWORD[20+rsp]
781 and eax,r11d
782 mov ecx,esi
783 xor edx,DWORD[44+rsp]
784 lea r13d,[((-1894007588))+r13*1+r14]
785 xor ebx,r11d
786 rol ecx,5
787 add r13d,eax
788 rol edx,1
789 and ebx,edi
790 add r13d,ecx
791 rol edi,30
792 add r13d,ebx
793 xor ebp,DWORD[16+rsp]
794 mov eax,r11d
795 mov DWORD[12+rsp],edx
796 mov ebx,r11d
797 xor ebp,DWORD[24+rsp]
798 and eax,edi
799 mov ecx,r13d
800 xor ebp,DWORD[48+rsp]
801 lea r12d,[((-1894007588))+r12*1+rdx]
802 xor ebx,edi
803 rol ecx,5
804 add r12d,eax
805 rol ebp,1
806 and ebx,esi
807 add r12d,ecx
808 rol esi,30
809 add r12d,ebx
810 xor r14d,DWORD[20+rsp]
811 mov eax,edi
812 mov DWORD[16+rsp],ebp
813 mov ebx,edi
814 xor r14d,DWORD[28+rsp]
815 and eax,esi
816 mov ecx,r12d
817 xor r14d,DWORD[52+rsp]
818 lea r11d,[((-1894007588))+r11*1+rbp]
819 xor ebx,esi
820 rol ecx,5
821 add r11d,eax
822 rol r14d,1
823 and ebx,r13d
824 add r11d,ecx
825 rol r13d,30
826 add r11d,ebx
827 xor edx,DWORD[24+rsp]
828 mov eax,esi
829 mov DWORD[20+rsp],r14d
830 mov ebx,esi
831 xor edx,DWORD[32+rsp]
832 and eax,r13d
833 mov ecx,r11d
834 xor edx,DWORD[56+rsp]
835 lea edi,[((-1894007588))+rdi*1+r14]
836 xor ebx,r13d
837 rol ecx,5
838 add edi,eax
839 rol edx,1
840 and ebx,r12d
841 add edi,ecx
842 rol r12d,30
843 add edi,ebx
844 xor ebp,DWORD[28+rsp]
845 mov eax,r13d
846 mov DWORD[24+rsp],edx
847 mov ebx,r13d
848 xor ebp,DWORD[36+rsp]
849 and eax,r12d
850 mov ecx,edi
851 xor ebp,DWORD[60+rsp]
852 lea esi,[((-1894007588))+rsi*1+rdx]
853 xor ebx,r12d
854 rol ecx,5
855 add esi,eax
856 rol ebp,1
857 and ebx,r11d
858 add esi,ecx
859 rol r11d,30
860 add esi,ebx
861 xor r14d,DWORD[32+rsp]
862 mov eax,r12d
863 mov DWORD[28+rsp],ebp
864 mov ebx,r12d
865 xor r14d,DWORD[40+rsp]
866 and eax,r11d
867 mov ecx,esi
868 xor r14d,DWORD[rsp]
869 lea r13d,[((-1894007588))+r13*1+rbp]
870 xor ebx,r11d
871 rol ecx,5
872 add r13d,eax
873 rol r14d,1
874 and ebx,edi
875 add r13d,ecx
876 rol edi,30
877 add r13d,ebx
878 xor edx,DWORD[36+rsp]
879 mov eax,r11d
880 mov DWORD[32+rsp],r14d
881 mov ebx,r11d
882 xor edx,DWORD[44+rsp]
883 and eax,edi
884 mov ecx,r13d
885 xor edx,DWORD[4+rsp]
886 lea r12d,[((-1894007588))+r12*1+r14]
887 xor ebx,edi
888 rol ecx,5
889 add r12d,eax
890 rol edx,1
891 and ebx,esi
892 add r12d,ecx
893 rol esi,30
894 add r12d,ebx
895 xor ebp,DWORD[40+rsp]
896 mov eax,edi
897 mov DWORD[36+rsp],edx
898 mov ebx,edi
899 xor ebp,DWORD[48+rsp]
900 and eax,esi
901 mov ecx,r12d
902 xor ebp,DWORD[8+rsp]
903 lea r11d,[((-1894007588))+r11*1+rdx]
904 xor ebx,esi
905 rol ecx,5
906 add r11d,eax
907 rol ebp,1
908 and ebx,r13d
909 add r11d,ecx
910 rol r13d,30
911 add r11d,ebx
912 xor r14d,DWORD[44+rsp]
913 mov eax,esi
914 mov DWORD[40+rsp],ebp
915 mov ebx,esi
916 xor r14d,DWORD[52+rsp]
917 and eax,r13d
918 mov ecx,r11d
919 xor r14d,DWORD[12+rsp]
920 lea edi,[((-1894007588))+rdi*1+rbp]
921 xor ebx,r13d
922 rol ecx,5
923 add edi,eax
924 rol r14d,1
925 and ebx,r12d
926 add edi,ecx
927 rol r12d,30
928 add edi,ebx
929 xor edx,DWORD[48+rsp]
930 mov eax,r13d
931 mov DWORD[44+rsp],r14d
932 mov ebx,r13d
933 xor edx,DWORD[56+rsp]
934 and eax,r12d
935 mov ecx,edi
936 xor edx,DWORD[16+rsp]
937 lea esi,[((-1894007588))+rsi*1+r14]
938 xor ebx,r12d
939 rol ecx,5
940 add esi,eax
941 rol edx,1
942 and ebx,r11d
943 add esi,ecx
944 rol r11d,30
945 add esi,ebx
946 xor ebp,DWORD[52+rsp]
947 mov eax,edi
948 mov DWORD[48+rsp],edx
949 mov ecx,esi
950 xor ebp,DWORD[60+rsp]
951 xor eax,r12d
952 rol ecx,5
953 xor ebp,DWORD[20+rsp]
954 lea r13d,[((-899497514))+r13*1+rdx]
955 xor eax,r11d
956 add r13d,ecx
957 rol edi,30
958 add r13d,eax
959 rol ebp,1
960 xor r14d,DWORD[56+rsp]
961 mov eax,esi
962 mov DWORD[52+rsp],ebp
963 mov ecx,r13d
964 xor r14d,DWORD[rsp]
965 xor eax,r11d
966 rol ecx,5
967 xor r14d,DWORD[24+rsp]
968 lea r12d,[((-899497514))+r12*1+rbp]
969 xor eax,edi
970 add r12d,ecx
971 rol esi,30
972 add r12d,eax
973 rol r14d,1
974 xor edx,DWORD[60+rsp]
975 mov eax,r13d
976 mov DWORD[56+rsp],r14d
977 mov ecx,r12d
978 xor edx,DWORD[4+rsp]
979 xor eax,edi
980 rol ecx,5
981 xor edx,DWORD[28+rsp]
982 lea r11d,[((-899497514))+r11*1+r14]
983 xor eax,esi
984 add r11d,ecx
985 rol r13d,30
986 add r11d,eax
987 rol edx,1
988 xor ebp,DWORD[rsp]
989 mov eax,r12d
990 mov DWORD[60+rsp],edx
991 mov ecx,r11d
992 xor ebp,DWORD[8+rsp]
993 xor eax,esi
994 rol ecx,5
995 xor ebp,DWORD[32+rsp]
996 lea edi,[((-899497514))+rdi*1+rdx]
997 xor eax,r13d
998 add edi,ecx
999 rol r12d,30
1000 add edi,eax
1001 rol ebp,1
1002 xor r14d,DWORD[4+rsp]
1003 mov eax,r11d
1004 mov DWORD[rsp],ebp
1005 mov ecx,edi
1006 xor r14d,DWORD[12+rsp]
1007 xor eax,r13d
1008 rol ecx,5
1009 xor r14d,DWORD[36+rsp]
1010 lea esi,[((-899497514))+rsi*1+rbp]
1011 xor eax,r12d
1012 add esi,ecx
1013 rol r11d,30
1014 add esi,eax
1015 rol r14d,1
1016 xor edx,DWORD[8+rsp]
1017 mov eax,edi
1018 mov DWORD[4+rsp],r14d
1019 mov ecx,esi
1020 xor edx,DWORD[16+rsp]
1021 xor eax,r12d
1022 rol ecx,5
1023 xor edx,DWORD[40+rsp]
1024 lea r13d,[((-899497514))+r13*1+r14]
1025 xor eax,r11d
1026 add r13d,ecx
1027 rol edi,30
1028 add r13d,eax
1029 rol edx,1
1030 xor ebp,DWORD[12+rsp]
1031 mov eax,esi
1032 mov DWORD[8+rsp],edx
1033 mov ecx,r13d
1034 xor ebp,DWORD[20+rsp]
1035 xor eax,r11d
1036 rol ecx,5
1037 xor ebp,DWORD[44+rsp]
1038 lea r12d,[((-899497514))+r12*1+rdx]
1039 xor eax,edi
1040 add r12d,ecx
1041 rol esi,30
1042 add r12d,eax
1043 rol ebp,1
1044 xor r14d,DWORD[16+rsp]
1045 mov eax,r13d
1046 mov DWORD[12+rsp],ebp
1047 mov ecx,r12d
1048 xor r14d,DWORD[24+rsp]
1049 xor eax,edi
1050 rol ecx,5
1051 xor r14d,DWORD[48+rsp]
1052 lea r11d,[((-899497514))+r11*1+rbp]
1053 xor eax,esi
1054 add r11d,ecx
1055 rol r13d,30
1056 add r11d,eax
1057 rol r14d,1
1058 xor edx,DWORD[20+rsp]
1059 mov eax,r12d
1060 mov DWORD[16+rsp],r14d
1061 mov ecx,r11d
1062 xor edx,DWORD[28+rsp]
1063 xor eax,esi
1064 rol ecx,5
1065 xor edx,DWORD[52+rsp]
1066 lea edi,[((-899497514))+rdi*1+r14]
1067 xor eax,r13d
1068 add edi,ecx
1069 rol r12d,30
1070 add edi,eax
1071 rol edx,1
1072 xor ebp,DWORD[24+rsp]
1073 mov eax,r11d
1074 mov DWORD[20+rsp],edx
1075 mov ecx,edi
1076 xor ebp,DWORD[32+rsp]
1077 xor eax,r13d
1078 rol ecx,5
1079 xor ebp,DWORD[56+rsp]
1080 lea esi,[((-899497514))+rsi*1+rdx]
1081 xor eax,r12d
1082 add esi,ecx
1083 rol r11d,30
1084 add esi,eax
1085 rol ebp,1
1086 xor r14d,DWORD[28+rsp]
1087 mov eax,edi
1088 mov DWORD[24+rsp],ebp
1089 mov ecx,esi
1090 xor r14d,DWORD[36+rsp]
1091 xor eax,r12d
1092 rol ecx,5
1093 xor r14d,DWORD[60+rsp]
1094 lea r13d,[((-899497514))+r13*1+rbp]
1095 xor eax,r11d
1096 add r13d,ecx
1097 rol edi,30
1098 add r13d,eax
1099 rol r14d,1
1100 xor edx,DWORD[32+rsp]
1101 mov eax,esi
1102 mov DWORD[28+rsp],r14d
1103 mov ecx,r13d
1104 xor edx,DWORD[40+rsp]
1105 xor eax,r11d
1106 rol ecx,5
1107 xor edx,DWORD[rsp]
1108 lea r12d,[((-899497514))+r12*1+r14]
1109 xor eax,edi
1110 add r12d,ecx
1111 rol esi,30
1112 add r12d,eax
1113 rol edx,1
1114 xor ebp,DWORD[36+rsp]
1115 mov eax,r13d
1117 mov ecx,r12d
1118 xor ebp,DWORD[44+rsp]
1119 xor eax,edi
1120 rol ecx,5
1121 xor ebp,DWORD[4+rsp]
1122 lea r11d,[((-899497514))+r11*1+rdx]
1123 xor eax,esi
1124 add r11d,ecx
1125 rol r13d,30
1126 add r11d,eax
1127 rol ebp,1
1128 xor r14d,DWORD[40+rsp]
1129 mov eax,r12d
1131 mov ecx,r11d
1132 xor r14d,DWORD[48+rsp]
1133 xor eax,esi
1134 rol ecx,5
1135 xor r14d,DWORD[8+rsp]
1136 lea edi,[((-899497514))+rdi*1+rbp]
1137 xor eax,r13d
1138 add edi,ecx
1139 rol r12d,30
1140 add edi,eax
1141 rol r14d,1
1142 xor edx,DWORD[44+rsp]
1143 mov eax,r11d
1145 mov ecx,edi
1146 xor edx,DWORD[52+rsp]
1147 xor eax,r13d
1148 rol ecx,5
1149 xor edx,DWORD[12+rsp]
1150 lea esi,[((-899497514))+rsi*1+r14]
1151 xor eax,r12d
1152 add esi,ecx
1153 rol r11d,30
1154 add esi,eax
1155 rol edx,1
1156 xor ebp,DWORD[48+rsp]
1157 mov eax,edi
1159 mov ecx,esi
1160 xor ebp,DWORD[56+rsp]
1161 xor eax,r12d
1162 rol ecx,5
1163 xor ebp,DWORD[16+rsp]
1164 lea r13d,[((-899497514))+r13*1+rdx]
1165 xor eax,r11d
1166 add r13d,ecx
1167 rol edi,30
1168 add r13d,eax
1169 rol ebp,1
1170 xor r14d,DWORD[52+rsp]
1171 mov eax,esi
1173 mov ecx,r13d
1174 xor r14d,DWORD[60+rsp]
1175 xor eax,r11d
1176 rol ecx,5
1177 xor r14d,DWORD[20+rsp]
1178 lea r12d,[((-899497514))+r12*1+rbp]
1179 xor eax,edi
1180 add r12d,ecx
1181 rol esi,30
1182 add r12d,eax
1183 rol r14d,1
1184 xor edx,DWORD[56+rsp]
1185 mov eax,r13d
1187 mov ecx,r12d
1188 xor edx,DWORD[rsp]
1189 xor eax,edi
1190 rol ecx,5
1191 xor edx,DWORD[24+rsp]
1192 lea r11d,[((-899497514))+r11*1+r14]
1193 xor eax,esi
1194 add r11d,ecx
1195 rol r13d,30
1196 add r11d,eax
1197 rol edx,1
1198 xor ebp,DWORD[60+rsp]
1199 mov eax,r12d
1201 mov ecx,r11d
1202 xor ebp,DWORD[4+rsp]
1203 xor eax,esi
1204 rol ecx,5
1205 xor ebp,DWORD[28+rsp]
1206 lea edi,[((-899497514))+rdi*1+rdx]
1207 xor eax,r13d
1208 add edi,ecx
1209 rol r12d,30
1210 add edi,eax
1211 rol ebp,1
1212 mov eax,r11d
1213 mov ecx,edi
1214 xor eax,r13d
1215 lea esi,[((-899497514))+rsi*1+rbp]
1216 rol ecx,5
1217 xor eax,r12d
1218 add esi,ecx
1219 rol r11d,30
1220 add esi,eax
1221 add esi,DWORD[r8]
1222 add edi,DWORD[4+r8]
1223 add r11d,DWORD[8+r8]
1224 add r12d,DWORD[12+r8]
1225 add r13d,DWORD[16+r8]
1226 mov DWORD[r8],esi
1227 mov DWORD[4+r8],edi
1228 mov DWORD[8+r8],r11d
1229 mov DWORD[12+r8],r12d
1230 mov DWORD[16+r8],r13d
1232 sub r10,1
1233 lea r9,[64+r9]
1234 jnz NEAR $L$loop
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]
1242 lea rsp,[rsi]
1243 $L$epilogue:
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:
1249 ALIGN 16
1250 sha1_block_data_order_ssse3:
1251 mov QWORD[8+rsp],rdi ;WIN64 prologue
1252 mov QWORD[16+rsp],rsi
1253 mov rax,rsp
1254 $L$SEH_begin_sha1_block_data_order_ssse3:
1255 mov rdi,rcx
1256 mov rsi,rdx
1257 mov rdx,r8
1260 _ssse3_shortcut:
1261 mov rax,rsp
1262 push rbx
1263 push rbp
1264 push r12
1265 push r13
1266 push r14
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
1274 $L$prologue_ssse3:
1275 mov r14,rax
1276 and rsp,-64
1277 mov r8,rdi
1278 mov r9,rsi
1279 mov r10,rdx
1281 shl r10,6
1282 add r10,r9
1283 lea r11,[((K_XX_XX+64))]
1285 mov eax,DWORD[r8]
1286 mov ebx,DWORD[4+r8]
1287 mov ecx,DWORD[8+r8]
1288 mov edx,DWORD[12+r8]
1289 mov esi,ebx
1290 mov ebp,DWORD[16+r8]
1291 mov edi,ecx
1292 xor edi,edx
1293 and esi,edi
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]
1301 DB 102,15,56,0,198
1302 DB 102,15,56,0,206
1303 DB 102,15,56,0,214
1304 add r9,64
1305 paddd xmm0,xmm9
1306 DB 102,15,56,0,222
1307 paddd xmm1,xmm9
1308 paddd xmm2,xmm9
1309 movdqa XMMWORD[rsp],xmm0
1310 psubd xmm0,xmm9
1311 movdqa XMMWORD[16+rsp],xmm1
1312 psubd xmm1,xmm9
1313 movdqa XMMWORD[32+rsp],xmm2
1314 psubd xmm2,xmm9
1315 jmp NEAR $L$oop_ssse3
1316 ALIGN 16
1317 $L$oop_ssse3:
1318 ror ebx,2
1319 pshufd xmm4,xmm0,238
1320 xor esi,edx
1321 movdqa xmm8,xmm3
1322 paddd xmm9,xmm3
1323 mov edi,eax
1324 add ebp,DWORD[rsp]
1325 punpcklqdq xmm4,xmm1
1326 xor ebx,ecx
1327 rol eax,5
1328 add ebp,esi
1329 psrldq xmm8,4
1330 and edi,ebx
1331 xor ebx,ecx
1332 pxor xmm4,xmm0
1333 add ebp,eax
1334 ror eax,7
1335 pxor xmm8,xmm2
1336 xor edi,ecx
1337 mov esi,ebp
1338 add edx,DWORD[4+rsp]
1339 pxor xmm4,xmm8
1340 xor eax,ebx
1341 rol ebp,5
1342 movdqa XMMWORD[48+rsp],xmm9
1343 add edx,edi
1344 and esi,eax
1345 movdqa xmm10,xmm4
1346 xor eax,ebx
1347 add edx,ebp
1348 ror ebp,7
1349 movdqa xmm8,xmm4
1350 xor esi,ebx
1351 pslldq xmm10,12
1352 paddd xmm4,xmm4
1353 mov edi,edx
1354 add ecx,DWORD[8+rsp]
1355 psrld xmm8,31
1356 xor ebp,eax
1357 rol edx,5
1358 add ecx,esi
1359 movdqa xmm9,xmm10
1360 and edi,ebp
1361 xor ebp,eax
1362 psrld xmm10,30
1363 add ecx,edx
1364 ror edx,7
1365 por xmm4,xmm8
1366 xor edi,eax
1367 mov esi,ecx
1368 add ebx,DWORD[12+rsp]
1369 pslld xmm9,2
1370 pxor xmm4,xmm10
1371 xor edx,ebp
1372 movdqa xmm10,XMMWORD[((-64))+r11]
1373 rol ecx,5
1374 add ebx,edi
1375 and esi,edx
1376 pxor xmm4,xmm9
1377 xor edx,ebp
1378 add ebx,ecx
1379 ror ecx,7
1380 pshufd xmm5,xmm1,238
1381 xor esi,ebp
1382 movdqa xmm9,xmm4
1383 paddd xmm10,xmm4
1384 mov edi,ebx
1385 add eax,DWORD[16+rsp]
1386 punpcklqdq xmm5,xmm2
1387 xor ecx,edx
1388 rol ebx,5
1389 add eax,esi
1390 psrldq xmm9,4
1391 and edi,ecx
1392 xor ecx,edx
1393 pxor xmm5,xmm1
1394 add eax,ebx
1395 ror ebx,7
1396 pxor xmm9,xmm3
1397 xor edi,edx
1398 mov esi,eax
1399 add ebp,DWORD[20+rsp]
1400 pxor xmm5,xmm9
1401 xor ebx,ecx
1402 rol eax,5
1403 movdqa XMMWORD[rsp],xmm10
1404 add ebp,edi
1405 and esi,ebx
1406 movdqa xmm8,xmm5
1407 xor ebx,ecx
1408 add ebp,eax
1409 ror eax,7
1410 movdqa xmm9,xmm5
1411 xor esi,ecx
1412 pslldq xmm8,12
1413 paddd xmm5,xmm5
1414 mov edi,ebp
1415 add edx,DWORD[24+rsp]
1416 psrld xmm9,31
1417 xor eax,ebx
1418 rol ebp,5
1419 add edx,esi
1420 movdqa xmm10,xmm8
1421 and edi,eax
1422 xor eax,ebx
1423 psrld xmm8,30
1424 add edx,ebp
1425 ror ebp,7
1426 por xmm5,xmm9
1427 xor edi,ebx
1428 mov esi,edx
1429 add ecx,DWORD[28+rsp]
1430 pslld xmm10,2
1431 pxor xmm5,xmm8
1432 xor ebp,eax
1433 movdqa xmm8,XMMWORD[((-32))+r11]
1434 rol edx,5
1435 add ecx,edi
1436 and esi,ebp
1437 pxor xmm5,xmm10
1438 xor ebp,eax
1439 add ecx,edx
1440 ror edx,7
1441 pshufd xmm6,xmm2,238
1442 xor esi,eax
1443 movdqa xmm10,xmm5
1444 paddd xmm8,xmm5
1445 mov edi,ecx
1446 add ebx,DWORD[32+rsp]
1447 punpcklqdq xmm6,xmm3
1448 xor edx,ebp
1449 rol ecx,5
1450 add ebx,esi
1451 psrldq xmm10,4
1452 and edi,edx
1453 xor edx,ebp
1454 pxor xmm6,xmm2
1455 add ebx,ecx
1456 ror ecx,7
1457 pxor xmm10,xmm4
1458 xor edi,ebp
1459 mov esi,ebx
1460 add eax,DWORD[36+rsp]
1461 pxor xmm6,xmm10
1462 xor ecx,edx
1463 rol ebx,5
1464 movdqa XMMWORD[16+rsp],xmm8
1465 add eax,edi
1466 and esi,ecx
1467 movdqa xmm9,xmm6
1468 xor ecx,edx
1469 add eax,ebx
1470 ror ebx,7
1471 movdqa xmm10,xmm6
1472 xor esi,edx
1473 pslldq xmm9,12
1474 paddd xmm6,xmm6
1475 mov edi,eax
1476 add ebp,DWORD[40+rsp]
1477 psrld xmm10,31
1478 xor ebx,ecx
1479 rol eax,5
1480 add ebp,esi
1481 movdqa xmm8,xmm9
1482 and edi,ebx
1483 xor ebx,ecx
1484 psrld xmm9,30
1485 add ebp,eax
1486 ror eax,7
1487 por xmm6,xmm10
1488 xor edi,ecx
1489 mov esi,ebp
1490 add edx,DWORD[44+rsp]
1491 pslld xmm8,2
1492 pxor xmm6,xmm9
1493 xor eax,ebx
1494 movdqa xmm9,XMMWORD[((-32))+r11]
1495 rol ebp,5
1496 add edx,edi
1497 and esi,eax
1498 pxor xmm6,xmm8
1499 xor eax,ebx
1500 add edx,ebp
1501 ror ebp,7
1502 pshufd xmm7,xmm3,238
1503 xor esi,ebx
1504 movdqa xmm8,xmm6
1505 paddd xmm9,xmm6
1506 mov edi,edx
1507 add ecx,DWORD[48+rsp]
1508 punpcklqdq xmm7,xmm4
1509 xor ebp,eax
1510 rol edx,5
1511 add ecx,esi
1512 psrldq xmm8,4
1513 and edi,ebp
1514 xor ebp,eax
1515 pxor xmm7,xmm3
1516 add ecx,edx
1517 ror edx,7
1518 pxor xmm8,xmm5
1519 xor edi,eax
1520 mov esi,ecx
1521 add ebx,DWORD[52+rsp]
1522 pxor xmm7,xmm8
1523 xor edx,ebp
1524 rol ecx,5
1525 movdqa XMMWORD[32+rsp],xmm9
1526 add ebx,edi
1527 and esi,edx
1528 movdqa xmm10,xmm7
1529 xor edx,ebp
1530 add ebx,ecx
1531 ror ecx,7
1532 movdqa xmm8,xmm7
1533 xor esi,ebp
1534 pslldq xmm10,12
1535 paddd xmm7,xmm7
1536 mov edi,ebx
1537 add eax,DWORD[56+rsp]
1538 psrld xmm8,31
1539 xor ecx,edx
1540 rol ebx,5
1541 add eax,esi
1542 movdqa xmm9,xmm10
1543 and edi,ecx
1544 xor ecx,edx
1545 psrld xmm10,30
1546 add eax,ebx
1547 ror ebx,7
1548 por xmm7,xmm8
1549 xor edi,edx
1550 mov esi,eax
1551 add ebp,DWORD[60+rsp]
1552 pslld xmm9,2
1553 pxor xmm7,xmm10
1554 xor ebx,ecx
1555 movdqa xmm10,XMMWORD[((-32))+r11]
1556 rol eax,5
1557 add ebp,edi
1558 and esi,ebx
1559 pxor xmm7,xmm9
1560 pshufd xmm9,xmm6,238
1561 xor ebx,ecx
1562 add ebp,eax
1563 ror eax,7
1564 pxor xmm0,xmm4
1565 xor esi,ecx
1566 mov edi,ebp
1567 add edx,DWORD[rsp]
1568 punpcklqdq xmm9,xmm7
1569 xor eax,ebx
1570 rol ebp,5
1571 pxor xmm0,xmm1
1572 add edx,esi
1573 and edi,eax
1574 movdqa xmm8,xmm10
1575 xor eax,ebx
1576 paddd xmm10,xmm7
1577 add edx,ebp
1578 pxor xmm0,xmm9
1579 ror ebp,7
1580 xor edi,ebx
1581 mov esi,edx
1582 add ecx,DWORD[4+rsp]
1583 movdqa xmm9,xmm0
1584 xor ebp,eax
1585 rol edx,5
1586 movdqa XMMWORD[48+rsp],xmm10
1587 add ecx,edi
1588 and esi,ebp
1589 xor ebp,eax
1590 pslld xmm0,2
1591 add ecx,edx
1592 ror edx,7
1593 psrld xmm9,30
1594 xor esi,eax
1595 mov edi,ecx
1596 add ebx,DWORD[8+rsp]
1597 por xmm0,xmm9
1598 xor edx,ebp
1599 rol ecx,5
1600 pshufd xmm10,xmm7,238
1601 add ebx,esi
1602 and edi,edx
1603 xor edx,ebp
1604 add ebx,ecx
1605 add eax,DWORD[12+rsp]
1606 xor edi,ebp
1607 mov esi,ebx
1608 rol ebx,5
1609 add eax,edi
1610 xor esi,edx
1611 ror ecx,7
1612 add eax,ebx
1613 pxor xmm1,xmm5
1614 add ebp,DWORD[16+rsp]
1615 xor esi,ecx
1616 punpcklqdq xmm10,xmm0
1617 mov edi,eax
1618 rol eax,5
1619 pxor xmm1,xmm2
1620 add ebp,esi
1621 xor edi,ecx
1622 movdqa xmm9,xmm8
1623 ror ebx,7
1624 paddd xmm8,xmm0
1625 add ebp,eax
1626 pxor xmm1,xmm10
1627 add edx,DWORD[20+rsp]
1628 xor edi,ebx
1629 mov esi,ebp
1630 rol ebp,5
1631 movdqa xmm10,xmm1
1632 add edx,edi
1633 xor esi,ebx
1634 movdqa XMMWORD[rsp],xmm8
1635 ror eax,7
1636 add edx,ebp
1637 add ecx,DWORD[24+rsp]
1638 pslld xmm1,2
1639 xor esi,eax
1640 mov edi,edx
1641 psrld xmm10,30
1642 rol edx,5
1643 add ecx,esi
1644 xor edi,eax
1645 ror ebp,7
1646 por xmm1,xmm10
1647 add ecx,edx
1648 add ebx,DWORD[28+rsp]
1649 pshufd xmm8,xmm0,238
1650 xor edi,ebp
1651 mov esi,ecx
1652 rol ecx,5
1653 add ebx,edi
1654 xor esi,ebp
1655 ror edx,7
1656 add ebx,ecx
1657 pxor xmm2,xmm6
1658 add eax,DWORD[32+rsp]
1659 xor esi,edx
1660 punpcklqdq xmm8,xmm1
1661 mov edi,ebx
1662 rol ebx,5
1663 pxor xmm2,xmm3
1664 add eax,esi
1665 xor edi,edx
1666 movdqa xmm10,XMMWORD[r11]
1667 ror ecx,7
1668 paddd xmm9,xmm1
1669 add eax,ebx
1670 pxor xmm2,xmm8
1671 add ebp,DWORD[36+rsp]
1672 xor edi,ecx
1673 mov esi,eax
1674 rol eax,5
1675 movdqa xmm8,xmm2
1676 add ebp,edi
1677 xor esi,ecx
1678 movdqa XMMWORD[16+rsp],xmm9
1679 ror ebx,7
1680 add ebp,eax
1681 add edx,DWORD[40+rsp]
1682 pslld xmm2,2
1683 xor esi,ebx
1684 mov edi,ebp
1685 psrld xmm8,30
1686 rol ebp,5
1687 add edx,esi
1688 xor edi,ebx
1689 ror eax,7
1690 por xmm2,xmm8
1691 add edx,ebp
1692 add ecx,DWORD[44+rsp]
1693 pshufd xmm9,xmm1,238
1694 xor edi,eax
1695 mov esi,edx
1696 rol edx,5
1697 add ecx,edi
1698 xor esi,eax
1699 ror ebp,7
1700 add ecx,edx
1701 pxor xmm3,xmm7
1702 add ebx,DWORD[48+rsp]
1703 xor esi,ebp
1704 punpcklqdq xmm9,xmm2
1705 mov edi,ecx
1706 rol ecx,5
1707 pxor xmm3,xmm4
1708 add ebx,esi
1709 xor edi,ebp
1710 movdqa xmm8,xmm10
1711 ror edx,7
1712 paddd xmm10,xmm2
1713 add ebx,ecx
1714 pxor xmm3,xmm9
1715 add eax,DWORD[52+rsp]
1716 xor edi,edx
1717 mov esi,ebx
1718 rol ebx,5
1719 movdqa xmm9,xmm3
1720 add eax,edi
1721 xor esi,edx
1722 movdqa XMMWORD[32+rsp],xmm10
1723 ror ecx,7
1724 add eax,ebx
1725 add ebp,DWORD[56+rsp]
1726 pslld xmm3,2
1727 xor esi,ecx
1728 mov edi,eax
1729 psrld xmm9,30
1730 rol eax,5
1731 add ebp,esi
1732 xor edi,ecx
1733 ror ebx,7
1734 por xmm3,xmm9
1735 add ebp,eax
1736 add edx,DWORD[60+rsp]
1737 pshufd xmm10,xmm2,238
1738 xor edi,ebx
1739 mov esi,ebp
1740 rol ebp,5
1741 add edx,edi
1742 xor esi,ebx
1743 ror eax,7
1744 add edx,ebp
1745 pxor xmm4,xmm0
1746 add ecx,DWORD[rsp]
1747 xor esi,eax
1748 punpcklqdq xmm10,xmm3
1749 mov edi,edx
1750 rol edx,5
1751 pxor xmm4,xmm5
1752 add ecx,esi
1753 xor edi,eax
1754 movdqa xmm9,xmm8
1755 ror ebp,7
1756 paddd xmm8,xmm3
1757 add ecx,edx
1758 pxor xmm4,xmm10
1759 add ebx,DWORD[4+rsp]
1760 xor edi,ebp
1761 mov esi,ecx
1762 rol ecx,5
1763 movdqa xmm10,xmm4
1764 add ebx,edi
1765 xor esi,ebp
1766 movdqa XMMWORD[48+rsp],xmm8
1767 ror edx,7
1768 add ebx,ecx
1769 add eax,DWORD[8+rsp]
1770 pslld xmm4,2
1771 xor esi,edx
1772 mov edi,ebx
1773 psrld xmm10,30
1774 rol ebx,5
1775 add eax,esi
1776 xor edi,edx
1777 ror ecx,7
1778 por xmm4,xmm10
1779 add eax,ebx
1780 add ebp,DWORD[12+rsp]
1781 pshufd xmm8,xmm3,238
1782 xor edi,ecx
1783 mov esi,eax
1784 rol eax,5
1785 add ebp,edi
1786 xor esi,ecx
1787 ror ebx,7
1788 add ebp,eax
1789 pxor xmm5,xmm1
1790 add edx,DWORD[16+rsp]
1791 xor esi,ebx
1792 punpcklqdq xmm8,xmm4
1793 mov edi,ebp
1794 rol ebp,5
1795 pxor xmm5,xmm6
1796 add edx,esi
1797 xor edi,ebx
1798 movdqa xmm10,xmm9
1799 ror eax,7
1800 paddd xmm9,xmm4
1801 add edx,ebp
1802 pxor xmm5,xmm8
1803 add ecx,DWORD[20+rsp]
1804 xor edi,eax
1805 mov esi,edx
1806 rol edx,5
1807 movdqa xmm8,xmm5
1808 add ecx,edi
1809 xor esi,eax
1810 movdqa XMMWORD[rsp],xmm9
1811 ror ebp,7
1812 add ecx,edx
1813 add ebx,DWORD[24+rsp]
1814 pslld xmm5,2
1815 xor esi,ebp
1816 mov edi,ecx
1817 psrld xmm8,30
1818 rol ecx,5
1819 add ebx,esi
1820 xor edi,ebp
1821 ror edx,7
1822 por xmm5,xmm8
1823 add ebx,ecx
1824 add eax,DWORD[28+rsp]
1825 pshufd xmm9,xmm4,238
1826 ror ecx,7
1827 mov esi,ebx
1828 xor edi,edx
1829 rol ebx,5
1830 add eax,edi
1831 xor esi,ecx
1832 xor ecx,edx
1833 add eax,ebx
1834 pxor xmm6,xmm2
1835 add ebp,DWORD[32+rsp]
1836 and esi,ecx
1837 xor ecx,edx
1838 ror ebx,7
1839 punpcklqdq xmm9,xmm5
1840 mov edi,eax
1841 xor esi,ecx
1842 pxor xmm6,xmm7
1843 rol eax,5
1844 add ebp,esi
1845 movdqa xmm8,xmm10
1846 xor edi,ebx
1847 paddd xmm10,xmm5
1848 xor ebx,ecx
1849 pxor xmm6,xmm9
1850 add ebp,eax
1851 add edx,DWORD[36+rsp]
1852 and edi,ebx
1853 xor ebx,ecx
1854 ror eax,7
1855 movdqa xmm9,xmm6
1856 mov esi,ebp
1857 xor edi,ebx
1858 movdqa XMMWORD[16+rsp],xmm10
1859 rol ebp,5
1860 add edx,edi
1861 xor esi,eax
1862 pslld xmm6,2
1863 xor eax,ebx
1864 add edx,ebp
1865 psrld xmm9,30
1866 add ecx,DWORD[40+rsp]
1867 and esi,eax
1868 xor eax,ebx
1869 por xmm6,xmm9
1870 ror ebp,7
1871 mov edi,edx
1872 xor esi,eax
1873 rol edx,5
1874 pshufd xmm10,xmm5,238
1875 add ecx,esi
1876 xor edi,ebp
1877 xor ebp,eax
1878 add ecx,edx
1879 add ebx,DWORD[44+rsp]
1880 and edi,ebp
1881 xor ebp,eax
1882 ror edx,7
1883 mov esi,ecx
1884 xor edi,ebp
1885 rol ecx,5
1886 add ebx,edi
1887 xor esi,edx
1888 xor edx,ebp
1889 add ebx,ecx
1890 pxor xmm7,xmm3
1891 add eax,DWORD[48+rsp]
1892 and esi,edx
1893 xor edx,ebp
1894 ror ecx,7
1895 punpcklqdq xmm10,xmm6
1896 mov edi,ebx
1897 xor esi,edx
1898 pxor xmm7,xmm0
1899 rol ebx,5
1900 add eax,esi
1901 movdqa xmm9,XMMWORD[32+r11]
1902 xor edi,ecx
1903 paddd xmm8,xmm6
1904 xor ecx,edx
1905 pxor xmm7,xmm10
1906 add eax,ebx
1907 add ebp,DWORD[52+rsp]
1908 and edi,ecx
1909 xor ecx,edx
1910 ror ebx,7
1911 movdqa xmm10,xmm7
1912 mov esi,eax
1913 xor edi,ecx
1914 movdqa XMMWORD[32+rsp],xmm8
1915 rol eax,5
1916 add ebp,edi
1917 xor esi,ebx
1918 pslld xmm7,2
1919 xor ebx,ecx
1920 add ebp,eax
1921 psrld xmm10,30
1922 add edx,DWORD[56+rsp]
1923 and esi,ebx
1924 xor ebx,ecx
1925 por xmm7,xmm10
1926 ror eax,7
1927 mov edi,ebp
1928 xor esi,ebx
1929 rol ebp,5
1930 pshufd xmm8,xmm6,238
1931 add edx,esi
1932 xor edi,eax
1933 xor eax,ebx
1934 add edx,ebp
1935 add ecx,DWORD[60+rsp]
1936 and edi,eax
1937 xor eax,ebx
1938 ror ebp,7
1939 mov esi,edx
1940 xor edi,eax
1941 rol edx,5
1942 add ecx,edi
1943 xor esi,ebp
1944 xor ebp,eax
1945 add ecx,edx
1946 pxor xmm0,xmm4
1947 add ebx,DWORD[rsp]
1948 and esi,ebp
1949 xor ebp,eax
1950 ror edx,7
1951 punpcklqdq xmm8,xmm7
1952 mov edi,ecx
1953 xor esi,ebp
1954 pxor xmm0,xmm1
1955 rol ecx,5
1956 add ebx,esi
1957 movdqa xmm10,xmm9
1958 xor edi,edx
1959 paddd xmm9,xmm7
1960 xor edx,ebp
1961 pxor xmm0,xmm8
1962 add ebx,ecx
1963 add eax,DWORD[4+rsp]
1964 and edi,edx
1965 xor edx,ebp
1966 ror ecx,7
1967 movdqa xmm8,xmm0
1968 mov esi,ebx
1969 xor edi,edx
1970 movdqa XMMWORD[48+rsp],xmm9
1971 rol ebx,5
1972 add eax,edi
1973 xor esi,ecx
1974 pslld xmm0,2
1975 xor ecx,edx
1976 add eax,ebx
1977 psrld xmm8,30
1978 add ebp,DWORD[8+rsp]
1979 and esi,ecx
1980 xor ecx,edx
1981 por xmm0,xmm8
1982 ror ebx,7
1983 mov edi,eax
1984 xor esi,ecx
1985 rol eax,5
1986 pshufd xmm9,xmm7,238
1987 add ebp,esi
1988 xor edi,ebx
1989 xor ebx,ecx
1990 add ebp,eax
1991 add edx,DWORD[12+rsp]
1992 and edi,ebx
1993 xor ebx,ecx
1994 ror eax,7
1995 mov esi,ebp
1996 xor edi,ebx
1997 rol ebp,5
1998 add edx,edi
1999 xor esi,eax
2000 xor eax,ebx
2001 add edx,ebp
2002 pxor xmm1,xmm5
2003 add ecx,DWORD[16+rsp]
2004 and esi,eax
2005 xor eax,ebx
2006 ror ebp,7
2007 punpcklqdq xmm9,xmm0
2008 mov edi,edx
2009 xor esi,eax
2010 pxor xmm1,xmm2
2011 rol edx,5
2012 add ecx,esi
2013 movdqa xmm8,xmm10
2014 xor edi,ebp
2015 paddd xmm10,xmm0
2016 xor ebp,eax
2017 pxor xmm1,xmm9
2018 add ecx,edx
2019 add ebx,DWORD[20+rsp]
2020 and edi,ebp
2021 xor ebp,eax
2022 ror edx,7
2023 movdqa xmm9,xmm1
2024 mov esi,ecx
2025 xor edi,ebp
2026 movdqa XMMWORD[rsp],xmm10
2027 rol ecx,5
2028 add ebx,edi
2029 xor esi,edx
2030 pslld xmm1,2
2031 xor edx,ebp
2032 add ebx,ecx
2033 psrld xmm9,30
2034 add eax,DWORD[24+rsp]
2035 and esi,edx
2036 xor edx,ebp
2037 por xmm1,xmm9
2038 ror ecx,7
2039 mov edi,ebx
2040 xor esi,edx
2041 rol ebx,5
2042 pshufd xmm10,xmm0,238
2043 add eax,esi
2044 xor edi,ecx
2045 xor ecx,edx
2046 add eax,ebx
2047 add ebp,DWORD[28+rsp]
2048 and edi,ecx
2049 xor ecx,edx
2050 ror ebx,7
2051 mov esi,eax
2052 xor edi,ecx
2053 rol eax,5
2054 add ebp,edi
2055 xor esi,ebx
2056 xor ebx,ecx
2057 add ebp,eax
2058 pxor xmm2,xmm6
2059 add edx,DWORD[32+rsp]
2060 and esi,ebx
2061 xor ebx,ecx
2062 ror eax,7
2063 punpcklqdq xmm10,xmm1
2064 mov edi,ebp
2065 xor esi,ebx
2066 pxor xmm2,xmm3
2067 rol ebp,5
2068 add edx,esi
2069 movdqa xmm9,xmm8
2070 xor edi,eax
2071 paddd xmm8,xmm1
2072 xor eax,ebx
2073 pxor xmm2,xmm10
2074 add edx,ebp
2075 add ecx,DWORD[36+rsp]
2076 and edi,eax
2077 xor eax,ebx
2078 ror ebp,7
2079 movdqa xmm10,xmm2
2080 mov esi,edx
2081 xor edi,eax
2082 movdqa XMMWORD[16+rsp],xmm8
2083 rol edx,5
2084 add ecx,edi
2085 xor esi,ebp
2086 pslld xmm2,2
2087 xor ebp,eax
2088 add ecx,edx
2089 psrld xmm10,30
2090 add ebx,DWORD[40+rsp]
2091 and esi,ebp
2092 xor ebp,eax
2093 por xmm2,xmm10
2094 ror edx,7
2095 mov edi,ecx
2096 xor esi,ebp
2097 rol ecx,5
2098 pshufd xmm8,xmm1,238
2099 add ebx,esi
2100 xor edi,edx
2101 xor edx,ebp
2102 add ebx,ecx
2103 add eax,DWORD[44+rsp]
2104 and edi,edx
2105 xor edx,ebp
2106 ror ecx,7
2107 mov esi,ebx
2108 xor edi,edx
2109 rol ebx,5
2110 add eax,edi
2111 xor esi,edx
2112 add eax,ebx
2113 pxor xmm3,xmm7
2114 add ebp,DWORD[48+rsp]
2115 xor esi,ecx
2116 punpcklqdq xmm8,xmm2
2117 mov edi,eax
2118 rol eax,5
2119 pxor xmm3,xmm4
2120 add ebp,esi
2121 xor edi,ecx
2122 movdqa xmm10,xmm9
2123 ror ebx,7
2124 paddd xmm9,xmm2
2125 add ebp,eax
2126 pxor xmm3,xmm8
2127 add edx,DWORD[52+rsp]
2128 xor edi,ebx
2129 mov esi,ebp
2130 rol ebp,5
2131 movdqa xmm8,xmm3
2132 add edx,edi
2133 xor esi,ebx
2134 movdqa XMMWORD[32+rsp],xmm9
2135 ror eax,7
2136 add edx,ebp
2137 add ecx,DWORD[56+rsp]
2138 pslld xmm3,2
2139 xor esi,eax
2140 mov edi,edx
2141 psrld xmm8,30
2142 rol edx,5
2143 add ecx,esi
2144 xor edi,eax
2145 ror ebp,7
2146 por xmm3,xmm8
2147 add ecx,edx
2148 add ebx,DWORD[60+rsp]
2149 xor edi,ebp
2150 mov esi,ecx
2151 rol ecx,5
2152 add ebx,edi
2153 xor esi,ebp
2154 ror edx,7
2155 add ebx,ecx
2156 add eax,DWORD[rsp]
2157 xor esi,edx
2158 mov edi,ebx
2159 rol ebx,5
2160 paddd xmm10,xmm3
2161 add eax,esi
2162 xor edi,edx
2163 movdqa XMMWORD[48+rsp],xmm10
2164 ror ecx,7
2165 add eax,ebx
2166 add ebp,DWORD[4+rsp]
2167 xor edi,ecx
2168 mov esi,eax
2169 rol eax,5
2170 add ebp,edi
2171 xor esi,ecx
2172 ror ebx,7
2173 add ebp,eax
2174 add edx,DWORD[8+rsp]
2175 xor esi,ebx
2176 mov edi,ebp
2177 rol ebp,5
2178 add edx,esi
2179 xor edi,ebx
2180 ror eax,7
2181 add edx,ebp
2182 add ecx,DWORD[12+rsp]
2183 xor edi,eax
2184 mov esi,edx
2185 rol edx,5
2186 add ecx,edi
2187 xor esi,eax
2188 ror ebp,7
2189 add ecx,edx
2190 cmp r9,r10
2191 je NEAR $L$done_ssse3
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]
2198 DB 102,15,56,0,198
2199 add r9,64
2200 add ebx,DWORD[16+rsp]
2201 xor esi,ebp
2202 mov edi,ecx
2203 DB 102,15,56,0,206
2204 rol ecx,5
2205 add ebx,esi
2206 xor edi,ebp
2207 ror edx,7
2208 paddd xmm0,xmm9
2209 add ebx,ecx
2210 add eax,DWORD[20+rsp]
2211 xor edi,edx
2212 mov esi,ebx
2213 movdqa XMMWORD[rsp],xmm0
2214 rol ebx,5
2215 add eax,edi
2216 xor esi,edx
2217 ror ecx,7
2218 psubd xmm0,xmm9
2219 add eax,ebx
2220 add ebp,DWORD[24+rsp]
2221 xor esi,ecx
2222 mov edi,eax
2223 rol eax,5
2224 add ebp,esi
2225 xor edi,ecx
2226 ror ebx,7
2227 add ebp,eax
2228 add edx,DWORD[28+rsp]
2229 xor edi,ebx
2230 mov esi,ebp
2231 rol ebp,5
2232 add edx,edi
2233 xor esi,ebx
2234 ror eax,7
2235 add edx,ebp
2236 add ecx,DWORD[32+rsp]
2237 xor esi,eax
2238 mov edi,edx
2239 DB 102,15,56,0,214
2240 rol edx,5
2241 add ecx,esi
2242 xor edi,eax
2243 ror ebp,7
2244 paddd xmm1,xmm9
2245 add ecx,edx
2246 add ebx,DWORD[36+rsp]
2247 xor edi,ebp
2248 mov esi,ecx
2249 movdqa XMMWORD[16+rsp],xmm1
2250 rol ecx,5
2251 add ebx,edi
2252 xor esi,ebp
2253 ror edx,7
2254 psubd xmm1,xmm9
2255 add ebx,ecx
2256 add eax,DWORD[40+rsp]
2257 xor esi,edx
2258 mov edi,ebx
2259 rol ebx,5
2260 add eax,esi
2261 xor edi,edx
2262 ror ecx,7
2263 add eax,ebx
2264 add ebp,DWORD[44+rsp]
2265 xor edi,ecx
2266 mov esi,eax
2267 rol eax,5
2268 add ebp,edi
2269 xor esi,ecx
2270 ror ebx,7
2271 add ebp,eax
2272 add edx,DWORD[48+rsp]
2273 xor esi,ebx
2274 mov edi,ebp
2275 DB 102,15,56,0,222
2276 rol ebp,5
2277 add edx,esi
2278 xor edi,ebx
2279 ror eax,7
2280 paddd xmm2,xmm9
2281 add edx,ebp
2282 add ecx,DWORD[52+rsp]
2283 xor edi,eax
2284 mov esi,edx
2285 movdqa XMMWORD[32+rsp],xmm2
2286 rol edx,5
2287 add ecx,edi
2288 xor esi,eax
2289 ror ebp,7
2290 psubd xmm2,xmm9
2291 add ecx,edx
2292 add ebx,DWORD[56+rsp]
2293 xor esi,ebp
2294 mov edi,ecx
2295 rol ecx,5
2296 add ebx,esi
2297 xor edi,ebp
2298 ror edx,7
2299 add ebx,ecx
2300 add eax,DWORD[60+rsp]
2301 xor edi,edx
2302 mov esi,ebx
2303 rol ebx,5
2304 add eax,edi
2305 ror ecx,7
2306 add eax,ebx
2307 add eax,DWORD[r8]
2308 add esi,DWORD[4+r8]
2309 add ecx,DWORD[8+r8]
2310 add edx,DWORD[12+r8]
2311 mov DWORD[r8],eax
2312 add ebp,DWORD[16+r8]
2313 mov DWORD[4+r8],esi
2314 mov ebx,esi
2315 mov DWORD[8+r8],ecx
2316 mov edi,ecx
2317 mov DWORD[12+r8],edx
2318 xor edi,edx
2319 mov DWORD[16+r8],ebp
2320 and esi,edi
2321 jmp NEAR $L$oop_ssse3
2323 ALIGN 16
2324 $L$done_ssse3:
2325 add ebx,DWORD[16+rsp]
2326 xor esi,ebp
2327 mov edi,ecx
2328 rol ecx,5
2329 add ebx,esi
2330 xor edi,ebp
2331 ror edx,7
2332 add ebx,ecx
2333 add eax,DWORD[20+rsp]
2334 xor edi,edx
2335 mov esi,ebx
2336 rol ebx,5
2337 add eax,edi
2338 xor esi,edx
2339 ror ecx,7
2340 add eax,ebx
2341 add ebp,DWORD[24+rsp]
2342 xor esi,ecx
2343 mov edi,eax
2344 rol eax,5
2345 add ebp,esi
2346 xor edi,ecx
2347 ror ebx,7
2348 add ebp,eax
2349 add edx,DWORD[28+rsp]
2350 xor edi,ebx
2351 mov esi,ebp
2352 rol ebp,5
2353 add edx,edi
2354 xor esi,ebx
2355 ror eax,7
2356 add edx,ebp
2357 add ecx,DWORD[32+rsp]
2358 xor esi,eax
2359 mov edi,edx
2360 rol edx,5
2361 add ecx,esi
2362 xor edi,eax
2363 ror ebp,7
2364 add ecx,edx
2365 add ebx,DWORD[36+rsp]
2366 xor edi,ebp
2367 mov esi,ecx
2368 rol ecx,5
2369 add ebx,edi
2370 xor esi,ebp
2371 ror edx,7
2372 add ebx,ecx
2373 add eax,DWORD[40+rsp]
2374 xor esi,edx
2375 mov edi,ebx
2376 rol ebx,5
2377 add eax,esi
2378 xor edi,edx
2379 ror ecx,7
2380 add eax,ebx
2381 add ebp,DWORD[44+rsp]
2382 xor edi,ecx
2383 mov esi,eax
2384 rol eax,5
2385 add ebp,edi
2386 xor esi,ecx
2387 ror ebx,7
2388 add ebp,eax
2389 add edx,DWORD[48+rsp]
2390 xor esi,ebx
2391 mov edi,ebp
2392 rol ebp,5
2393 add edx,esi
2394 xor edi,ebx
2395 ror eax,7
2396 add edx,ebp
2397 add ecx,DWORD[52+rsp]
2398 xor edi,eax
2399 mov esi,edx
2400 rol edx,5
2401 add ecx,edi
2402 xor esi,eax
2403 ror ebp,7
2404 add ecx,edx
2405 add ebx,DWORD[56+rsp]
2406 xor esi,ebp
2407 mov edi,ecx
2408 rol ecx,5
2409 add ebx,esi
2410 xor edi,ebp
2411 ror edx,7
2412 add ebx,ecx
2413 add eax,DWORD[60+rsp]
2414 xor edi,edx
2415 mov esi,ebx
2416 rol ebx,5
2417 add eax,edi
2418 ror ecx,7
2419 add eax,ebx
2420 add eax,DWORD[r8]
2421 add esi,DWORD[4+r8]
2422 add ecx,DWORD[8+r8]
2423 mov DWORD[r8],eax
2424 add edx,DWORD[12+r8]
2425 mov DWORD[4+r8],esi
2426 add ebp,DWORD[16+r8]
2427 mov DWORD[8+r8],ecx
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]
2436 lea rsi,[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]
2442 lea rsp,[rsi]
2443 $L$epilogue_ssse3:
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:
2448 ALIGN 64
2449 K_XX_XX:
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
2465 DB 103,62,0
2466 ALIGN 64
2467 EXTERN __imp_RtlVirtualUnwind
2469 ALIGN 16
2470 se_handler:
2471 push rsi
2472 push rdi
2473 push rbx
2474 push rbp
2475 push r12
2476 push r13
2477 push r14
2478 push r15
2479 pushfq
2480 sub rsp,64
2482 mov rax,QWORD[120+r8]
2483 mov rbx,QWORD[248+r8]
2485 lea r10,[$L$prologue]
2486 cmp rbx,r10
2487 jb NEAR $L$common_seh_tail
2489 mov rax,QWORD[152+r8]
2491 lea r10,[$L$epilogue]
2492 cmp rbx,r10
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
2511 ALIGN 16
2512 ssse3_handler:
2513 push rsi
2514 push rdi
2515 push rbx
2516 push rbp
2517 push r12
2518 push r13
2519 push r14
2520 push r15
2521 pushfq
2522 sub rsp,64
2524 mov rax,QWORD[120+r8]
2525 mov rbx,QWORD[248+r8]
2527 mov rsi,QWORD[8+r9]
2528 mov r11,QWORD[56+r9]
2530 mov r10d,DWORD[r11]
2531 lea r10,[r10*1+rsi]
2532 cmp rbx,r10
2533 jb NEAR $L$common_seh_tail
2535 mov rax,QWORD[152+r8]
2537 mov r10d,DWORD[4+r11]
2538 lea r10,[r10*1+rsi]
2539 cmp rbx,r10
2540 jae NEAR $L$common_seh_tail
2542 mov rax,QWORD[232+r8]
2544 lea rsi,[((-40-96))+rax]
2545 lea rdi,[512+r8]
2546 mov ecx,12
2547 DD 0xa548f3fc
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
2560 $L$common_seh_tail:
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]
2568 mov rsi,r8
2569 mov ecx,154
2570 DD 0xa548f3fc
2572 mov rsi,r9
2573 xor rcx,rcx
2574 mov rdx,QWORD[8+rsi]
2575 mov r8,QWORD[rsi]
2576 mov r9,QWORD[16+rsi]
2577 mov r10,QWORD[40+rsi]
2578 lea r11,[56+rsi]
2579 lea r12,[24+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]
2586 mov eax,1
2587 add rsp,64
2588 popfq
2589 pop r15
2590 pop r14
2591 pop r13
2592 pop r12
2593 pop rbp
2594 pop rbx
2595 pop rdi
2596 pop rsi
2597 DB 0F3h,0C3h ;repret
2600 section .pdata rdata align=4
2601 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
2609 ALIGN 8
2610 $L$SEH_info_sha1_block_data_order:
2611 DB 9,0,0,0
2612 DD se_handler wrt ..imagebase
2613 $L$SEH_info_sha1_block_data_order_ssse3:
2614 DB 9,0,0,0
2615 DD ssse3_handler wrt ..imagebase
2616 DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase