VirtualBox

source: vbox/trunk/src/libs/openssl-3.0.1/crypto/genasm-nasm/sha1-x86_64.S@ 94083

Last change on this file since 94083 was 94083, checked in by vboxsync, 3 years ago

libs/openssl-3.0.1: Recreate asm files, bugref:10128

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

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