VirtualBox

source: vbox/trunk/src/libs/openssl-1.1.0g/crypto/genasm-nasm/sha1-x86_64.S@ 69881

Last change on this file since 69881 was 69881, checked in by vboxsync, 7 years ago

Update OpenSSL to 1.1.0g.
bugref:8070: src/libs maintenance

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

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