VirtualBox

source: vbox/trunk/src/libs/openssl-1.1.1f/crypto/genasm-nasm/aesni-sha1-x86_64.S@ 83531

Last change on this file since 83531 was 83531, checked in by vboxsync, 5 years ago

setting svn:sync-process=export for openssl-1.1.1f, all files except tests

File size: 33.4 KB
Line 
1default rel
2%define XMMWORD
3%define YMMWORD
4%define ZMMWORD
5section .text code align=64
6
7EXTERN OPENSSL_ia32cap_P
8
9global aesni_cbc_sha1_enc
10
11ALIGN 32
12aesni_cbc_sha1_enc:
13
14 mov r10d,DWORD[((OPENSSL_ia32cap_P+0))]
15 mov r11,QWORD[((OPENSSL_ia32cap_P+4))]
16 bt r11,61
17 jc NEAR aesni_cbc_sha1_enc_shaext
18 jmp NEAR aesni_cbc_sha1_enc_ssse3
19 DB 0F3h,0C3h ;repret
20
21
22ALIGN 32
23aesni_cbc_sha1_enc_ssse3:
24 mov QWORD[8+rsp],rdi ;WIN64 prologue
25 mov QWORD[16+rsp],rsi
26 mov rax,rsp
27$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:
28 mov rdi,rcx
29 mov rsi,rdx
30 mov rdx,r8
31 mov rcx,r9
32 mov r8,QWORD[40+rsp]
33 mov r9,QWORD[48+rsp]
34
35
36
37 mov r10,QWORD[56+rsp]
38
39
40 push rbx
41
42 push rbp
43
44 push r12
45
46 push r13
47
48 push r14
49
50 push r15
51
52 lea rsp,[((-264))+rsp]
53
54
55
56 movaps XMMWORD[(96+0)+rsp],xmm6
57 movaps XMMWORD[(96+16)+rsp],xmm7
58 movaps XMMWORD[(96+32)+rsp],xmm8
59 movaps XMMWORD[(96+48)+rsp],xmm9
60 movaps XMMWORD[(96+64)+rsp],xmm10
61 movaps XMMWORD[(96+80)+rsp],xmm11
62 movaps XMMWORD[(96+96)+rsp],xmm12
63 movaps XMMWORD[(96+112)+rsp],xmm13
64 movaps XMMWORD[(96+128)+rsp],xmm14
65 movaps XMMWORD[(96+144)+rsp],xmm15
66$L$prologue_ssse3:
67 mov r12,rdi
68 mov r13,rsi
69 mov r14,rdx
70 lea r15,[112+rcx]
71 movdqu xmm2,XMMWORD[r8]
72 mov QWORD[88+rsp],r8
73 shl r14,6
74 sub r13,r12
75 mov r8d,DWORD[((240-112))+r15]
76 add r14,r10
77
78 lea r11,[K_XX_XX]
79 mov eax,DWORD[r9]
80 mov ebx,DWORD[4+r9]
81 mov ecx,DWORD[8+r9]
82 mov edx,DWORD[12+r9]
83 mov esi,ebx
84 mov ebp,DWORD[16+r9]
85 mov edi,ecx
86 xor edi,edx
87 and esi,edi
88
89 movdqa xmm3,XMMWORD[64+r11]
90 movdqa xmm13,XMMWORD[r11]
91 movdqu xmm4,XMMWORD[r10]
92 movdqu xmm5,XMMWORD[16+r10]
93 movdqu xmm6,XMMWORD[32+r10]
94 movdqu xmm7,XMMWORD[48+r10]
95DB 102,15,56,0,227
96DB 102,15,56,0,235
97DB 102,15,56,0,243
98 add r10,64
99 paddd xmm4,xmm13
100DB 102,15,56,0,251
101 paddd xmm5,xmm13
102 paddd xmm6,xmm13
103 movdqa XMMWORD[rsp],xmm4
104 psubd xmm4,xmm13
105 movdqa XMMWORD[16+rsp],xmm5
106 psubd xmm5,xmm13
107 movdqa XMMWORD[32+rsp],xmm6
108 psubd xmm6,xmm13
109 movups xmm15,XMMWORD[((-112))+r15]
110 movups xmm0,XMMWORD[((16-112))+r15]
111 jmp NEAR $L$oop_ssse3
112ALIGN 32
113$L$oop_ssse3:
114 ror ebx,2
115 movups xmm14,XMMWORD[r12]
116 xorps xmm14,xmm15
117 xorps xmm2,xmm14
118 movups xmm1,XMMWORD[((-80))+r15]
119DB 102,15,56,220,208
120 pshufd xmm8,xmm4,238
121 xor esi,edx
122 movdqa xmm12,xmm7
123 paddd xmm13,xmm7
124 mov edi,eax
125 add ebp,DWORD[rsp]
126 punpcklqdq xmm8,xmm5
127 xor ebx,ecx
128 rol eax,5
129 add ebp,esi
130 psrldq xmm12,4
131 and edi,ebx
132 xor ebx,ecx
133 pxor xmm8,xmm4
134 add ebp,eax
135 ror eax,7
136 pxor xmm12,xmm6
137 xor edi,ecx
138 mov esi,ebp
139 add edx,DWORD[4+rsp]
140 pxor xmm8,xmm12
141 xor eax,ebx
142 rol ebp,5
143 movdqa XMMWORD[48+rsp],xmm13
144 add edx,edi
145 movups xmm0,XMMWORD[((-64))+r15]
146DB 102,15,56,220,209
147 and esi,eax
148 movdqa xmm3,xmm8
149 xor eax,ebx
150 add edx,ebp
151 ror ebp,7
152 movdqa xmm12,xmm8
153 xor esi,ebx
154 pslldq xmm3,12
155 paddd xmm8,xmm8
156 mov edi,edx
157 add ecx,DWORD[8+rsp]
158 psrld xmm12,31
159 xor ebp,eax
160 rol edx,5
161 add ecx,esi
162 movdqa xmm13,xmm3
163 and edi,ebp
164 xor ebp,eax
165 psrld xmm3,30
166 add ecx,edx
167 ror edx,7
168 por xmm8,xmm12
169 xor edi,eax
170 mov esi,ecx
171 add ebx,DWORD[12+rsp]
172 movups xmm1,XMMWORD[((-48))+r15]
173DB 102,15,56,220,208
174 pslld xmm13,2
175 pxor xmm8,xmm3
176 xor edx,ebp
177 movdqa xmm3,XMMWORD[r11]
178 rol ecx,5
179 add ebx,edi
180 and esi,edx
181 pxor xmm8,xmm13
182 xor edx,ebp
183 add ebx,ecx
184 ror ecx,7
185 pshufd xmm9,xmm5,238
186 xor esi,ebp
187 movdqa xmm13,xmm8
188 paddd xmm3,xmm8
189 mov edi,ebx
190 add eax,DWORD[16+rsp]
191 punpcklqdq xmm9,xmm6
192 xor ecx,edx
193 rol ebx,5
194 add eax,esi
195 psrldq xmm13,4
196 and edi,ecx
197 xor ecx,edx
198 pxor xmm9,xmm5
199 add eax,ebx
200 ror ebx,7
201 movups xmm0,XMMWORD[((-32))+r15]
202DB 102,15,56,220,209
203 pxor xmm13,xmm7
204 xor edi,edx
205 mov esi,eax
206 add ebp,DWORD[20+rsp]
207 pxor xmm9,xmm13
208 xor ebx,ecx
209 rol eax,5
210 movdqa XMMWORD[rsp],xmm3
211 add ebp,edi
212 and esi,ebx
213 movdqa xmm12,xmm9
214 xor ebx,ecx
215 add ebp,eax
216 ror eax,7
217 movdqa xmm13,xmm9
218 xor esi,ecx
219 pslldq xmm12,12
220 paddd xmm9,xmm9
221 mov edi,ebp
222 add edx,DWORD[24+rsp]
223 psrld xmm13,31
224 xor eax,ebx
225 rol ebp,5
226 add edx,esi
227 movups xmm1,XMMWORD[((-16))+r15]
228DB 102,15,56,220,208
229 movdqa xmm3,xmm12
230 and edi,eax
231 xor eax,ebx
232 psrld xmm12,30
233 add edx,ebp
234 ror ebp,7
235 por xmm9,xmm13
236 xor edi,ebx
237 mov esi,edx
238 add ecx,DWORD[28+rsp]
239 pslld xmm3,2
240 pxor xmm9,xmm12
241 xor ebp,eax
242 movdqa xmm12,XMMWORD[16+r11]
243 rol edx,5
244 add ecx,edi
245 and esi,ebp
246 pxor xmm9,xmm3
247 xor ebp,eax
248 add ecx,edx
249 ror edx,7
250 pshufd xmm10,xmm6,238
251 xor esi,eax
252 movdqa xmm3,xmm9
253 paddd xmm12,xmm9
254 mov edi,ecx
255 add ebx,DWORD[32+rsp]
256 movups xmm0,XMMWORD[r15]
257DB 102,15,56,220,209
258 punpcklqdq xmm10,xmm7
259 xor edx,ebp
260 rol ecx,5
261 add ebx,esi
262 psrldq xmm3,4
263 and edi,edx
264 xor edx,ebp
265 pxor xmm10,xmm6
266 add ebx,ecx
267 ror ecx,7
268 pxor xmm3,xmm8
269 xor edi,ebp
270 mov esi,ebx
271 add eax,DWORD[36+rsp]
272 pxor xmm10,xmm3
273 xor ecx,edx
274 rol ebx,5
275 movdqa XMMWORD[16+rsp],xmm12
276 add eax,edi
277 and esi,ecx
278 movdqa xmm13,xmm10
279 xor ecx,edx
280 add eax,ebx
281 ror ebx,7
282 movups xmm1,XMMWORD[16+r15]
283DB 102,15,56,220,208
284 movdqa xmm3,xmm10
285 xor esi,edx
286 pslldq xmm13,12
287 paddd xmm10,xmm10
288 mov edi,eax
289 add ebp,DWORD[40+rsp]
290 psrld xmm3,31
291 xor ebx,ecx
292 rol eax,5
293 add ebp,esi
294 movdqa xmm12,xmm13
295 and edi,ebx
296 xor ebx,ecx
297 psrld xmm13,30
298 add ebp,eax
299 ror eax,7
300 por xmm10,xmm3
301 xor edi,ecx
302 mov esi,ebp
303 add edx,DWORD[44+rsp]
304 pslld xmm12,2
305 pxor xmm10,xmm13
306 xor eax,ebx
307 movdqa xmm13,XMMWORD[16+r11]
308 rol ebp,5
309 add edx,edi
310 movups xmm0,XMMWORD[32+r15]
311DB 102,15,56,220,209
312 and esi,eax
313 pxor xmm10,xmm12
314 xor eax,ebx
315 add edx,ebp
316 ror ebp,7
317 pshufd xmm11,xmm7,238
318 xor esi,ebx
319 movdqa xmm12,xmm10
320 paddd xmm13,xmm10
321 mov edi,edx
322 add ecx,DWORD[48+rsp]
323 punpcklqdq xmm11,xmm8
324 xor ebp,eax
325 rol edx,5
326 add ecx,esi
327 psrldq xmm12,4
328 and edi,ebp
329 xor ebp,eax
330 pxor xmm11,xmm7
331 add ecx,edx
332 ror edx,7
333 pxor xmm12,xmm9
334 xor edi,eax
335 mov esi,ecx
336 add ebx,DWORD[52+rsp]
337 movups xmm1,XMMWORD[48+r15]
338DB 102,15,56,220,208
339 pxor xmm11,xmm12
340 xor edx,ebp
341 rol ecx,5
342 movdqa XMMWORD[32+rsp],xmm13
343 add ebx,edi
344 and esi,edx
345 movdqa xmm3,xmm11
346 xor edx,ebp
347 add ebx,ecx
348 ror ecx,7
349 movdqa xmm12,xmm11
350 xor esi,ebp
351 pslldq xmm3,12
352 paddd xmm11,xmm11
353 mov edi,ebx
354 add eax,DWORD[56+rsp]
355 psrld xmm12,31
356 xor ecx,edx
357 rol ebx,5
358 add eax,esi
359 movdqa xmm13,xmm3
360 and edi,ecx
361 xor ecx,edx
362 psrld xmm3,30
363 add eax,ebx
364 ror ebx,7
365 cmp r8d,11
366 jb NEAR $L$aesenclast1
367 movups xmm0,XMMWORD[64+r15]
368DB 102,15,56,220,209
369 movups xmm1,XMMWORD[80+r15]
370DB 102,15,56,220,208
371 je NEAR $L$aesenclast1
372 movups xmm0,XMMWORD[96+r15]
373DB 102,15,56,220,209
374 movups xmm1,XMMWORD[112+r15]
375DB 102,15,56,220,208
376$L$aesenclast1:
377DB 102,15,56,221,209
378 movups xmm0,XMMWORD[((16-112))+r15]
379 por xmm11,xmm12
380 xor edi,edx
381 mov esi,eax
382 add ebp,DWORD[60+rsp]
383 pslld xmm13,2
384 pxor xmm11,xmm3
385 xor ebx,ecx
386 movdqa xmm3,XMMWORD[16+r11]
387 rol eax,5
388 add ebp,edi
389 and esi,ebx
390 pxor xmm11,xmm13
391 pshufd xmm13,xmm10,238
392 xor ebx,ecx
393 add ebp,eax
394 ror eax,7
395 pxor xmm4,xmm8
396 xor esi,ecx
397 mov edi,ebp
398 add edx,DWORD[rsp]
399 punpcklqdq xmm13,xmm11
400 xor eax,ebx
401 rol ebp,5
402 pxor xmm4,xmm5
403 add edx,esi
404 movups xmm14,XMMWORD[16+r12]
405 xorps xmm14,xmm15
406 movups XMMWORD[r13*1+r12],xmm2
407 xorps xmm2,xmm14
408 movups xmm1,XMMWORD[((-80))+r15]
409DB 102,15,56,220,208
410 and edi,eax
411 movdqa xmm12,xmm3
412 xor eax,ebx
413 paddd xmm3,xmm11
414 add edx,ebp
415 pxor xmm4,xmm13
416 ror ebp,7
417 xor edi,ebx
418 mov esi,edx
419 add ecx,DWORD[4+rsp]
420 movdqa xmm13,xmm4
421 xor ebp,eax
422 rol edx,5
423 movdqa XMMWORD[48+rsp],xmm3
424 add ecx,edi
425 and esi,ebp
426 xor ebp,eax
427 pslld xmm4,2
428 add ecx,edx
429 ror edx,7
430 psrld xmm13,30
431 xor esi,eax
432 mov edi,ecx
433 add ebx,DWORD[8+rsp]
434 movups xmm0,XMMWORD[((-64))+r15]
435DB 102,15,56,220,209
436 por xmm4,xmm13
437 xor edx,ebp
438 rol ecx,5
439 pshufd xmm3,xmm11,238
440 add ebx,esi
441 and edi,edx
442 xor edx,ebp
443 add ebx,ecx
444 add eax,DWORD[12+rsp]
445 xor edi,ebp
446 mov esi,ebx
447 rol ebx,5
448 add eax,edi
449 xor esi,edx
450 ror ecx,7
451 add eax,ebx
452 pxor xmm5,xmm9
453 add ebp,DWORD[16+rsp]
454 movups xmm1,XMMWORD[((-48))+r15]
455DB 102,15,56,220,208
456 xor esi,ecx
457 punpcklqdq xmm3,xmm4
458 mov edi,eax
459 rol eax,5
460 pxor xmm5,xmm6
461 add ebp,esi
462 xor edi,ecx
463 movdqa xmm13,xmm12
464 ror ebx,7
465 paddd xmm12,xmm4
466 add ebp,eax
467 pxor xmm5,xmm3
468 add edx,DWORD[20+rsp]
469 xor edi,ebx
470 mov esi,ebp
471 rol ebp,5
472 movdqa xmm3,xmm5
473 add edx,edi
474 xor esi,ebx
475 movdqa XMMWORD[rsp],xmm12
476 ror eax,7
477 add edx,ebp
478 add ecx,DWORD[24+rsp]
479 pslld xmm5,2
480 xor esi,eax
481 mov edi,edx
482 psrld xmm3,30
483 rol edx,5
484 add ecx,esi
485 movups xmm0,XMMWORD[((-32))+r15]
486DB 102,15,56,220,209
487 xor edi,eax
488 ror ebp,7
489 por xmm5,xmm3
490 add ecx,edx
491 add ebx,DWORD[28+rsp]
492 pshufd xmm12,xmm4,238
493 xor edi,ebp
494 mov esi,ecx
495 rol ecx,5
496 add ebx,edi
497 xor esi,ebp
498 ror edx,7
499 add ebx,ecx
500 pxor xmm6,xmm10
501 add eax,DWORD[32+rsp]
502 xor esi,edx
503 punpcklqdq xmm12,xmm5
504 mov edi,ebx
505 rol ebx,5
506 pxor xmm6,xmm7
507 add eax,esi
508 xor edi,edx
509 movdqa xmm3,XMMWORD[32+r11]
510 ror ecx,7
511 paddd xmm13,xmm5
512 add eax,ebx
513 pxor xmm6,xmm12
514 add ebp,DWORD[36+rsp]
515 movups xmm1,XMMWORD[((-16))+r15]
516DB 102,15,56,220,208
517 xor edi,ecx
518 mov esi,eax
519 rol eax,5
520 movdqa xmm12,xmm6
521 add ebp,edi
522 xor esi,ecx
523 movdqa XMMWORD[16+rsp],xmm13
524 ror ebx,7
525 add ebp,eax
526 add edx,DWORD[40+rsp]
527 pslld xmm6,2
528 xor esi,ebx
529 mov edi,ebp
530 psrld xmm12,30
531 rol ebp,5
532 add edx,esi
533 xor edi,ebx
534 ror eax,7
535 por xmm6,xmm12
536 add edx,ebp
537 add ecx,DWORD[44+rsp]
538 pshufd xmm13,xmm5,238
539 xor edi,eax
540 mov esi,edx
541 rol edx,5
542 add ecx,edi
543 movups xmm0,XMMWORD[r15]
544DB 102,15,56,220,209
545 xor esi,eax
546 ror ebp,7
547 add ecx,edx
548 pxor xmm7,xmm11
549 add ebx,DWORD[48+rsp]
550 xor esi,ebp
551 punpcklqdq xmm13,xmm6
552 mov edi,ecx
553 rol ecx,5
554 pxor xmm7,xmm8
555 add ebx,esi
556 xor edi,ebp
557 movdqa xmm12,xmm3
558 ror edx,7
559 paddd xmm3,xmm6
560 add ebx,ecx
561 pxor xmm7,xmm13
562 add eax,DWORD[52+rsp]
563 xor edi,edx
564 mov esi,ebx
565 rol ebx,5
566 movdqa xmm13,xmm7
567 add eax,edi
568 xor esi,edx
569 movdqa XMMWORD[32+rsp],xmm3
570 ror ecx,7
571 add eax,ebx
572 add ebp,DWORD[56+rsp]
573 movups xmm1,XMMWORD[16+r15]
574DB 102,15,56,220,208
575 pslld xmm7,2
576 xor esi,ecx
577 mov edi,eax
578 psrld xmm13,30
579 rol eax,5
580 add ebp,esi
581 xor edi,ecx
582 ror ebx,7
583 por xmm7,xmm13
584 add ebp,eax
585 add edx,DWORD[60+rsp]
586 pshufd xmm3,xmm6,238
587 xor edi,ebx
588 mov esi,ebp
589 rol ebp,5
590 add edx,edi
591 xor esi,ebx
592 ror eax,7
593 add edx,ebp
594 pxor xmm8,xmm4
595 add ecx,DWORD[rsp]
596 xor esi,eax
597 punpcklqdq xmm3,xmm7
598 mov edi,edx
599 rol edx,5
600 pxor xmm8,xmm9
601 add ecx,esi
602 movups xmm0,XMMWORD[32+r15]
603DB 102,15,56,220,209
604 xor edi,eax
605 movdqa xmm13,xmm12
606 ror ebp,7
607 paddd xmm12,xmm7
608 add ecx,edx
609 pxor xmm8,xmm3
610 add ebx,DWORD[4+rsp]
611 xor edi,ebp
612 mov esi,ecx
613 rol ecx,5
614 movdqa xmm3,xmm8
615 add ebx,edi
616 xor esi,ebp
617 movdqa XMMWORD[48+rsp],xmm12
618 ror edx,7
619 add ebx,ecx
620 add eax,DWORD[8+rsp]
621 pslld xmm8,2
622 xor esi,edx
623 mov edi,ebx
624 psrld xmm3,30
625 rol ebx,5
626 add eax,esi
627 xor edi,edx
628 ror ecx,7
629 por xmm8,xmm3
630 add eax,ebx
631 add ebp,DWORD[12+rsp]
632 movups xmm1,XMMWORD[48+r15]
633DB 102,15,56,220,208
634 pshufd xmm12,xmm7,238
635 xor edi,ecx
636 mov esi,eax
637 rol eax,5
638 add ebp,edi
639 xor esi,ecx
640 ror ebx,7
641 add ebp,eax
642 pxor xmm9,xmm5
643 add edx,DWORD[16+rsp]
644 xor esi,ebx
645 punpcklqdq xmm12,xmm8
646 mov edi,ebp
647 rol ebp,5
648 pxor xmm9,xmm10
649 add edx,esi
650 xor edi,ebx
651 movdqa xmm3,xmm13
652 ror eax,7
653 paddd xmm13,xmm8
654 add edx,ebp
655 pxor xmm9,xmm12
656 add ecx,DWORD[20+rsp]
657 xor edi,eax
658 mov esi,edx
659 rol edx,5
660 movdqa xmm12,xmm9
661 add ecx,edi
662 cmp r8d,11
663 jb NEAR $L$aesenclast2
664 movups xmm0,XMMWORD[64+r15]
665DB 102,15,56,220,209
666 movups xmm1,XMMWORD[80+r15]
667DB 102,15,56,220,208
668 je NEAR $L$aesenclast2
669 movups xmm0,XMMWORD[96+r15]
670DB 102,15,56,220,209
671 movups xmm1,XMMWORD[112+r15]
672DB 102,15,56,220,208
673$L$aesenclast2:
674DB 102,15,56,221,209
675 movups xmm0,XMMWORD[((16-112))+r15]
676 xor esi,eax
677 movdqa XMMWORD[rsp],xmm13
678 ror ebp,7
679 add ecx,edx
680 add ebx,DWORD[24+rsp]
681 pslld xmm9,2
682 xor esi,ebp
683 mov edi,ecx
684 psrld xmm12,30
685 rol ecx,5
686 add ebx,esi
687 xor edi,ebp
688 ror edx,7
689 por xmm9,xmm12
690 add ebx,ecx
691 add eax,DWORD[28+rsp]
692 pshufd xmm13,xmm8,238
693 ror ecx,7
694 mov esi,ebx
695 xor edi,edx
696 rol ebx,5
697 add eax,edi
698 xor esi,ecx
699 xor ecx,edx
700 add eax,ebx
701 pxor xmm10,xmm6
702 add ebp,DWORD[32+rsp]
703 movups xmm14,XMMWORD[32+r12]
704 xorps xmm14,xmm15
705 movups XMMWORD[16+r12*1+r13],xmm2
706 xorps xmm2,xmm14
707 movups xmm1,XMMWORD[((-80))+r15]
708DB 102,15,56,220,208
709 and esi,ecx
710 xor ecx,edx
711 ror ebx,7
712 punpcklqdq xmm13,xmm9
713 mov edi,eax
714 xor esi,ecx
715 pxor xmm10,xmm11
716 rol eax,5
717 add ebp,esi
718 movdqa xmm12,xmm3
719 xor edi,ebx
720 paddd xmm3,xmm9
721 xor ebx,ecx
722 pxor xmm10,xmm13
723 add ebp,eax
724 add edx,DWORD[36+rsp]
725 and edi,ebx
726 xor ebx,ecx
727 ror eax,7
728 movdqa xmm13,xmm10
729 mov esi,ebp
730 xor edi,ebx
731 movdqa XMMWORD[16+rsp],xmm3
732 rol ebp,5
733 add edx,edi
734 movups xmm0,XMMWORD[((-64))+r15]
735DB 102,15,56,220,209
736 xor esi,eax
737 pslld xmm10,2
738 xor eax,ebx
739 add edx,ebp
740 psrld xmm13,30
741 add ecx,DWORD[40+rsp]
742 and esi,eax
743 xor eax,ebx
744 por xmm10,xmm13
745 ror ebp,7
746 mov edi,edx
747 xor esi,eax
748 rol edx,5
749 pshufd xmm3,xmm9,238
750 add ecx,esi
751 xor edi,ebp
752 xor ebp,eax
753 add ecx,edx
754 add ebx,DWORD[44+rsp]
755 and edi,ebp
756 xor ebp,eax
757 ror edx,7
758 movups xmm1,XMMWORD[((-48))+r15]
759DB 102,15,56,220,208
760 mov esi,ecx
761 xor edi,ebp
762 rol ecx,5
763 add ebx,edi
764 xor esi,edx
765 xor edx,ebp
766 add ebx,ecx
767 pxor xmm11,xmm7
768 add eax,DWORD[48+rsp]
769 and esi,edx
770 xor edx,ebp
771 ror ecx,7
772 punpcklqdq xmm3,xmm10
773 mov edi,ebx
774 xor esi,edx
775 pxor xmm11,xmm4
776 rol ebx,5
777 add eax,esi
778 movdqa xmm13,XMMWORD[48+r11]
779 xor edi,ecx
780 paddd xmm12,xmm10
781 xor ecx,edx
782 pxor xmm11,xmm3
783 add eax,ebx
784 add ebp,DWORD[52+rsp]
785 movups xmm0,XMMWORD[((-32))+r15]
786DB 102,15,56,220,209
787 and edi,ecx
788 xor ecx,edx
789 ror ebx,7
790 movdqa xmm3,xmm11
791 mov esi,eax
792 xor edi,ecx
793 movdqa XMMWORD[32+rsp],xmm12
794 rol eax,5
795 add ebp,edi
796 xor esi,ebx
797 pslld xmm11,2
798 xor ebx,ecx
799 add ebp,eax
800 psrld xmm3,30
801 add edx,DWORD[56+rsp]
802 and esi,ebx
803 xor ebx,ecx
804 por xmm11,xmm3
805 ror eax,7
806 mov edi,ebp
807 xor esi,ebx
808 rol ebp,5
809 pshufd xmm12,xmm10,238
810 add edx,esi
811 movups xmm1,XMMWORD[((-16))+r15]
812DB 102,15,56,220,208
813 xor edi,eax
814 xor eax,ebx
815 add edx,ebp
816 add ecx,DWORD[60+rsp]
817 and edi,eax
818 xor eax,ebx
819 ror ebp,7
820 mov esi,edx
821 xor edi,eax
822 rol edx,5
823 add ecx,edi
824 xor esi,ebp
825 xor ebp,eax
826 add ecx,edx
827 pxor xmm4,xmm8
828 add ebx,DWORD[rsp]
829 and esi,ebp
830 xor ebp,eax
831 ror edx,7
832 movups xmm0,XMMWORD[r15]
833DB 102,15,56,220,209
834 punpcklqdq xmm12,xmm11
835 mov edi,ecx
836 xor esi,ebp
837 pxor xmm4,xmm5
838 rol ecx,5
839 add ebx,esi
840 movdqa xmm3,xmm13
841 xor edi,edx
842 paddd xmm13,xmm11
843 xor edx,ebp
844 pxor xmm4,xmm12
845 add ebx,ecx
846 add eax,DWORD[4+rsp]
847 and edi,edx
848 xor edx,ebp
849 ror ecx,7
850 movdqa xmm12,xmm4
851 mov esi,ebx
852 xor edi,edx
853 movdqa XMMWORD[48+rsp],xmm13
854 rol ebx,5
855 add eax,edi
856 xor esi,ecx
857 pslld xmm4,2
858 xor ecx,edx
859 add eax,ebx
860 psrld xmm12,30
861 add ebp,DWORD[8+rsp]
862 movups xmm1,XMMWORD[16+r15]
863DB 102,15,56,220,208
864 and esi,ecx
865 xor ecx,edx
866 por xmm4,xmm12
867 ror ebx,7
868 mov edi,eax
869 xor esi,ecx
870 rol eax,5
871 pshufd xmm13,xmm11,238
872 add ebp,esi
873 xor edi,ebx
874 xor ebx,ecx
875 add ebp,eax
876 add edx,DWORD[12+rsp]
877 and edi,ebx
878 xor ebx,ecx
879 ror eax,7
880 mov esi,ebp
881 xor edi,ebx
882 rol ebp,5
883 add edx,edi
884 movups xmm0,XMMWORD[32+r15]
885DB 102,15,56,220,209
886 xor esi,eax
887 xor eax,ebx
888 add edx,ebp
889 pxor xmm5,xmm9
890 add ecx,DWORD[16+rsp]
891 and esi,eax
892 xor eax,ebx
893 ror ebp,7
894 punpcklqdq xmm13,xmm4
895 mov edi,edx
896 xor esi,eax
897 pxor xmm5,xmm6
898 rol edx,5
899 add ecx,esi
900 movdqa xmm12,xmm3
901 xor edi,ebp
902 paddd xmm3,xmm4
903 xor ebp,eax
904 pxor xmm5,xmm13
905 add ecx,edx
906 add ebx,DWORD[20+rsp]
907 and edi,ebp
908 xor ebp,eax
909 ror edx,7
910 movups xmm1,XMMWORD[48+r15]
911DB 102,15,56,220,208
912 movdqa xmm13,xmm5
913 mov esi,ecx
914 xor edi,ebp
915 movdqa XMMWORD[rsp],xmm3
916 rol ecx,5
917 add ebx,edi
918 xor esi,edx
919 pslld xmm5,2
920 xor edx,ebp
921 add ebx,ecx
922 psrld xmm13,30
923 add eax,DWORD[24+rsp]
924 and esi,edx
925 xor edx,ebp
926 por xmm5,xmm13
927 ror ecx,7
928 mov edi,ebx
929 xor esi,edx
930 rol ebx,5
931 pshufd xmm3,xmm4,238
932 add eax,esi
933 xor edi,ecx
934 xor ecx,edx
935 add eax,ebx
936 add ebp,DWORD[28+rsp]
937 cmp r8d,11
938 jb NEAR $L$aesenclast3
939 movups xmm0,XMMWORD[64+r15]
940DB 102,15,56,220,209
941 movups xmm1,XMMWORD[80+r15]
942DB 102,15,56,220,208
943 je NEAR $L$aesenclast3
944 movups xmm0,XMMWORD[96+r15]
945DB 102,15,56,220,209
946 movups xmm1,XMMWORD[112+r15]
947DB 102,15,56,220,208
948$L$aesenclast3:
949DB 102,15,56,221,209
950 movups xmm0,XMMWORD[((16-112))+r15]
951 and edi,ecx
952 xor ecx,edx
953 ror ebx,7
954 mov esi,eax
955 xor edi,ecx
956 rol eax,5
957 add ebp,edi
958 xor esi,ebx
959 xor ebx,ecx
960 add ebp,eax
961 pxor xmm6,xmm10
962 add edx,DWORD[32+rsp]
963 and esi,ebx
964 xor ebx,ecx
965 ror eax,7
966 punpcklqdq xmm3,xmm5
967 mov edi,ebp
968 xor esi,ebx
969 pxor xmm6,xmm7
970 rol ebp,5
971 add edx,esi
972 movups xmm14,XMMWORD[48+r12]
973 xorps xmm14,xmm15
974 movups XMMWORD[32+r12*1+r13],xmm2
975 xorps xmm2,xmm14
976 movups xmm1,XMMWORD[((-80))+r15]
977DB 102,15,56,220,208
978 movdqa xmm13,xmm12
979 xor edi,eax
980 paddd xmm12,xmm5
981 xor eax,ebx
982 pxor xmm6,xmm3
983 add edx,ebp
984 add ecx,DWORD[36+rsp]
985 and edi,eax
986 xor eax,ebx
987 ror ebp,7
988 movdqa xmm3,xmm6
989 mov esi,edx
990 xor edi,eax
991 movdqa XMMWORD[16+rsp],xmm12
992 rol edx,5
993 add ecx,edi
994 xor esi,ebp
995 pslld xmm6,2
996 xor ebp,eax
997 add ecx,edx
998 psrld xmm3,30
999 add ebx,DWORD[40+rsp]
1000 and esi,ebp
1001 xor ebp,eax
1002 por xmm6,xmm3
1003 ror edx,7
1004 movups xmm0,XMMWORD[((-64))+r15]
1005DB 102,15,56,220,209
1006 mov edi,ecx
1007 xor esi,ebp
1008 rol ecx,5
1009 pshufd xmm12,xmm5,238
1010 add ebx,esi
1011 xor edi,edx
1012 xor edx,ebp
1013 add ebx,ecx
1014 add eax,DWORD[44+rsp]
1015 and edi,edx
1016 xor edx,ebp
1017 ror ecx,7
1018 mov esi,ebx
1019 xor edi,edx
1020 rol ebx,5
1021 add eax,edi
1022 xor esi,edx
1023 add eax,ebx
1024 pxor xmm7,xmm11
1025 add ebp,DWORD[48+rsp]
1026 movups xmm1,XMMWORD[((-48))+r15]
1027DB 102,15,56,220,208
1028 xor esi,ecx
1029 punpcklqdq xmm12,xmm6
1030 mov edi,eax
1031 rol eax,5
1032 pxor xmm7,xmm8
1033 add ebp,esi
1034 xor edi,ecx
1035 movdqa xmm3,xmm13
1036 ror ebx,7
1037 paddd xmm13,xmm6
1038 add ebp,eax
1039 pxor xmm7,xmm12
1040 add edx,DWORD[52+rsp]
1041 xor edi,ebx
1042 mov esi,ebp
1043 rol ebp,5
1044 movdqa xmm12,xmm7
1045 add edx,edi
1046 xor esi,ebx
1047 movdqa XMMWORD[32+rsp],xmm13
1048 ror eax,7
1049 add edx,ebp
1050 add ecx,DWORD[56+rsp]
1051 pslld xmm7,2
1052 xor esi,eax
1053 mov edi,edx
1054 psrld xmm12,30
1055 rol edx,5
1056 add ecx,esi
1057 movups xmm0,XMMWORD[((-32))+r15]
1058DB 102,15,56,220,209
1059 xor edi,eax
1060 ror ebp,7
1061 por xmm7,xmm12
1062 add ecx,edx
1063 add ebx,DWORD[60+rsp]
1064 xor edi,ebp
1065 mov esi,ecx
1066 rol ecx,5
1067 add ebx,edi
1068 xor esi,ebp
1069 ror edx,7
1070 add ebx,ecx
1071 add eax,DWORD[rsp]
1072 xor esi,edx
1073 mov edi,ebx
1074 rol ebx,5
1075 paddd xmm3,xmm7
1076 add eax,esi
1077 xor edi,edx
1078 movdqa XMMWORD[48+rsp],xmm3
1079 ror ecx,7
1080 add eax,ebx
1081 add ebp,DWORD[4+rsp]
1082 movups xmm1,XMMWORD[((-16))+r15]
1083DB 102,15,56,220,208
1084 xor edi,ecx
1085 mov esi,eax
1086 rol eax,5
1087 add ebp,edi
1088 xor esi,ecx
1089 ror ebx,7
1090 add ebp,eax
1091 add edx,DWORD[8+rsp]
1092 xor esi,ebx
1093 mov edi,ebp
1094 rol ebp,5
1095 add edx,esi
1096 xor edi,ebx
1097 ror eax,7
1098 add edx,ebp
1099 add ecx,DWORD[12+rsp]
1100 xor edi,eax
1101 mov esi,edx
1102 rol edx,5
1103 add ecx,edi
1104 movups xmm0,XMMWORD[r15]
1105DB 102,15,56,220,209
1106 xor esi,eax
1107 ror ebp,7
1108 add ecx,edx
1109 cmp r10,r14
1110 je NEAR $L$done_ssse3
1111 movdqa xmm3,XMMWORD[64+r11]
1112 movdqa xmm13,XMMWORD[r11]
1113 movdqu xmm4,XMMWORD[r10]
1114 movdqu xmm5,XMMWORD[16+r10]
1115 movdqu xmm6,XMMWORD[32+r10]
1116 movdqu xmm7,XMMWORD[48+r10]
1117DB 102,15,56,0,227
1118 add r10,64
1119 add ebx,DWORD[16+rsp]
1120 xor esi,ebp
1121 mov edi,ecx
1122DB 102,15,56,0,235
1123 rol ecx,5
1124 add ebx,esi
1125 xor edi,ebp
1126 ror edx,7
1127 paddd xmm4,xmm13
1128 add ebx,ecx
1129 add eax,DWORD[20+rsp]
1130 xor edi,edx
1131 mov esi,ebx
1132 movdqa XMMWORD[rsp],xmm4
1133 rol ebx,5
1134 add eax,edi
1135 xor esi,edx
1136 ror ecx,7
1137 psubd xmm4,xmm13
1138 add eax,ebx
1139 add ebp,DWORD[24+rsp]
1140 movups xmm1,XMMWORD[16+r15]
1141DB 102,15,56,220,208
1142 xor esi,ecx
1143 mov edi,eax
1144 rol eax,5
1145 add ebp,esi
1146 xor edi,ecx
1147 ror ebx,7
1148 add ebp,eax
1149 add edx,DWORD[28+rsp]
1150 xor edi,ebx
1151 mov esi,ebp
1152 rol ebp,5
1153 add edx,edi
1154 xor esi,ebx
1155 ror eax,7
1156 add edx,ebp
1157 add ecx,DWORD[32+rsp]
1158 xor esi,eax
1159 mov edi,edx
1160DB 102,15,56,0,243
1161 rol edx,5
1162 add ecx,esi
1163 movups xmm0,XMMWORD[32+r15]
1164DB 102,15,56,220,209
1165 xor edi,eax
1166 ror ebp,7
1167 paddd xmm5,xmm13
1168 add ecx,edx
1169 add ebx,DWORD[36+rsp]
1170 xor edi,ebp
1171 mov esi,ecx
1172 movdqa XMMWORD[16+rsp],xmm5
1173 rol ecx,5
1174 add ebx,edi
1175 xor esi,ebp
1176 ror edx,7
1177 psubd xmm5,xmm13
1178 add ebx,ecx
1179 add eax,DWORD[40+rsp]
1180 xor esi,edx
1181 mov edi,ebx
1182 rol ebx,5
1183 add eax,esi
1184 xor edi,edx
1185 ror ecx,7
1186 add eax,ebx
1187 add ebp,DWORD[44+rsp]
1188 movups xmm1,XMMWORD[48+r15]
1189DB 102,15,56,220,208
1190 xor edi,ecx
1191 mov esi,eax
1192 rol eax,5
1193 add ebp,edi
1194 xor esi,ecx
1195 ror ebx,7
1196 add ebp,eax
1197 add edx,DWORD[48+rsp]
1198 xor esi,ebx
1199 mov edi,ebp
1200DB 102,15,56,0,251
1201 rol ebp,5
1202 add edx,esi
1203 xor edi,ebx
1204 ror eax,7
1205 paddd xmm6,xmm13
1206 add edx,ebp
1207 add ecx,DWORD[52+rsp]
1208 xor edi,eax
1209 mov esi,edx
1210 movdqa XMMWORD[32+rsp],xmm6
1211 rol edx,5
1212 add ecx,edi
1213 cmp r8d,11
1214 jb NEAR $L$aesenclast4
1215 movups xmm0,XMMWORD[64+r15]
1216DB 102,15,56,220,209
1217 movups xmm1,XMMWORD[80+r15]
1218DB 102,15,56,220,208
1219 je NEAR $L$aesenclast4
1220 movups xmm0,XMMWORD[96+r15]
1221DB 102,15,56,220,209
1222 movups xmm1,XMMWORD[112+r15]
1223DB 102,15,56,220,208
1224$L$aesenclast4:
1225DB 102,15,56,221,209
1226 movups xmm0,XMMWORD[((16-112))+r15]
1227 xor esi,eax
1228 ror ebp,7
1229 psubd xmm6,xmm13
1230 add ecx,edx
1231 add ebx,DWORD[56+rsp]
1232 xor esi,ebp
1233 mov edi,ecx
1234 rol ecx,5
1235 add ebx,esi
1236 xor edi,ebp
1237 ror edx,7
1238 add ebx,ecx
1239 add eax,DWORD[60+rsp]
1240 xor edi,edx
1241 mov esi,ebx
1242 rol ebx,5
1243 add eax,edi
1244 ror ecx,7
1245 add eax,ebx
1246 movups XMMWORD[48+r12*1+r13],xmm2
1247 lea r12,[64+r12]
1248
1249 add eax,DWORD[r9]
1250 add esi,DWORD[4+r9]
1251 add ecx,DWORD[8+r9]
1252 add edx,DWORD[12+r9]
1253 mov DWORD[r9],eax
1254 add ebp,DWORD[16+r9]
1255 mov DWORD[4+r9],esi
1256 mov ebx,esi
1257 mov DWORD[8+r9],ecx
1258 mov edi,ecx
1259 mov DWORD[12+r9],edx
1260 xor edi,edx
1261 mov DWORD[16+r9],ebp
1262 and esi,edi
1263 jmp NEAR $L$oop_ssse3
1264
1265$L$done_ssse3:
1266 add ebx,DWORD[16+rsp]
1267 xor esi,ebp
1268 mov edi,ecx
1269 rol ecx,5
1270 add ebx,esi
1271 xor edi,ebp
1272 ror edx,7
1273 add ebx,ecx
1274 add eax,DWORD[20+rsp]
1275 xor edi,edx
1276 mov esi,ebx
1277 rol ebx,5
1278 add eax,edi
1279 xor esi,edx
1280 ror ecx,7
1281 add eax,ebx
1282 add ebp,DWORD[24+rsp]
1283 movups xmm1,XMMWORD[16+r15]
1284DB 102,15,56,220,208
1285 xor esi,ecx
1286 mov edi,eax
1287 rol eax,5
1288 add ebp,esi
1289 xor edi,ecx
1290 ror ebx,7
1291 add ebp,eax
1292 add edx,DWORD[28+rsp]
1293 xor edi,ebx
1294 mov esi,ebp
1295 rol ebp,5
1296 add edx,edi
1297 xor esi,ebx
1298 ror eax,7
1299 add edx,ebp
1300 add ecx,DWORD[32+rsp]
1301 xor esi,eax
1302 mov edi,edx
1303 rol edx,5
1304 add ecx,esi
1305 movups xmm0,XMMWORD[32+r15]
1306DB 102,15,56,220,209
1307 xor edi,eax
1308 ror ebp,7
1309 add ecx,edx
1310 add ebx,DWORD[36+rsp]
1311 xor edi,ebp
1312 mov esi,ecx
1313 rol ecx,5
1314 add ebx,edi
1315 xor esi,ebp
1316 ror edx,7
1317 add ebx,ecx
1318 add eax,DWORD[40+rsp]
1319 xor esi,edx
1320 mov edi,ebx
1321 rol ebx,5
1322 add eax,esi
1323 xor edi,edx
1324 ror ecx,7
1325 add eax,ebx
1326 add ebp,DWORD[44+rsp]
1327 movups xmm1,XMMWORD[48+r15]
1328DB 102,15,56,220,208
1329 xor edi,ecx
1330 mov esi,eax
1331 rol eax,5
1332 add ebp,edi
1333 xor esi,ecx
1334 ror ebx,7
1335 add ebp,eax
1336 add edx,DWORD[48+rsp]
1337 xor esi,ebx
1338 mov edi,ebp
1339 rol ebp,5
1340 add edx,esi
1341 xor edi,ebx
1342 ror eax,7
1343 add edx,ebp
1344 add ecx,DWORD[52+rsp]
1345 xor edi,eax
1346 mov esi,edx
1347 rol edx,5
1348 add ecx,edi
1349 cmp r8d,11
1350 jb NEAR $L$aesenclast5
1351 movups xmm0,XMMWORD[64+r15]
1352DB 102,15,56,220,209
1353 movups xmm1,XMMWORD[80+r15]
1354DB 102,15,56,220,208
1355 je NEAR $L$aesenclast5
1356 movups xmm0,XMMWORD[96+r15]
1357DB 102,15,56,220,209
1358 movups xmm1,XMMWORD[112+r15]
1359DB 102,15,56,220,208
1360$L$aesenclast5:
1361DB 102,15,56,221,209
1362 movups xmm0,XMMWORD[((16-112))+r15]
1363 xor esi,eax
1364 ror ebp,7
1365 add ecx,edx
1366 add ebx,DWORD[56+rsp]
1367 xor esi,ebp
1368 mov edi,ecx
1369 rol ecx,5
1370 add ebx,esi
1371 xor edi,ebp
1372 ror edx,7
1373 add ebx,ecx
1374 add eax,DWORD[60+rsp]
1375 xor edi,edx
1376 mov esi,ebx
1377 rol ebx,5
1378 add eax,edi
1379 ror ecx,7
1380 add eax,ebx
1381 movups XMMWORD[48+r12*1+r13],xmm2
1382 mov r8,QWORD[88+rsp]
1383
1384 add eax,DWORD[r9]
1385 add esi,DWORD[4+r9]
1386 add ecx,DWORD[8+r9]
1387 mov DWORD[r9],eax
1388 add edx,DWORD[12+r9]
1389 mov DWORD[4+r9],esi
1390 add ebp,DWORD[16+r9]
1391 mov DWORD[8+r9],ecx
1392 mov DWORD[12+r9],edx
1393 mov DWORD[16+r9],ebp
1394 movups XMMWORD[r8],xmm2
1395 movaps xmm6,XMMWORD[((96+0))+rsp]
1396 movaps xmm7,XMMWORD[((96+16))+rsp]
1397 movaps xmm8,XMMWORD[((96+32))+rsp]
1398 movaps xmm9,XMMWORD[((96+48))+rsp]
1399 movaps xmm10,XMMWORD[((96+64))+rsp]
1400 movaps xmm11,XMMWORD[((96+80))+rsp]
1401 movaps xmm12,XMMWORD[((96+96))+rsp]
1402 movaps xmm13,XMMWORD[((96+112))+rsp]
1403 movaps xmm14,XMMWORD[((96+128))+rsp]
1404 movaps xmm15,XMMWORD[((96+144))+rsp]
1405 lea rsi,[264+rsp]
1406
1407 mov r15,QWORD[rsi]
1408
1409 mov r14,QWORD[8+rsi]
1410
1411 mov r13,QWORD[16+rsi]
1412
1413 mov r12,QWORD[24+rsi]
1414
1415 mov rbp,QWORD[32+rsi]
1416
1417 mov rbx,QWORD[40+rsi]
1418
1419 lea rsp,[48+rsi]
1420
1421$L$epilogue_ssse3:
1422 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1423 mov rsi,QWORD[16+rsp]
1424 DB 0F3h,0C3h ;repret
1425
1426$L$SEH_end_aesni_cbc_sha1_enc_ssse3:
1427ALIGN 64
1428K_XX_XX:
1429 DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999
1430 DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
1431 DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
1432 DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
1433 DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
1434DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
1435
1436DB 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
1437DB 116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52
1438DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32
1439DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111
1440DB 114,103,62,0
1441ALIGN 64
1442
1443ALIGN 32
1444aesni_cbc_sha1_enc_shaext:
1445 mov QWORD[8+rsp],rdi ;WIN64 prologue
1446 mov QWORD[16+rsp],rsi
1447 mov rax,rsp
1448$L$SEH_begin_aesni_cbc_sha1_enc_shaext:
1449 mov rdi,rcx
1450 mov rsi,rdx
1451 mov rdx,r8
1452 mov rcx,r9
1453 mov r8,QWORD[40+rsp]
1454 mov r9,QWORD[48+rsp]
1455
1456
1457 mov r10,QWORD[56+rsp]
1458 lea rsp,[((-168))+rsp]
1459 movaps XMMWORD[(-8-160)+rax],xmm6
1460 movaps XMMWORD[(-8-144)+rax],xmm7
1461 movaps XMMWORD[(-8-128)+rax],xmm8
1462 movaps XMMWORD[(-8-112)+rax],xmm9
1463 movaps XMMWORD[(-8-96)+rax],xmm10
1464 movaps XMMWORD[(-8-80)+rax],xmm11
1465 movaps XMMWORD[(-8-64)+rax],xmm12
1466 movaps XMMWORD[(-8-48)+rax],xmm13
1467 movaps XMMWORD[(-8-32)+rax],xmm14
1468 movaps XMMWORD[(-8-16)+rax],xmm15
1469$L$prologue_shaext:
1470 movdqu xmm8,XMMWORD[r9]
1471 movd xmm9,DWORD[16+r9]
1472 movdqa xmm7,XMMWORD[((K_XX_XX+80))]
1473
1474 mov r11d,DWORD[240+rcx]
1475 sub rsi,rdi
1476 movups xmm15,XMMWORD[rcx]
1477 movups xmm2,XMMWORD[r8]
1478 movups xmm0,XMMWORD[16+rcx]
1479 lea rcx,[112+rcx]
1480
1481 pshufd xmm8,xmm8,27
1482 pshufd xmm9,xmm9,27
1483 jmp NEAR $L$oop_shaext
1484
1485ALIGN 16
1486$L$oop_shaext:
1487 movups xmm14,XMMWORD[rdi]
1488 xorps xmm14,xmm15
1489 xorps xmm2,xmm14
1490 movups xmm1,XMMWORD[((-80))+rcx]
1491DB 102,15,56,220,208
1492 movdqu xmm3,XMMWORD[r10]
1493 movdqa xmm12,xmm9
1494DB 102,15,56,0,223
1495 movdqu xmm4,XMMWORD[16+r10]
1496 movdqa xmm11,xmm8
1497 movups xmm0,XMMWORD[((-64))+rcx]
1498DB 102,15,56,220,209
1499DB 102,15,56,0,231
1500
1501 paddd xmm9,xmm3
1502 movdqu xmm5,XMMWORD[32+r10]
1503 lea r10,[64+r10]
1504 pxor xmm3,xmm12
1505 movups xmm1,XMMWORD[((-48))+rcx]
1506DB 102,15,56,220,208
1507 pxor xmm3,xmm12
1508 movdqa xmm10,xmm8
1509DB 102,15,56,0,239
1510DB 69,15,58,204,193,0
1511DB 68,15,56,200,212
1512 movups xmm0,XMMWORD[((-32))+rcx]
1513DB 102,15,56,220,209
1514DB 15,56,201,220
1515 movdqu xmm6,XMMWORD[((-16))+r10]
1516 movdqa xmm9,xmm8
1517DB 102,15,56,0,247
1518 movups xmm1,XMMWORD[((-16))+rcx]
1519DB 102,15,56,220,208
1520DB 69,15,58,204,194,0
1521DB 68,15,56,200,205
1522 pxor xmm3,xmm5
1523DB 15,56,201,229
1524 movups xmm0,XMMWORD[rcx]
1525DB 102,15,56,220,209
1526 movdqa xmm10,xmm8
1527DB 69,15,58,204,193,0
1528DB 68,15,56,200,214
1529 movups xmm1,XMMWORD[16+rcx]
1530DB 102,15,56,220,208
1531DB 15,56,202,222
1532 pxor xmm4,xmm6
1533DB 15,56,201,238
1534 movups xmm0,XMMWORD[32+rcx]
1535DB 102,15,56,220,209
1536 movdqa xmm9,xmm8
1537DB 69,15,58,204,194,0
1538DB 68,15,56,200,203
1539 movups xmm1,XMMWORD[48+rcx]
1540DB 102,15,56,220,208
1541DB 15,56,202,227
1542 pxor xmm5,xmm3
1543DB 15,56,201,243
1544 cmp r11d,11
1545 jb NEAR $L$aesenclast6
1546 movups xmm0,XMMWORD[64+rcx]
1547DB 102,15,56,220,209
1548 movups xmm1,XMMWORD[80+rcx]
1549DB 102,15,56,220,208
1550 je NEAR $L$aesenclast6
1551 movups xmm0,XMMWORD[96+rcx]
1552DB 102,15,56,220,209
1553 movups xmm1,XMMWORD[112+rcx]
1554DB 102,15,56,220,208
1555$L$aesenclast6:
1556DB 102,15,56,221,209
1557 movups xmm0,XMMWORD[((16-112))+rcx]
1558 movdqa xmm10,xmm8
1559DB 69,15,58,204,193,0
1560DB 68,15,56,200,212
1561 movups xmm14,XMMWORD[16+rdi]
1562 xorps xmm14,xmm15
1563 movups XMMWORD[rdi*1+rsi],xmm2
1564 xorps xmm2,xmm14
1565 movups xmm1,XMMWORD[((-80))+rcx]
1566DB 102,15,56,220,208
1567DB 15,56,202,236
1568 pxor xmm6,xmm4
1569DB 15,56,201,220
1570 movups xmm0,XMMWORD[((-64))+rcx]
1571DB 102,15,56,220,209
1572 movdqa xmm9,xmm8
1573DB 69,15,58,204,194,1
1574DB 68,15,56,200,205
1575 movups xmm1,XMMWORD[((-48))+rcx]
1576DB 102,15,56,220,208
1577DB 15,56,202,245
1578 pxor xmm3,xmm5
1579DB 15,56,201,229
1580 movups xmm0,XMMWORD[((-32))+rcx]
1581DB 102,15,56,220,209
1582 movdqa xmm10,xmm8
1583DB 69,15,58,204,193,1
1584DB 68,15,56,200,214
1585 movups xmm1,XMMWORD[((-16))+rcx]
1586DB 102,15,56,220,208
1587DB 15,56,202,222
1588 pxor xmm4,xmm6
1589DB 15,56,201,238
1590 movups xmm0,XMMWORD[rcx]
1591DB 102,15,56,220,209
1592 movdqa xmm9,xmm8
1593DB 69,15,58,204,194,1
1594DB 68,15,56,200,203
1595 movups xmm1,XMMWORD[16+rcx]
1596DB 102,15,56,220,208
1597DB 15,56,202,227
1598 pxor xmm5,xmm3
1599DB 15,56,201,243
1600 movups xmm0,XMMWORD[32+rcx]
1601DB 102,15,56,220,209
1602 movdqa xmm10,xmm8
1603DB 69,15,58,204,193,1
1604DB 68,15,56,200,212
1605 movups xmm1,XMMWORD[48+rcx]
1606DB 102,15,56,220,208
1607DB 15,56,202,236
1608 pxor xmm6,xmm4
1609DB 15,56,201,220
1610 cmp r11d,11
1611 jb NEAR $L$aesenclast7
1612 movups xmm0,XMMWORD[64+rcx]
1613DB 102,15,56,220,209
1614 movups xmm1,XMMWORD[80+rcx]
1615DB 102,15,56,220,208
1616 je NEAR $L$aesenclast7
1617 movups xmm0,XMMWORD[96+rcx]
1618DB 102,15,56,220,209
1619 movups xmm1,XMMWORD[112+rcx]
1620DB 102,15,56,220,208
1621$L$aesenclast7:
1622DB 102,15,56,221,209
1623 movups xmm0,XMMWORD[((16-112))+rcx]
1624 movdqa xmm9,xmm8
1625DB 69,15,58,204,194,1
1626DB 68,15,56,200,205
1627 movups xmm14,XMMWORD[32+rdi]
1628 xorps xmm14,xmm15
1629 movups XMMWORD[16+rdi*1+rsi],xmm2
1630 xorps xmm2,xmm14
1631 movups xmm1,XMMWORD[((-80))+rcx]
1632DB 102,15,56,220,208
1633DB 15,56,202,245
1634 pxor xmm3,xmm5
1635DB 15,56,201,229
1636 movups xmm0,XMMWORD[((-64))+rcx]
1637DB 102,15,56,220,209
1638 movdqa xmm10,xmm8
1639DB 69,15,58,204,193,2
1640DB 68,15,56,200,214
1641 movups xmm1,XMMWORD[((-48))+rcx]
1642DB 102,15,56,220,208
1643DB 15,56,202,222
1644 pxor xmm4,xmm6
1645DB 15,56,201,238
1646 movups xmm0,XMMWORD[((-32))+rcx]
1647DB 102,15,56,220,209
1648 movdqa xmm9,xmm8
1649DB 69,15,58,204,194,2
1650DB 68,15,56,200,203
1651 movups xmm1,XMMWORD[((-16))+rcx]
1652DB 102,15,56,220,208
1653DB 15,56,202,227
1654 pxor xmm5,xmm3
1655DB 15,56,201,243
1656 movups xmm0,XMMWORD[rcx]
1657DB 102,15,56,220,209
1658 movdqa xmm10,xmm8
1659DB 69,15,58,204,193,2
1660DB 68,15,56,200,212
1661 movups xmm1,XMMWORD[16+rcx]
1662DB 102,15,56,220,208
1663DB 15,56,202,236
1664 pxor xmm6,xmm4
1665DB 15,56,201,220
1666 movups xmm0,XMMWORD[32+rcx]
1667DB 102,15,56,220,209
1668 movdqa xmm9,xmm8
1669DB 69,15,58,204,194,2
1670DB 68,15,56,200,205
1671 movups xmm1,XMMWORD[48+rcx]
1672DB 102,15,56,220,208
1673DB 15,56,202,245
1674 pxor xmm3,xmm5
1675DB 15,56,201,229
1676 cmp r11d,11
1677 jb NEAR $L$aesenclast8
1678 movups xmm0,XMMWORD[64+rcx]
1679DB 102,15,56,220,209
1680 movups xmm1,XMMWORD[80+rcx]
1681DB 102,15,56,220,208
1682 je NEAR $L$aesenclast8
1683 movups xmm0,XMMWORD[96+rcx]
1684DB 102,15,56,220,209
1685 movups xmm1,XMMWORD[112+rcx]
1686DB 102,15,56,220,208
1687$L$aesenclast8:
1688DB 102,15,56,221,209
1689 movups xmm0,XMMWORD[((16-112))+rcx]
1690 movdqa xmm10,xmm8
1691DB 69,15,58,204,193,2
1692DB 68,15,56,200,214
1693 movups xmm14,XMMWORD[48+rdi]
1694 xorps xmm14,xmm15
1695 movups XMMWORD[32+rdi*1+rsi],xmm2
1696 xorps xmm2,xmm14
1697 movups xmm1,XMMWORD[((-80))+rcx]
1698DB 102,15,56,220,208
1699DB 15,56,202,222
1700 pxor xmm4,xmm6
1701DB 15,56,201,238
1702 movups xmm0,XMMWORD[((-64))+rcx]
1703DB 102,15,56,220,209
1704 movdqa xmm9,xmm8
1705DB 69,15,58,204,194,3
1706DB 68,15,56,200,203
1707 movups xmm1,XMMWORD[((-48))+rcx]
1708DB 102,15,56,220,208
1709DB 15,56,202,227
1710 pxor xmm5,xmm3
1711DB 15,56,201,243
1712 movups xmm0,XMMWORD[((-32))+rcx]
1713DB 102,15,56,220,209
1714 movdqa xmm10,xmm8
1715DB 69,15,58,204,193,3
1716DB 68,15,56,200,212
1717DB 15,56,202,236
1718 pxor xmm6,xmm4
1719 movups xmm1,XMMWORD[((-16))+rcx]
1720DB 102,15,56,220,208
1721 movdqa xmm9,xmm8
1722DB 69,15,58,204,194,3
1723DB 68,15,56,200,205
1724DB 15,56,202,245
1725 movups xmm0,XMMWORD[rcx]
1726DB 102,15,56,220,209
1727 movdqa xmm5,xmm12
1728 movdqa xmm10,xmm8
1729DB 69,15,58,204,193,3
1730DB 68,15,56,200,214
1731 movups xmm1,XMMWORD[16+rcx]
1732DB 102,15,56,220,208
1733 movdqa xmm9,xmm8
1734DB 69,15,58,204,194,3
1735DB 68,15,56,200,205
1736 movups xmm0,XMMWORD[32+rcx]
1737DB 102,15,56,220,209
1738 movups xmm1,XMMWORD[48+rcx]
1739DB 102,15,56,220,208
1740 cmp r11d,11
1741 jb NEAR $L$aesenclast9
1742 movups xmm0,XMMWORD[64+rcx]
1743DB 102,15,56,220,209
1744 movups xmm1,XMMWORD[80+rcx]
1745DB 102,15,56,220,208
1746 je NEAR $L$aesenclast9
1747 movups xmm0,XMMWORD[96+rcx]
1748DB 102,15,56,220,209
1749 movups xmm1,XMMWORD[112+rcx]
1750DB 102,15,56,220,208
1751$L$aesenclast9:
1752DB 102,15,56,221,209
1753 movups xmm0,XMMWORD[((16-112))+rcx]
1754 dec rdx
1755
1756 paddd xmm8,xmm11
1757 movups XMMWORD[48+rdi*1+rsi],xmm2
1758 lea rdi,[64+rdi]
1759 jnz NEAR $L$oop_shaext
1760
1761 pshufd xmm8,xmm8,27
1762 pshufd xmm9,xmm9,27
1763 movups XMMWORD[r8],xmm2
1764 movdqu XMMWORD[r9],xmm8
1765 movd DWORD[16+r9],xmm9
1766 movaps xmm6,XMMWORD[((-8-160))+rax]
1767 movaps xmm7,XMMWORD[((-8-144))+rax]
1768 movaps xmm8,XMMWORD[((-8-128))+rax]
1769 movaps xmm9,XMMWORD[((-8-112))+rax]
1770 movaps xmm10,XMMWORD[((-8-96))+rax]
1771 movaps xmm11,XMMWORD[((-8-80))+rax]
1772 movaps xmm12,XMMWORD[((-8-64))+rax]
1773 movaps xmm13,XMMWORD[((-8-48))+rax]
1774 movaps xmm14,XMMWORD[((-8-32))+rax]
1775 movaps xmm15,XMMWORD[((-8-16))+rax]
1776 mov rsp,rax
1777$L$epilogue_shaext:
1778 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1779 mov rsi,QWORD[16+rsp]
1780 DB 0F3h,0C3h ;repret
1781$L$SEH_end_aesni_cbc_sha1_enc_shaext:
1782EXTERN __imp_RtlVirtualUnwind
1783
1784ALIGN 16
1785ssse3_handler:
1786 push rsi
1787 push rdi
1788 push rbx
1789 push rbp
1790 push r12
1791 push r13
1792 push r14
1793 push r15
1794 pushfq
1795 sub rsp,64
1796
1797 mov rax,QWORD[120+r8]
1798 mov rbx,QWORD[248+r8]
1799
1800 mov rsi,QWORD[8+r9]
1801 mov r11,QWORD[56+r9]
1802
1803 mov r10d,DWORD[r11]
1804 lea r10,[r10*1+rsi]
1805 cmp rbx,r10
1806 jb NEAR $L$common_seh_tail
1807
1808 mov rax,QWORD[152+r8]
1809
1810 mov r10d,DWORD[4+r11]
1811 lea r10,[r10*1+rsi]
1812 cmp rbx,r10
1813 jae NEAR $L$common_seh_tail
1814 lea r10,[aesni_cbc_sha1_enc_shaext]
1815 cmp rbx,r10
1816 jb NEAR $L$seh_no_shaext
1817
1818 lea rsi,[rax]
1819 lea rdi,[512+r8]
1820 mov ecx,20
1821 DD 0xa548f3fc
1822 lea rax,[168+rax]
1823 jmp NEAR $L$common_seh_tail
1824$L$seh_no_shaext:
1825 lea rsi,[96+rax]
1826 lea rdi,[512+r8]
1827 mov ecx,20
1828 DD 0xa548f3fc
1829 lea rax,[264+rax]
1830
1831 mov r15,QWORD[rax]
1832 mov r14,QWORD[8+rax]
1833 mov r13,QWORD[16+rax]
1834 mov r12,QWORD[24+rax]
1835 mov rbp,QWORD[32+rax]
1836 mov rbx,QWORD[40+rax]
1837 lea rax,[48+rax]
1838 mov QWORD[144+r8],rbx
1839 mov QWORD[160+r8],rbp
1840 mov QWORD[216+r8],r12
1841 mov QWORD[224+r8],r13
1842 mov QWORD[232+r8],r14
1843 mov QWORD[240+r8],r15
1844
1845$L$common_seh_tail:
1846 mov rdi,QWORD[8+rax]
1847 mov rsi,QWORD[16+rax]
1848 mov QWORD[152+r8],rax
1849 mov QWORD[168+r8],rsi
1850 mov QWORD[176+r8],rdi
1851
1852 mov rdi,QWORD[40+r9]
1853 mov rsi,r8
1854 mov ecx,154
1855 DD 0xa548f3fc
1856
1857 mov rsi,r9
1858 xor rcx,rcx
1859 mov rdx,QWORD[8+rsi]
1860 mov r8,QWORD[rsi]
1861 mov r9,QWORD[16+rsi]
1862 mov r10,QWORD[40+rsi]
1863 lea r11,[56+rsi]
1864 lea r12,[24+rsi]
1865 mov QWORD[32+rsp],r10
1866 mov QWORD[40+rsp],r11
1867 mov QWORD[48+rsp],r12
1868 mov QWORD[56+rsp],rcx
1869 call QWORD[__imp_RtlVirtualUnwind]
1870
1871 mov eax,1
1872 add rsp,64
1873 popfq
1874 pop r15
1875 pop r14
1876 pop r13
1877 pop r12
1878 pop rbp
1879 pop rbx
1880 pop rdi
1881 pop rsi
1882 DB 0F3h,0C3h ;repret
1883
1884
1885section .pdata rdata align=4
1886ALIGN 4
1887 DD $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
1888 DD $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
1889 DD $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase
1890 DD $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase
1891 DD $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase
1892 DD $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase
1893section .xdata rdata align=8
1894ALIGN 8
1895$L$SEH_info_aesni_cbc_sha1_enc_ssse3:
1896DB 9,0,0,0
1897 DD ssse3_handler wrt ..imagebase
1898 DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase
1899$L$SEH_info_aesni_cbc_sha1_enc_shaext:
1900DB 9,0,0,0
1901 DD ssse3_handler wrt ..imagebase
1902 DD $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase
Note: See TracBrowser for help on using the repository browser.

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