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

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

Issue 2354623003: Pull boringssl generated source from boringssl_gen (Closed)
Patch Set: . Created 4 years, 3 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 rax,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)+rax],xmm6
1274 movaps XMMWORD[(-40-80)+rax],xmm7
1275 movaps XMMWORD[(-40-64)+rax],xmm8
1276 movaps XMMWORD[(-40-48)+rax],xmm9
1277 movaps XMMWORD[(-40-32)+rax],xmm10
1278 movaps XMMWORD[(-40-16)+rax],xmm11
1279 $L$prologue_ssse3:
1280 mov r14,rax
1281 and rsp,-64
1282 mov r8,rdi
1283 mov r9,rsi
1284 mov r10,rdx
1285
1286 shl r10,6
1287 add r10,r9
1288 lea r11,[((K_XX_XX+64))]
1289
1290 mov eax,DWORD[r8]
1291 mov ebx,DWORD[4+r8]
1292 mov ecx,DWORD[8+r8]
1293 mov edx,DWORD[12+r8]
1294 mov esi,ebx
1295 mov ebp,DWORD[16+r8]
1296 mov edi,ecx
1297 xor edi,edx
1298 and esi,edi
1299
1300 movdqa xmm6,XMMWORD[64+r11]
1301 movdqa xmm9,XMMWORD[((-64))+r11]
1302 movdqu xmm0,XMMWORD[r9]
1303 movdqu xmm1,XMMWORD[16+r9]
1304 movdqu xmm2,XMMWORD[32+r9]
1305 movdqu xmm3,XMMWORD[48+r9]
1306 DB 102,15,56,0,198
1307 DB 102,15,56,0,206
1308 DB 102,15,56,0,214
1309 add r9,64
1310 paddd xmm0,xmm9
1311 DB 102,15,56,0,222
1312 paddd xmm1,xmm9
1313 paddd xmm2,xmm9
1314 movdqa XMMWORD[rsp],xmm0
1315 psubd xmm0,xmm9
1316 movdqa XMMWORD[16+rsp],xmm1
1317 psubd xmm1,xmm9
1318 movdqa XMMWORD[32+rsp],xmm2
1319 psubd xmm2,xmm9
1320 jmp NEAR $L$oop_ssse3
1321 ALIGN 16
1322 $L$oop_ssse3:
1323 ror ebx,2
1324 pshufd xmm4,xmm0,238
1325 xor esi,edx
1326 movdqa xmm8,xmm3
1327 paddd xmm9,xmm3
1328 mov edi,eax
1329 add ebp,DWORD[rsp]
1330 punpcklqdq xmm4,xmm1
1331 xor ebx,ecx
1332 rol eax,5
1333 add ebp,esi
1334 psrldq xmm8,4
1335 and edi,ebx
1336 xor ebx,ecx
1337 pxor xmm4,xmm0
1338 add ebp,eax
1339 ror eax,7
1340 pxor xmm8,xmm2
1341 xor edi,ecx
1342 mov esi,ebp
1343 add edx,DWORD[4+rsp]
1344 pxor xmm4,xmm8
1345 xor eax,ebx
1346 rol ebp,5
1347 movdqa XMMWORD[48+rsp],xmm9
1348 add edx,edi
1349 and esi,eax
1350 movdqa xmm10,xmm4
1351 xor eax,ebx
1352 add edx,ebp
1353 ror ebp,7
1354 movdqa xmm8,xmm4
1355 xor esi,ebx
1356 pslldq xmm10,12
1357 paddd xmm4,xmm4
1358 mov edi,edx
1359 add ecx,DWORD[8+rsp]
1360 psrld xmm8,31
1361 xor ebp,eax
1362 rol edx,5
1363 add ecx,esi
1364 movdqa xmm9,xmm10
1365 and edi,ebp
1366 xor ebp,eax
1367 psrld xmm10,30
1368 add ecx,edx
1369 ror edx,7
1370 por xmm4,xmm8
1371 xor edi,eax
1372 mov esi,ecx
1373 add ebx,DWORD[12+rsp]
1374 pslld xmm9,2
1375 pxor xmm4,xmm10
1376 xor edx,ebp
1377 movdqa xmm10,XMMWORD[((-64))+r11]
1378 rol ecx,5
1379 add ebx,edi
1380 and esi,edx
1381 pxor xmm4,xmm9
1382 xor edx,ebp
1383 add ebx,ecx
1384 ror ecx,7
1385 pshufd xmm5,xmm1,238
1386 xor esi,ebp
1387 movdqa xmm9,xmm4
1388 paddd xmm10,xmm4
1389 mov edi,ebx
1390 add eax,DWORD[16+rsp]
1391 punpcklqdq xmm5,xmm2
1392 xor ecx,edx
1393 rol ebx,5
1394 add eax,esi
1395 psrldq xmm9,4
1396 and edi,ecx
1397 xor ecx,edx
1398 pxor xmm5,xmm1
1399 add eax,ebx
1400 ror ebx,7
1401 pxor xmm9,xmm3
1402 xor edi,edx
1403 mov esi,eax
1404 add ebp,DWORD[20+rsp]
1405 pxor xmm5,xmm9
1406 xor ebx,ecx
1407 rol eax,5
1408 movdqa XMMWORD[rsp],xmm10
1409 add ebp,edi
1410 and esi,ebx
1411 movdqa xmm8,xmm5
1412 xor ebx,ecx
1413 add ebp,eax
1414 ror eax,7
1415 movdqa xmm9,xmm5
1416 xor esi,ecx
1417 pslldq xmm8,12
1418 paddd xmm5,xmm5
1419 mov edi,ebp
1420 add edx,DWORD[24+rsp]
1421 psrld xmm9,31
1422 xor eax,ebx
1423 rol ebp,5
1424 add edx,esi
1425 movdqa xmm10,xmm8
1426 and edi,eax
1427 xor eax,ebx
1428 psrld xmm8,30
1429 add edx,ebp
1430 ror ebp,7
1431 por xmm5,xmm9
1432 xor edi,ebx
1433 mov esi,edx
1434 add ecx,DWORD[28+rsp]
1435 pslld xmm10,2
1436 pxor xmm5,xmm8
1437 xor ebp,eax
1438 movdqa xmm8,XMMWORD[((-32))+r11]
1439 rol edx,5
1440 add ecx,edi
1441 and esi,ebp
1442 pxor xmm5,xmm10
1443 xor ebp,eax
1444 add ecx,edx
1445 ror edx,7
1446 pshufd xmm6,xmm2,238
1447 xor esi,eax
1448 movdqa xmm10,xmm5
1449 paddd xmm8,xmm5
1450 mov edi,ecx
1451 add ebx,DWORD[32+rsp]
1452 punpcklqdq xmm6,xmm3
1453 xor edx,ebp
1454 rol ecx,5
1455 add ebx,esi
1456 psrldq xmm10,4
1457 and edi,edx
1458 xor edx,ebp
1459 pxor xmm6,xmm2
1460 add ebx,ecx
1461 ror ecx,7
1462 pxor xmm10,xmm4
1463 xor edi,ebp
1464 mov esi,ebx
1465 add eax,DWORD[36+rsp]
1466 pxor xmm6,xmm10
1467 xor ecx,edx
1468 rol ebx,5
1469 movdqa XMMWORD[16+rsp],xmm8
1470 add eax,edi
1471 and esi,ecx
1472 movdqa xmm9,xmm6
1473 xor ecx,edx
1474 add eax,ebx
1475 ror ebx,7
1476 movdqa xmm10,xmm6
1477 xor esi,edx
1478 pslldq xmm9,12
1479 paddd xmm6,xmm6
1480 mov edi,eax
1481 add ebp,DWORD[40+rsp]
1482 psrld xmm10,31
1483 xor ebx,ecx
1484 rol eax,5
1485 add ebp,esi
1486 movdqa xmm8,xmm9
1487 and edi,ebx
1488 xor ebx,ecx
1489 psrld xmm9,30
1490 add ebp,eax
1491 ror eax,7
1492 por xmm6,xmm10
1493 xor edi,ecx
1494 mov esi,ebp
1495 add edx,DWORD[44+rsp]
1496 pslld xmm8,2
1497 pxor xmm6,xmm9
1498 xor eax,ebx
1499 movdqa xmm9,XMMWORD[((-32))+r11]
1500 rol ebp,5
1501 add edx,edi
1502 and esi,eax
1503 pxor xmm6,xmm8
1504 xor eax,ebx
1505 add edx,ebp
1506 ror ebp,7
1507 pshufd xmm7,xmm3,238
1508 xor esi,ebx
1509 movdqa xmm8,xmm6
1510 paddd xmm9,xmm6
1511 mov edi,edx
1512 add ecx,DWORD[48+rsp]
1513 punpcklqdq xmm7,xmm4
1514 xor ebp,eax
1515 rol edx,5
1516 add ecx,esi
1517 psrldq xmm8,4
1518 and edi,ebp
1519 xor ebp,eax
1520 pxor xmm7,xmm3
1521 add ecx,edx
1522 ror edx,7
1523 pxor xmm8,xmm5
1524 xor edi,eax
1525 mov esi,ecx
1526 add ebx,DWORD[52+rsp]
1527 pxor xmm7,xmm8
1528 xor edx,ebp
1529 rol ecx,5
1530 movdqa XMMWORD[32+rsp],xmm9
1531 add ebx,edi
1532 and esi,edx
1533 movdqa xmm10,xmm7
1534 xor edx,ebp
1535 add ebx,ecx
1536 ror ecx,7
1537 movdqa xmm8,xmm7
1538 xor esi,ebp
1539 pslldq xmm10,12
1540 paddd xmm7,xmm7
1541 mov edi,ebx
1542 add eax,DWORD[56+rsp]
1543 psrld xmm8,31
1544 xor ecx,edx
1545 rol ebx,5
1546 add eax,esi
1547 movdqa xmm9,xmm10
1548 and edi,ecx
1549 xor ecx,edx
1550 psrld xmm10,30
1551 add eax,ebx
1552 ror ebx,7
1553 por xmm7,xmm8
1554 xor edi,edx
1555 mov esi,eax
1556 add ebp,DWORD[60+rsp]
1557 pslld xmm9,2
1558 pxor xmm7,xmm10
1559 xor ebx,ecx
1560 movdqa xmm10,XMMWORD[((-32))+r11]
1561 rol eax,5
1562 add ebp,edi
1563 and esi,ebx
1564 pxor xmm7,xmm9
1565 pshufd xmm9,xmm6,238
1566 xor ebx,ecx
1567 add ebp,eax
1568 ror eax,7
1569 pxor xmm0,xmm4
1570 xor esi,ecx
1571 mov edi,ebp
1572 add edx,DWORD[rsp]
1573 punpcklqdq xmm9,xmm7
1574 xor eax,ebx
1575 rol ebp,5
1576 pxor xmm0,xmm1
1577 add edx,esi
1578 and edi,eax
1579 movdqa xmm8,xmm10
1580 xor eax,ebx
1581 paddd xmm10,xmm7
1582 add edx,ebp
1583 pxor xmm0,xmm9
1584 ror ebp,7
1585 xor edi,ebx
1586 mov esi,edx
1587 add ecx,DWORD[4+rsp]
1588 movdqa xmm9,xmm0
1589 xor ebp,eax
1590 rol edx,5
1591 movdqa XMMWORD[48+rsp],xmm10
1592 add ecx,edi
1593 and esi,ebp
1594 xor ebp,eax
1595 pslld xmm0,2
1596 add ecx,edx
1597 ror edx,7
1598 psrld xmm9,30
1599 xor esi,eax
1600 mov edi,ecx
1601 add ebx,DWORD[8+rsp]
1602 por xmm0,xmm9
1603 xor edx,ebp
1604 rol ecx,5
1605 pshufd xmm10,xmm7,238
1606 add ebx,esi
1607 and edi,edx
1608 xor edx,ebp
1609 add ebx,ecx
1610 add eax,DWORD[12+rsp]
1611 xor edi,ebp
1612 mov esi,ebx
1613 rol ebx,5
1614 add eax,edi
1615 xor esi,edx
1616 ror ecx,7
1617 add eax,ebx
1618 pxor xmm1,xmm5
1619 add ebp,DWORD[16+rsp]
1620 xor esi,ecx
1621 punpcklqdq xmm10,xmm0
1622 mov edi,eax
1623 rol eax,5
1624 pxor xmm1,xmm2
1625 add ebp,esi
1626 xor edi,ecx
1627 movdqa xmm9,xmm8
1628 ror ebx,7
1629 paddd xmm8,xmm0
1630 add ebp,eax
1631 pxor xmm1,xmm10
1632 add edx,DWORD[20+rsp]
1633 xor edi,ebx
1634 mov esi,ebp
1635 rol ebp,5
1636 movdqa xmm10,xmm1
1637 add edx,edi
1638 xor esi,ebx
1639 movdqa XMMWORD[rsp],xmm8
1640 ror eax,7
1641 add edx,ebp
1642 add ecx,DWORD[24+rsp]
1643 pslld xmm1,2
1644 xor esi,eax
1645 mov edi,edx
1646 psrld xmm10,30
1647 rol edx,5
1648 add ecx,esi
1649 xor edi,eax
1650 ror ebp,7
1651 por xmm1,xmm10
1652 add ecx,edx
1653 add ebx,DWORD[28+rsp]
1654 pshufd xmm8,xmm0,238
1655 xor edi,ebp
1656 mov esi,ecx
1657 rol ecx,5
1658 add ebx,edi
1659 xor esi,ebp
1660 ror edx,7
1661 add ebx,ecx
1662 pxor xmm2,xmm6
1663 add eax,DWORD[32+rsp]
1664 xor esi,edx
1665 punpcklqdq xmm8,xmm1
1666 mov edi,ebx
1667 rol ebx,5
1668 pxor xmm2,xmm3
1669 add eax,esi
1670 xor edi,edx
1671 movdqa xmm10,XMMWORD[r11]
1672 ror ecx,7
1673 paddd xmm9,xmm1
1674 add eax,ebx
1675 pxor xmm2,xmm8
1676 add ebp,DWORD[36+rsp]
1677 xor edi,ecx
1678 mov esi,eax
1679 rol eax,5
1680 movdqa xmm8,xmm2
1681 add ebp,edi
1682 xor esi,ecx
1683 movdqa XMMWORD[16+rsp],xmm9
1684 ror ebx,7
1685 add ebp,eax
1686 add edx,DWORD[40+rsp]
1687 pslld xmm2,2
1688 xor esi,ebx
1689 mov edi,ebp
1690 psrld xmm8,30
1691 rol ebp,5
1692 add edx,esi
1693 xor edi,ebx
1694 ror eax,7
1695 por xmm2,xmm8
1696 add edx,ebp
1697 add ecx,DWORD[44+rsp]
1698 pshufd xmm9,xmm1,238
1699 xor edi,eax
1700 mov esi,edx
1701 rol edx,5
1702 add ecx,edi
1703 xor esi,eax
1704 ror ebp,7
1705 add ecx,edx
1706 pxor xmm3,xmm7
1707 add ebx,DWORD[48+rsp]
1708 xor esi,ebp
1709 punpcklqdq xmm9,xmm2
1710 mov edi,ecx
1711 rol ecx,5
1712 pxor xmm3,xmm4
1713 add ebx,esi
1714 xor edi,ebp
1715 movdqa xmm8,xmm10
1716 ror edx,7
1717 paddd xmm10,xmm2
1718 add ebx,ecx
1719 pxor xmm3,xmm9
1720 add eax,DWORD[52+rsp]
1721 xor edi,edx
1722 mov esi,ebx
1723 rol ebx,5
1724 movdqa xmm9,xmm3
1725 add eax,edi
1726 xor esi,edx
1727 movdqa XMMWORD[32+rsp],xmm10
1728 ror ecx,7
1729 add eax,ebx
1730 add ebp,DWORD[56+rsp]
1731 pslld xmm3,2
1732 xor esi,ecx
1733 mov edi,eax
1734 psrld xmm9,30
1735 rol eax,5
1736 add ebp,esi
1737 xor edi,ecx
1738 ror ebx,7
1739 por xmm3,xmm9
1740 add ebp,eax
1741 add edx,DWORD[60+rsp]
1742 pshufd xmm10,xmm2,238
1743 xor edi,ebx
1744 mov esi,ebp
1745 rol ebp,5
1746 add edx,edi
1747 xor esi,ebx
1748 ror eax,7
1749 add edx,ebp
1750 pxor xmm4,xmm0
1751 add ecx,DWORD[rsp]
1752 xor esi,eax
1753 punpcklqdq xmm10,xmm3
1754 mov edi,edx
1755 rol edx,5
1756 pxor xmm4,xmm5
1757 add ecx,esi
1758 xor edi,eax
1759 movdqa xmm9,xmm8
1760 ror ebp,7
1761 paddd xmm8,xmm3
1762 add ecx,edx
1763 pxor xmm4,xmm10
1764 add ebx,DWORD[4+rsp]
1765 xor edi,ebp
1766 mov esi,ecx
1767 rol ecx,5
1768 movdqa xmm10,xmm4
1769 add ebx,edi
1770 xor esi,ebp
1771 movdqa XMMWORD[48+rsp],xmm8
1772 ror edx,7
1773 add ebx,ecx
1774 add eax,DWORD[8+rsp]
1775 pslld xmm4,2
1776 xor esi,edx
1777 mov edi,ebx
1778 psrld xmm10,30
1779 rol ebx,5
1780 add eax,esi
1781 xor edi,edx
1782 ror ecx,7
1783 por xmm4,xmm10
1784 add eax,ebx
1785 add ebp,DWORD[12+rsp]
1786 pshufd xmm8,xmm3,238
1787 xor edi,ecx
1788 mov esi,eax
1789 rol eax,5
1790 add ebp,edi
1791 xor esi,ecx
1792 ror ebx,7
1793 add ebp,eax
1794 pxor xmm5,xmm1
1795 add edx,DWORD[16+rsp]
1796 xor esi,ebx
1797 punpcklqdq xmm8,xmm4
1798 mov edi,ebp
1799 rol ebp,5
1800 pxor xmm5,xmm6
1801 add edx,esi
1802 xor edi,ebx
1803 movdqa xmm10,xmm9
1804 ror eax,7
1805 paddd xmm9,xmm4
1806 add edx,ebp
1807 pxor xmm5,xmm8
1808 add ecx,DWORD[20+rsp]
1809 xor edi,eax
1810 mov esi,edx
1811 rol edx,5
1812 movdqa xmm8,xmm5
1813 add ecx,edi
1814 xor esi,eax
1815 movdqa XMMWORD[rsp],xmm9
1816 ror ebp,7
1817 add ecx,edx
1818 add ebx,DWORD[24+rsp]
1819 pslld xmm5,2
1820 xor esi,ebp
1821 mov edi,ecx
1822 psrld xmm8,30
1823 rol ecx,5
1824 add ebx,esi
1825 xor edi,ebp
1826 ror edx,7
1827 por xmm5,xmm8
1828 add ebx,ecx
1829 add eax,DWORD[28+rsp]
1830 pshufd xmm9,xmm4,238
1831 ror ecx,7
1832 mov esi,ebx
1833 xor edi,edx
1834 rol ebx,5
1835 add eax,edi
1836 xor esi,ecx
1837 xor ecx,edx
1838 add eax,ebx
1839 pxor xmm6,xmm2
1840 add ebp,DWORD[32+rsp]
1841 and esi,ecx
1842 xor ecx,edx
1843 ror ebx,7
1844 punpcklqdq xmm9,xmm5
1845 mov edi,eax
1846 xor esi,ecx
1847 pxor xmm6,xmm7
1848 rol eax,5
1849 add ebp,esi
1850 movdqa xmm8,xmm10
1851 xor edi,ebx
1852 paddd xmm10,xmm5
1853 xor ebx,ecx
1854 pxor xmm6,xmm9
1855 add ebp,eax
1856 add edx,DWORD[36+rsp]
1857 and edi,ebx
1858 xor ebx,ecx
1859 ror eax,7
1860 movdqa xmm9,xmm6
1861 mov esi,ebp
1862 xor edi,ebx
1863 movdqa XMMWORD[16+rsp],xmm10
1864 rol ebp,5
1865 add edx,edi
1866 xor esi,eax
1867 pslld xmm6,2
1868 xor eax,ebx
1869 add edx,ebp
1870 psrld xmm9,30
1871 add ecx,DWORD[40+rsp]
1872 and esi,eax
1873 xor eax,ebx
1874 por xmm6,xmm9
1875 ror ebp,7
1876 mov edi,edx
1877 xor esi,eax
1878 rol edx,5
1879 pshufd xmm10,xmm5,238
1880 add ecx,esi
1881 xor edi,ebp
1882 xor ebp,eax
1883 add ecx,edx
1884 add ebx,DWORD[44+rsp]
1885 and edi,ebp
1886 xor ebp,eax
1887 ror edx,7
1888 mov esi,ecx
1889 xor edi,ebp
1890 rol ecx,5
1891 add ebx,edi
1892 xor esi,edx
1893 xor edx,ebp
1894 add ebx,ecx
1895 pxor xmm7,xmm3
1896 add eax,DWORD[48+rsp]
1897 and esi,edx
1898 xor edx,ebp
1899 ror ecx,7
1900 punpcklqdq xmm10,xmm6
1901 mov edi,ebx
1902 xor esi,edx
1903 pxor xmm7,xmm0
1904 rol ebx,5
1905 add eax,esi
1906 movdqa xmm9,XMMWORD[32+r11]
1907 xor edi,ecx
1908 paddd xmm8,xmm6
1909 xor ecx,edx
1910 pxor xmm7,xmm10
1911 add eax,ebx
1912 add ebp,DWORD[52+rsp]
1913 and edi,ecx
1914 xor ecx,edx
1915 ror ebx,7
1916 movdqa xmm10,xmm7
1917 mov esi,eax
1918 xor edi,ecx
1919 movdqa XMMWORD[32+rsp],xmm8
1920 rol eax,5
1921 add ebp,edi
1922 xor esi,ebx
1923 pslld xmm7,2
1924 xor ebx,ecx
1925 add ebp,eax
1926 psrld xmm10,30
1927 add edx,DWORD[56+rsp]
1928 and esi,ebx
1929 xor ebx,ecx
1930 por xmm7,xmm10
1931 ror eax,7
1932 mov edi,ebp
1933 xor esi,ebx
1934 rol ebp,5
1935 pshufd xmm8,xmm6,238
1936 add edx,esi
1937 xor edi,eax
1938 xor eax,ebx
1939 add edx,ebp
1940 add ecx,DWORD[60+rsp]
1941 and edi,eax
1942 xor eax,ebx
1943 ror ebp,7
1944 mov esi,edx
1945 xor edi,eax
1946 rol edx,5
1947 add ecx,edi
1948 xor esi,ebp
1949 xor ebp,eax
1950 add ecx,edx
1951 pxor xmm0,xmm4
1952 add ebx,DWORD[rsp]
1953 and esi,ebp
1954 xor ebp,eax
1955 ror edx,7
1956 punpcklqdq xmm8,xmm7
1957 mov edi,ecx
1958 xor esi,ebp
1959 pxor xmm0,xmm1
1960 rol ecx,5
1961 add ebx,esi
1962 movdqa xmm10,xmm9
1963 xor edi,edx
1964 paddd xmm9,xmm7
1965 xor edx,ebp
1966 pxor xmm0,xmm8
1967 add ebx,ecx
1968 add eax,DWORD[4+rsp]
1969 and edi,edx
1970 xor edx,ebp
1971 ror ecx,7
1972 movdqa xmm8,xmm0
1973 mov esi,ebx
1974 xor edi,edx
1975 movdqa XMMWORD[48+rsp],xmm9
1976 rol ebx,5
1977 add eax,edi
1978 xor esi,ecx
1979 pslld xmm0,2
1980 xor ecx,edx
1981 add eax,ebx
1982 psrld xmm8,30
1983 add ebp,DWORD[8+rsp]
1984 and esi,ecx
1985 xor ecx,edx
1986 por xmm0,xmm8
1987 ror ebx,7
1988 mov edi,eax
1989 xor esi,ecx
1990 rol eax,5
1991 pshufd xmm9,xmm7,238
1992 add ebp,esi
1993 xor edi,ebx
1994 xor ebx,ecx
1995 add ebp,eax
1996 add edx,DWORD[12+rsp]
1997 and edi,ebx
1998 xor ebx,ecx
1999 ror eax,7
2000 mov esi,ebp
2001 xor edi,ebx
2002 rol ebp,5
2003 add edx,edi
2004 xor esi,eax
2005 xor eax,ebx
2006 add edx,ebp
2007 pxor xmm1,xmm5
2008 add ecx,DWORD[16+rsp]
2009 and esi,eax
2010 xor eax,ebx
2011 ror ebp,7
2012 punpcklqdq xmm9,xmm0
2013 mov edi,edx
2014 xor esi,eax
2015 pxor xmm1,xmm2
2016 rol edx,5
2017 add ecx,esi
2018 movdqa xmm8,xmm10
2019 xor edi,ebp
2020 paddd xmm10,xmm0
2021 xor ebp,eax
2022 pxor xmm1,xmm9
2023 add ecx,edx
2024 add ebx,DWORD[20+rsp]
2025 and edi,ebp
2026 xor ebp,eax
2027 ror edx,7
2028 movdqa xmm9,xmm1
2029 mov esi,ecx
2030 xor edi,ebp
2031 movdqa XMMWORD[rsp],xmm10
2032 rol ecx,5
2033 add ebx,edi
2034 xor esi,edx
2035 pslld xmm1,2
2036 xor edx,ebp
2037 add ebx,ecx
2038 psrld xmm9,30
2039 add eax,DWORD[24+rsp]
2040 and esi,edx
2041 xor edx,ebp
2042 por xmm1,xmm9
2043 ror ecx,7
2044 mov edi,ebx
2045 xor esi,edx
2046 rol ebx,5
2047 pshufd xmm10,xmm0,238
2048 add eax,esi
2049 xor edi,ecx
2050 xor ecx,edx
2051 add eax,ebx
2052 add ebp,DWORD[28+rsp]
2053 and edi,ecx
2054 xor ecx,edx
2055 ror ebx,7
2056 mov esi,eax
2057 xor edi,ecx
2058 rol eax,5
2059 add ebp,edi
2060 xor esi,ebx
2061 xor ebx,ecx
2062 add ebp,eax
2063 pxor xmm2,xmm6
2064 add edx,DWORD[32+rsp]
2065 and esi,ebx
2066 xor ebx,ecx
2067 ror eax,7
2068 punpcklqdq xmm10,xmm1
2069 mov edi,ebp
2070 xor esi,ebx
2071 pxor xmm2,xmm3
2072 rol ebp,5
2073 add edx,esi
2074 movdqa xmm9,xmm8
2075 xor edi,eax
2076 paddd xmm8,xmm1
2077 xor eax,ebx
2078 pxor xmm2,xmm10
2079 add edx,ebp
2080 add ecx,DWORD[36+rsp]
2081 and edi,eax
2082 xor eax,ebx
2083 ror ebp,7
2084 movdqa xmm10,xmm2
2085 mov esi,edx
2086 xor edi,eax
2087 movdqa XMMWORD[16+rsp],xmm8
2088 rol edx,5
2089 add ecx,edi
2090 xor esi,ebp
2091 pslld xmm2,2
2092 xor ebp,eax
2093 add ecx,edx
2094 psrld xmm10,30
2095 add ebx,DWORD[40+rsp]
2096 and esi,ebp
2097 xor ebp,eax
2098 por xmm2,xmm10
2099 ror edx,7
2100 mov edi,ecx
2101 xor esi,ebp
2102 rol ecx,5
2103 pshufd xmm8,xmm1,238
2104 add ebx,esi
2105 xor edi,edx
2106 xor edx,ebp
2107 add ebx,ecx
2108 add eax,DWORD[44+rsp]
2109 and edi,edx
2110 xor edx,ebp
2111 ror ecx,7
2112 mov esi,ebx
2113 xor edi,edx
2114 rol ebx,5
2115 add eax,edi
2116 xor esi,edx
2117 add eax,ebx
2118 pxor xmm3,xmm7
2119 add ebp,DWORD[48+rsp]
2120 xor esi,ecx
2121 punpcklqdq xmm8,xmm2
2122 mov edi,eax
2123 rol eax,5
2124 pxor xmm3,xmm4
2125 add ebp,esi
2126 xor edi,ecx
2127 movdqa xmm10,xmm9
2128 ror ebx,7
2129 paddd xmm9,xmm2
2130 add ebp,eax
2131 pxor xmm3,xmm8
2132 add edx,DWORD[52+rsp]
2133 xor edi,ebx
2134 mov esi,ebp
2135 rol ebp,5
2136 movdqa xmm8,xmm3
2137 add edx,edi
2138 xor esi,ebx
2139 movdqa XMMWORD[32+rsp],xmm9
2140 ror eax,7
2141 add edx,ebp
2142 add ecx,DWORD[56+rsp]
2143 pslld xmm3,2
2144 xor esi,eax
2145 mov edi,edx
2146 psrld xmm8,30
2147 rol edx,5
2148 add ecx,esi
2149 xor edi,eax
2150 ror ebp,7
2151 por xmm3,xmm8
2152 add ecx,edx
2153 add ebx,DWORD[60+rsp]
2154 xor edi,ebp
2155 mov esi,ecx
2156 rol ecx,5
2157 add ebx,edi
2158 xor esi,ebp
2159 ror edx,7
2160 add ebx,ecx
2161 add eax,DWORD[rsp]
2162 xor esi,edx
2163 mov edi,ebx
2164 rol ebx,5
2165 paddd xmm10,xmm3
2166 add eax,esi
2167 xor edi,edx
2168 movdqa XMMWORD[48+rsp],xmm10
2169 ror ecx,7
2170 add eax,ebx
2171 add ebp,DWORD[4+rsp]
2172 xor edi,ecx
2173 mov esi,eax
2174 rol eax,5
2175 add ebp,edi
2176 xor esi,ecx
2177 ror ebx,7
2178 add ebp,eax
2179 add edx,DWORD[8+rsp]
2180 xor esi,ebx
2181 mov edi,ebp
2182 rol ebp,5
2183 add edx,esi
2184 xor edi,ebx
2185 ror eax,7
2186 add edx,ebp
2187 add ecx,DWORD[12+rsp]
2188 xor edi,eax
2189 mov esi,edx
2190 rol edx,5
2191 add ecx,edi
2192 xor esi,eax
2193 ror ebp,7
2194 add ecx,edx
2195 cmp r9,r10
2196 je NEAR $L$done_ssse3
2197 movdqa xmm6,XMMWORD[64+r11]
2198 movdqa xmm9,XMMWORD[((-64))+r11]
2199 movdqu xmm0,XMMWORD[r9]
2200 movdqu xmm1,XMMWORD[16+r9]
2201 movdqu xmm2,XMMWORD[32+r9]
2202 movdqu xmm3,XMMWORD[48+r9]
2203 DB 102,15,56,0,198
2204 add r9,64
2205 add ebx,DWORD[16+rsp]
2206 xor esi,ebp
2207 mov edi,ecx
2208 DB 102,15,56,0,206
2209 rol ecx,5
2210 add ebx,esi
2211 xor edi,ebp
2212 ror edx,7
2213 paddd xmm0,xmm9
2214 add ebx,ecx
2215 add eax,DWORD[20+rsp]
2216 xor edi,edx
2217 mov esi,ebx
2218 movdqa XMMWORD[rsp],xmm0
2219 rol ebx,5
2220 add eax,edi
2221 xor esi,edx
2222 ror ecx,7
2223 psubd xmm0,xmm9
2224 add eax,ebx
2225 add ebp,DWORD[24+rsp]
2226 xor esi,ecx
2227 mov edi,eax
2228 rol eax,5
2229 add ebp,esi
2230 xor edi,ecx
2231 ror ebx,7
2232 add ebp,eax
2233 add edx,DWORD[28+rsp]
2234 xor edi,ebx
2235 mov esi,ebp
2236 rol ebp,5
2237 add edx,edi
2238 xor esi,ebx
2239 ror eax,7
2240 add edx,ebp
2241 add ecx,DWORD[32+rsp]
2242 xor esi,eax
2243 mov edi,edx
2244 DB 102,15,56,0,214
2245 rol edx,5
2246 add ecx,esi
2247 xor edi,eax
2248 ror ebp,7
2249 paddd xmm1,xmm9
2250 add ecx,edx
2251 add ebx,DWORD[36+rsp]
2252 xor edi,ebp
2253 mov esi,ecx
2254 movdqa XMMWORD[16+rsp],xmm1
2255 rol ecx,5
2256 add ebx,edi
2257 xor esi,ebp
2258 ror edx,7
2259 psubd xmm1,xmm9
2260 add ebx,ecx
2261 add eax,DWORD[40+rsp]
2262 xor esi,edx
2263 mov edi,ebx
2264 rol ebx,5
2265 add eax,esi
2266 xor edi,edx
2267 ror ecx,7
2268 add eax,ebx
2269 add ebp,DWORD[44+rsp]
2270 xor edi,ecx
2271 mov esi,eax
2272 rol eax,5
2273 add ebp,edi
2274 xor esi,ecx
2275 ror ebx,7
2276 add ebp,eax
2277 add edx,DWORD[48+rsp]
2278 xor esi,ebx
2279 mov edi,ebp
2280 DB 102,15,56,0,222
2281 rol ebp,5
2282 add edx,esi
2283 xor edi,ebx
2284 ror eax,7
2285 paddd xmm2,xmm9
2286 add edx,ebp
2287 add ecx,DWORD[52+rsp]
2288 xor edi,eax
2289 mov esi,edx
2290 movdqa XMMWORD[32+rsp],xmm2
2291 rol edx,5
2292 add ecx,edi
2293 xor esi,eax
2294 ror ebp,7
2295 psubd xmm2,xmm9
2296 add ecx,edx
2297 add ebx,DWORD[56+rsp]
2298 xor esi,ebp
2299 mov edi,ecx
2300 rol ecx,5
2301 add ebx,esi
2302 xor edi,ebp
2303 ror edx,7
2304 add ebx,ecx
2305 add eax,DWORD[60+rsp]
2306 xor edi,edx
2307 mov esi,ebx
2308 rol ebx,5
2309 add eax,edi
2310 ror ecx,7
2311 add eax,ebx
2312 add eax,DWORD[r8]
2313 add esi,DWORD[4+r8]
2314 add ecx,DWORD[8+r8]
2315 add edx,DWORD[12+r8]
2316 mov DWORD[r8],eax
2317 add ebp,DWORD[16+r8]
2318 mov DWORD[4+r8],esi
2319 mov ebx,esi
2320 mov DWORD[8+r8],ecx
2321 mov edi,ecx
2322 mov DWORD[12+r8],edx
2323 xor edi,edx
2324 mov DWORD[16+r8],ebp
2325 and esi,edi
2326 jmp NEAR $L$oop_ssse3
2327
2328 ALIGN 16
2329 $L$done_ssse3:
2330 add ebx,DWORD[16+rsp]
2331 xor esi,ebp
2332 mov edi,ecx
2333 rol ecx,5
2334 add ebx,esi
2335 xor edi,ebp
2336 ror edx,7
2337 add ebx,ecx
2338 add eax,DWORD[20+rsp]
2339 xor edi,edx
2340 mov esi,ebx
2341 rol ebx,5
2342 add eax,edi
2343 xor esi,edx
2344 ror ecx,7
2345 add eax,ebx
2346 add ebp,DWORD[24+rsp]
2347 xor esi,ecx
2348 mov edi,eax
2349 rol eax,5
2350 add ebp,esi
2351 xor edi,ecx
2352 ror ebx,7
2353 add ebp,eax
2354 add edx,DWORD[28+rsp]
2355 xor edi,ebx
2356 mov esi,ebp
2357 rol ebp,5
2358 add edx,edi
2359 xor esi,ebx
2360 ror eax,7
2361 add edx,ebp
2362 add ecx,DWORD[32+rsp]
2363 xor esi,eax
2364 mov edi,edx
2365 rol edx,5
2366 add ecx,esi
2367 xor edi,eax
2368 ror ebp,7
2369 add ecx,edx
2370 add ebx,DWORD[36+rsp]
2371 xor edi,ebp
2372 mov esi,ecx
2373 rol ecx,5
2374 add ebx,edi
2375 xor esi,ebp
2376 ror edx,7
2377 add ebx,ecx
2378 add eax,DWORD[40+rsp]
2379 xor esi,edx
2380 mov edi,ebx
2381 rol ebx,5
2382 add eax,esi
2383 xor edi,edx
2384 ror ecx,7
2385 add eax,ebx
2386 add ebp,DWORD[44+rsp]
2387 xor edi,ecx
2388 mov esi,eax
2389 rol eax,5
2390 add ebp,edi
2391 xor esi,ecx
2392 ror ebx,7
2393 add ebp,eax
2394 add edx,DWORD[48+rsp]
2395 xor esi,ebx
2396 mov edi,ebp
2397 rol ebp,5
2398 add edx,esi
2399 xor edi,ebx
2400 ror eax,7
2401 add edx,ebp
2402 add ecx,DWORD[52+rsp]
2403 xor edi,eax
2404 mov esi,edx
2405 rol edx,5
2406 add ecx,edi
2407 xor esi,eax
2408 ror ebp,7
2409 add ecx,edx
2410 add ebx,DWORD[56+rsp]
2411 xor esi,ebp
2412 mov edi,ecx
2413 rol ecx,5
2414 add ebx,esi
2415 xor edi,ebp
2416 ror edx,7
2417 add ebx,ecx
2418 add eax,DWORD[60+rsp]
2419 xor edi,edx
2420 mov esi,ebx
2421 rol ebx,5
2422 add eax,edi
2423 ror ecx,7
2424 add eax,ebx
2425 add eax,DWORD[r8]
2426 add esi,DWORD[4+r8]
2427 add ecx,DWORD[8+r8]
2428 mov DWORD[r8],eax
2429 add edx,DWORD[12+r8]
2430 mov DWORD[4+r8],esi
2431 add ebp,DWORD[16+r8]
2432 mov DWORD[8+r8],ecx
2433 mov DWORD[12+r8],edx
2434 mov DWORD[16+r8],ebp
2435 movaps xmm6,XMMWORD[((-40-96))+r14]
2436 movaps xmm7,XMMWORD[((-40-80))+r14]
2437 movaps xmm8,XMMWORD[((-40-64))+r14]
2438 movaps xmm9,XMMWORD[((-40-48))+r14]
2439 movaps xmm10,XMMWORD[((-40-32))+r14]
2440 movaps xmm11,XMMWORD[((-40-16))+r14]
2441 lea rsi,[r14]
2442 mov r14,QWORD[((-40))+rsi]
2443 mov r13,QWORD[((-32))+rsi]
2444 mov r12,QWORD[((-24))+rsi]
2445 mov rbp,QWORD[((-16))+rsi]
2446 mov rbx,QWORD[((-8))+rsi]
2447 lea rsp,[rsi]
2448 $L$epilogue_ssse3:
2449 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
2450 mov rsi,QWORD[16+rsp]
2451 DB 0F3h,0C3h ;repret
2452 $L$SEH_end_sha1_block_data_order_ssse3:
2453
2454 ALIGN 16
2455 sha1_block_data_order_avx:
2456 mov QWORD[8+rsp],rdi ;WIN64 prologue
2457 mov QWORD[16+rsp],rsi
2458 mov rax,rsp
2459 $L$SEH_begin_sha1_block_data_order_avx:
2460 mov rdi,rcx
2461 mov rsi,rdx
2462 mov rdx,r8
2463
2464
2465 _avx_shortcut:
2466 mov rax,rsp
2467 push rbx
2468 push rbp
2469 push r12
2470 push r13
2471 push r14
2472 lea rsp,[((-160))+rsp]
2473 vzeroupper
2474 vmovaps XMMWORD[(-40-96)+rax],xmm6
2475 vmovaps XMMWORD[(-40-80)+rax],xmm7
2476 vmovaps XMMWORD[(-40-64)+rax],xmm8
2477 vmovaps XMMWORD[(-40-48)+rax],xmm9
2478 vmovaps XMMWORD[(-40-32)+rax],xmm10
2479 vmovaps XMMWORD[(-40-16)+rax],xmm11
2480 $L$prologue_avx:
2481 mov r14,rax
2482 and rsp,-64
2483 mov r8,rdi
2484 mov r9,rsi
2485 mov r10,rdx
2486
2487 shl r10,6
2488 add r10,r9
2489 lea r11,[((K_XX_XX+64))]
2490
2491 mov eax,DWORD[r8]
2492 mov ebx,DWORD[4+r8]
2493 mov ecx,DWORD[8+r8]
2494 mov edx,DWORD[12+r8]
2495 mov esi,ebx
2496 mov ebp,DWORD[16+r8]
2497 mov edi,ecx
2498 xor edi,edx
2499 and esi,edi
2500
2501 vmovdqa xmm6,XMMWORD[64+r11]
2502 vmovdqa xmm11,XMMWORD[((-64))+r11]
2503 vmovdqu xmm0,XMMWORD[r9]
2504 vmovdqu xmm1,XMMWORD[16+r9]
2505 vmovdqu xmm2,XMMWORD[32+r9]
2506 vmovdqu xmm3,XMMWORD[48+r9]
2507 vpshufb xmm0,xmm0,xmm6
2508 add r9,64
2509 vpshufb xmm1,xmm1,xmm6
2510 vpshufb xmm2,xmm2,xmm6
2511 vpshufb xmm3,xmm3,xmm6
2512 vpaddd xmm4,xmm0,xmm11
2513 vpaddd xmm5,xmm1,xmm11
2514 vpaddd xmm6,xmm2,xmm11
2515 vmovdqa XMMWORD[rsp],xmm4
2516 vmovdqa XMMWORD[16+rsp],xmm5
2517 vmovdqa XMMWORD[32+rsp],xmm6
2518 jmp NEAR $L$oop_avx
2519 ALIGN 16
2520 $L$oop_avx:
2521 shrd ebx,ebx,2
2522 xor esi,edx
2523 vpalignr xmm4,xmm1,xmm0,8
2524 mov edi,eax
2525 add ebp,DWORD[rsp]
2526 vpaddd xmm9,xmm11,xmm3
2527 xor ebx,ecx
2528 shld eax,eax,5
2529 vpsrldq xmm8,xmm3,4
2530 add ebp,esi
2531 and edi,ebx
2532 vpxor xmm4,xmm4,xmm0
2533 xor ebx,ecx
2534 add ebp,eax
2535 vpxor xmm8,xmm8,xmm2
2536 shrd eax,eax,7
2537 xor edi,ecx
2538 mov esi,ebp
2539 add edx,DWORD[4+rsp]
2540 vpxor xmm4,xmm4,xmm8
2541 xor eax,ebx
2542 shld ebp,ebp,5
2543 vmovdqa XMMWORD[48+rsp],xmm9
2544 add edx,edi
2545 and esi,eax
2546 vpsrld xmm8,xmm4,31
2547 xor eax,ebx
2548 add edx,ebp
2549 shrd ebp,ebp,7
2550 xor esi,ebx
2551 vpslldq xmm10,xmm4,12
2552 vpaddd xmm4,xmm4,xmm4
2553 mov edi,edx
2554 add ecx,DWORD[8+rsp]
2555 xor ebp,eax
2556 shld edx,edx,5
2557 vpsrld xmm9,xmm10,30
2558 vpor xmm4,xmm4,xmm8
2559 add ecx,esi
2560 and edi,ebp
2561 xor ebp,eax
2562 add ecx,edx
2563 vpslld xmm10,xmm10,2
2564 vpxor xmm4,xmm4,xmm9
2565 shrd edx,edx,7
2566 xor edi,eax
2567 mov esi,ecx
2568 add ebx,DWORD[12+rsp]
2569 vpxor xmm4,xmm4,xmm10
2570 xor edx,ebp
2571 shld ecx,ecx,5
2572 add ebx,edi
2573 and esi,edx
2574 xor edx,ebp
2575 add ebx,ecx
2576 shrd ecx,ecx,7
2577 xor esi,ebp
2578 vpalignr xmm5,xmm2,xmm1,8
2579 mov edi,ebx
2580 add eax,DWORD[16+rsp]
2581 vpaddd xmm9,xmm11,xmm4
2582 xor ecx,edx
2583 shld ebx,ebx,5
2584 vpsrldq xmm8,xmm4,4
2585 add eax,esi
2586 and edi,ecx
2587 vpxor xmm5,xmm5,xmm1
2588 xor ecx,edx
2589 add eax,ebx
2590 vpxor xmm8,xmm8,xmm3
2591 shrd ebx,ebx,7
2592 xor edi,edx
2593 mov esi,eax
2594 add ebp,DWORD[20+rsp]
2595 vpxor xmm5,xmm5,xmm8
2596 xor ebx,ecx
2597 shld eax,eax,5
2598 vmovdqa XMMWORD[rsp],xmm9
2599 add ebp,edi
2600 and esi,ebx
2601 vpsrld xmm8,xmm5,31
2602 xor ebx,ecx
2603 add ebp,eax
2604 shrd eax,eax,7
2605 xor esi,ecx
2606 vpslldq xmm10,xmm5,12
2607 vpaddd xmm5,xmm5,xmm5
2608 mov edi,ebp
2609 add edx,DWORD[24+rsp]
2610 xor eax,ebx
2611 shld ebp,ebp,5
2612 vpsrld xmm9,xmm10,30
2613 vpor xmm5,xmm5,xmm8
2614 add edx,esi
2615 and edi,eax
2616 xor eax,ebx
2617 add edx,ebp
2618 vpslld xmm10,xmm10,2
2619 vpxor xmm5,xmm5,xmm9
2620 shrd ebp,ebp,7
2621 xor edi,ebx
2622 mov esi,edx
2623 add ecx,DWORD[28+rsp]
2624 vpxor xmm5,xmm5,xmm10
2625 xor ebp,eax
2626 shld edx,edx,5
2627 vmovdqa xmm11,XMMWORD[((-32))+r11]
2628 add ecx,edi
2629 and esi,ebp
2630 xor ebp,eax
2631 add ecx,edx
2632 shrd edx,edx,7
2633 xor esi,eax
2634 vpalignr xmm6,xmm3,xmm2,8
2635 mov edi,ecx
2636 add ebx,DWORD[32+rsp]
2637 vpaddd xmm9,xmm11,xmm5
2638 xor edx,ebp
2639 shld ecx,ecx,5
2640 vpsrldq xmm8,xmm5,4
2641 add ebx,esi
2642 and edi,edx
2643 vpxor xmm6,xmm6,xmm2
2644 xor edx,ebp
2645 add ebx,ecx
2646 vpxor xmm8,xmm8,xmm4
2647 shrd ecx,ecx,7
2648 xor edi,ebp
2649 mov esi,ebx
2650 add eax,DWORD[36+rsp]
2651 vpxor xmm6,xmm6,xmm8
2652 xor ecx,edx
2653 shld ebx,ebx,5
2654 vmovdqa XMMWORD[16+rsp],xmm9
2655 add eax,edi
2656 and esi,ecx
2657 vpsrld xmm8,xmm6,31
2658 xor ecx,edx
2659 add eax,ebx
2660 shrd ebx,ebx,7
2661 xor esi,edx
2662 vpslldq xmm10,xmm6,12
2663 vpaddd xmm6,xmm6,xmm6
2664 mov edi,eax
2665 add ebp,DWORD[40+rsp]
2666 xor ebx,ecx
2667 shld eax,eax,5
2668 vpsrld xmm9,xmm10,30
2669 vpor xmm6,xmm6,xmm8
2670 add ebp,esi
2671 and edi,ebx
2672 xor ebx,ecx
2673 add ebp,eax
2674 vpslld xmm10,xmm10,2
2675 vpxor xmm6,xmm6,xmm9
2676 shrd eax,eax,7
2677 xor edi,ecx
2678 mov esi,ebp
2679 add edx,DWORD[44+rsp]
2680 vpxor xmm6,xmm6,xmm10
2681 xor eax,ebx
2682 shld ebp,ebp,5
2683 add edx,edi
2684 and esi,eax
2685 xor eax,ebx
2686 add edx,ebp
2687 shrd ebp,ebp,7
2688 xor esi,ebx
2689 vpalignr xmm7,xmm4,xmm3,8
2690 mov edi,edx
2691 add ecx,DWORD[48+rsp]
2692 vpaddd xmm9,xmm11,xmm6
2693 xor ebp,eax
2694 shld edx,edx,5
2695 vpsrldq xmm8,xmm6,4
2696 add ecx,esi
2697 and edi,ebp
2698 vpxor xmm7,xmm7,xmm3
2699 xor ebp,eax
2700 add ecx,edx
2701 vpxor xmm8,xmm8,xmm5
2702 shrd edx,edx,7
2703 xor edi,eax
2704 mov esi,ecx
2705 add ebx,DWORD[52+rsp]
2706 vpxor xmm7,xmm7,xmm8
2707 xor edx,ebp
2708 shld ecx,ecx,5
2709 vmovdqa XMMWORD[32+rsp],xmm9
2710 add ebx,edi
2711 and esi,edx
2712 vpsrld xmm8,xmm7,31
2713 xor edx,ebp
2714 add ebx,ecx
2715 shrd ecx,ecx,7
2716 xor esi,ebp
2717 vpslldq xmm10,xmm7,12
2718 vpaddd xmm7,xmm7,xmm7
2719 mov edi,ebx
2720 add eax,DWORD[56+rsp]
2721 xor ecx,edx
2722 shld ebx,ebx,5
2723 vpsrld xmm9,xmm10,30
2724 vpor xmm7,xmm7,xmm8
2725 add eax,esi
2726 and edi,ecx
2727 xor ecx,edx
2728 add eax,ebx
2729 vpslld xmm10,xmm10,2
2730 vpxor xmm7,xmm7,xmm9
2731 shrd ebx,ebx,7
2732 xor edi,edx
2733 mov esi,eax
2734 add ebp,DWORD[60+rsp]
2735 vpxor xmm7,xmm7,xmm10
2736 xor ebx,ecx
2737 shld eax,eax,5
2738 add ebp,edi
2739 and esi,ebx
2740 xor ebx,ecx
2741 add ebp,eax
2742 vpalignr xmm8,xmm7,xmm6,8
2743 vpxor xmm0,xmm0,xmm4
2744 shrd eax,eax,7
2745 xor esi,ecx
2746 mov edi,ebp
2747 add edx,DWORD[rsp]
2748 vpxor xmm0,xmm0,xmm1
2749 xor eax,ebx
2750 shld ebp,ebp,5
2751 vpaddd xmm9,xmm11,xmm7
2752 add edx,esi
2753 and edi,eax
2754 vpxor xmm0,xmm0,xmm8
2755 xor eax,ebx
2756 add edx,ebp
2757 shrd ebp,ebp,7
2758 xor edi,ebx
2759 vpsrld xmm8,xmm0,30
2760 vmovdqa XMMWORD[48+rsp],xmm9
2761 mov esi,edx
2762 add ecx,DWORD[4+rsp]
2763 xor ebp,eax
2764 shld edx,edx,5
2765 vpslld xmm0,xmm0,2
2766 add ecx,edi
2767 and esi,ebp
2768 xor ebp,eax
2769 add ecx,edx
2770 shrd edx,edx,7
2771 xor esi,eax
2772 mov edi,ecx
2773 add ebx,DWORD[8+rsp]
2774 vpor xmm0,xmm0,xmm8
2775 xor edx,ebp
2776 shld ecx,ecx,5
2777 add ebx,esi
2778 and edi,edx
2779 xor edx,ebp
2780 add ebx,ecx
2781 add eax,DWORD[12+rsp]
2782 xor edi,ebp
2783 mov esi,ebx
2784 shld ebx,ebx,5
2785 add eax,edi
2786 xor esi,edx
2787 shrd ecx,ecx,7
2788 add eax,ebx
2789 vpalignr xmm8,xmm0,xmm7,8
2790 vpxor xmm1,xmm1,xmm5
2791 add ebp,DWORD[16+rsp]
2792 xor esi,ecx
2793 mov edi,eax
2794 shld eax,eax,5
2795 vpxor xmm1,xmm1,xmm2
2796 add ebp,esi
2797 xor edi,ecx
2798 vpaddd xmm9,xmm11,xmm0
2799 shrd ebx,ebx,7
2800 add ebp,eax
2801 vpxor xmm1,xmm1,xmm8
2802 add edx,DWORD[20+rsp]
2803 xor edi,ebx
2804 mov esi,ebp
2805 shld ebp,ebp,5
2806 vpsrld xmm8,xmm1,30
2807 vmovdqa XMMWORD[rsp],xmm9
2808 add edx,edi
2809 xor esi,ebx
2810 shrd eax,eax,7
2811 add edx,ebp
2812 vpslld xmm1,xmm1,2
2813 add ecx,DWORD[24+rsp]
2814 xor esi,eax
2815 mov edi,edx
2816 shld edx,edx,5
2817 add ecx,esi
2818 xor edi,eax
2819 shrd ebp,ebp,7
2820 add ecx,edx
2821 vpor xmm1,xmm1,xmm8
2822 add ebx,DWORD[28+rsp]
2823 xor edi,ebp
2824 mov esi,ecx
2825 shld ecx,ecx,5
2826 add ebx,edi
2827 xor esi,ebp
2828 shrd edx,edx,7
2829 add ebx,ecx
2830 vpalignr xmm8,xmm1,xmm0,8
2831 vpxor xmm2,xmm2,xmm6
2832 add eax,DWORD[32+rsp]
2833 xor esi,edx
2834 mov edi,ebx
2835 shld ebx,ebx,5
2836 vpxor xmm2,xmm2,xmm3
2837 add eax,esi
2838 xor edi,edx
2839 vpaddd xmm9,xmm11,xmm1
2840 vmovdqa xmm11,XMMWORD[r11]
2841 shrd ecx,ecx,7
2842 add eax,ebx
2843 vpxor xmm2,xmm2,xmm8
2844 add ebp,DWORD[36+rsp]
2845 xor edi,ecx
2846 mov esi,eax
2847 shld eax,eax,5
2848 vpsrld xmm8,xmm2,30
2849 vmovdqa XMMWORD[16+rsp],xmm9
2850 add ebp,edi
2851 xor esi,ecx
2852 shrd ebx,ebx,7
2853 add ebp,eax
2854 vpslld xmm2,xmm2,2
2855 add edx,DWORD[40+rsp]
2856 xor esi,ebx
2857 mov edi,ebp
2858 shld ebp,ebp,5
2859 add edx,esi
2860 xor edi,ebx
2861 shrd eax,eax,7
2862 add edx,ebp
2863 vpor xmm2,xmm2,xmm8
2864 add ecx,DWORD[44+rsp]
2865 xor edi,eax
2866 mov esi,edx
2867 shld edx,edx,5
2868 add ecx,edi
2869 xor esi,eax
2870 shrd ebp,ebp,7
2871 add ecx,edx
2872 vpalignr xmm8,xmm2,xmm1,8
2873 vpxor xmm3,xmm3,xmm7
2874 add ebx,DWORD[48+rsp]
2875 xor esi,ebp
2876 mov edi,ecx
2877 shld ecx,ecx,5
2878 vpxor xmm3,xmm3,xmm4
2879 add ebx,esi
2880 xor edi,ebp
2881 vpaddd xmm9,xmm11,xmm2
2882 shrd edx,edx,7
2883 add ebx,ecx
2884 vpxor xmm3,xmm3,xmm8
2885 add eax,DWORD[52+rsp]
2886 xor edi,edx
2887 mov esi,ebx
2888 shld ebx,ebx,5
2889 vpsrld xmm8,xmm3,30
2890 vmovdqa XMMWORD[32+rsp],xmm9
2891 add eax,edi
2892 xor esi,edx
2893 shrd ecx,ecx,7
2894 add eax,ebx
2895 vpslld xmm3,xmm3,2
2896 add ebp,DWORD[56+rsp]
2897 xor esi,ecx
2898 mov edi,eax
2899 shld eax,eax,5
2900 add ebp,esi
2901 xor edi,ecx
2902 shrd ebx,ebx,7
2903 add ebp,eax
2904 vpor xmm3,xmm3,xmm8
2905 add edx,DWORD[60+rsp]
2906 xor edi,ebx
2907 mov esi,ebp
2908 shld ebp,ebp,5
2909 add edx,edi
2910 xor esi,ebx
2911 shrd eax,eax,7
2912 add edx,ebp
2913 vpalignr xmm8,xmm3,xmm2,8
2914 vpxor xmm4,xmm4,xmm0
2915 add ecx,DWORD[rsp]
2916 xor esi,eax
2917 mov edi,edx
2918 shld edx,edx,5
2919 vpxor xmm4,xmm4,xmm5
2920 add ecx,esi
2921 xor edi,eax
2922 vpaddd xmm9,xmm11,xmm3
2923 shrd ebp,ebp,7
2924 add ecx,edx
2925 vpxor xmm4,xmm4,xmm8
2926 add ebx,DWORD[4+rsp]
2927 xor edi,ebp
2928 mov esi,ecx
2929 shld ecx,ecx,5
2930 vpsrld xmm8,xmm4,30
2931 vmovdqa XMMWORD[48+rsp],xmm9
2932 add ebx,edi
2933 xor esi,ebp
2934 shrd edx,edx,7
2935 add ebx,ecx
2936 vpslld xmm4,xmm4,2
2937 add eax,DWORD[8+rsp]
2938 xor esi,edx
2939 mov edi,ebx
2940 shld ebx,ebx,5
2941 add eax,esi
2942 xor edi,edx
2943 shrd ecx,ecx,7
2944 add eax,ebx
2945 vpor xmm4,xmm4,xmm8
2946 add ebp,DWORD[12+rsp]
2947 xor edi,ecx
2948 mov esi,eax
2949 shld eax,eax,5
2950 add ebp,edi
2951 xor esi,ecx
2952 shrd ebx,ebx,7
2953 add ebp,eax
2954 vpalignr xmm8,xmm4,xmm3,8
2955 vpxor xmm5,xmm5,xmm1
2956 add edx,DWORD[16+rsp]
2957 xor esi,ebx
2958 mov edi,ebp
2959 shld ebp,ebp,5
2960 vpxor xmm5,xmm5,xmm6
2961 add edx,esi
2962 xor edi,ebx
2963 vpaddd xmm9,xmm11,xmm4
2964 shrd eax,eax,7
2965 add edx,ebp
2966 vpxor xmm5,xmm5,xmm8
2967 add ecx,DWORD[20+rsp]
2968 xor edi,eax
2969 mov esi,edx
2970 shld edx,edx,5
2971 vpsrld xmm8,xmm5,30
2972 vmovdqa XMMWORD[rsp],xmm9
2973 add ecx,edi
2974 xor esi,eax
2975 shrd ebp,ebp,7
2976 add ecx,edx
2977 vpslld xmm5,xmm5,2
2978 add ebx,DWORD[24+rsp]
2979 xor esi,ebp
2980 mov edi,ecx
2981 shld ecx,ecx,5
2982 add ebx,esi
2983 xor edi,ebp
2984 shrd edx,edx,7
2985 add ebx,ecx
2986 vpor xmm5,xmm5,xmm8
2987 add eax,DWORD[28+rsp]
2988 shrd ecx,ecx,7
2989 mov esi,ebx
2990 xor edi,edx
2991 shld ebx,ebx,5
2992 add eax,edi
2993 xor esi,ecx
2994 xor ecx,edx
2995 add eax,ebx
2996 vpalignr xmm8,xmm5,xmm4,8
2997 vpxor xmm6,xmm6,xmm2
2998 add ebp,DWORD[32+rsp]
2999 and esi,ecx
3000 xor ecx,edx
3001 shrd ebx,ebx,7
3002 vpxor xmm6,xmm6,xmm7
3003 mov edi,eax
3004 xor esi,ecx
3005 vpaddd xmm9,xmm11,xmm5
3006 shld eax,eax,5
3007 add ebp,esi
3008 vpxor xmm6,xmm6,xmm8
3009 xor edi,ebx
3010 xor ebx,ecx
3011 add ebp,eax
3012 add edx,DWORD[36+rsp]
3013 vpsrld xmm8,xmm6,30
3014 vmovdqa XMMWORD[16+rsp],xmm9
3015 and edi,ebx
3016 xor ebx,ecx
3017 shrd eax,eax,7
3018 mov esi,ebp
3019 vpslld xmm6,xmm6,2
3020 xor edi,ebx
3021 shld ebp,ebp,5
3022 add edx,edi
3023 xor esi,eax
3024 xor eax,ebx
3025 add edx,ebp
3026 add ecx,DWORD[40+rsp]
3027 and esi,eax
3028 vpor xmm6,xmm6,xmm8
3029 xor eax,ebx
3030 shrd ebp,ebp,7
3031 mov edi,edx
3032 xor esi,eax
3033 shld edx,edx,5
3034 add ecx,esi
3035 xor edi,ebp
3036 xor ebp,eax
3037 add ecx,edx
3038 add ebx,DWORD[44+rsp]
3039 and edi,ebp
3040 xor ebp,eax
3041 shrd edx,edx,7
3042 mov esi,ecx
3043 xor edi,ebp
3044 shld ecx,ecx,5
3045 add ebx,edi
3046 xor esi,edx
3047 xor edx,ebp
3048 add ebx,ecx
3049 vpalignr xmm8,xmm6,xmm5,8
3050 vpxor xmm7,xmm7,xmm3
3051 add eax,DWORD[48+rsp]
3052 and esi,edx
3053 xor edx,ebp
3054 shrd ecx,ecx,7
3055 vpxor xmm7,xmm7,xmm0
3056 mov edi,ebx
3057 xor esi,edx
3058 vpaddd xmm9,xmm11,xmm6
3059 vmovdqa xmm11,XMMWORD[32+r11]
3060 shld ebx,ebx,5
3061 add eax,esi
3062 vpxor xmm7,xmm7,xmm8
3063 xor edi,ecx
3064 xor ecx,edx
3065 add eax,ebx
3066 add ebp,DWORD[52+rsp]
3067 vpsrld xmm8,xmm7,30
3068 vmovdqa XMMWORD[32+rsp],xmm9
3069 and edi,ecx
3070 xor ecx,edx
3071 shrd ebx,ebx,7
3072 mov esi,eax
3073 vpslld xmm7,xmm7,2
3074 xor edi,ecx
3075 shld eax,eax,5
3076 add ebp,edi
3077 xor esi,ebx
3078 xor ebx,ecx
3079 add ebp,eax
3080 add edx,DWORD[56+rsp]
3081 and esi,ebx
3082 vpor xmm7,xmm7,xmm8
3083 xor ebx,ecx
3084 shrd eax,eax,7
3085 mov edi,ebp
3086 xor esi,ebx
3087 shld ebp,ebp,5
3088 add edx,esi
3089 xor edi,eax
3090 xor eax,ebx
3091 add edx,ebp
3092 add ecx,DWORD[60+rsp]
3093 and edi,eax
3094 xor eax,ebx
3095 shrd ebp,ebp,7
3096 mov esi,edx
3097 xor edi,eax
3098 shld edx,edx,5
3099 add ecx,edi
3100 xor esi,ebp
3101 xor ebp,eax
3102 add ecx,edx
3103 vpalignr xmm8,xmm7,xmm6,8
3104 vpxor xmm0,xmm0,xmm4
3105 add ebx,DWORD[rsp]
3106 and esi,ebp
3107 xor ebp,eax
3108 shrd edx,edx,7
3109 vpxor xmm0,xmm0,xmm1
3110 mov edi,ecx
3111 xor esi,ebp
3112 vpaddd xmm9,xmm11,xmm7
3113 shld ecx,ecx,5
3114 add ebx,esi
3115 vpxor xmm0,xmm0,xmm8
3116 xor edi,edx
3117 xor edx,ebp
3118 add ebx,ecx
3119 add eax,DWORD[4+rsp]
3120 vpsrld xmm8,xmm0,30
3121 vmovdqa XMMWORD[48+rsp],xmm9
3122 and edi,edx
3123 xor edx,ebp
3124 shrd ecx,ecx,7
3125 mov esi,ebx
3126 vpslld xmm0,xmm0,2
3127 xor edi,edx
3128 shld ebx,ebx,5
3129 add eax,edi
3130 xor esi,ecx
3131 xor ecx,edx
3132 add eax,ebx
3133 add ebp,DWORD[8+rsp]
3134 and esi,ecx
3135 vpor xmm0,xmm0,xmm8
3136 xor ecx,edx
3137 shrd ebx,ebx,7
3138 mov edi,eax
3139 xor esi,ecx
3140 shld eax,eax,5
3141 add ebp,esi
3142 xor edi,ebx
3143 xor ebx,ecx
3144 add ebp,eax
3145 add edx,DWORD[12+rsp]
3146 and edi,ebx
3147 xor ebx,ecx
3148 shrd eax,eax,7
3149 mov esi,ebp
3150 xor edi,ebx
3151 shld ebp,ebp,5
3152 add edx,edi
3153 xor esi,eax
3154 xor eax,ebx
3155 add edx,ebp
3156 vpalignr xmm8,xmm0,xmm7,8
3157 vpxor xmm1,xmm1,xmm5
3158 add ecx,DWORD[16+rsp]
3159 and esi,eax
3160 xor eax,ebx
3161 shrd ebp,ebp,7
3162 vpxor xmm1,xmm1,xmm2
3163 mov edi,edx
3164 xor esi,eax
3165 vpaddd xmm9,xmm11,xmm0
3166 shld edx,edx,5
3167 add ecx,esi
3168 vpxor xmm1,xmm1,xmm8
3169 xor edi,ebp
3170 xor ebp,eax
3171 add ecx,edx
3172 add ebx,DWORD[20+rsp]
3173 vpsrld xmm8,xmm1,30
3174 vmovdqa XMMWORD[rsp],xmm9
3175 and edi,ebp
3176 xor ebp,eax
3177 shrd edx,edx,7
3178 mov esi,ecx
3179 vpslld xmm1,xmm1,2
3180 xor edi,ebp
3181 shld ecx,ecx,5
3182 add ebx,edi
3183 xor esi,edx
3184 xor edx,ebp
3185 add ebx,ecx
3186 add eax,DWORD[24+rsp]
3187 and esi,edx
3188 vpor xmm1,xmm1,xmm8
3189 xor edx,ebp
3190 shrd ecx,ecx,7
3191 mov edi,ebx
3192 xor esi,edx
3193 shld ebx,ebx,5
3194 add eax,esi
3195 xor edi,ecx
3196 xor ecx,edx
3197 add eax,ebx
3198 add ebp,DWORD[28+rsp]
3199 and edi,ecx
3200 xor ecx,edx
3201 shrd ebx,ebx,7
3202 mov esi,eax
3203 xor edi,ecx
3204 shld eax,eax,5
3205 add ebp,edi
3206 xor esi,ebx
3207 xor ebx,ecx
3208 add ebp,eax
3209 vpalignr xmm8,xmm1,xmm0,8
3210 vpxor xmm2,xmm2,xmm6
3211 add edx,DWORD[32+rsp]
3212 and esi,ebx
3213 xor ebx,ecx
3214 shrd eax,eax,7
3215 vpxor xmm2,xmm2,xmm3
3216 mov edi,ebp
3217 xor esi,ebx
3218 vpaddd xmm9,xmm11,xmm1
3219 shld ebp,ebp,5
3220 add edx,esi
3221 vpxor xmm2,xmm2,xmm8
3222 xor edi,eax
3223 xor eax,ebx
3224 add edx,ebp
3225 add ecx,DWORD[36+rsp]
3226 vpsrld xmm8,xmm2,30
3227 vmovdqa XMMWORD[16+rsp],xmm9
3228 and edi,eax
3229 xor eax,ebx
3230 shrd ebp,ebp,7
3231 mov esi,edx
3232 vpslld xmm2,xmm2,2
3233 xor edi,eax
3234 shld edx,edx,5
3235 add ecx,edi
3236 xor esi,ebp
3237 xor ebp,eax
3238 add ecx,edx
3239 add ebx,DWORD[40+rsp]
3240 and esi,ebp
3241 vpor xmm2,xmm2,xmm8
3242 xor ebp,eax
3243 shrd edx,edx,7
3244 mov edi,ecx
3245 xor esi,ebp
3246 shld ecx,ecx,5
3247 add ebx,esi
3248 xor edi,edx
3249 xor edx,ebp
3250 add ebx,ecx
3251 add eax,DWORD[44+rsp]
3252 and edi,edx
3253 xor edx,ebp
3254 shrd ecx,ecx,7
3255 mov esi,ebx
3256 xor edi,edx
3257 shld ebx,ebx,5
3258 add eax,edi
3259 xor esi,edx
3260 add eax,ebx
3261 vpalignr xmm8,xmm2,xmm1,8
3262 vpxor xmm3,xmm3,xmm7
3263 add ebp,DWORD[48+rsp]
3264 xor esi,ecx
3265 mov edi,eax
3266 shld eax,eax,5
3267 vpxor xmm3,xmm3,xmm4
3268 add ebp,esi
3269 xor edi,ecx
3270 vpaddd xmm9,xmm11,xmm2
3271 shrd ebx,ebx,7
3272 add ebp,eax
3273 vpxor xmm3,xmm3,xmm8
3274 add edx,DWORD[52+rsp]
3275 xor edi,ebx
3276 mov esi,ebp
3277 shld ebp,ebp,5
3278 vpsrld xmm8,xmm3,30
3279 vmovdqa XMMWORD[32+rsp],xmm9
3280 add edx,edi
3281 xor esi,ebx
3282 shrd eax,eax,7
3283 add edx,ebp
3284 vpslld xmm3,xmm3,2
3285 add ecx,DWORD[56+rsp]
3286 xor esi,eax
3287 mov edi,edx
3288 shld edx,edx,5
3289 add ecx,esi
3290 xor edi,eax
3291 shrd ebp,ebp,7
3292 add ecx,edx
3293 vpor xmm3,xmm3,xmm8
3294 add ebx,DWORD[60+rsp]
3295 xor edi,ebp
3296 mov esi,ecx
3297 shld ecx,ecx,5
3298 add ebx,edi
3299 xor esi,ebp
3300 shrd edx,edx,7
3301 add ebx,ecx
3302 add eax,DWORD[rsp]
3303 vpaddd xmm9,xmm11,xmm3
3304 xor esi,edx
3305 mov edi,ebx
3306 shld ebx,ebx,5
3307 add eax,esi
3308 vmovdqa XMMWORD[48+rsp],xmm9
3309 xor edi,edx
3310 shrd ecx,ecx,7
3311 add eax,ebx
3312 add ebp,DWORD[4+rsp]
3313 xor edi,ecx
3314 mov esi,eax
3315 shld eax,eax,5
3316 add ebp,edi
3317 xor esi,ecx
3318 shrd ebx,ebx,7
3319 add ebp,eax
3320 add edx,DWORD[8+rsp]
3321 xor esi,ebx
3322 mov edi,ebp
3323 shld ebp,ebp,5
3324 add edx,esi
3325 xor edi,ebx
3326 shrd eax,eax,7
3327 add edx,ebp
3328 add ecx,DWORD[12+rsp]
3329 xor edi,eax
3330 mov esi,edx
3331 shld edx,edx,5
3332 add ecx,edi
3333 xor esi,eax
3334 shrd ebp,ebp,7
3335 add ecx,edx
3336 cmp r9,r10
3337 je NEAR $L$done_avx
3338 vmovdqa xmm6,XMMWORD[64+r11]
3339 vmovdqa xmm11,XMMWORD[((-64))+r11]
3340 vmovdqu xmm0,XMMWORD[r9]
3341 vmovdqu xmm1,XMMWORD[16+r9]
3342 vmovdqu xmm2,XMMWORD[32+r9]
3343 vmovdqu xmm3,XMMWORD[48+r9]
3344 vpshufb xmm0,xmm0,xmm6
3345 add r9,64
3346 add ebx,DWORD[16+rsp]
3347 xor esi,ebp
3348 vpshufb xmm1,xmm1,xmm6
3349 mov edi,ecx
3350 shld ecx,ecx,5
3351 vpaddd xmm4,xmm0,xmm11
3352 add ebx,esi
3353 xor edi,ebp
3354 shrd edx,edx,7
3355 add ebx,ecx
3356 vmovdqa XMMWORD[rsp],xmm4
3357 add eax,DWORD[20+rsp]
3358 xor edi,edx
3359 mov esi,ebx
3360 shld ebx,ebx,5
3361 add eax,edi
3362 xor esi,edx
3363 shrd ecx,ecx,7
3364 add eax,ebx
3365 add ebp,DWORD[24+rsp]
3366 xor esi,ecx
3367 mov edi,eax
3368 shld eax,eax,5
3369 add ebp,esi
3370 xor edi,ecx
3371 shrd ebx,ebx,7
3372 add ebp,eax
3373 add edx,DWORD[28+rsp]
3374 xor edi,ebx
3375 mov esi,ebp
3376 shld ebp,ebp,5
3377 add edx,edi
3378 xor esi,ebx
3379 shrd eax,eax,7
3380 add edx,ebp
3381 add ecx,DWORD[32+rsp]
3382 xor esi,eax
3383 vpshufb xmm2,xmm2,xmm6
3384 mov edi,edx
3385 shld edx,edx,5
3386 vpaddd xmm5,xmm1,xmm11
3387 add ecx,esi
3388 xor edi,eax
3389 shrd ebp,ebp,7
3390 add ecx,edx
3391 vmovdqa XMMWORD[16+rsp],xmm5
3392 add ebx,DWORD[36+rsp]
3393 xor edi,ebp
3394 mov esi,ecx
3395 shld ecx,ecx,5
3396 add ebx,edi
3397 xor esi,ebp
3398 shrd edx,edx,7
3399 add ebx,ecx
3400 add eax,DWORD[40+rsp]
3401 xor esi,edx
3402 mov edi,ebx
3403 shld ebx,ebx,5
3404 add eax,esi
3405 xor edi,edx
3406 shrd ecx,ecx,7
3407 add eax,ebx
3408 add ebp,DWORD[44+rsp]
3409 xor edi,ecx
3410 mov esi,eax
3411 shld eax,eax,5
3412 add ebp,edi
3413 xor esi,ecx
3414 shrd ebx,ebx,7
3415 add ebp,eax
3416 add edx,DWORD[48+rsp]
3417 xor esi,ebx
3418 vpshufb xmm3,xmm3,xmm6
3419 mov edi,ebp
3420 shld ebp,ebp,5
3421 vpaddd xmm6,xmm2,xmm11
3422 add edx,esi
3423 xor edi,ebx
3424 shrd eax,eax,7
3425 add edx,ebp
3426 vmovdqa XMMWORD[32+rsp],xmm6
3427 add ecx,DWORD[52+rsp]
3428 xor edi,eax
3429 mov esi,edx
3430 shld edx,edx,5
3431 add ecx,edi
3432 xor esi,eax
3433 shrd ebp,ebp,7
3434 add ecx,edx
3435 add ebx,DWORD[56+rsp]
3436 xor esi,ebp
3437 mov edi,ecx
3438 shld ecx,ecx,5
3439 add ebx,esi
3440 xor edi,ebp
3441 shrd edx,edx,7
3442 add ebx,ecx
3443 add eax,DWORD[60+rsp]
3444 xor edi,edx
3445 mov esi,ebx
3446 shld ebx,ebx,5
3447 add eax,edi
3448 shrd ecx,ecx,7
3449 add eax,ebx
3450 add eax,DWORD[r8]
3451 add esi,DWORD[4+r8]
3452 add ecx,DWORD[8+r8]
3453 add edx,DWORD[12+r8]
3454 mov DWORD[r8],eax
3455 add ebp,DWORD[16+r8]
3456 mov DWORD[4+r8],esi
3457 mov ebx,esi
3458 mov DWORD[8+r8],ecx
3459 mov edi,ecx
3460 mov DWORD[12+r8],edx
3461 xor edi,edx
3462 mov DWORD[16+r8],ebp
3463 and esi,edi
3464 jmp NEAR $L$oop_avx
3465
3466 ALIGN 16
3467 $L$done_avx:
3468 add ebx,DWORD[16+rsp]
3469 xor esi,ebp
3470 mov edi,ecx
3471 shld ecx,ecx,5
3472 add ebx,esi
3473 xor edi,ebp
3474 shrd edx,edx,7
3475 add ebx,ecx
3476 add eax,DWORD[20+rsp]
3477 xor edi,edx
3478 mov esi,ebx
3479 shld ebx,ebx,5
3480 add eax,edi
3481 xor esi,edx
3482 shrd ecx,ecx,7
3483 add eax,ebx
3484 add ebp,DWORD[24+rsp]
3485 xor esi,ecx
3486 mov edi,eax
3487 shld eax,eax,5
3488 add ebp,esi
3489 xor edi,ecx
3490 shrd ebx,ebx,7
3491 add ebp,eax
3492 add edx,DWORD[28+rsp]
3493 xor edi,ebx
3494 mov esi,ebp
3495 shld ebp,ebp,5
3496 add edx,edi
3497 xor esi,ebx
3498 shrd eax,eax,7
3499 add edx,ebp
3500 add ecx,DWORD[32+rsp]
3501 xor esi,eax
3502 mov edi,edx
3503 shld edx,edx,5
3504 add ecx,esi
3505 xor edi,eax
3506 shrd ebp,ebp,7
3507 add ecx,edx
3508 add ebx,DWORD[36+rsp]
3509 xor edi,ebp
3510 mov esi,ecx
3511 shld ecx,ecx,5
3512 add ebx,edi
3513 xor esi,ebp
3514 shrd edx,edx,7
3515 add ebx,ecx
3516 add eax,DWORD[40+rsp]
3517 xor esi,edx
3518 mov edi,ebx
3519 shld ebx,ebx,5
3520 add eax,esi
3521 xor edi,edx
3522 shrd ecx,ecx,7
3523 add eax,ebx
3524 add ebp,DWORD[44+rsp]
3525 xor edi,ecx
3526 mov esi,eax
3527 shld eax,eax,5
3528 add ebp,edi
3529 xor esi,ecx
3530 shrd ebx,ebx,7
3531 add ebp,eax
3532 add edx,DWORD[48+rsp]
3533 xor esi,ebx
3534 mov edi,ebp
3535 shld ebp,ebp,5
3536 add edx,esi
3537 xor edi,ebx
3538 shrd eax,eax,7
3539 add edx,ebp
3540 add ecx,DWORD[52+rsp]
3541 xor edi,eax
3542 mov esi,edx
3543 shld edx,edx,5
3544 add ecx,edi
3545 xor esi,eax
3546 shrd ebp,ebp,7
3547 add ecx,edx
3548 add ebx,DWORD[56+rsp]
3549 xor esi,ebp
3550 mov edi,ecx
3551 shld ecx,ecx,5
3552 add ebx,esi
3553 xor edi,ebp
3554 shrd edx,edx,7
3555 add ebx,ecx
3556 add eax,DWORD[60+rsp]
3557 xor edi,edx
3558 mov esi,ebx
3559 shld ebx,ebx,5
3560 add eax,edi
3561 shrd ecx,ecx,7
3562 add eax,ebx
3563 vzeroupper
3564
3565 add eax,DWORD[r8]
3566 add esi,DWORD[4+r8]
3567 add ecx,DWORD[8+r8]
3568 mov DWORD[r8],eax
3569 add edx,DWORD[12+r8]
3570 mov DWORD[4+r8],esi
3571 add ebp,DWORD[16+r8]
3572 mov DWORD[8+r8],ecx
3573 mov DWORD[12+r8],edx
3574 mov DWORD[16+r8],ebp
3575 movaps xmm6,XMMWORD[((-40-96))+r14]
3576 movaps xmm7,XMMWORD[((-40-80))+r14]
3577 movaps xmm8,XMMWORD[((-40-64))+r14]
3578 movaps xmm9,XMMWORD[((-40-48))+r14]
3579 movaps xmm10,XMMWORD[((-40-32))+r14]
3580 movaps xmm11,XMMWORD[((-40-16))+r14]
3581 lea rsi,[r14]
3582 mov r14,QWORD[((-40))+rsi]
3583 mov r13,QWORD[((-32))+rsi]
3584 mov r12,QWORD[((-24))+rsi]
3585 mov rbp,QWORD[((-16))+rsi]
3586 mov rbx,QWORD[((-8))+rsi]
3587 lea rsp,[rsi]
3588 $L$epilogue_avx:
3589 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
3590 mov rsi,QWORD[16+rsp]
3591 DB 0F3h,0C3h ;repret
3592 $L$SEH_end_sha1_block_data_order_avx:
3593 ALIGN 64
3594 K_XX_XX:
3595 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999
3596 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999
3597 DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
3598 DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
3599 DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
3600 DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
3601 DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
3602 DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
3603 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
3604 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
3605 DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
3606 DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
3607 DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44
3608 DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60
3609 DB 97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114
3610 DB 103,62,0
3611 ALIGN 64
3612 EXTERN __imp_RtlVirtualUnwind
3613
3614 ALIGN 16
3615 se_handler:
3616 push rsi
3617 push rdi
3618 push rbx
3619 push rbp
3620 push r12
3621 push r13
3622 push r14
3623 push r15
3624 pushfq
3625 sub rsp,64
3626
3627 mov rax,QWORD[120+r8]
3628 mov rbx,QWORD[248+r8]
3629
3630 lea r10,[$L$prologue]
3631 cmp rbx,r10
3632 jb NEAR $L$common_seh_tail
3633
3634 mov rax,QWORD[152+r8]
3635
3636 lea r10,[$L$epilogue]
3637 cmp rbx,r10
3638 jae NEAR $L$common_seh_tail
3639
3640 mov rax,QWORD[64+rax]
3641
3642 mov rbx,QWORD[((-8))+rax]
3643 mov rbp,QWORD[((-16))+rax]
3644 mov r12,QWORD[((-24))+rax]
3645 mov r13,QWORD[((-32))+rax]
3646 mov r14,QWORD[((-40))+rax]
3647 mov QWORD[144+r8],rbx
3648 mov QWORD[160+r8],rbp
3649 mov QWORD[216+r8],r12
3650 mov QWORD[224+r8],r13
3651 mov QWORD[232+r8],r14
3652
3653 jmp NEAR $L$common_seh_tail
3654
3655
3656 ALIGN 16
3657 ssse3_handler:
3658 push rsi
3659 push rdi
3660 push rbx
3661 push rbp
3662 push r12
3663 push r13
3664 push r14
3665 push r15
3666 pushfq
3667 sub rsp,64
3668
3669 mov rax,QWORD[120+r8]
3670 mov rbx,QWORD[248+r8]
3671
3672 mov rsi,QWORD[8+r9]
3673 mov r11,QWORD[56+r9]
3674
3675 mov r10d,DWORD[r11]
3676 lea r10,[r10*1+rsi]
3677 cmp rbx,r10
3678 jb NEAR $L$common_seh_tail
3679
3680 mov rax,QWORD[152+r8]
3681
3682 mov r10d,DWORD[4+r11]
3683 lea r10,[r10*1+rsi]
3684 cmp rbx,r10
3685 jae NEAR $L$common_seh_tail
3686
3687 mov rax,QWORD[232+r8]
3688
3689 lea rsi,[((-40-96))+rax]
3690 lea rdi,[512+r8]
3691 mov ecx,12
3692 DD 0xa548f3fc
3693
3694 mov rbx,QWORD[((-8))+rax]
3695 mov rbp,QWORD[((-16))+rax]
3696 mov r12,QWORD[((-24))+rax]
3697 mov r13,QWORD[((-32))+rax]
3698 mov r14,QWORD[((-40))+rax]
3699 mov QWORD[144+r8],rbx
3700 mov QWORD[160+r8],rbp
3701 mov QWORD[216+r8],r12
3702 mov QWORD[224+r8],r13
3703 mov QWORD[232+r8],r14
3704
3705 $L$common_seh_tail:
3706 mov rdi,QWORD[8+rax]
3707 mov rsi,QWORD[16+rax]
3708 mov QWORD[152+r8],rax
3709 mov QWORD[168+r8],rsi
3710 mov QWORD[176+r8],rdi
3711
3712 mov rdi,QWORD[40+r9]
3713 mov rsi,r8
3714 mov ecx,154
3715 DD 0xa548f3fc
3716
3717 mov rsi,r9
3718 xor rcx,rcx
3719 mov rdx,QWORD[8+rsi]
3720 mov r8,QWORD[rsi]
3721 mov r9,QWORD[16+rsi]
3722 mov r10,QWORD[40+rsi]
3723 lea r11,[56+rsi]
3724 lea r12,[24+rsi]
3725 mov QWORD[32+rsp],r10
3726 mov QWORD[40+rsp],r11
3727 mov QWORD[48+rsp],r12
3728 mov QWORD[56+rsp],rcx
3729 call QWORD[__imp_RtlVirtualUnwind]
3730
3731 mov eax,1
3732 add rsp,64
3733 popfq
3734 pop r15
3735 pop r14
3736 pop r13
3737 pop r12
3738 pop rbp
3739 pop rbx
3740 pop rdi
3741 pop rsi
3742 DB 0F3h,0C3h ;repret
3743
3744
3745 section .pdata rdata align=4
3746 ALIGN 4
3747 DD $L$SEH_begin_sha1_block_data_order wrt ..imagebase
3748 DD $L$SEH_end_sha1_block_data_order wrt ..imagebase
3749 DD $L$SEH_info_sha1_block_data_order wrt ..imagebase
3750 DD $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase
3751 DD $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase
3752 DD $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase
3753 DD $L$SEH_begin_sha1_block_data_order_avx wrt ..imagebase
3754 DD $L$SEH_end_sha1_block_data_order_avx wrt ..imagebase
3755 DD $L$SEH_info_sha1_block_data_order_avx wrt ..imagebase
3756 section .xdata rdata align=8
3757 ALIGN 8
3758 $L$SEH_info_sha1_block_data_order:
3759 DB 9,0,0,0
3760 DD se_handler wrt ..imagebase
3761 $L$SEH_info_sha1_block_data_order_ssse3:
3762 DB 9,0,0,0
3763 DD ssse3_handler wrt ..imagebase
3764 DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imageb ase
3765 $L$SEH_info_sha1_block_data_order_avx:
3766 DB 9,0,0,0
3767 DD ssse3_handler wrt ..imagebase
3768 DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698