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

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

Issue 2811393005: Roll src/third_party/boringssl/src c8ff30cbe..bc6a76b0e (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 default rel
2 %define XMMWORD
3 %define YMMWORD
4 %define ZMMWORD
5 section .text code align=64
6
7 EXTERN OPENSSL_ia32cap_P
8
9 global sha1_block_data_order
10
11 ALIGN 16
12 sha1_block_data_order:
13 mov QWORD[8+rsp],rdi ;WIN64 prologue
14 mov QWORD[16+rsp],rsi
15 mov rax,rsp
16 $L$SEH_begin_sha1_block_data_order:
17 mov rdi,rcx
18 mov rsi,rdx
19 mov rdx,r8
20
21
22 mov r9d,DWORD[((OPENSSL_ia32cap_P+0))]
23 mov r8d,DWORD[((OPENSSL_ia32cap_P+4))]
24 mov r10d,DWORD[((OPENSSL_ia32cap_P+8))]
25 test r8d,512
26 jz NEAR $L$ialu
27 and r8d,268435456
28 and r9d,1073741824
29 or r8d,r9d
30 cmp r8d,1342177280
31 je NEAR _avx_shortcut
32 jmp NEAR _ssse3_shortcut
33
34 ALIGN 16
35 $L$ialu:
36 mov rax,rsp
37 push rbx
38 push rbp
39 push r12
40 push r13
41 push r14
42 mov r8,rdi
43 sub rsp,72
44 mov r9,rsi
45 and rsp,-64
46 mov r10,rdx
47 mov QWORD[64+rsp],rax
48 $L$prologue:
49
50 mov esi,DWORD[r8]
51 mov edi,DWORD[4+r8]
52 mov r11d,DWORD[8+r8]
53 mov r12d,DWORD[12+r8]
54 mov r13d,DWORD[16+r8]
55 jmp NEAR $L$loop
56
57 ALIGN 16
58 $L$loop:
59 mov edx,DWORD[r9]
60 bswap edx
61 mov ebp,DWORD[4+r9]
62 mov eax,r12d
63 mov DWORD[rsp],edx
64 mov ecx,esi
65 bswap ebp
66 xor eax,r11d
67 rol ecx,5
68 and eax,edi
69 lea r13d,[1518500249+r13*1+rdx]
70 add r13d,ecx
71 xor eax,r12d
72 rol edi,30
73 add r13d,eax
74 mov r14d,DWORD[8+r9]
75 mov eax,r11d
76 mov DWORD[4+rsp],ebp
77 mov ecx,r13d
78 bswap r14d
79 xor eax,edi
80 rol ecx,5
81 and eax,esi
82 lea r12d,[1518500249+r12*1+rbp]
83 add r12d,ecx
84 xor eax,r11d
85 rol esi,30
86 add r12d,eax
87 mov edx,DWORD[12+r9]
88 mov eax,edi
89 mov DWORD[8+rsp],r14d
90 mov ecx,r12d
91 bswap edx
92 xor eax,esi
93 rol ecx,5
94 and eax,r13d
95 lea r11d,[1518500249+r11*1+r14]
96 add r11d,ecx
97 xor eax,edi
98 rol r13d,30
99 add r11d,eax
100 mov ebp,DWORD[16+r9]
101 mov eax,esi
102 mov DWORD[12+rsp],edx
103 mov ecx,r11d
104 bswap ebp
105 xor eax,r13d
106 rol ecx,5
107 and eax,r12d
108 lea edi,[1518500249+rdi*1+rdx]
109 add edi,ecx
110 xor eax,esi
111 rol r12d,30
112 add edi,eax
113 mov r14d,DWORD[20+r9]
114 mov eax,r13d
115 mov DWORD[16+rsp],ebp
116 mov ecx,edi
117 bswap r14d
118 xor eax,r12d
119 rol ecx,5
120 and eax,r11d
121 lea esi,[1518500249+rsi*1+rbp]
122 add esi,ecx
123 xor eax,r13d
124 rol r11d,30
125 add esi,eax
126 mov edx,DWORD[24+r9]
127 mov eax,r12d
128 mov DWORD[20+rsp],r14d
129 mov ecx,esi
130 bswap edx
131 xor eax,r11d
132 rol ecx,5
133 and eax,edi
134 lea r13d,[1518500249+r13*1+r14]
135 add r13d,ecx
136 xor eax,r12d
137 rol edi,30
138 add r13d,eax
139 mov ebp,DWORD[28+r9]
140 mov eax,r11d
141 mov DWORD[24+rsp],edx
142 mov ecx,r13d
143 bswap ebp
144 xor eax,edi
145 rol ecx,5
146 and eax,esi
147 lea r12d,[1518500249+r12*1+rdx]
148 add r12d,ecx
149 xor eax,r11d
150 rol esi,30
151 add r12d,eax
152 mov r14d,DWORD[32+r9]
153 mov eax,edi
154 mov DWORD[28+rsp],ebp
155 mov ecx,r12d
156 bswap r14d
157 xor eax,esi
158 rol ecx,5
159 and eax,r13d
160 lea r11d,[1518500249+r11*1+rbp]
161 add r11d,ecx
162 xor eax,edi
163 rol r13d,30
164 add r11d,eax
165 mov edx,DWORD[36+r9]
166 mov eax,esi
167 mov DWORD[32+rsp],r14d
168 mov ecx,r11d
169 bswap edx
170 xor eax,r13d
171 rol ecx,5
172 and eax,r12d
173 lea edi,[1518500249+rdi*1+r14]
174 add edi,ecx
175 xor eax,esi
176 rol r12d,30
177 add edi,eax
178 mov ebp,DWORD[40+r9]
179 mov eax,r13d
180 mov DWORD[36+rsp],edx
181 mov ecx,edi
182 bswap ebp
183 xor eax,r12d
184 rol ecx,5
185 and eax,r11d
186 lea esi,[1518500249+rsi*1+rdx]
187 add esi,ecx
188 xor eax,r13d
189 rol r11d,30
190 add esi,eax
191 mov r14d,DWORD[44+r9]
192 mov eax,r12d
193 mov DWORD[40+rsp],ebp
194 mov ecx,esi
195 bswap r14d
196 xor eax,r11d
197 rol ecx,5
198 and eax,edi
199 lea r13d,[1518500249+r13*1+rbp]
200 add r13d,ecx
201 xor eax,r12d
202 rol edi,30
203 add r13d,eax
204 mov edx,DWORD[48+r9]
205 mov eax,r11d
206 mov DWORD[44+rsp],r14d
207 mov ecx,r13d
208 bswap edx
209 xor eax,edi
210 rol ecx,5
211 and eax,esi
212 lea r12d,[1518500249+r12*1+r14]
213 add r12d,ecx
214 xor eax,r11d
215 rol esi,30
216 add r12d,eax
217 mov ebp,DWORD[52+r9]
218 mov eax,edi
219 mov DWORD[48+rsp],edx
220 mov ecx,r12d
221 bswap ebp
222 xor eax,esi
223 rol ecx,5
224 and eax,r13d
225 lea r11d,[1518500249+r11*1+rdx]
226 add r11d,ecx
227 xor eax,edi
228 rol r13d,30
229 add r11d,eax
230 mov r14d,DWORD[56+r9]
231 mov eax,esi
232 mov DWORD[52+rsp],ebp
233 mov ecx,r11d
234 bswap r14d
235 xor eax,r13d
236 rol ecx,5
237 and eax,r12d
238 lea edi,[1518500249+rdi*1+rbp]
239 add edi,ecx
240 xor eax,esi
241 rol r12d,30
242 add edi,eax
243 mov edx,DWORD[60+r9]
244 mov eax,r13d
245 mov DWORD[56+rsp],r14d
246 mov ecx,edi
247 bswap edx
248 xor eax,r12d
249 rol ecx,5
250 and eax,r11d
251 lea esi,[1518500249+rsi*1+r14]
252 add esi,ecx
253 xor eax,r13d
254 rol r11d,30
255 add esi,eax
256 xor ebp,DWORD[rsp]
257 mov eax,r12d
258 mov DWORD[60+rsp],edx
259 mov ecx,esi
260 xor ebp,DWORD[8+rsp]
261 xor eax,r11d
262 rol ecx,5
263 xor ebp,DWORD[32+rsp]
264 and eax,edi
265 lea r13d,[1518500249+r13*1+rdx]
266 rol edi,30
267 xor eax,r12d
268 add r13d,ecx
269 rol ebp,1
270 add r13d,eax
271 xor r14d,DWORD[4+rsp]
272 mov eax,r11d
273 mov DWORD[rsp],ebp
274 mov ecx,r13d
275 xor r14d,DWORD[12+rsp]
276 xor eax,edi
277 rol ecx,5
278 xor r14d,DWORD[36+rsp]
279 and eax,esi
280 lea r12d,[1518500249+r12*1+rbp]
281 rol esi,30
282 xor eax,r11d
283 add r12d,ecx
284 rol r14d,1
285 add r12d,eax
286 xor edx,DWORD[8+rsp]
287 mov eax,edi
288 mov DWORD[4+rsp],r14d
289 mov ecx,r12d
290 xor edx,DWORD[16+rsp]
291 xor eax,esi
292 rol ecx,5
293 xor edx,DWORD[40+rsp]
294 and eax,r13d
295 lea r11d,[1518500249+r11*1+r14]
296 rol r13d,30
297 xor eax,edi
298 add r11d,ecx
299 rol edx,1
300 add r11d,eax
301 xor ebp,DWORD[12+rsp]
302 mov eax,esi
303 mov DWORD[8+rsp],edx
304 mov ecx,r11d
305 xor ebp,DWORD[20+rsp]
306 xor eax,r13d
307 rol ecx,5
308 xor ebp,DWORD[44+rsp]
309 and eax,r12d
310 lea edi,[1518500249+rdi*1+rdx]
311 rol r12d,30
312 xor eax,esi
313 add edi,ecx
314 rol ebp,1
315 add edi,eax
316 xor r14d,DWORD[16+rsp]
317 mov eax,r13d
318 mov DWORD[12+rsp],ebp
319 mov ecx,edi
320 xor r14d,DWORD[24+rsp]
321 xor eax,r12d
322 rol ecx,5
323 xor r14d,DWORD[48+rsp]
324 and eax,r11d
325 lea esi,[1518500249+rsi*1+rbp]
326 rol r11d,30
327 xor eax,r13d
328 add esi,ecx
329 rol r14d,1
330 add esi,eax
331 xor edx,DWORD[20+rsp]
332 mov eax,edi
333 mov DWORD[16+rsp],r14d
334 mov ecx,esi
335 xor edx,DWORD[28+rsp]
336 xor eax,r12d
337 rol ecx,5
338 xor edx,DWORD[52+rsp]
339 lea r13d,[1859775393+r13*1+r14]
340 xor eax,r11d
341 add r13d,ecx
342 rol edi,30
343 add r13d,eax
344 rol edx,1
345 xor ebp,DWORD[24+rsp]
346 mov eax,esi
347 mov DWORD[20+rsp],edx
348 mov ecx,r13d
349 xor ebp,DWORD[32+rsp]
350 xor eax,r11d
351 rol ecx,5
352 xor ebp,DWORD[56+rsp]
353 lea r12d,[1859775393+r12*1+rdx]
354 xor eax,edi
355 add r12d,ecx
356 rol esi,30
357 add r12d,eax
358 rol ebp,1
359 xor r14d,DWORD[28+rsp]
360 mov eax,r13d
361 mov DWORD[24+rsp],ebp
362 mov ecx,r12d
363 xor r14d,DWORD[36+rsp]
364 xor eax,edi
365 rol ecx,5
366 xor r14d,DWORD[60+rsp]
367 lea r11d,[1859775393+r11*1+rbp]
368 xor eax,esi
369 add r11d,ecx
370 rol r13d,30
371 add r11d,eax
372 rol r14d,1
373 xor edx,DWORD[32+rsp]
374 mov eax,r12d
375 mov DWORD[28+rsp],r14d
376 mov ecx,r11d
377 xor edx,DWORD[40+rsp]
378 xor eax,esi
379 rol ecx,5
380 xor edx,DWORD[rsp]
381 lea edi,[1859775393+rdi*1+r14]
382 xor eax,r13d
383 add edi,ecx
384 rol r12d,30
385 add edi,eax
386 rol edx,1
387 xor ebp,DWORD[36+rsp]
388 mov eax,r11d
389 mov DWORD[32+rsp],edx
390 mov ecx,edi
391 xor ebp,DWORD[44+rsp]
392 xor eax,r13d
393 rol ecx,5
394 xor ebp,DWORD[4+rsp]
395 lea esi,[1859775393+rsi*1+rdx]
396 xor eax,r12d
397 add esi,ecx
398 rol r11d,30
399 add esi,eax
400 rol ebp,1
401 xor r14d,DWORD[40+rsp]
402 mov eax,edi
403 mov DWORD[36+rsp],ebp
404 mov ecx,esi
405 xor r14d,DWORD[48+rsp]
406 xor eax,r12d
407 rol ecx,5
408 xor r14d,DWORD[8+rsp]
409 lea r13d,[1859775393+r13*1+rbp]
410 xor eax,r11d
411 add r13d,ecx
412 rol edi,30
413 add r13d,eax
414 rol r14d,1
415 xor edx,DWORD[44+rsp]
416 mov eax,esi
417 mov DWORD[40+rsp],r14d
418 mov ecx,r13d
419 xor edx,DWORD[52+rsp]
420 xor eax,r11d
421 rol ecx,5
422 xor edx,DWORD[12+rsp]
423 lea r12d,[1859775393+r12*1+r14]
424 xor eax,edi
425 add r12d,ecx
426 rol esi,30
427 add r12d,eax
428 rol edx,1
429 xor ebp,DWORD[48+rsp]
430 mov eax,r13d
431 mov DWORD[44+rsp],edx
432 mov ecx,r12d
433 xor ebp,DWORD[56+rsp]
434 xor eax,edi
435 rol ecx,5
436 xor ebp,DWORD[16+rsp]
437 lea r11d,[1859775393+r11*1+rdx]
438 xor eax,esi
439 add r11d,ecx
440 rol r13d,30
441 add r11d,eax
442 rol ebp,1
443 xor r14d,DWORD[52+rsp]
444 mov eax,r12d
445 mov DWORD[48+rsp],ebp
446 mov ecx,r11d
447 xor r14d,DWORD[60+rsp]
448 xor eax,esi
449 rol ecx,5
450 xor r14d,DWORD[20+rsp]
451 lea edi,[1859775393+rdi*1+rbp]
452 xor eax,r13d
453 add edi,ecx
454 rol r12d,30
455 add edi,eax
456 rol r14d,1
457 xor edx,DWORD[56+rsp]
458 mov eax,r11d
459 mov DWORD[52+rsp],r14d
460 mov ecx,edi
461 xor edx,DWORD[rsp]
462 xor eax,r13d
463 rol ecx,5
464 xor edx,DWORD[24+rsp]
465 lea esi,[1859775393+rsi*1+r14]
466 xor eax,r12d
467 add esi,ecx
468 rol r11d,30
469 add esi,eax
470 rol edx,1
471 xor ebp,DWORD[60+rsp]
472 mov eax,edi
473 mov DWORD[56+rsp],edx
474 mov ecx,esi
475 xor ebp,DWORD[4+rsp]
476 xor eax,r12d
477 rol ecx,5
478 xor ebp,DWORD[28+rsp]
479 lea r13d,[1859775393+r13*1+rdx]
480 xor eax,r11d
481 add r13d,ecx
482 rol edi,30
483 add r13d,eax
484 rol ebp,1
485 xor r14d,DWORD[rsp]
486 mov eax,esi
487 mov DWORD[60+rsp],ebp
488 mov ecx,r13d
489 xor r14d,DWORD[8+rsp]
490 xor eax,r11d
491 rol ecx,5
492 xor r14d,DWORD[32+rsp]
493 lea r12d,[1859775393+r12*1+rbp]
494 xor eax,edi
495 add r12d,ecx
496 rol esi,30
497 add r12d,eax
498 rol r14d,1
499 xor edx,DWORD[4+rsp]
500 mov eax,r13d
501 mov DWORD[rsp],r14d
502 mov ecx,r12d
503 xor edx,DWORD[12+rsp]
504 xor eax,edi
505 rol ecx,5
506 xor edx,DWORD[36+rsp]
507 lea r11d,[1859775393+r11*1+r14]
508 xor eax,esi
509 add r11d,ecx
510 rol r13d,30
511 add r11d,eax
512 rol edx,1
513 xor ebp,DWORD[8+rsp]
514 mov eax,r12d
515 mov DWORD[4+rsp],edx
516 mov ecx,r11d
517 xor ebp,DWORD[16+rsp]
518 xor eax,esi
519 rol ecx,5
520 xor ebp,DWORD[40+rsp]
521 lea edi,[1859775393+rdi*1+rdx]
522 xor eax,r13d
523 add edi,ecx
524 rol r12d,30
525 add edi,eax
526 rol ebp,1
527 xor r14d,DWORD[12+rsp]
528 mov eax,r11d
529 mov DWORD[8+rsp],ebp
530 mov ecx,edi
531 xor r14d,DWORD[20+rsp]
532 xor eax,r13d
533 rol ecx,5
534 xor r14d,DWORD[44+rsp]
535 lea esi,[1859775393+rsi*1+rbp]
536 xor eax,r12d
537 add esi,ecx
538 rol r11d,30
539 add esi,eax
540 rol r14d,1
541 xor edx,DWORD[16+rsp]
542 mov eax,edi
543 mov DWORD[12+rsp],r14d
544 mov ecx,esi
545 xor edx,DWORD[24+rsp]
546 xor eax,r12d
547 rol ecx,5
548 xor edx,DWORD[48+rsp]
549 lea r13d,[1859775393+r13*1+r14]
550 xor eax,r11d
551 add r13d,ecx
552 rol edi,30
553 add r13d,eax
554 rol edx,1
555 xor ebp,DWORD[20+rsp]
556 mov eax,esi
557 mov DWORD[16+rsp],edx
558 mov ecx,r13d
559 xor ebp,DWORD[28+rsp]
560 xor eax,r11d
561 rol ecx,5
562 xor ebp,DWORD[52+rsp]
563 lea r12d,[1859775393+r12*1+rdx]
564 xor eax,edi
565 add r12d,ecx
566 rol esi,30
567 add r12d,eax
568 rol ebp,1
569 xor r14d,DWORD[24+rsp]
570 mov eax,r13d
571 mov DWORD[20+rsp],ebp
572 mov ecx,r12d
573 xor r14d,DWORD[32+rsp]
574 xor eax,edi
575 rol ecx,5
576 xor r14d,DWORD[56+rsp]
577 lea r11d,[1859775393+r11*1+rbp]
578 xor eax,esi
579 add r11d,ecx
580 rol r13d,30
581 add r11d,eax
582 rol r14d,1
583 xor edx,DWORD[28+rsp]
584 mov eax,r12d
585 mov DWORD[24+rsp],r14d
586 mov ecx,r11d
587 xor edx,DWORD[36+rsp]
588 xor eax,esi
589 rol ecx,5
590 xor edx,DWORD[60+rsp]
591 lea edi,[1859775393+rdi*1+r14]
592 xor eax,r13d
593 add edi,ecx
594 rol r12d,30
595 add edi,eax
596 rol edx,1
597 xor ebp,DWORD[32+rsp]
598 mov eax,r11d
599 mov DWORD[28+rsp],edx
600 mov ecx,edi
601 xor ebp,DWORD[40+rsp]
602 xor eax,r13d
603 rol ecx,5
604 xor ebp,DWORD[rsp]
605 lea esi,[1859775393+rsi*1+rdx]
606 xor eax,r12d
607 add esi,ecx
608 rol r11d,30
609 add esi,eax
610 rol ebp,1
611 xor r14d,DWORD[36+rsp]
612 mov eax,r12d
613 mov DWORD[32+rsp],ebp
614 mov ebx,r12d
615 xor r14d,DWORD[44+rsp]
616 and eax,r11d
617 mov ecx,esi
618 xor r14d,DWORD[4+rsp]
619 lea r13d,[((-1894007588))+r13*1+rbp]
620 xor ebx,r11d
621 rol ecx,5
622 add r13d,eax
623 rol r14d,1
624 and ebx,edi
625 add r13d,ecx
626 rol edi,30
627 add r13d,ebx
628 xor edx,DWORD[40+rsp]
629 mov eax,r11d
630 mov DWORD[36+rsp],r14d
631 mov ebx,r11d
632 xor edx,DWORD[48+rsp]
633 and eax,edi
634 mov ecx,r13d
635 xor edx,DWORD[8+rsp]
636 lea r12d,[((-1894007588))+r12*1+r14]
637 xor ebx,edi
638 rol ecx,5
639 add r12d,eax
640 rol edx,1
641 and ebx,esi
642 add r12d,ecx
643 rol esi,30
644 add r12d,ebx
645 xor ebp,DWORD[44+rsp]
646 mov eax,edi
647 mov DWORD[40+rsp],edx
648 mov ebx,edi
649 xor ebp,DWORD[52+rsp]
650 and eax,esi
651 mov ecx,r12d
652 xor ebp,DWORD[12+rsp]
653 lea r11d,[((-1894007588))+r11*1+rdx]
654 xor ebx,esi
655 rol ecx,5
656 add r11d,eax
657 rol ebp,1
658 and ebx,r13d
659 add r11d,ecx
660 rol r13d,30
661 add r11d,ebx
662 xor r14d,DWORD[48+rsp]
663 mov eax,esi
664 mov DWORD[44+rsp],ebp
665 mov ebx,esi
666 xor r14d,DWORD[56+rsp]
667 and eax,r13d
668 mov ecx,r11d
669 xor r14d,DWORD[16+rsp]
670 lea edi,[((-1894007588))+rdi*1+rbp]
671 xor ebx,r13d
672 rol ecx,5
673 add edi,eax
674 rol r14d,1
675 and ebx,r12d
676 add edi,ecx
677 rol r12d,30
678 add edi,ebx
679 xor edx,DWORD[52+rsp]
680 mov eax,r13d
681 mov DWORD[48+rsp],r14d
682 mov ebx,r13d
683 xor edx,DWORD[60+rsp]
684 and eax,r12d
685 mov ecx,edi
686 xor edx,DWORD[20+rsp]
687 lea esi,[((-1894007588))+rsi*1+r14]
688 xor ebx,r12d
689 rol ecx,5
690 add esi,eax
691 rol edx,1
692 and ebx,r11d
693 add esi,ecx
694 rol r11d,30
695 add esi,ebx
696 xor ebp,DWORD[56+rsp]
697 mov eax,r12d
698 mov DWORD[52+rsp],edx
699 mov ebx,r12d
700 xor ebp,DWORD[rsp]
701 and eax,r11d
702 mov ecx,esi
703 xor ebp,DWORD[24+rsp]
704 lea r13d,[((-1894007588))+r13*1+rdx]
705 xor ebx,r11d
706 rol ecx,5
707 add r13d,eax
708 rol ebp,1
709 and ebx,edi
710 add r13d,ecx
711 rol edi,30
712 add r13d,ebx
713 xor r14d,DWORD[60+rsp]
714 mov eax,r11d
715 mov DWORD[56+rsp],ebp
716 mov ebx,r11d
717 xor r14d,DWORD[4+rsp]
718 and eax,edi
719 mov ecx,r13d
720 xor r14d,DWORD[28+rsp]
721 lea r12d,[((-1894007588))+r12*1+rbp]
722 xor ebx,edi
723 rol ecx,5
724 add r12d,eax
725 rol r14d,1
726 and ebx,esi
727 add r12d,ecx
728 rol esi,30
729 add r12d,ebx
730 xor edx,DWORD[rsp]
731 mov eax,edi
732 mov DWORD[60+rsp],r14d
733 mov ebx,edi
734 xor edx,DWORD[8+rsp]
735 and eax,esi
736 mov ecx,r12d
737 xor edx,DWORD[32+rsp]
738 lea r11d,[((-1894007588))+r11*1+r14]
739 xor ebx,esi
740 rol ecx,5
741 add r11d,eax
742 rol edx,1
743 and ebx,r13d
744 add r11d,ecx
745 rol r13d,30
746 add r11d,ebx
747 xor ebp,DWORD[4+rsp]
748 mov eax,esi
749 mov DWORD[rsp],edx
750 mov ebx,esi
751 xor ebp,DWORD[12+rsp]
752 and eax,r13d
753 mov ecx,r11d
754 xor ebp,DWORD[36+rsp]
755 lea edi,[((-1894007588))+rdi*1+rdx]
756 xor ebx,r13d
757 rol ecx,5
758 add edi,eax
759 rol ebp,1
760 and ebx,r12d
761 add edi,ecx
762 rol r12d,30
763 add edi,ebx
764 xor r14d,DWORD[8+rsp]
765 mov eax,r13d
766 mov DWORD[4+rsp],ebp
767 mov ebx,r13d
768 xor r14d,DWORD[16+rsp]
769 and eax,r12d
770 mov ecx,edi
771 xor r14d,DWORD[40+rsp]
772 lea esi,[((-1894007588))+rsi*1+rbp]
773 xor ebx,r12d
774 rol ecx,5
775 add esi,eax
776 rol r14d,1
777 and ebx,r11d
778 add esi,ecx
779 rol r11d,30
780 add esi,ebx
781 xor edx,DWORD[12+rsp]
782 mov eax,r12d
783 mov DWORD[8+rsp],r14d
784 mov ebx,r12d
785 xor edx,DWORD[20+rsp]
786 and eax,r11d
787 mov ecx,esi
788 xor edx,DWORD[44+rsp]
789 lea r13d,[((-1894007588))+r13*1+r14]
790 xor ebx,r11d
791 rol ecx,5
792 add r13d,eax
793 rol edx,1
794 and ebx,edi
795 add r13d,ecx
796 rol edi,30
797 add r13d,ebx
798 xor ebp,DWORD[16+rsp]
799 mov eax,r11d
800 mov DWORD[12+rsp],edx
801 mov ebx,r11d
802 xor ebp,DWORD[24+rsp]
803 and eax,edi
804 mov ecx,r13d
805 xor ebp,DWORD[48+rsp]
806 lea r12d,[((-1894007588))+r12*1+rdx]
807 xor ebx,edi
808 rol ecx,5
809 add r12d,eax
810 rol ebp,1
811 and ebx,esi
812 add r12d,ecx
813 rol esi,30
814 add r12d,ebx
815 xor r14d,DWORD[20+rsp]
816 mov eax,edi
817 mov DWORD[16+rsp],ebp
818 mov ebx,edi
819 xor r14d,DWORD[28+rsp]
820 and eax,esi
821 mov ecx,r12d
822 xor r14d,DWORD[52+rsp]
823 lea r11d,[((-1894007588))+r11*1+rbp]
824 xor ebx,esi
825 rol ecx,5
826 add r11d,eax
827 rol r14d,1
828 and ebx,r13d
829 add r11d,ecx
830 rol r13d,30
831 add r11d,ebx
832 xor edx,DWORD[24+rsp]
833 mov eax,esi
834 mov DWORD[20+rsp],r14d
835 mov ebx,esi
836 xor edx,DWORD[32+rsp]
837 and eax,r13d
838 mov ecx,r11d
839 xor edx,DWORD[56+rsp]
840 lea edi,[((-1894007588))+rdi*1+r14]
841 xor ebx,r13d
842 rol ecx,5
843 add edi,eax
844 rol edx,1
845 and ebx,r12d
846 add edi,ecx
847 rol r12d,30
848 add edi,ebx
849 xor ebp,DWORD[28+rsp]
850 mov eax,r13d
851 mov DWORD[24+rsp],edx
852 mov ebx,r13d
853 xor ebp,DWORD[36+rsp]
854 and eax,r12d
855 mov ecx,edi
856 xor ebp,DWORD[60+rsp]
857 lea esi,[((-1894007588))+rsi*1+rdx]
858 xor ebx,r12d
859 rol ecx,5
860 add esi,eax
861 rol ebp,1
862 and ebx,r11d
863 add esi,ecx
864 rol r11d,30
865 add esi,ebx
866 xor r14d,DWORD[32+rsp]
867 mov eax,r12d
868 mov DWORD[28+rsp],ebp
869 mov ebx,r12d
870 xor r14d,DWORD[40+rsp]
871 and eax,r11d
872 mov ecx,esi
873 xor r14d,DWORD[rsp]
874 lea r13d,[((-1894007588))+r13*1+rbp]
875 xor ebx,r11d
876 rol ecx,5
877 add r13d,eax
878 rol r14d,1
879 and ebx,edi
880 add r13d,ecx
881 rol edi,30
882 add r13d,ebx
883 xor edx,DWORD[36+rsp]
884 mov eax,r11d
885 mov DWORD[32+rsp],r14d
886 mov ebx,r11d
887 xor edx,DWORD[44+rsp]
888 and eax,edi
889 mov ecx,r13d
890 xor edx,DWORD[4+rsp]
891 lea r12d,[((-1894007588))+r12*1+r14]
892 xor ebx,edi
893 rol ecx,5
894 add r12d,eax
895 rol edx,1
896 and ebx,esi
897 add r12d,ecx
898 rol esi,30
899 add r12d,ebx
900 xor ebp,DWORD[40+rsp]
901 mov eax,edi
902 mov DWORD[36+rsp],edx
903 mov ebx,edi
904 xor ebp,DWORD[48+rsp]
905 and eax,esi
906 mov ecx,r12d
907 xor ebp,DWORD[8+rsp]
908 lea r11d,[((-1894007588))+r11*1+rdx]
909 xor ebx,esi
910 rol ecx,5
911 add r11d,eax
912 rol ebp,1
913 and ebx,r13d
914 add r11d,ecx
915 rol r13d,30
916 add r11d,ebx
917 xor r14d,DWORD[44+rsp]
918 mov eax,esi
919 mov DWORD[40+rsp],ebp
920 mov ebx,esi
921 xor r14d,DWORD[52+rsp]
922 and eax,r13d
923 mov ecx,r11d
924 xor r14d,DWORD[12+rsp]
925 lea edi,[((-1894007588))+rdi*1+rbp]
926 xor ebx,r13d
927 rol ecx,5
928 add edi,eax
929 rol r14d,1
930 and ebx,r12d
931 add edi,ecx
932 rol r12d,30
933 add edi,ebx
934 xor edx,DWORD[48+rsp]
935 mov eax,r13d
936 mov DWORD[44+rsp],r14d
937 mov ebx,r13d
938 xor edx,DWORD[56+rsp]
939 and eax,r12d
940 mov ecx,edi
941 xor edx,DWORD[16+rsp]
942 lea esi,[((-1894007588))+rsi*1+r14]
943 xor ebx,r12d
944 rol ecx,5
945 add esi,eax
946 rol edx,1
947 and ebx,r11d
948 add esi,ecx
949 rol r11d,30
950 add esi,ebx
951 xor ebp,DWORD[52+rsp]
952 mov eax,edi
953 mov DWORD[48+rsp],edx
954 mov ecx,esi
955 xor ebp,DWORD[60+rsp]
956 xor eax,r12d
957 rol ecx,5
958 xor ebp,DWORD[20+rsp]
959 lea r13d,[((-899497514))+r13*1+rdx]
960 xor eax,r11d
961 add r13d,ecx
962 rol edi,30
963 add r13d,eax
964 rol ebp,1
965 xor r14d,DWORD[56+rsp]
966 mov eax,esi
967 mov DWORD[52+rsp],ebp
968 mov ecx,r13d
969 xor r14d,DWORD[rsp]
970 xor eax,r11d
971 rol ecx,5
972 xor r14d,DWORD[24+rsp]
973 lea r12d,[((-899497514))+r12*1+rbp]
974 xor eax,edi
975 add r12d,ecx
976 rol esi,30
977 add r12d,eax
978 rol r14d,1
979 xor edx,DWORD[60+rsp]
980 mov eax,r13d
981 mov DWORD[56+rsp],r14d
982 mov ecx,r12d
983 xor edx,DWORD[4+rsp]
984 xor eax,edi
985 rol ecx,5
986 xor edx,DWORD[28+rsp]
987 lea r11d,[((-899497514))+r11*1+r14]
988 xor eax,esi
989 add r11d,ecx
990 rol r13d,30
991 add r11d,eax
992 rol edx,1
993 xor ebp,DWORD[rsp]
994 mov eax,r12d
995 mov DWORD[60+rsp],edx
996 mov ecx,r11d
997 xor ebp,DWORD[8+rsp]
998 xor eax,esi
999 rol ecx,5
1000 xor ebp,DWORD[32+rsp]
1001 lea edi,[((-899497514))+rdi*1+rdx]
1002 xor eax,r13d
1003 add edi,ecx
1004 rol r12d,30
1005 add edi,eax
1006 rol ebp,1
1007 xor r14d,DWORD[4+rsp]
1008 mov eax,r11d
1009 mov DWORD[rsp],ebp
1010 mov ecx,edi
1011 xor r14d,DWORD[12+rsp]
1012 xor eax,r13d
1013 rol ecx,5
1014 xor r14d,DWORD[36+rsp]
1015 lea esi,[((-899497514))+rsi*1+rbp]
1016 xor eax,r12d
1017 add esi,ecx
1018 rol r11d,30
1019 add esi,eax
1020 rol r14d,1
1021 xor edx,DWORD[8+rsp]
1022 mov eax,edi
1023 mov DWORD[4+rsp],r14d
1024 mov ecx,esi
1025 xor edx,DWORD[16+rsp]
1026 xor eax,r12d
1027 rol ecx,5
1028 xor edx,DWORD[40+rsp]
1029 lea r13d,[((-899497514))+r13*1+r14]
1030 xor eax,r11d
1031 add r13d,ecx
1032 rol edi,30
1033 add r13d,eax
1034 rol edx,1
1035 xor ebp,DWORD[12+rsp]
1036 mov eax,esi
1037 mov DWORD[8+rsp],edx
1038 mov ecx,r13d
1039 xor ebp,DWORD[20+rsp]
1040 xor eax,r11d
1041 rol ecx,5
1042 xor ebp,DWORD[44+rsp]
1043 lea r12d,[((-899497514))+r12*1+rdx]
1044 xor eax,edi
1045 add r12d,ecx
1046 rol esi,30
1047 add r12d,eax
1048 rol ebp,1
1049 xor r14d,DWORD[16+rsp]
1050 mov eax,r13d
1051 mov DWORD[12+rsp],ebp
1052 mov ecx,r12d
1053 xor r14d,DWORD[24+rsp]
1054 xor eax,edi
1055 rol ecx,5
1056 xor r14d,DWORD[48+rsp]
1057 lea r11d,[((-899497514))+r11*1+rbp]
1058 xor eax,esi
1059 add r11d,ecx
1060 rol r13d,30
1061 add r11d,eax
1062 rol r14d,1
1063 xor edx,DWORD[20+rsp]
1064 mov eax,r12d
1065 mov DWORD[16+rsp],r14d
1066 mov ecx,r11d
1067 xor edx,DWORD[28+rsp]
1068 xor eax,esi
1069 rol ecx,5
1070 xor edx,DWORD[52+rsp]
1071 lea edi,[((-899497514))+rdi*1+r14]
1072 xor eax,r13d
1073 add edi,ecx
1074 rol r12d,30
1075 add edi,eax
1076 rol edx,1
1077 xor ebp,DWORD[24+rsp]
1078 mov eax,r11d
1079 mov DWORD[20+rsp],edx
1080 mov ecx,edi
1081 xor ebp,DWORD[32+rsp]
1082 xor eax,r13d
1083 rol ecx,5
1084 xor ebp,DWORD[56+rsp]
1085 lea esi,[((-899497514))+rsi*1+rdx]
1086 xor eax,r12d
1087 add esi,ecx
1088 rol r11d,30
1089 add esi,eax
1090 rol ebp,1
1091 xor r14d,DWORD[28+rsp]
1092 mov eax,edi
1093 mov DWORD[24+rsp],ebp
1094 mov ecx,esi
1095 xor r14d,DWORD[36+rsp]
1096 xor eax,r12d
1097 rol ecx,5
1098 xor r14d,DWORD[60+rsp]
1099 lea r13d,[((-899497514))+r13*1+rbp]
1100 xor eax,r11d
1101 add r13d,ecx
1102 rol edi,30
1103 add r13d,eax
1104 rol r14d,1
1105 xor edx,DWORD[32+rsp]
1106 mov eax,esi
1107 mov DWORD[28+rsp],r14d
1108 mov ecx,r13d
1109 xor edx,DWORD[40+rsp]
1110 xor eax,r11d
1111 rol ecx,5
1112 xor edx,DWORD[rsp]
1113 lea r12d,[((-899497514))+r12*1+r14]
1114 xor eax,edi
1115 add r12d,ecx
1116 rol esi,30
1117 add r12d,eax
1118 rol edx,1
1119 xor ebp,DWORD[36+rsp]
1120 mov eax,r13d
1121
1122 mov ecx,r12d
1123 xor ebp,DWORD[44+rsp]
1124 xor eax,edi
1125 rol ecx,5
1126 xor ebp,DWORD[4+rsp]
1127 lea r11d,[((-899497514))+r11*1+rdx]
1128 xor eax,esi
1129 add r11d,ecx
1130 rol r13d,30
1131 add r11d,eax
1132 rol ebp,1
1133 xor r14d,DWORD[40+rsp]
1134 mov eax,r12d
1135
1136 mov ecx,r11d
1137 xor r14d,DWORD[48+rsp]
1138 xor eax,esi
1139 rol ecx,5
1140 xor r14d,DWORD[8+rsp]
1141 lea edi,[((-899497514))+rdi*1+rbp]
1142 xor eax,r13d
1143 add edi,ecx
1144 rol r12d,30
1145 add edi,eax
1146 rol r14d,1
1147 xor edx,DWORD[44+rsp]
1148 mov eax,r11d
1149
1150 mov ecx,edi
1151 xor edx,DWORD[52+rsp]
1152 xor eax,r13d
1153 rol ecx,5
1154 xor edx,DWORD[12+rsp]
1155 lea esi,[((-899497514))+rsi*1+r14]
1156 xor eax,r12d
1157 add esi,ecx
1158 rol r11d,30
1159 add esi,eax
1160 rol edx,1
1161 xor ebp,DWORD[48+rsp]
1162 mov eax,edi
1163
1164 mov ecx,esi
1165 xor ebp,DWORD[56+rsp]
1166 xor eax,r12d
1167 rol ecx,5
1168 xor ebp,DWORD[16+rsp]
1169 lea r13d,[((-899497514))+r13*1+rdx]
1170 xor eax,r11d
1171 add r13d,ecx
1172 rol edi,30
1173 add r13d,eax
1174 rol ebp,1
1175 xor r14d,DWORD[52+rsp]
1176 mov eax,esi
1177
1178 mov ecx,r13d
1179 xor r14d,DWORD[60+rsp]
1180 xor eax,r11d
1181 rol ecx,5
1182 xor r14d,DWORD[20+rsp]
1183 lea r12d,[((-899497514))+r12*1+rbp]
1184 xor eax,edi
1185 add r12d,ecx
1186 rol esi,30
1187 add r12d,eax
1188 rol r14d,1
1189 xor edx,DWORD[56+rsp]
1190 mov eax,r13d
1191
1192 mov ecx,r12d
1193 xor edx,DWORD[rsp]
1194 xor eax,edi
1195 rol ecx,5
1196 xor edx,DWORD[24+rsp]
1197 lea r11d,[((-899497514))+r11*1+r14]
1198 xor eax,esi
1199 add r11d,ecx
1200 rol r13d,30
1201 add r11d,eax
1202 rol edx,1
1203 xor ebp,DWORD[60+rsp]
1204 mov eax,r12d
1205
1206 mov ecx,r11d
1207 xor ebp,DWORD[4+rsp]
1208 xor eax,esi
1209 rol ecx,5
1210 xor ebp,DWORD[28+rsp]
1211 lea edi,[((-899497514))+rdi*1+rdx]
1212 xor eax,r13d
1213 add edi,ecx
1214 rol r12d,30
1215 add edi,eax
1216 rol ebp,1
1217 mov eax,r11d
1218 mov ecx,edi
1219 xor eax,r13d
1220 lea esi,[((-899497514))+rsi*1+rbp]
1221 rol ecx,5
1222 xor eax,r12d
1223 add esi,ecx
1224 rol r11d,30
1225 add esi,eax
1226 add esi,DWORD[r8]
1227 add edi,DWORD[4+r8]
1228 add r11d,DWORD[8+r8]
1229 add r12d,DWORD[12+r8]
1230 add r13d,DWORD[16+r8]
1231 mov DWORD[r8],esi
1232 mov DWORD[4+r8],edi
1233 mov DWORD[8+r8],r11d
1234 mov DWORD[12+r8],r12d
1235 mov DWORD[16+r8],r13d
1236
1237 sub r10,1
1238 lea r9,[64+r9]
1239 jnz NEAR $L$loop
1240
1241 mov rsi,QWORD[64+rsp]
1242 mov r14,QWORD[((-40))+rsi]
1243 mov r13,QWORD[((-32))+rsi]
1244 mov r12,QWORD[((-24))+rsi]
1245 mov rbp,QWORD[((-16))+rsi]
1246 mov rbx,QWORD[((-8))+rsi]
1247 lea rsp,[rsi]
1248 $L$epilogue:
1249 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1250 mov rsi,QWORD[16+rsp]
1251 DB 0F3h,0C3h ;repret
1252 $L$SEH_end_sha1_block_data_order:
1253
1254 ALIGN 16
1255 sha1_block_data_order_ssse3:
1256 mov QWORD[8+rsp],rdi ;WIN64 prologue
1257 mov QWORD[16+rsp],rsi
1258 mov rax,rsp
1259 $L$SEH_begin_sha1_block_data_order_ssse3:
1260 mov rdi,rcx
1261 mov rsi,rdx
1262 mov rdx,r8
1263
1264
1265 _ssse3_shortcut:
1266 mov r11,rsp
1267 push rbx
1268 push rbp
1269 push r12
1270 push r13
1271 push r14
1272 lea rsp,[((-160))+rsp]
1273 movaps XMMWORD[(-40-96)+r11],xmm6
1274 movaps XMMWORD[(-40-80)+r11],xmm7
1275 movaps XMMWORD[(-40-64)+r11],xmm8
1276 movaps XMMWORD[(-40-48)+r11],xmm9
1277 movaps XMMWORD[(-40-32)+r11],xmm10
1278 movaps XMMWORD[(-40-16)+r11],xmm11
1279 $L$prologue_ssse3:
1280 and rsp,-64
1281 mov r8,rdi
1282 mov r9,rsi
1283 mov r10,rdx
1284
1285 shl r10,6
1286 add r10,r9
1287 lea r14,[((K_XX_XX+64))]
1288
1289 mov eax,DWORD[r8]
1290 mov ebx,DWORD[4+r8]
1291 mov ecx,DWORD[8+r8]
1292 mov edx,DWORD[12+r8]
1293 mov esi,ebx
1294 mov ebp,DWORD[16+r8]
1295 mov edi,ecx
1296 xor edi,edx
1297 and esi,edi
1298
1299 movdqa xmm6,XMMWORD[64+r14]
1300 movdqa xmm9,XMMWORD[((-64))+r14]
1301 movdqu xmm0,XMMWORD[r9]
1302 movdqu xmm1,XMMWORD[16+r9]
1303 movdqu xmm2,XMMWORD[32+r9]
1304 movdqu xmm3,XMMWORD[48+r9]
1305 DB 102,15,56,0,198
1306 DB 102,15,56,0,206
1307 DB 102,15,56,0,214
1308 add r9,64
1309 paddd xmm0,xmm9
1310 DB 102,15,56,0,222
1311 paddd xmm1,xmm9
1312 paddd xmm2,xmm9
1313 movdqa XMMWORD[rsp],xmm0
1314 psubd xmm0,xmm9
1315 movdqa XMMWORD[16+rsp],xmm1
1316 psubd xmm1,xmm9
1317 movdqa XMMWORD[32+rsp],xmm2
1318 psubd xmm2,xmm9
1319 jmp NEAR $L$oop_ssse3
1320 ALIGN 16
1321 $L$oop_ssse3:
1322 ror ebx,2
1323 pshufd xmm4,xmm0,238
1324 xor esi,edx
1325 movdqa xmm8,xmm3
1326 paddd xmm9,xmm3
1327 mov edi,eax
1328 add ebp,DWORD[rsp]
1329 punpcklqdq xmm4,xmm1
1330 xor ebx,ecx
1331 rol eax,5
1332 add ebp,esi
1333 psrldq xmm8,4
1334 and edi,ebx
1335 xor ebx,ecx
1336 pxor xmm4,xmm0
1337 add ebp,eax
1338 ror eax,7
1339 pxor xmm8,xmm2
1340 xor edi,ecx
1341 mov esi,ebp
1342 add edx,DWORD[4+rsp]
1343 pxor xmm4,xmm8
1344 xor eax,ebx
1345 rol ebp,5
1346 movdqa XMMWORD[48+rsp],xmm9
1347 add edx,edi
1348 and esi,eax
1349 movdqa xmm10,xmm4
1350 xor eax,ebx
1351 add edx,ebp
1352 ror ebp,7
1353 movdqa xmm8,xmm4
1354 xor esi,ebx
1355 pslldq xmm10,12
1356 paddd xmm4,xmm4
1357 mov edi,edx
1358 add ecx,DWORD[8+rsp]
1359 psrld xmm8,31
1360 xor ebp,eax
1361 rol edx,5
1362 add ecx,esi
1363 movdqa xmm9,xmm10
1364 and edi,ebp
1365 xor ebp,eax
1366 psrld xmm10,30
1367 add ecx,edx
1368 ror edx,7
1369 por xmm4,xmm8
1370 xor edi,eax
1371 mov esi,ecx
1372 add ebx,DWORD[12+rsp]
1373 pslld xmm9,2
1374 pxor xmm4,xmm10
1375 xor edx,ebp
1376 movdqa xmm10,XMMWORD[((-64))+r14]
1377 rol ecx,5
1378 add ebx,edi
1379 and esi,edx
1380 pxor xmm4,xmm9
1381 xor edx,ebp
1382 add ebx,ecx
1383 ror ecx,7
1384 pshufd xmm5,xmm1,238
1385 xor esi,ebp
1386 movdqa xmm9,xmm4
1387 paddd xmm10,xmm4
1388 mov edi,ebx
1389 add eax,DWORD[16+rsp]
1390 punpcklqdq xmm5,xmm2
1391 xor ecx,edx
1392 rol ebx,5
1393 add eax,esi
1394 psrldq xmm9,4
1395 and edi,ecx
1396 xor ecx,edx
1397 pxor xmm5,xmm1
1398 add eax,ebx
1399 ror ebx,7
1400 pxor xmm9,xmm3
1401 xor edi,edx
1402 mov esi,eax
1403 add ebp,DWORD[20+rsp]
1404 pxor xmm5,xmm9
1405 xor ebx,ecx
1406 rol eax,5
1407 movdqa XMMWORD[rsp],xmm10
1408 add ebp,edi
1409 and esi,ebx
1410 movdqa xmm8,xmm5
1411 xor ebx,ecx
1412 add ebp,eax
1413 ror eax,7
1414 movdqa xmm9,xmm5
1415 xor esi,ecx
1416 pslldq xmm8,12
1417 paddd xmm5,xmm5
1418 mov edi,ebp
1419 add edx,DWORD[24+rsp]
1420 psrld xmm9,31
1421 xor eax,ebx
1422 rol ebp,5
1423 add edx,esi
1424 movdqa xmm10,xmm8
1425 and edi,eax
1426 xor eax,ebx
1427 psrld xmm8,30
1428 add edx,ebp
1429 ror ebp,7
1430 por xmm5,xmm9
1431 xor edi,ebx
1432 mov esi,edx
1433 add ecx,DWORD[28+rsp]
1434 pslld xmm10,2
1435 pxor xmm5,xmm8
1436 xor ebp,eax
1437 movdqa xmm8,XMMWORD[((-32))+r14]
1438 rol edx,5
1439 add ecx,edi
1440 and esi,ebp
1441 pxor xmm5,xmm10
1442 xor ebp,eax
1443 add ecx,edx
1444 ror edx,7
1445 pshufd xmm6,xmm2,238
1446 xor esi,eax
1447 movdqa xmm10,xmm5
1448 paddd xmm8,xmm5
1449 mov edi,ecx
1450 add ebx,DWORD[32+rsp]
1451 punpcklqdq xmm6,xmm3
1452 xor edx,ebp
1453 rol ecx,5
1454 add ebx,esi
1455 psrldq xmm10,4
1456 and edi,edx
1457 xor edx,ebp
1458 pxor xmm6,xmm2
1459 add ebx,ecx
1460 ror ecx,7
1461 pxor xmm10,xmm4
1462 xor edi,ebp
1463 mov esi,ebx
1464 add eax,DWORD[36+rsp]
1465 pxor xmm6,xmm10
1466 xor ecx,edx
1467 rol ebx,5
1468 movdqa XMMWORD[16+rsp],xmm8
1469 add eax,edi
1470 and esi,ecx
1471 movdqa xmm9,xmm6
1472 xor ecx,edx
1473 add eax,ebx
1474 ror ebx,7
1475 movdqa xmm10,xmm6
1476 xor esi,edx
1477 pslldq xmm9,12
1478 paddd xmm6,xmm6
1479 mov edi,eax
1480 add ebp,DWORD[40+rsp]
1481 psrld xmm10,31
1482 xor ebx,ecx
1483 rol eax,5
1484 add ebp,esi
1485 movdqa xmm8,xmm9
1486 and edi,ebx
1487 xor ebx,ecx
1488 psrld xmm9,30
1489 add ebp,eax
1490 ror eax,7
1491 por xmm6,xmm10
1492 xor edi,ecx
1493 mov esi,ebp
1494 add edx,DWORD[44+rsp]
1495 pslld xmm8,2
1496 pxor xmm6,xmm9
1497 xor eax,ebx
1498 movdqa xmm9,XMMWORD[((-32))+r14]
1499 rol ebp,5
1500 add edx,edi
1501 and esi,eax
1502 pxor xmm6,xmm8
1503 xor eax,ebx
1504 add edx,ebp
1505 ror ebp,7
1506 pshufd xmm7,xmm3,238
1507 xor esi,ebx
1508 movdqa xmm8,xmm6
1509 paddd xmm9,xmm6
1510 mov edi,edx
1511 add ecx,DWORD[48+rsp]
1512 punpcklqdq xmm7,xmm4
1513 xor ebp,eax
1514 rol edx,5
1515 add ecx,esi
1516 psrldq xmm8,4
1517 and edi,ebp
1518 xor ebp,eax
1519 pxor xmm7,xmm3
1520 add ecx,edx
1521 ror edx,7
1522 pxor xmm8,xmm5
1523 xor edi,eax
1524 mov esi,ecx
1525 add ebx,DWORD[52+rsp]
1526 pxor xmm7,xmm8
1527 xor edx,ebp
1528 rol ecx,5
1529 movdqa XMMWORD[32+rsp],xmm9
1530 add ebx,edi
1531 and esi,edx
1532 movdqa xmm10,xmm7
1533 xor edx,ebp
1534 add ebx,ecx
1535 ror ecx,7
1536 movdqa xmm8,xmm7
1537 xor esi,ebp
1538 pslldq xmm10,12
1539 paddd xmm7,xmm7
1540 mov edi,ebx
1541 add eax,DWORD[56+rsp]
1542 psrld xmm8,31
1543 xor ecx,edx
1544 rol ebx,5
1545 add eax,esi
1546 movdqa xmm9,xmm10
1547 and edi,ecx
1548 xor ecx,edx
1549 psrld xmm10,30
1550 add eax,ebx
1551 ror ebx,7
1552 por xmm7,xmm8
1553 xor edi,edx
1554 mov esi,eax
1555 add ebp,DWORD[60+rsp]
1556 pslld xmm9,2
1557 pxor xmm7,xmm10
1558 xor ebx,ecx
1559 movdqa xmm10,XMMWORD[((-32))+r14]
1560 rol eax,5
1561 add ebp,edi
1562 and esi,ebx
1563 pxor xmm7,xmm9
1564 pshufd xmm9,xmm6,238
1565 xor ebx,ecx
1566 add ebp,eax
1567 ror eax,7
1568 pxor xmm0,xmm4
1569 xor esi,ecx
1570 mov edi,ebp
1571 add edx,DWORD[rsp]
1572 punpcklqdq xmm9,xmm7
1573 xor eax,ebx
1574 rol ebp,5
1575 pxor xmm0,xmm1
1576 add edx,esi
1577 and edi,eax
1578 movdqa xmm8,xmm10
1579 xor eax,ebx
1580 paddd xmm10,xmm7
1581 add edx,ebp
1582 pxor xmm0,xmm9
1583 ror ebp,7
1584 xor edi,ebx
1585 mov esi,edx
1586 add ecx,DWORD[4+rsp]
1587 movdqa xmm9,xmm0
1588 xor ebp,eax
1589 rol edx,5
1590 movdqa XMMWORD[48+rsp],xmm10
1591 add ecx,edi
1592 and esi,ebp
1593 xor ebp,eax
1594 pslld xmm0,2
1595 add ecx,edx
1596 ror edx,7
1597 psrld xmm9,30
1598 xor esi,eax
1599 mov edi,ecx
1600 add ebx,DWORD[8+rsp]
1601 por xmm0,xmm9
1602 xor edx,ebp
1603 rol ecx,5
1604 pshufd xmm10,xmm7,238
1605 add ebx,esi
1606 and edi,edx
1607 xor edx,ebp
1608 add ebx,ecx
1609 add eax,DWORD[12+rsp]
1610 xor edi,ebp
1611 mov esi,ebx
1612 rol ebx,5
1613 add eax,edi
1614 xor esi,edx
1615 ror ecx,7
1616 add eax,ebx
1617 pxor xmm1,xmm5
1618 add ebp,DWORD[16+rsp]
1619 xor esi,ecx
1620 punpcklqdq xmm10,xmm0
1621 mov edi,eax
1622 rol eax,5
1623 pxor xmm1,xmm2
1624 add ebp,esi
1625 xor edi,ecx
1626 movdqa xmm9,xmm8
1627 ror ebx,7
1628 paddd xmm8,xmm0
1629 add ebp,eax
1630 pxor xmm1,xmm10
1631 add edx,DWORD[20+rsp]
1632 xor edi,ebx
1633 mov esi,ebp
1634 rol ebp,5
1635 movdqa xmm10,xmm1
1636 add edx,edi
1637 xor esi,ebx
1638 movdqa XMMWORD[rsp],xmm8
1639 ror eax,7
1640 add edx,ebp
1641 add ecx,DWORD[24+rsp]
1642 pslld xmm1,2
1643 xor esi,eax
1644 mov edi,edx
1645 psrld xmm10,30
1646 rol edx,5
1647 add ecx,esi
1648 xor edi,eax
1649 ror ebp,7
1650 por xmm1,xmm10
1651 add ecx,edx
1652 add ebx,DWORD[28+rsp]
1653 pshufd xmm8,xmm0,238
1654 xor edi,ebp
1655 mov esi,ecx
1656 rol ecx,5
1657 add ebx,edi
1658 xor esi,ebp
1659 ror edx,7
1660 add ebx,ecx
1661 pxor xmm2,xmm6
1662 add eax,DWORD[32+rsp]
1663 xor esi,edx
1664 punpcklqdq xmm8,xmm1
1665 mov edi,ebx
1666 rol ebx,5
1667 pxor xmm2,xmm3
1668 add eax,esi
1669 xor edi,edx
1670 movdqa xmm10,XMMWORD[r14]
1671 ror ecx,7
1672 paddd xmm9,xmm1
1673 add eax,ebx
1674 pxor xmm2,xmm8
1675 add ebp,DWORD[36+rsp]
1676 xor edi,ecx
1677 mov esi,eax
1678 rol eax,5
1679 movdqa xmm8,xmm2
1680 add ebp,edi
1681 xor esi,ecx
1682 movdqa XMMWORD[16+rsp],xmm9
1683 ror ebx,7
1684 add ebp,eax
1685 add edx,DWORD[40+rsp]
1686 pslld xmm2,2
1687 xor esi,ebx
1688 mov edi,ebp
1689 psrld xmm8,30
1690 rol ebp,5
1691 add edx,esi
1692 xor edi,ebx
1693 ror eax,7
1694 por xmm2,xmm8
1695 add edx,ebp
1696 add ecx,DWORD[44+rsp]
1697 pshufd xmm9,xmm1,238
1698 xor edi,eax
1699 mov esi,edx
1700 rol edx,5
1701 add ecx,edi
1702 xor esi,eax
1703 ror ebp,7
1704 add ecx,edx
1705 pxor xmm3,xmm7
1706 add ebx,DWORD[48+rsp]
1707 xor esi,ebp
1708 punpcklqdq xmm9,xmm2
1709 mov edi,ecx
1710 rol ecx,5
1711 pxor xmm3,xmm4
1712 add ebx,esi
1713 xor edi,ebp
1714 movdqa xmm8,xmm10
1715 ror edx,7
1716 paddd xmm10,xmm2
1717 add ebx,ecx
1718 pxor xmm3,xmm9
1719 add eax,DWORD[52+rsp]
1720 xor edi,edx
1721 mov esi,ebx
1722 rol ebx,5
1723 movdqa xmm9,xmm3
1724 add eax,edi
1725 xor esi,edx
1726 movdqa XMMWORD[32+rsp],xmm10
1727 ror ecx,7
1728 add eax,ebx
1729 add ebp,DWORD[56+rsp]
1730 pslld xmm3,2
1731 xor esi,ecx
1732 mov edi,eax
1733 psrld xmm9,30
1734 rol eax,5
1735 add ebp,esi
1736 xor edi,ecx
1737 ror ebx,7
1738 por xmm3,xmm9
1739 add ebp,eax
1740 add edx,DWORD[60+rsp]
1741 pshufd xmm10,xmm2,238
1742 xor edi,ebx
1743 mov esi,ebp
1744 rol ebp,5
1745 add edx,edi
1746 xor esi,ebx
1747 ror eax,7
1748 add edx,ebp
1749 pxor xmm4,xmm0
1750 add ecx,DWORD[rsp]
1751 xor esi,eax
1752 punpcklqdq xmm10,xmm3
1753 mov edi,edx
1754 rol edx,5
1755 pxor xmm4,xmm5
1756 add ecx,esi
1757 xor edi,eax
1758 movdqa xmm9,xmm8
1759 ror ebp,7
1760 paddd xmm8,xmm3
1761 add ecx,edx
1762 pxor xmm4,xmm10
1763 add ebx,DWORD[4+rsp]
1764 xor edi,ebp
1765 mov esi,ecx
1766 rol ecx,5
1767 movdqa xmm10,xmm4
1768 add ebx,edi
1769 xor esi,ebp
1770 movdqa XMMWORD[48+rsp],xmm8
1771 ror edx,7
1772 add ebx,ecx
1773 add eax,DWORD[8+rsp]
1774 pslld xmm4,2
1775 xor esi,edx
1776 mov edi,ebx
1777 psrld xmm10,30
1778 rol ebx,5
1779 add eax,esi
1780 xor edi,edx
1781 ror ecx,7
1782 por xmm4,xmm10
1783 add eax,ebx
1784 add ebp,DWORD[12+rsp]
1785 pshufd xmm8,xmm3,238
1786 xor edi,ecx
1787 mov esi,eax
1788 rol eax,5
1789 add ebp,edi
1790 xor esi,ecx
1791 ror ebx,7
1792 add ebp,eax
1793 pxor xmm5,xmm1
1794 add edx,DWORD[16+rsp]
1795 xor esi,ebx
1796 punpcklqdq xmm8,xmm4
1797 mov edi,ebp
1798 rol ebp,5
1799 pxor xmm5,xmm6
1800 add edx,esi
1801 xor edi,ebx
1802 movdqa xmm10,xmm9
1803 ror eax,7
1804 paddd xmm9,xmm4
1805 add edx,ebp
1806 pxor xmm5,xmm8
1807 add ecx,DWORD[20+rsp]
1808 xor edi,eax
1809 mov esi,edx
1810 rol edx,5
1811 movdqa xmm8,xmm5
1812 add ecx,edi
1813 xor esi,eax
1814 movdqa XMMWORD[rsp],xmm9
1815 ror ebp,7
1816 add ecx,edx
1817 add ebx,DWORD[24+rsp]
1818 pslld xmm5,2
1819 xor esi,ebp
1820 mov edi,ecx
1821 psrld xmm8,30
1822 rol ecx,5
1823 add ebx,esi
1824 xor edi,ebp
1825 ror edx,7
1826 por xmm5,xmm8
1827 add ebx,ecx
1828 add eax,DWORD[28+rsp]
1829 pshufd xmm9,xmm4,238
1830 ror ecx,7
1831 mov esi,ebx
1832 xor edi,edx
1833 rol ebx,5
1834 add eax,edi
1835 xor esi,ecx
1836 xor ecx,edx
1837 add eax,ebx
1838 pxor xmm6,xmm2
1839 add ebp,DWORD[32+rsp]
1840 and esi,ecx
1841 xor ecx,edx
1842 ror ebx,7
1843 punpcklqdq xmm9,xmm5
1844 mov edi,eax
1845 xor esi,ecx
1846 pxor xmm6,xmm7
1847 rol eax,5
1848 add ebp,esi
1849 movdqa xmm8,xmm10
1850 xor edi,ebx
1851 paddd xmm10,xmm5
1852 xor ebx,ecx
1853 pxor xmm6,xmm9
1854 add ebp,eax
1855 add edx,DWORD[36+rsp]
1856 and edi,ebx
1857 xor ebx,ecx
1858 ror eax,7
1859 movdqa xmm9,xmm6
1860 mov esi,ebp
1861 xor edi,ebx
1862 movdqa XMMWORD[16+rsp],xmm10
1863 rol ebp,5
1864 add edx,edi
1865 xor esi,eax
1866 pslld xmm6,2
1867 xor eax,ebx
1868 add edx,ebp
1869 psrld xmm9,30
1870 add ecx,DWORD[40+rsp]
1871 and esi,eax
1872 xor eax,ebx
1873 por xmm6,xmm9
1874 ror ebp,7
1875 mov edi,edx
1876 xor esi,eax
1877 rol edx,5
1878 pshufd xmm10,xmm5,238
1879 add ecx,esi
1880 xor edi,ebp
1881 xor ebp,eax
1882 add ecx,edx
1883 add ebx,DWORD[44+rsp]
1884 and edi,ebp
1885 xor ebp,eax
1886 ror edx,7
1887 mov esi,ecx
1888 xor edi,ebp
1889 rol ecx,5
1890 add ebx,edi
1891 xor esi,edx
1892 xor edx,ebp
1893 add ebx,ecx
1894 pxor xmm7,xmm3
1895 add eax,DWORD[48+rsp]
1896 and esi,edx
1897 xor edx,ebp
1898 ror ecx,7
1899 punpcklqdq xmm10,xmm6
1900 mov edi,ebx
1901 xor esi,edx
1902 pxor xmm7,xmm0
1903 rol ebx,5
1904 add eax,esi
1905 movdqa xmm9,XMMWORD[32+r14]
1906 xor edi,ecx
1907 paddd xmm8,xmm6
1908 xor ecx,edx
1909 pxor xmm7,xmm10
1910 add eax,ebx
1911 add ebp,DWORD[52+rsp]
1912 and edi,ecx
1913 xor ecx,edx
1914 ror ebx,7
1915 movdqa xmm10,xmm7
1916 mov esi,eax
1917 xor edi,ecx
1918 movdqa XMMWORD[32+rsp],xmm8
1919 rol eax,5
1920 add ebp,edi
1921 xor esi,ebx
1922 pslld xmm7,2
1923 xor ebx,ecx
1924 add ebp,eax
1925 psrld xmm10,30
1926 add edx,DWORD[56+rsp]
1927 and esi,ebx
1928 xor ebx,ecx
1929 por xmm7,xmm10
1930 ror eax,7
1931 mov edi,ebp
1932 xor esi,ebx
1933 rol ebp,5
1934 pshufd xmm8,xmm6,238
1935 add edx,esi
1936 xor edi,eax
1937 xor eax,ebx
1938 add edx,ebp
1939 add ecx,DWORD[60+rsp]
1940 and edi,eax
1941 xor eax,ebx
1942 ror ebp,7
1943 mov esi,edx
1944 xor edi,eax
1945 rol edx,5
1946 add ecx,edi
1947 xor esi,ebp
1948 xor ebp,eax
1949 add ecx,edx
1950 pxor xmm0,xmm4
1951 add ebx,DWORD[rsp]
1952 and esi,ebp
1953 xor ebp,eax
1954 ror edx,7
1955 punpcklqdq xmm8,xmm7
1956 mov edi,ecx
1957 xor esi,ebp
1958 pxor xmm0,xmm1
1959 rol ecx,5
1960 add ebx,esi
1961 movdqa xmm10,xmm9
1962 xor edi,edx
1963 paddd xmm9,xmm7
1964 xor edx,ebp
1965 pxor xmm0,xmm8
1966 add ebx,ecx
1967 add eax,DWORD[4+rsp]
1968 and edi,edx
1969 xor edx,ebp
1970 ror ecx,7
1971 movdqa xmm8,xmm0
1972 mov esi,ebx
1973 xor edi,edx
1974 movdqa XMMWORD[48+rsp],xmm9
1975 rol ebx,5
1976 add eax,edi
1977 xor esi,ecx
1978 pslld xmm0,2
1979 xor ecx,edx
1980 add eax,ebx
1981 psrld xmm8,30
1982 add ebp,DWORD[8+rsp]
1983 and esi,ecx
1984 xor ecx,edx
1985 por xmm0,xmm8
1986 ror ebx,7
1987 mov edi,eax
1988 xor esi,ecx
1989 rol eax,5
1990 pshufd xmm9,xmm7,238
1991 add ebp,esi
1992 xor edi,ebx
1993 xor ebx,ecx
1994 add ebp,eax
1995 add edx,DWORD[12+rsp]
1996 and edi,ebx
1997 xor ebx,ecx
1998 ror eax,7
1999 mov esi,ebp
2000 xor edi,ebx
2001 rol ebp,5
2002 add edx,edi
2003 xor esi,eax
2004 xor eax,ebx
2005 add edx,ebp
2006 pxor xmm1,xmm5
2007 add ecx,DWORD[16+rsp]
2008 and esi,eax
2009 xor eax,ebx
2010 ror ebp,7
2011 punpcklqdq xmm9,xmm0
2012 mov edi,edx
2013 xor esi,eax
2014 pxor xmm1,xmm2
2015 rol edx,5
2016 add ecx,esi
2017 movdqa xmm8,xmm10
2018 xor edi,ebp
2019 paddd xmm10,xmm0
2020 xor ebp,eax
2021 pxor xmm1,xmm9
2022 add ecx,edx
2023 add ebx,DWORD[20+rsp]
2024 and edi,ebp
2025 xor ebp,eax
2026 ror edx,7
2027 movdqa xmm9,xmm1
2028 mov esi,ecx
2029 xor edi,ebp
2030 movdqa XMMWORD[rsp],xmm10
2031 rol ecx,5
2032 add ebx,edi
2033 xor esi,edx
2034 pslld xmm1,2
2035 xor edx,ebp
2036 add ebx,ecx
2037 psrld xmm9,30
2038 add eax,DWORD[24+rsp]
2039 and esi,edx
2040 xor edx,ebp
2041 por xmm1,xmm9
2042 ror ecx,7
2043 mov edi,ebx
2044 xor esi,edx
2045 rol ebx,5
2046 pshufd xmm10,xmm0,238
2047 add eax,esi
2048 xor edi,ecx
2049 xor ecx,edx
2050 add eax,ebx
2051 add ebp,DWORD[28+rsp]
2052 and edi,ecx
2053 xor ecx,edx
2054 ror ebx,7
2055 mov esi,eax
2056 xor edi,ecx
2057 rol eax,5
2058 add ebp,edi
2059 xor esi,ebx
2060 xor ebx,ecx
2061 add ebp,eax
2062 pxor xmm2,xmm6
2063 add edx,DWORD[32+rsp]
2064 and esi,ebx
2065 xor ebx,ecx
2066 ror eax,7
2067 punpcklqdq xmm10,xmm1
2068 mov edi,ebp
2069 xor esi,ebx
2070 pxor xmm2,xmm3
2071 rol ebp,5
2072 add edx,esi
2073 movdqa xmm9,xmm8
2074 xor edi,eax
2075 paddd xmm8,xmm1
2076 xor eax,ebx
2077 pxor xmm2,xmm10
2078 add edx,ebp
2079 add ecx,DWORD[36+rsp]
2080 and edi,eax
2081 xor eax,ebx
2082 ror ebp,7
2083 movdqa xmm10,xmm2
2084 mov esi,edx
2085 xor edi,eax
2086 movdqa XMMWORD[16+rsp],xmm8
2087 rol edx,5
2088 add ecx,edi
2089 xor esi,ebp
2090 pslld xmm2,2
2091 xor ebp,eax
2092 add ecx,edx
2093 psrld xmm10,30
2094 add ebx,DWORD[40+rsp]
2095 and esi,ebp
2096 xor ebp,eax
2097 por xmm2,xmm10
2098 ror edx,7
2099 mov edi,ecx
2100 xor esi,ebp
2101 rol ecx,5
2102 pshufd xmm8,xmm1,238
2103 add ebx,esi
2104 xor edi,edx
2105 xor edx,ebp
2106 add ebx,ecx
2107 add eax,DWORD[44+rsp]
2108 and edi,edx
2109 xor edx,ebp
2110 ror ecx,7
2111 mov esi,ebx
2112 xor edi,edx
2113 rol ebx,5
2114 add eax,edi
2115 xor esi,edx
2116 add eax,ebx
2117 pxor xmm3,xmm7
2118 add ebp,DWORD[48+rsp]
2119 xor esi,ecx
2120 punpcklqdq xmm8,xmm2
2121 mov edi,eax
2122 rol eax,5
2123 pxor xmm3,xmm4
2124 add ebp,esi
2125 xor edi,ecx
2126 movdqa xmm10,xmm9
2127 ror ebx,7
2128 paddd xmm9,xmm2
2129 add ebp,eax
2130 pxor xmm3,xmm8
2131 add edx,DWORD[52+rsp]
2132 xor edi,ebx
2133 mov esi,ebp
2134 rol ebp,5
2135 movdqa xmm8,xmm3
2136 add edx,edi
2137 xor esi,ebx
2138 movdqa XMMWORD[32+rsp],xmm9
2139 ror eax,7
2140 add edx,ebp
2141 add ecx,DWORD[56+rsp]
2142 pslld xmm3,2
2143 xor esi,eax
2144 mov edi,edx
2145 psrld xmm8,30
2146 rol edx,5
2147 add ecx,esi
2148 xor edi,eax
2149 ror ebp,7
2150 por xmm3,xmm8
2151 add ecx,edx
2152 add ebx,DWORD[60+rsp]
2153 xor edi,ebp
2154 mov esi,ecx
2155 rol ecx,5
2156 add ebx,edi
2157 xor esi,ebp
2158 ror edx,7
2159 add ebx,ecx
2160 add eax,DWORD[rsp]
2161 xor esi,edx
2162 mov edi,ebx
2163 rol ebx,5
2164 paddd xmm10,xmm3
2165 add eax,esi
2166 xor edi,edx
2167 movdqa XMMWORD[48+rsp],xmm10
2168 ror ecx,7
2169 add eax,ebx
2170 add ebp,DWORD[4+rsp]
2171 xor edi,ecx
2172 mov esi,eax
2173 rol eax,5
2174 add ebp,edi
2175 xor esi,ecx
2176 ror ebx,7
2177 add ebp,eax
2178 add edx,DWORD[8+rsp]
2179 xor esi,ebx
2180 mov edi,ebp
2181 rol ebp,5
2182 add edx,esi
2183 xor edi,ebx
2184 ror eax,7
2185 add edx,ebp
2186 add ecx,DWORD[12+rsp]
2187 xor edi,eax
2188 mov esi,edx
2189 rol edx,5
2190 add ecx,edi
2191 xor esi,eax
2192 ror ebp,7
2193 add ecx,edx
2194 cmp r9,r10
2195 je NEAR $L$done_ssse3
2196 movdqa xmm6,XMMWORD[64+r14]
2197 movdqa xmm9,XMMWORD[((-64))+r14]
2198 movdqu xmm0,XMMWORD[r9]
2199 movdqu xmm1,XMMWORD[16+r9]
2200 movdqu xmm2,XMMWORD[32+r9]
2201 movdqu xmm3,XMMWORD[48+r9]
2202 DB 102,15,56,0,198
2203 add r9,64
2204 add ebx,DWORD[16+rsp]
2205 xor esi,ebp
2206 mov edi,ecx
2207 DB 102,15,56,0,206
2208 rol ecx,5
2209 add ebx,esi
2210 xor edi,ebp
2211 ror edx,7
2212 paddd xmm0,xmm9
2213 add ebx,ecx
2214 add eax,DWORD[20+rsp]
2215 xor edi,edx
2216 mov esi,ebx
2217 movdqa XMMWORD[rsp],xmm0
2218 rol ebx,5
2219 add eax,edi
2220 xor esi,edx
2221 ror ecx,7
2222 psubd xmm0,xmm9
2223 add eax,ebx
2224 add ebp,DWORD[24+rsp]
2225 xor esi,ecx
2226 mov edi,eax
2227 rol eax,5
2228 add ebp,esi
2229 xor edi,ecx
2230 ror ebx,7
2231 add ebp,eax
2232 add edx,DWORD[28+rsp]
2233 xor edi,ebx
2234 mov esi,ebp
2235 rol ebp,5
2236 add edx,edi
2237 xor esi,ebx
2238 ror eax,7
2239 add edx,ebp
2240 add ecx,DWORD[32+rsp]
2241 xor esi,eax
2242 mov edi,edx
2243 DB 102,15,56,0,214
2244 rol edx,5
2245 add ecx,esi
2246 xor edi,eax
2247 ror ebp,7
2248 paddd xmm1,xmm9
2249 add ecx,edx
2250 add ebx,DWORD[36+rsp]
2251 xor edi,ebp
2252 mov esi,ecx
2253 movdqa XMMWORD[16+rsp],xmm1
2254 rol ecx,5
2255 add ebx,edi
2256 xor esi,ebp
2257 ror edx,7
2258 psubd xmm1,xmm9
2259 add ebx,ecx
2260 add eax,DWORD[40+rsp]
2261 xor esi,edx
2262 mov edi,ebx
2263 rol ebx,5
2264 add eax,esi
2265 xor edi,edx
2266 ror ecx,7
2267 add eax,ebx
2268 add ebp,DWORD[44+rsp]
2269 xor edi,ecx
2270 mov esi,eax
2271 rol eax,5
2272 add ebp,edi
2273 xor esi,ecx
2274 ror ebx,7
2275 add ebp,eax
2276 add edx,DWORD[48+rsp]
2277 xor esi,ebx
2278 mov edi,ebp
2279 DB 102,15,56,0,222
2280 rol ebp,5
2281 add edx,esi
2282 xor edi,ebx
2283 ror eax,7
2284 paddd xmm2,xmm9
2285 add edx,ebp
2286 add ecx,DWORD[52+rsp]
2287 xor edi,eax
2288 mov esi,edx
2289 movdqa XMMWORD[32+rsp],xmm2
2290 rol edx,5
2291 add ecx,edi
2292 xor esi,eax
2293 ror ebp,7
2294 psubd xmm2,xmm9
2295 add ecx,edx
2296 add ebx,DWORD[56+rsp]
2297 xor esi,ebp
2298 mov edi,ecx
2299 rol ecx,5
2300 add ebx,esi
2301 xor edi,ebp
2302 ror edx,7
2303 add ebx,ecx
2304 add eax,DWORD[60+rsp]
2305 xor edi,edx
2306 mov esi,ebx
2307 rol ebx,5
2308 add eax,edi
2309 ror ecx,7
2310 add eax,ebx
2311 add eax,DWORD[r8]
2312 add esi,DWORD[4+r8]
2313 add ecx,DWORD[8+r8]
2314 add edx,DWORD[12+r8]
2315 mov DWORD[r8],eax
2316 add ebp,DWORD[16+r8]
2317 mov DWORD[4+r8],esi
2318 mov ebx,esi
2319 mov DWORD[8+r8],ecx
2320 mov edi,ecx
2321 mov DWORD[12+r8],edx
2322 xor edi,edx
2323 mov DWORD[16+r8],ebp
2324 and esi,edi
2325 jmp NEAR $L$oop_ssse3
2326
2327 ALIGN 16
2328 $L$done_ssse3:
2329 add ebx,DWORD[16+rsp]
2330 xor esi,ebp
2331 mov edi,ecx
2332 rol ecx,5
2333 add ebx,esi
2334 xor edi,ebp
2335 ror edx,7
2336 add ebx,ecx
2337 add eax,DWORD[20+rsp]
2338 xor edi,edx
2339 mov esi,ebx
2340 rol ebx,5
2341 add eax,edi
2342 xor esi,edx
2343 ror ecx,7
2344 add eax,ebx
2345 add ebp,DWORD[24+rsp]
2346 xor esi,ecx
2347 mov edi,eax
2348 rol eax,5
2349 add ebp,esi
2350 xor edi,ecx
2351 ror ebx,7
2352 add ebp,eax
2353 add edx,DWORD[28+rsp]
2354 xor edi,ebx
2355 mov esi,ebp
2356 rol ebp,5
2357 add edx,edi
2358 xor esi,ebx
2359 ror eax,7
2360 add edx,ebp
2361 add ecx,DWORD[32+rsp]
2362 xor esi,eax
2363 mov edi,edx
2364 rol edx,5
2365 add ecx,esi
2366 xor edi,eax
2367 ror ebp,7
2368 add ecx,edx
2369 add ebx,DWORD[36+rsp]
2370 xor edi,ebp
2371 mov esi,ecx
2372 rol ecx,5
2373 add ebx,edi
2374 xor esi,ebp
2375 ror edx,7
2376 add ebx,ecx
2377 add eax,DWORD[40+rsp]
2378 xor esi,edx
2379 mov edi,ebx
2380 rol ebx,5
2381 add eax,esi
2382 xor edi,edx
2383 ror ecx,7
2384 add eax,ebx
2385 add ebp,DWORD[44+rsp]
2386 xor edi,ecx
2387 mov esi,eax
2388 rol eax,5
2389 add ebp,edi
2390 xor esi,ecx
2391 ror ebx,7
2392 add ebp,eax
2393 add edx,DWORD[48+rsp]
2394 xor esi,ebx
2395 mov edi,ebp
2396 rol ebp,5
2397 add edx,esi
2398 xor edi,ebx
2399 ror eax,7
2400 add edx,ebp
2401 add ecx,DWORD[52+rsp]
2402 xor edi,eax
2403 mov esi,edx
2404 rol edx,5
2405 add ecx,edi
2406 xor esi,eax
2407 ror ebp,7
2408 add ecx,edx
2409 add ebx,DWORD[56+rsp]
2410 xor esi,ebp
2411 mov edi,ecx
2412 rol ecx,5
2413 add ebx,esi
2414 xor edi,ebp
2415 ror edx,7
2416 add ebx,ecx
2417 add eax,DWORD[60+rsp]
2418 xor edi,edx
2419 mov esi,ebx
2420 rol ebx,5
2421 add eax,edi
2422 ror ecx,7
2423 add eax,ebx
2424 add eax,DWORD[r8]
2425 add esi,DWORD[4+r8]
2426 add ecx,DWORD[8+r8]
2427 mov DWORD[r8],eax
2428 add edx,DWORD[12+r8]
2429 mov DWORD[4+r8],esi
2430 add ebp,DWORD[16+r8]
2431 mov DWORD[8+r8],ecx
2432 mov DWORD[12+r8],edx
2433 mov DWORD[16+r8],ebp
2434 movaps xmm6,XMMWORD[((-40-96))+r11]
2435 movaps xmm7,XMMWORD[((-40-80))+r11]
2436 movaps xmm8,XMMWORD[((-40-64))+r11]
2437 movaps xmm9,XMMWORD[((-40-48))+r11]
2438 movaps xmm10,XMMWORD[((-40-32))+r11]
2439 movaps xmm11,XMMWORD[((-40-16))+r11]
2440 mov r14,QWORD[((-40))+r11]
2441 mov r13,QWORD[((-32))+r11]
2442 mov r12,QWORD[((-24))+r11]
2443 mov rbp,QWORD[((-16))+r11]
2444 mov rbx,QWORD[((-8))+r11]
2445 lea rsp,[r11]
2446 $L$epilogue_ssse3:
2447 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
2448 mov rsi,QWORD[16+rsp]
2449 DB 0F3h,0C3h ;repret
2450 $L$SEH_end_sha1_block_data_order_ssse3:
2451
2452 ALIGN 16
2453 sha1_block_data_order_avx:
2454 mov QWORD[8+rsp],rdi ;WIN64 prologue
2455 mov QWORD[16+rsp],rsi
2456 mov rax,rsp
2457 $L$SEH_begin_sha1_block_data_order_avx:
2458 mov rdi,rcx
2459 mov rsi,rdx
2460 mov rdx,r8
2461
2462
2463 _avx_shortcut:
2464 mov r11,rsp
2465 push rbx
2466 push rbp
2467 push r12
2468 push r13
2469 push r14
2470 lea rsp,[((-160))+rsp]
2471 vzeroupper
2472 vmovaps XMMWORD[(-40-96)+r11],xmm6
2473 vmovaps XMMWORD[(-40-80)+r11],xmm7
2474 vmovaps XMMWORD[(-40-64)+r11],xmm8
2475 vmovaps XMMWORD[(-40-48)+r11],xmm9
2476 vmovaps XMMWORD[(-40-32)+r11],xmm10
2477 vmovaps XMMWORD[(-40-16)+r11],xmm11
2478 $L$prologue_avx:
2479 and rsp,-64
2480 mov r8,rdi
2481 mov r9,rsi
2482 mov r10,rdx
2483
2484 shl r10,6
2485 add r10,r9
2486 lea r14,[((K_XX_XX+64))]
2487
2488 mov eax,DWORD[r8]
2489 mov ebx,DWORD[4+r8]
2490 mov ecx,DWORD[8+r8]
2491 mov edx,DWORD[12+r8]
2492 mov esi,ebx
2493 mov ebp,DWORD[16+r8]
2494 mov edi,ecx
2495 xor edi,edx
2496 and esi,edi
2497
2498 vmovdqa xmm6,XMMWORD[64+r14]
2499 vmovdqa xmm11,XMMWORD[((-64))+r14]
2500 vmovdqu xmm0,XMMWORD[r9]
2501 vmovdqu xmm1,XMMWORD[16+r9]
2502 vmovdqu xmm2,XMMWORD[32+r9]
2503 vmovdqu xmm3,XMMWORD[48+r9]
2504 vpshufb xmm0,xmm0,xmm6
2505 add r9,64
2506 vpshufb xmm1,xmm1,xmm6
2507 vpshufb xmm2,xmm2,xmm6
2508 vpshufb xmm3,xmm3,xmm6
2509 vpaddd xmm4,xmm0,xmm11
2510 vpaddd xmm5,xmm1,xmm11
2511 vpaddd xmm6,xmm2,xmm11
2512 vmovdqa XMMWORD[rsp],xmm4
2513 vmovdqa XMMWORD[16+rsp],xmm5
2514 vmovdqa XMMWORD[32+rsp],xmm6
2515 jmp NEAR $L$oop_avx
2516 ALIGN 16
2517 $L$oop_avx:
2518 shrd ebx,ebx,2
2519 xor esi,edx
2520 vpalignr xmm4,xmm1,xmm0,8
2521 mov edi,eax
2522 add ebp,DWORD[rsp]
2523 vpaddd xmm9,xmm11,xmm3
2524 xor ebx,ecx
2525 shld eax,eax,5
2526 vpsrldq xmm8,xmm3,4
2527 add ebp,esi
2528 and edi,ebx
2529 vpxor xmm4,xmm4,xmm0
2530 xor ebx,ecx
2531 add ebp,eax
2532 vpxor xmm8,xmm8,xmm2
2533 shrd eax,eax,7
2534 xor edi,ecx
2535 mov esi,ebp
2536 add edx,DWORD[4+rsp]
2537 vpxor xmm4,xmm4,xmm8
2538 xor eax,ebx
2539 shld ebp,ebp,5
2540 vmovdqa XMMWORD[48+rsp],xmm9
2541 add edx,edi
2542 and esi,eax
2543 vpsrld xmm8,xmm4,31
2544 xor eax,ebx
2545 add edx,ebp
2546 shrd ebp,ebp,7
2547 xor esi,ebx
2548 vpslldq xmm10,xmm4,12
2549 vpaddd xmm4,xmm4,xmm4
2550 mov edi,edx
2551 add ecx,DWORD[8+rsp]
2552 xor ebp,eax
2553 shld edx,edx,5
2554 vpsrld xmm9,xmm10,30
2555 vpor xmm4,xmm4,xmm8
2556 add ecx,esi
2557 and edi,ebp
2558 xor ebp,eax
2559 add ecx,edx
2560 vpslld xmm10,xmm10,2
2561 vpxor xmm4,xmm4,xmm9
2562 shrd edx,edx,7
2563 xor edi,eax
2564 mov esi,ecx
2565 add ebx,DWORD[12+rsp]
2566 vpxor xmm4,xmm4,xmm10
2567 xor edx,ebp
2568 shld ecx,ecx,5
2569 add ebx,edi
2570 and esi,edx
2571 xor edx,ebp
2572 add ebx,ecx
2573 shrd ecx,ecx,7
2574 xor esi,ebp
2575 vpalignr xmm5,xmm2,xmm1,8
2576 mov edi,ebx
2577 add eax,DWORD[16+rsp]
2578 vpaddd xmm9,xmm11,xmm4
2579 xor ecx,edx
2580 shld ebx,ebx,5
2581 vpsrldq xmm8,xmm4,4
2582 add eax,esi
2583 and edi,ecx
2584 vpxor xmm5,xmm5,xmm1
2585 xor ecx,edx
2586 add eax,ebx
2587 vpxor xmm8,xmm8,xmm3
2588 shrd ebx,ebx,7
2589 xor edi,edx
2590 mov esi,eax
2591 add ebp,DWORD[20+rsp]
2592 vpxor xmm5,xmm5,xmm8
2593 xor ebx,ecx
2594 shld eax,eax,5
2595 vmovdqa XMMWORD[rsp],xmm9
2596 add ebp,edi
2597 and esi,ebx
2598 vpsrld xmm8,xmm5,31
2599 xor ebx,ecx
2600 add ebp,eax
2601 shrd eax,eax,7
2602 xor esi,ecx
2603 vpslldq xmm10,xmm5,12
2604 vpaddd xmm5,xmm5,xmm5
2605 mov edi,ebp
2606 add edx,DWORD[24+rsp]
2607 xor eax,ebx
2608 shld ebp,ebp,5
2609 vpsrld xmm9,xmm10,30
2610 vpor xmm5,xmm5,xmm8
2611 add edx,esi
2612 and edi,eax
2613 xor eax,ebx
2614 add edx,ebp
2615 vpslld xmm10,xmm10,2
2616 vpxor xmm5,xmm5,xmm9
2617 shrd ebp,ebp,7
2618 xor edi,ebx
2619 mov esi,edx
2620 add ecx,DWORD[28+rsp]
2621 vpxor xmm5,xmm5,xmm10
2622 xor ebp,eax
2623 shld edx,edx,5
2624 vmovdqa xmm11,XMMWORD[((-32))+r14]
2625 add ecx,edi
2626 and esi,ebp
2627 xor ebp,eax
2628 add ecx,edx
2629 shrd edx,edx,7
2630 xor esi,eax
2631 vpalignr xmm6,xmm3,xmm2,8
2632 mov edi,ecx
2633 add ebx,DWORD[32+rsp]
2634 vpaddd xmm9,xmm11,xmm5
2635 xor edx,ebp
2636 shld ecx,ecx,5
2637 vpsrldq xmm8,xmm5,4
2638 add ebx,esi
2639 and edi,edx
2640 vpxor xmm6,xmm6,xmm2
2641 xor edx,ebp
2642 add ebx,ecx
2643 vpxor xmm8,xmm8,xmm4
2644 shrd ecx,ecx,7
2645 xor edi,ebp
2646 mov esi,ebx
2647 add eax,DWORD[36+rsp]
2648 vpxor xmm6,xmm6,xmm8
2649 xor ecx,edx
2650 shld ebx,ebx,5
2651 vmovdqa XMMWORD[16+rsp],xmm9
2652 add eax,edi
2653 and esi,ecx
2654 vpsrld xmm8,xmm6,31
2655 xor ecx,edx
2656 add eax,ebx
2657 shrd ebx,ebx,7
2658 xor esi,edx
2659 vpslldq xmm10,xmm6,12
2660 vpaddd xmm6,xmm6,xmm6
2661 mov edi,eax
2662 add ebp,DWORD[40+rsp]
2663 xor ebx,ecx
2664 shld eax,eax,5
2665 vpsrld xmm9,xmm10,30
2666 vpor xmm6,xmm6,xmm8
2667 add ebp,esi
2668 and edi,ebx
2669 xor ebx,ecx
2670 add ebp,eax
2671 vpslld xmm10,xmm10,2
2672 vpxor xmm6,xmm6,xmm9
2673 shrd eax,eax,7
2674 xor edi,ecx
2675 mov esi,ebp
2676 add edx,DWORD[44+rsp]
2677 vpxor xmm6,xmm6,xmm10
2678 xor eax,ebx
2679 shld ebp,ebp,5
2680 add edx,edi
2681 and esi,eax
2682 xor eax,ebx
2683 add edx,ebp
2684 shrd ebp,ebp,7
2685 xor esi,ebx
2686 vpalignr xmm7,xmm4,xmm3,8
2687 mov edi,edx
2688 add ecx,DWORD[48+rsp]
2689 vpaddd xmm9,xmm11,xmm6
2690 xor ebp,eax
2691 shld edx,edx,5
2692 vpsrldq xmm8,xmm6,4
2693 add ecx,esi
2694 and edi,ebp
2695 vpxor xmm7,xmm7,xmm3
2696 xor ebp,eax
2697 add ecx,edx
2698 vpxor xmm8,xmm8,xmm5
2699 shrd edx,edx,7
2700 xor edi,eax
2701 mov esi,ecx
2702 add ebx,DWORD[52+rsp]
2703 vpxor xmm7,xmm7,xmm8
2704 xor edx,ebp
2705 shld ecx,ecx,5
2706 vmovdqa XMMWORD[32+rsp],xmm9
2707 add ebx,edi
2708 and esi,edx
2709 vpsrld xmm8,xmm7,31
2710 xor edx,ebp
2711 add ebx,ecx
2712 shrd ecx,ecx,7
2713 xor esi,ebp
2714 vpslldq xmm10,xmm7,12
2715 vpaddd xmm7,xmm7,xmm7
2716 mov edi,ebx
2717 add eax,DWORD[56+rsp]
2718 xor ecx,edx
2719 shld ebx,ebx,5
2720 vpsrld xmm9,xmm10,30
2721 vpor xmm7,xmm7,xmm8
2722 add eax,esi
2723 and edi,ecx
2724 xor ecx,edx
2725 add eax,ebx
2726 vpslld xmm10,xmm10,2
2727 vpxor xmm7,xmm7,xmm9
2728 shrd ebx,ebx,7
2729 xor edi,edx
2730 mov esi,eax
2731 add ebp,DWORD[60+rsp]
2732 vpxor xmm7,xmm7,xmm10
2733 xor ebx,ecx
2734 shld eax,eax,5
2735 add ebp,edi
2736 and esi,ebx
2737 xor ebx,ecx
2738 add ebp,eax
2739 vpalignr xmm8,xmm7,xmm6,8
2740 vpxor xmm0,xmm0,xmm4
2741 shrd eax,eax,7
2742 xor esi,ecx
2743 mov edi,ebp
2744 add edx,DWORD[rsp]
2745 vpxor xmm0,xmm0,xmm1
2746 xor eax,ebx
2747 shld ebp,ebp,5
2748 vpaddd xmm9,xmm11,xmm7
2749 add edx,esi
2750 and edi,eax
2751 vpxor xmm0,xmm0,xmm8
2752 xor eax,ebx
2753 add edx,ebp
2754 shrd ebp,ebp,7
2755 xor edi,ebx
2756 vpsrld xmm8,xmm0,30
2757 vmovdqa XMMWORD[48+rsp],xmm9
2758 mov esi,edx
2759 add ecx,DWORD[4+rsp]
2760 xor ebp,eax
2761 shld edx,edx,5
2762 vpslld xmm0,xmm0,2
2763 add ecx,edi
2764 and esi,ebp
2765 xor ebp,eax
2766 add ecx,edx
2767 shrd edx,edx,7
2768 xor esi,eax
2769 mov edi,ecx
2770 add ebx,DWORD[8+rsp]
2771 vpor xmm0,xmm0,xmm8
2772 xor edx,ebp
2773 shld ecx,ecx,5
2774 add ebx,esi
2775 and edi,edx
2776 xor edx,ebp
2777 add ebx,ecx
2778 add eax,DWORD[12+rsp]
2779 xor edi,ebp
2780 mov esi,ebx
2781 shld ebx,ebx,5
2782 add eax,edi
2783 xor esi,edx
2784 shrd ecx,ecx,7
2785 add eax,ebx
2786 vpalignr xmm8,xmm0,xmm7,8
2787 vpxor xmm1,xmm1,xmm5
2788 add ebp,DWORD[16+rsp]
2789 xor esi,ecx
2790 mov edi,eax
2791 shld eax,eax,5
2792 vpxor xmm1,xmm1,xmm2
2793 add ebp,esi
2794 xor edi,ecx
2795 vpaddd xmm9,xmm11,xmm0
2796 shrd ebx,ebx,7
2797 add ebp,eax
2798 vpxor xmm1,xmm1,xmm8
2799 add edx,DWORD[20+rsp]
2800 xor edi,ebx
2801 mov esi,ebp
2802 shld ebp,ebp,5
2803 vpsrld xmm8,xmm1,30
2804 vmovdqa XMMWORD[rsp],xmm9
2805 add edx,edi
2806 xor esi,ebx
2807 shrd eax,eax,7
2808 add edx,ebp
2809 vpslld xmm1,xmm1,2
2810 add ecx,DWORD[24+rsp]
2811 xor esi,eax
2812 mov edi,edx
2813 shld edx,edx,5
2814 add ecx,esi
2815 xor edi,eax
2816 shrd ebp,ebp,7
2817 add ecx,edx
2818 vpor xmm1,xmm1,xmm8
2819 add ebx,DWORD[28+rsp]
2820 xor edi,ebp
2821 mov esi,ecx
2822 shld ecx,ecx,5
2823 add ebx,edi
2824 xor esi,ebp
2825 shrd edx,edx,7
2826 add ebx,ecx
2827 vpalignr xmm8,xmm1,xmm0,8
2828 vpxor xmm2,xmm2,xmm6
2829 add eax,DWORD[32+rsp]
2830 xor esi,edx
2831 mov edi,ebx
2832 shld ebx,ebx,5
2833 vpxor xmm2,xmm2,xmm3
2834 add eax,esi
2835 xor edi,edx
2836 vpaddd xmm9,xmm11,xmm1
2837 vmovdqa xmm11,XMMWORD[r14]
2838 shrd ecx,ecx,7
2839 add eax,ebx
2840 vpxor xmm2,xmm2,xmm8
2841 add ebp,DWORD[36+rsp]
2842 xor edi,ecx
2843 mov esi,eax
2844 shld eax,eax,5
2845 vpsrld xmm8,xmm2,30
2846 vmovdqa XMMWORD[16+rsp],xmm9
2847 add ebp,edi
2848 xor esi,ecx
2849 shrd ebx,ebx,7
2850 add ebp,eax
2851 vpslld xmm2,xmm2,2
2852 add edx,DWORD[40+rsp]
2853 xor esi,ebx
2854 mov edi,ebp
2855 shld ebp,ebp,5
2856 add edx,esi
2857 xor edi,ebx
2858 shrd eax,eax,7
2859 add edx,ebp
2860 vpor xmm2,xmm2,xmm8
2861 add ecx,DWORD[44+rsp]
2862 xor edi,eax
2863 mov esi,edx
2864 shld edx,edx,5
2865 add ecx,edi
2866 xor esi,eax
2867 shrd ebp,ebp,7
2868 add ecx,edx
2869 vpalignr xmm8,xmm2,xmm1,8
2870 vpxor xmm3,xmm3,xmm7
2871 add ebx,DWORD[48+rsp]
2872 xor esi,ebp
2873 mov edi,ecx
2874 shld ecx,ecx,5
2875 vpxor xmm3,xmm3,xmm4
2876 add ebx,esi
2877 xor edi,ebp
2878 vpaddd xmm9,xmm11,xmm2
2879 shrd edx,edx,7
2880 add ebx,ecx
2881 vpxor xmm3,xmm3,xmm8
2882 add eax,DWORD[52+rsp]
2883 xor edi,edx
2884 mov esi,ebx
2885 shld ebx,ebx,5
2886 vpsrld xmm8,xmm3,30
2887 vmovdqa XMMWORD[32+rsp],xmm9
2888 add eax,edi
2889 xor esi,edx
2890 shrd ecx,ecx,7
2891 add eax,ebx
2892 vpslld xmm3,xmm3,2
2893 add ebp,DWORD[56+rsp]
2894 xor esi,ecx
2895 mov edi,eax
2896 shld eax,eax,5
2897 add ebp,esi
2898 xor edi,ecx
2899 shrd ebx,ebx,7
2900 add ebp,eax
2901 vpor xmm3,xmm3,xmm8
2902 add edx,DWORD[60+rsp]
2903 xor edi,ebx
2904 mov esi,ebp
2905 shld ebp,ebp,5
2906 add edx,edi
2907 xor esi,ebx
2908 shrd eax,eax,7
2909 add edx,ebp
2910 vpalignr xmm8,xmm3,xmm2,8
2911 vpxor xmm4,xmm4,xmm0
2912 add ecx,DWORD[rsp]
2913 xor esi,eax
2914 mov edi,edx
2915 shld edx,edx,5
2916 vpxor xmm4,xmm4,xmm5
2917 add ecx,esi
2918 xor edi,eax
2919 vpaddd xmm9,xmm11,xmm3
2920 shrd ebp,ebp,7
2921 add ecx,edx
2922 vpxor xmm4,xmm4,xmm8
2923 add ebx,DWORD[4+rsp]
2924 xor edi,ebp
2925 mov esi,ecx
2926 shld ecx,ecx,5
2927 vpsrld xmm8,xmm4,30
2928 vmovdqa XMMWORD[48+rsp],xmm9
2929 add ebx,edi
2930 xor esi,ebp
2931 shrd edx,edx,7
2932 add ebx,ecx
2933 vpslld xmm4,xmm4,2
2934 add eax,DWORD[8+rsp]
2935 xor esi,edx
2936 mov edi,ebx
2937 shld ebx,ebx,5
2938 add eax,esi
2939 xor edi,edx
2940 shrd ecx,ecx,7
2941 add eax,ebx
2942 vpor xmm4,xmm4,xmm8
2943 add ebp,DWORD[12+rsp]
2944 xor edi,ecx
2945 mov esi,eax
2946 shld eax,eax,5
2947 add ebp,edi
2948 xor esi,ecx
2949 shrd ebx,ebx,7
2950 add ebp,eax
2951 vpalignr xmm8,xmm4,xmm3,8
2952 vpxor xmm5,xmm5,xmm1
2953 add edx,DWORD[16+rsp]
2954 xor esi,ebx
2955 mov edi,ebp
2956 shld ebp,ebp,5
2957 vpxor xmm5,xmm5,xmm6
2958 add edx,esi
2959 xor edi,ebx
2960 vpaddd xmm9,xmm11,xmm4
2961 shrd eax,eax,7
2962 add edx,ebp
2963 vpxor xmm5,xmm5,xmm8
2964 add ecx,DWORD[20+rsp]
2965 xor edi,eax
2966 mov esi,edx
2967 shld edx,edx,5
2968 vpsrld xmm8,xmm5,30
2969 vmovdqa XMMWORD[rsp],xmm9
2970 add ecx,edi
2971 xor esi,eax
2972 shrd ebp,ebp,7
2973 add ecx,edx
2974 vpslld xmm5,xmm5,2
2975 add ebx,DWORD[24+rsp]
2976 xor esi,ebp
2977 mov edi,ecx
2978 shld ecx,ecx,5
2979 add ebx,esi
2980 xor edi,ebp
2981 shrd edx,edx,7
2982 add ebx,ecx
2983 vpor xmm5,xmm5,xmm8
2984 add eax,DWORD[28+rsp]
2985 shrd ecx,ecx,7
2986 mov esi,ebx
2987 xor edi,edx
2988 shld ebx,ebx,5
2989 add eax,edi
2990 xor esi,ecx
2991 xor ecx,edx
2992 add eax,ebx
2993 vpalignr xmm8,xmm5,xmm4,8
2994 vpxor xmm6,xmm6,xmm2
2995 add ebp,DWORD[32+rsp]
2996 and esi,ecx
2997 xor ecx,edx
2998 shrd ebx,ebx,7
2999 vpxor xmm6,xmm6,xmm7
3000 mov edi,eax
3001 xor esi,ecx
3002 vpaddd xmm9,xmm11,xmm5
3003 shld eax,eax,5
3004 add ebp,esi
3005 vpxor xmm6,xmm6,xmm8
3006 xor edi,ebx
3007 xor ebx,ecx
3008 add ebp,eax
3009 add edx,DWORD[36+rsp]
3010 vpsrld xmm8,xmm6,30
3011 vmovdqa XMMWORD[16+rsp],xmm9
3012 and edi,ebx
3013 xor ebx,ecx
3014 shrd eax,eax,7
3015 mov esi,ebp
3016 vpslld xmm6,xmm6,2
3017 xor edi,ebx
3018 shld ebp,ebp,5
3019 add edx,edi
3020 xor esi,eax
3021 xor eax,ebx
3022 add edx,ebp
3023 add ecx,DWORD[40+rsp]
3024 and esi,eax
3025 vpor xmm6,xmm6,xmm8
3026 xor eax,ebx
3027 shrd ebp,ebp,7
3028 mov edi,edx
3029 xor esi,eax
3030 shld edx,edx,5
3031 add ecx,esi
3032 xor edi,ebp
3033 xor ebp,eax
3034 add ecx,edx
3035 add ebx,DWORD[44+rsp]
3036 and edi,ebp
3037 xor ebp,eax
3038 shrd edx,edx,7
3039 mov esi,ecx
3040 xor edi,ebp
3041 shld ecx,ecx,5
3042 add ebx,edi
3043 xor esi,edx
3044 xor edx,ebp
3045 add ebx,ecx
3046 vpalignr xmm8,xmm6,xmm5,8
3047 vpxor xmm7,xmm7,xmm3
3048 add eax,DWORD[48+rsp]
3049 and esi,edx
3050 xor edx,ebp
3051 shrd ecx,ecx,7
3052 vpxor xmm7,xmm7,xmm0
3053 mov edi,ebx
3054 xor esi,edx
3055 vpaddd xmm9,xmm11,xmm6
3056 vmovdqa xmm11,XMMWORD[32+r14]
3057 shld ebx,ebx,5
3058 add eax,esi
3059 vpxor xmm7,xmm7,xmm8
3060 xor edi,ecx
3061 xor ecx,edx
3062 add eax,ebx
3063 add ebp,DWORD[52+rsp]
3064 vpsrld xmm8,xmm7,30
3065 vmovdqa XMMWORD[32+rsp],xmm9
3066 and edi,ecx
3067 xor ecx,edx
3068 shrd ebx,ebx,7
3069 mov esi,eax
3070 vpslld xmm7,xmm7,2
3071 xor edi,ecx
3072 shld eax,eax,5
3073 add ebp,edi
3074 xor esi,ebx
3075 xor ebx,ecx
3076 add ebp,eax
3077 add edx,DWORD[56+rsp]
3078 and esi,ebx
3079 vpor xmm7,xmm7,xmm8
3080 xor ebx,ecx
3081 shrd eax,eax,7
3082 mov edi,ebp
3083 xor esi,ebx
3084 shld ebp,ebp,5
3085 add edx,esi
3086 xor edi,eax
3087 xor eax,ebx
3088 add edx,ebp
3089 add ecx,DWORD[60+rsp]
3090 and edi,eax
3091 xor eax,ebx
3092 shrd ebp,ebp,7
3093 mov esi,edx
3094 xor edi,eax
3095 shld edx,edx,5
3096 add ecx,edi
3097 xor esi,ebp
3098 xor ebp,eax
3099 add ecx,edx
3100 vpalignr xmm8,xmm7,xmm6,8
3101 vpxor xmm0,xmm0,xmm4
3102 add ebx,DWORD[rsp]
3103 and esi,ebp
3104 xor ebp,eax
3105 shrd edx,edx,7
3106 vpxor xmm0,xmm0,xmm1
3107 mov edi,ecx
3108 xor esi,ebp
3109 vpaddd xmm9,xmm11,xmm7
3110 shld ecx,ecx,5
3111 add ebx,esi
3112 vpxor xmm0,xmm0,xmm8
3113 xor edi,edx
3114 xor edx,ebp
3115 add ebx,ecx
3116 add eax,DWORD[4+rsp]
3117 vpsrld xmm8,xmm0,30
3118 vmovdqa XMMWORD[48+rsp],xmm9
3119 and edi,edx
3120 xor edx,ebp
3121 shrd ecx,ecx,7
3122 mov esi,ebx
3123 vpslld xmm0,xmm0,2
3124 xor edi,edx
3125 shld ebx,ebx,5
3126 add eax,edi
3127 xor esi,ecx
3128 xor ecx,edx
3129 add eax,ebx
3130 add ebp,DWORD[8+rsp]
3131 and esi,ecx
3132 vpor xmm0,xmm0,xmm8
3133 xor ecx,edx
3134 shrd ebx,ebx,7
3135 mov edi,eax
3136 xor esi,ecx
3137 shld eax,eax,5
3138 add ebp,esi
3139 xor edi,ebx
3140 xor ebx,ecx
3141 add ebp,eax
3142 add edx,DWORD[12+rsp]
3143 and edi,ebx
3144 xor ebx,ecx
3145 shrd eax,eax,7
3146 mov esi,ebp
3147 xor edi,ebx
3148 shld ebp,ebp,5
3149 add edx,edi
3150 xor esi,eax
3151 xor eax,ebx
3152 add edx,ebp
3153 vpalignr xmm8,xmm0,xmm7,8
3154 vpxor xmm1,xmm1,xmm5
3155 add ecx,DWORD[16+rsp]
3156 and esi,eax
3157 xor eax,ebx
3158 shrd ebp,ebp,7
3159 vpxor xmm1,xmm1,xmm2
3160 mov edi,edx
3161 xor esi,eax
3162 vpaddd xmm9,xmm11,xmm0
3163 shld edx,edx,5
3164 add ecx,esi
3165 vpxor xmm1,xmm1,xmm8
3166 xor edi,ebp
3167 xor ebp,eax
3168 add ecx,edx
3169 add ebx,DWORD[20+rsp]
3170 vpsrld xmm8,xmm1,30
3171 vmovdqa XMMWORD[rsp],xmm9
3172 and edi,ebp
3173 xor ebp,eax
3174 shrd edx,edx,7
3175 mov esi,ecx
3176 vpslld xmm1,xmm1,2
3177 xor edi,ebp
3178 shld ecx,ecx,5
3179 add ebx,edi
3180 xor esi,edx
3181 xor edx,ebp
3182 add ebx,ecx
3183 add eax,DWORD[24+rsp]
3184 and esi,edx
3185 vpor xmm1,xmm1,xmm8
3186 xor edx,ebp
3187 shrd ecx,ecx,7
3188 mov edi,ebx
3189 xor esi,edx
3190 shld ebx,ebx,5
3191 add eax,esi
3192 xor edi,ecx
3193 xor ecx,edx
3194 add eax,ebx
3195 add ebp,DWORD[28+rsp]
3196 and edi,ecx
3197 xor ecx,edx
3198 shrd ebx,ebx,7
3199 mov esi,eax
3200 xor edi,ecx
3201 shld eax,eax,5
3202 add ebp,edi
3203 xor esi,ebx
3204 xor ebx,ecx
3205 add ebp,eax
3206 vpalignr xmm8,xmm1,xmm0,8
3207 vpxor xmm2,xmm2,xmm6
3208 add edx,DWORD[32+rsp]
3209 and esi,ebx
3210 xor ebx,ecx
3211 shrd eax,eax,7
3212 vpxor xmm2,xmm2,xmm3
3213 mov edi,ebp
3214 xor esi,ebx
3215 vpaddd xmm9,xmm11,xmm1
3216 shld ebp,ebp,5
3217 add edx,esi
3218 vpxor xmm2,xmm2,xmm8
3219 xor edi,eax
3220 xor eax,ebx
3221 add edx,ebp
3222 add ecx,DWORD[36+rsp]
3223 vpsrld xmm8,xmm2,30
3224 vmovdqa XMMWORD[16+rsp],xmm9
3225 and edi,eax
3226 xor eax,ebx
3227 shrd ebp,ebp,7
3228 mov esi,edx
3229 vpslld xmm2,xmm2,2
3230 xor edi,eax
3231 shld edx,edx,5
3232 add ecx,edi
3233 xor esi,ebp
3234 xor ebp,eax
3235 add ecx,edx
3236 add ebx,DWORD[40+rsp]
3237 and esi,ebp
3238 vpor xmm2,xmm2,xmm8
3239 xor ebp,eax
3240 shrd edx,edx,7
3241 mov edi,ecx
3242 xor esi,ebp
3243 shld ecx,ecx,5
3244 add ebx,esi
3245 xor edi,edx
3246 xor edx,ebp
3247 add ebx,ecx
3248 add eax,DWORD[44+rsp]
3249 and edi,edx
3250 xor edx,ebp
3251 shrd ecx,ecx,7
3252 mov esi,ebx
3253 xor edi,edx
3254 shld ebx,ebx,5
3255 add eax,edi
3256 xor esi,edx
3257 add eax,ebx
3258 vpalignr xmm8,xmm2,xmm1,8
3259 vpxor xmm3,xmm3,xmm7
3260 add ebp,DWORD[48+rsp]
3261 xor esi,ecx
3262 mov edi,eax
3263 shld eax,eax,5
3264 vpxor xmm3,xmm3,xmm4
3265 add ebp,esi
3266 xor edi,ecx
3267 vpaddd xmm9,xmm11,xmm2
3268 shrd ebx,ebx,7
3269 add ebp,eax
3270 vpxor xmm3,xmm3,xmm8
3271 add edx,DWORD[52+rsp]
3272 xor edi,ebx
3273 mov esi,ebp
3274 shld ebp,ebp,5
3275 vpsrld xmm8,xmm3,30
3276 vmovdqa XMMWORD[32+rsp],xmm9
3277 add edx,edi
3278 xor esi,ebx
3279 shrd eax,eax,7
3280 add edx,ebp
3281 vpslld xmm3,xmm3,2
3282 add ecx,DWORD[56+rsp]
3283 xor esi,eax
3284 mov edi,edx
3285 shld edx,edx,5
3286 add ecx,esi
3287 xor edi,eax
3288 shrd ebp,ebp,7
3289 add ecx,edx
3290 vpor xmm3,xmm3,xmm8
3291 add ebx,DWORD[60+rsp]
3292 xor edi,ebp
3293 mov esi,ecx
3294 shld ecx,ecx,5
3295 add ebx,edi
3296 xor esi,ebp
3297 shrd edx,edx,7
3298 add ebx,ecx
3299 add eax,DWORD[rsp]
3300 vpaddd xmm9,xmm11,xmm3
3301 xor esi,edx
3302 mov edi,ebx
3303 shld ebx,ebx,5
3304 add eax,esi
3305 vmovdqa XMMWORD[48+rsp],xmm9
3306 xor edi,edx
3307 shrd ecx,ecx,7
3308 add eax,ebx
3309 add ebp,DWORD[4+rsp]
3310 xor edi,ecx
3311 mov esi,eax
3312 shld eax,eax,5
3313 add ebp,edi
3314 xor esi,ecx
3315 shrd ebx,ebx,7
3316 add ebp,eax
3317 add edx,DWORD[8+rsp]
3318 xor esi,ebx
3319 mov edi,ebp
3320 shld ebp,ebp,5
3321 add edx,esi
3322 xor edi,ebx
3323 shrd eax,eax,7
3324 add edx,ebp
3325 add ecx,DWORD[12+rsp]
3326 xor edi,eax
3327 mov esi,edx
3328 shld edx,edx,5
3329 add ecx,edi
3330 xor esi,eax
3331 shrd ebp,ebp,7
3332 add ecx,edx
3333 cmp r9,r10
3334 je NEAR $L$done_avx
3335 vmovdqa xmm6,XMMWORD[64+r14]
3336 vmovdqa xmm11,XMMWORD[((-64))+r14]
3337 vmovdqu xmm0,XMMWORD[r9]
3338 vmovdqu xmm1,XMMWORD[16+r9]
3339 vmovdqu xmm2,XMMWORD[32+r9]
3340 vmovdqu xmm3,XMMWORD[48+r9]
3341 vpshufb xmm0,xmm0,xmm6
3342 add r9,64
3343 add ebx,DWORD[16+rsp]
3344 xor esi,ebp
3345 vpshufb xmm1,xmm1,xmm6
3346 mov edi,ecx
3347 shld ecx,ecx,5
3348 vpaddd xmm4,xmm0,xmm11
3349 add ebx,esi
3350 xor edi,ebp
3351 shrd edx,edx,7
3352 add ebx,ecx
3353 vmovdqa XMMWORD[rsp],xmm4
3354 add eax,DWORD[20+rsp]
3355 xor edi,edx
3356 mov esi,ebx
3357 shld ebx,ebx,5
3358 add eax,edi
3359 xor esi,edx
3360 shrd ecx,ecx,7
3361 add eax,ebx
3362 add ebp,DWORD[24+rsp]
3363 xor esi,ecx
3364 mov edi,eax
3365 shld eax,eax,5
3366 add ebp,esi
3367 xor edi,ecx
3368 shrd ebx,ebx,7
3369 add ebp,eax
3370 add edx,DWORD[28+rsp]
3371 xor edi,ebx
3372 mov esi,ebp
3373 shld ebp,ebp,5
3374 add edx,edi
3375 xor esi,ebx
3376 shrd eax,eax,7
3377 add edx,ebp
3378 add ecx,DWORD[32+rsp]
3379 xor esi,eax
3380 vpshufb xmm2,xmm2,xmm6
3381 mov edi,edx
3382 shld edx,edx,5
3383 vpaddd xmm5,xmm1,xmm11
3384 add ecx,esi
3385 xor edi,eax
3386 shrd ebp,ebp,7
3387 add ecx,edx
3388 vmovdqa XMMWORD[16+rsp],xmm5
3389 add ebx,DWORD[36+rsp]
3390 xor edi,ebp
3391 mov esi,ecx
3392 shld ecx,ecx,5
3393 add ebx,edi
3394 xor esi,ebp
3395 shrd edx,edx,7
3396 add ebx,ecx
3397 add eax,DWORD[40+rsp]
3398 xor esi,edx
3399 mov edi,ebx
3400 shld ebx,ebx,5
3401 add eax,esi
3402 xor edi,edx
3403 shrd ecx,ecx,7
3404 add eax,ebx
3405 add ebp,DWORD[44+rsp]
3406 xor edi,ecx
3407 mov esi,eax
3408 shld eax,eax,5
3409 add ebp,edi
3410 xor esi,ecx
3411 shrd ebx,ebx,7
3412 add ebp,eax
3413 add edx,DWORD[48+rsp]
3414 xor esi,ebx
3415 vpshufb xmm3,xmm3,xmm6
3416 mov edi,ebp
3417 shld ebp,ebp,5
3418 vpaddd xmm6,xmm2,xmm11
3419 add edx,esi
3420 xor edi,ebx
3421 shrd eax,eax,7
3422 add edx,ebp
3423 vmovdqa XMMWORD[32+rsp],xmm6
3424 add ecx,DWORD[52+rsp]
3425 xor edi,eax
3426 mov esi,edx
3427 shld edx,edx,5
3428 add ecx,edi
3429 xor esi,eax
3430 shrd ebp,ebp,7
3431 add ecx,edx
3432 add ebx,DWORD[56+rsp]
3433 xor esi,ebp
3434 mov edi,ecx
3435 shld ecx,ecx,5
3436 add ebx,esi
3437 xor edi,ebp
3438 shrd edx,edx,7
3439 add ebx,ecx
3440 add eax,DWORD[60+rsp]
3441 xor edi,edx
3442 mov esi,ebx
3443 shld ebx,ebx,5
3444 add eax,edi
3445 shrd ecx,ecx,7
3446 add eax,ebx
3447 add eax,DWORD[r8]
3448 add esi,DWORD[4+r8]
3449 add ecx,DWORD[8+r8]
3450 add edx,DWORD[12+r8]
3451 mov DWORD[r8],eax
3452 add ebp,DWORD[16+r8]
3453 mov DWORD[4+r8],esi
3454 mov ebx,esi
3455 mov DWORD[8+r8],ecx
3456 mov edi,ecx
3457 mov DWORD[12+r8],edx
3458 xor edi,edx
3459 mov DWORD[16+r8],ebp
3460 and esi,edi
3461 jmp NEAR $L$oop_avx
3462
3463 ALIGN 16
3464 $L$done_avx:
3465 add ebx,DWORD[16+rsp]
3466 xor esi,ebp
3467 mov edi,ecx
3468 shld ecx,ecx,5
3469 add ebx,esi
3470 xor edi,ebp
3471 shrd edx,edx,7
3472 add ebx,ecx
3473 add eax,DWORD[20+rsp]
3474 xor edi,edx
3475 mov esi,ebx
3476 shld ebx,ebx,5
3477 add eax,edi
3478 xor esi,edx
3479 shrd ecx,ecx,7
3480 add eax,ebx
3481 add ebp,DWORD[24+rsp]
3482 xor esi,ecx
3483 mov edi,eax
3484 shld eax,eax,5
3485 add ebp,esi
3486 xor edi,ecx
3487 shrd ebx,ebx,7
3488 add ebp,eax
3489 add edx,DWORD[28+rsp]
3490 xor edi,ebx
3491 mov esi,ebp
3492 shld ebp,ebp,5
3493 add edx,edi
3494 xor esi,ebx
3495 shrd eax,eax,7
3496 add edx,ebp
3497 add ecx,DWORD[32+rsp]
3498 xor esi,eax
3499 mov edi,edx
3500 shld edx,edx,5
3501 add ecx,esi
3502 xor edi,eax
3503 shrd ebp,ebp,7
3504 add ecx,edx
3505 add ebx,DWORD[36+rsp]
3506 xor edi,ebp
3507 mov esi,ecx
3508 shld ecx,ecx,5
3509 add ebx,edi
3510 xor esi,ebp
3511 shrd edx,edx,7
3512 add ebx,ecx
3513 add eax,DWORD[40+rsp]
3514 xor esi,edx
3515 mov edi,ebx
3516 shld ebx,ebx,5
3517 add eax,esi
3518 xor edi,edx
3519 shrd ecx,ecx,7
3520 add eax,ebx
3521 add ebp,DWORD[44+rsp]
3522 xor edi,ecx
3523 mov esi,eax
3524 shld eax,eax,5
3525 add ebp,edi
3526 xor esi,ecx
3527 shrd ebx,ebx,7
3528 add ebp,eax
3529 add edx,DWORD[48+rsp]
3530 xor esi,ebx
3531 mov edi,ebp
3532 shld ebp,ebp,5
3533 add edx,esi
3534 xor edi,ebx
3535 shrd eax,eax,7
3536 add edx,ebp
3537 add ecx,DWORD[52+rsp]
3538 xor edi,eax
3539 mov esi,edx
3540 shld edx,edx,5
3541 add ecx,edi
3542 xor esi,eax
3543 shrd ebp,ebp,7
3544 add ecx,edx
3545 add ebx,DWORD[56+rsp]
3546 xor esi,ebp
3547 mov edi,ecx
3548 shld ecx,ecx,5
3549 add ebx,esi
3550 xor edi,ebp
3551 shrd edx,edx,7
3552 add ebx,ecx
3553 add eax,DWORD[60+rsp]
3554 xor edi,edx
3555 mov esi,ebx
3556 shld ebx,ebx,5
3557 add eax,edi
3558 shrd ecx,ecx,7
3559 add eax,ebx
3560 vzeroupper
3561
3562 add eax,DWORD[r8]
3563 add esi,DWORD[4+r8]
3564 add ecx,DWORD[8+r8]
3565 mov DWORD[r8],eax
3566 add edx,DWORD[12+r8]
3567 mov DWORD[4+r8],esi
3568 add ebp,DWORD[16+r8]
3569 mov DWORD[8+r8],ecx
3570 mov DWORD[12+r8],edx
3571 mov DWORD[16+r8],ebp
3572 movaps xmm6,XMMWORD[((-40-96))+r11]
3573 movaps xmm7,XMMWORD[((-40-80))+r11]
3574 movaps xmm8,XMMWORD[((-40-64))+r11]
3575 movaps xmm9,XMMWORD[((-40-48))+r11]
3576 movaps xmm10,XMMWORD[((-40-32))+r11]
3577 movaps xmm11,XMMWORD[((-40-16))+r11]
3578 mov r14,QWORD[((-40))+r11]
3579 mov r13,QWORD[((-32))+r11]
3580 mov r12,QWORD[((-24))+r11]
3581 mov rbp,QWORD[((-16))+r11]
3582 mov rbx,QWORD[((-8))+r11]
3583 lea rsp,[r11]
3584 $L$epilogue_avx:
3585 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
3586 mov rsi,QWORD[16+rsp]
3587 DB 0F3h,0C3h ;repret
3588 $L$SEH_end_sha1_block_data_order_avx:
3589 ALIGN 64
3590 K_XX_XX:
3591 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999
3592 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999
3593 DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
3594 DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
3595 DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
3596 DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
3597 DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
3598 DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
3599 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
3600 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
3601 DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
3602 DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
3603 DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44
3604 DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60
3605 DB 97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114
3606 DB 103,62,0
3607 ALIGN 64
3608 EXTERN __imp_RtlVirtualUnwind
3609
3610 ALIGN 16
3611 se_handler:
3612 push rsi
3613 push rdi
3614 push rbx
3615 push rbp
3616 push r12
3617 push r13
3618 push r14
3619 push r15
3620 pushfq
3621 sub rsp,64
3622
3623 mov rax,QWORD[120+r8]
3624 mov rbx,QWORD[248+r8]
3625
3626 lea r10,[$L$prologue]
3627 cmp rbx,r10
3628 jb NEAR $L$common_seh_tail
3629
3630 mov rax,QWORD[152+r8]
3631
3632 lea r10,[$L$epilogue]
3633 cmp rbx,r10
3634 jae NEAR $L$common_seh_tail
3635
3636 mov rax,QWORD[64+rax]
3637
3638 mov rbx,QWORD[((-8))+rax]
3639 mov rbp,QWORD[((-16))+rax]
3640 mov r12,QWORD[((-24))+rax]
3641 mov r13,QWORD[((-32))+rax]
3642 mov r14,QWORD[((-40))+rax]
3643 mov QWORD[144+r8],rbx
3644 mov QWORD[160+r8],rbp
3645 mov QWORD[216+r8],r12
3646 mov QWORD[224+r8],r13
3647 mov QWORD[232+r8],r14
3648
3649 jmp NEAR $L$common_seh_tail
3650
3651
3652 ALIGN 16
3653 ssse3_handler:
3654 push rsi
3655 push rdi
3656 push rbx
3657 push rbp
3658 push r12
3659 push r13
3660 push r14
3661 push r15
3662 pushfq
3663 sub rsp,64
3664
3665 mov rax,QWORD[120+r8]
3666 mov rbx,QWORD[248+r8]
3667
3668 mov rsi,QWORD[8+r9]
3669 mov r11,QWORD[56+r9]
3670
3671 mov r10d,DWORD[r11]
3672 lea r10,[r10*1+rsi]
3673 cmp rbx,r10
3674 jb NEAR $L$common_seh_tail
3675
3676 mov rax,QWORD[208+r8]
3677
3678 mov r10d,DWORD[4+r11]
3679 lea r10,[r10*1+rsi]
3680 cmp rbx,r10
3681 jae NEAR $L$common_seh_tail
3682
3683 lea rsi,[((-40-96))+rax]
3684 lea rdi,[512+r8]
3685 mov ecx,12
3686 DD 0xa548f3fc
3687
3688 mov rbx,QWORD[((-8))+rax]
3689 mov rbp,QWORD[((-16))+rax]
3690 mov r12,QWORD[((-24))+rax]
3691 mov r13,QWORD[((-32))+rax]
3692 mov r14,QWORD[((-40))+rax]
3693 mov QWORD[144+r8],rbx
3694 mov QWORD[160+r8],rbp
3695 mov QWORD[216+r8],r12
3696 mov QWORD[224+r8],r13
3697 mov QWORD[232+r8],r14
3698
3699 $L$common_seh_tail:
3700 mov rdi,QWORD[8+rax]
3701 mov rsi,QWORD[16+rax]
3702 mov QWORD[152+r8],rax
3703 mov QWORD[168+r8],rsi
3704 mov QWORD[176+r8],rdi
3705
3706 mov rdi,QWORD[40+r9]
3707 mov rsi,r8
3708 mov ecx,154
3709 DD 0xa548f3fc
3710
3711 mov rsi,r9
3712 xor rcx,rcx
3713 mov rdx,QWORD[8+rsi]
3714 mov r8,QWORD[rsi]
3715 mov r9,QWORD[16+rsi]
3716 mov r10,QWORD[40+rsi]
3717 lea r11,[56+rsi]
3718 lea r12,[24+rsi]
3719 mov QWORD[32+rsp],r10
3720 mov QWORD[40+rsp],r11
3721 mov QWORD[48+rsp],r12
3722 mov QWORD[56+rsp],rcx
3723 call QWORD[__imp_RtlVirtualUnwind]
3724
3725 mov eax,1
3726 add rsp,64
3727 popfq
3728 pop r15
3729 pop r14
3730 pop r13
3731 pop r12
3732 pop rbp
3733 pop rbx
3734 pop rdi
3735 pop rsi
3736 DB 0F3h,0C3h ;repret
3737
3738
3739 section .pdata rdata align=4
3740 ALIGN 4
3741 DD $L$SEH_begin_sha1_block_data_order wrt ..imagebase
3742 DD $L$SEH_end_sha1_block_data_order wrt ..imagebase
3743 DD $L$SEH_info_sha1_block_data_order wrt ..imagebase
3744 DD $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase
3745 DD $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase
3746 DD $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase
3747 DD $L$SEH_begin_sha1_block_data_order_avx wrt ..imagebase
3748 DD $L$SEH_end_sha1_block_data_order_avx wrt ..imagebase
3749 DD $L$SEH_info_sha1_block_data_order_avx wrt ..imagebase
3750 section .xdata rdata align=8
3751 ALIGN 8
3752 $L$SEH_info_sha1_block_data_order:
3753 DB 9,0,0,0
3754 DD se_handler wrt ..imagebase
3755 $L$SEH_info_sha1_block_data_order_ssse3:
3756 DB 9,0,0,0
3757 DD ssse3_handler wrt ..imagebase
3758 DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imageb ase
3759 $L$SEH_info_sha1_block_data_order_avx:
3760 DB 9,0,0,0
3761 DD ssse3_handler wrt ..imagebase
3762 DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698