]> git.proxmox.com Git - mirror_edk2.git/blame - CryptoPkg/Library/OpensslLib/IA32/crypto/aes/aesni-x86.nasm
CryptoPkg/OpensslLib: Commit the auto-generated assembly files for IA32
[mirror_edk2.git] / CryptoPkg / Library / OpensslLib / IA32 / crypto / aes / aesni-x86.nasm
CommitLineData
4102950a
CZ
1; WARNING: do not edit!\r
2; Generated from openssl/crypto/aes/asm/aesni-x86.pl\r
3;\r
4; Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.\r
5;\r
6; Licensed under the OpenSSL license (the "License"). You may not use\r
7; this file except in compliance with the License. You can obtain a copy\r
8; in the file LICENSE in the source distribution or at\r
9; https://www.openssl.org/source/license.html\r
10\r
11%ifidn __OUTPUT_FORMAT__,obj\r
12section code use32 class=code align=64\r
13%elifidn __OUTPUT_FORMAT__,win32\r
14$@feat.00 equ 1\r
15section .text code align=64\r
16%else\r
17section .text code\r
18%endif\r
19;extern _OPENSSL_ia32cap_P\r
20global _aesni_encrypt\r
21align 16\r
22_aesni_encrypt:\r
23L$_aesni_encrypt_begin:\r
24 mov eax,DWORD [4+esp]\r
25 mov edx,DWORD [12+esp]\r
26 movups xmm2,[eax]\r
27 mov ecx,DWORD [240+edx]\r
28 mov eax,DWORD [8+esp]\r
29 movups xmm0,[edx]\r
30 movups xmm1,[16+edx]\r
31 lea edx,[32+edx]\r
32 xorps xmm2,xmm0\r
33L$000enc1_loop_1:\r
34db 102,15,56,220,209\r
35 dec ecx\r
36 movups xmm1,[edx]\r
37 lea edx,[16+edx]\r
38 jnz NEAR L$000enc1_loop_1\r
39db 102,15,56,221,209\r
40 pxor xmm0,xmm0\r
41 pxor xmm1,xmm1\r
42 movups [eax],xmm2\r
43 pxor xmm2,xmm2\r
44 ret\r
45global _aesni_decrypt\r
46align 16\r
47_aesni_decrypt:\r
48L$_aesni_decrypt_begin:\r
49 mov eax,DWORD [4+esp]\r
50 mov edx,DWORD [12+esp]\r
51 movups xmm2,[eax]\r
52 mov ecx,DWORD [240+edx]\r
53 mov eax,DWORD [8+esp]\r
54 movups xmm0,[edx]\r
55 movups xmm1,[16+edx]\r
56 lea edx,[32+edx]\r
57 xorps xmm2,xmm0\r
58L$001dec1_loop_2:\r
59db 102,15,56,222,209\r
60 dec ecx\r
61 movups xmm1,[edx]\r
62 lea edx,[16+edx]\r
63 jnz NEAR L$001dec1_loop_2\r
64db 102,15,56,223,209\r
65 pxor xmm0,xmm0\r
66 pxor xmm1,xmm1\r
67 movups [eax],xmm2\r
68 pxor xmm2,xmm2\r
69 ret\r
70align 16\r
71__aesni_encrypt2:\r
72 movups xmm0,[edx]\r
73 shl ecx,4\r
74 movups xmm1,[16+edx]\r
75 xorps xmm2,xmm0\r
76 pxor xmm3,xmm0\r
77 movups xmm0,[32+edx]\r
78 lea edx,[32+ecx*1+edx]\r
79 neg ecx\r
80 add ecx,16\r
81L$002enc2_loop:\r
82db 102,15,56,220,209\r
83db 102,15,56,220,217\r
84 movups xmm1,[ecx*1+edx]\r
85 add ecx,32\r
86db 102,15,56,220,208\r
87db 102,15,56,220,216\r
88 movups xmm0,[ecx*1+edx-16]\r
89 jnz NEAR L$002enc2_loop\r
90db 102,15,56,220,209\r
91db 102,15,56,220,217\r
92db 102,15,56,221,208\r
93db 102,15,56,221,216\r
94 ret\r
95align 16\r
96__aesni_decrypt2:\r
97 movups xmm0,[edx]\r
98 shl ecx,4\r
99 movups xmm1,[16+edx]\r
100 xorps xmm2,xmm0\r
101 pxor xmm3,xmm0\r
102 movups xmm0,[32+edx]\r
103 lea edx,[32+ecx*1+edx]\r
104 neg ecx\r
105 add ecx,16\r
106L$003dec2_loop:\r
107db 102,15,56,222,209\r
108db 102,15,56,222,217\r
109 movups xmm1,[ecx*1+edx]\r
110 add ecx,32\r
111db 102,15,56,222,208\r
112db 102,15,56,222,216\r
113 movups xmm0,[ecx*1+edx-16]\r
114 jnz NEAR L$003dec2_loop\r
115db 102,15,56,222,209\r
116db 102,15,56,222,217\r
117db 102,15,56,223,208\r
118db 102,15,56,223,216\r
119 ret\r
120align 16\r
121__aesni_encrypt3:\r
122 movups xmm0,[edx]\r
123 shl ecx,4\r
124 movups xmm1,[16+edx]\r
125 xorps xmm2,xmm0\r
126 pxor xmm3,xmm0\r
127 pxor xmm4,xmm0\r
128 movups xmm0,[32+edx]\r
129 lea edx,[32+ecx*1+edx]\r
130 neg ecx\r
131 add ecx,16\r
132L$004enc3_loop:\r
133db 102,15,56,220,209\r
134db 102,15,56,220,217\r
135db 102,15,56,220,225\r
136 movups xmm1,[ecx*1+edx]\r
137 add ecx,32\r
138db 102,15,56,220,208\r
139db 102,15,56,220,216\r
140db 102,15,56,220,224\r
141 movups xmm0,[ecx*1+edx-16]\r
142 jnz NEAR L$004enc3_loop\r
143db 102,15,56,220,209\r
144db 102,15,56,220,217\r
145db 102,15,56,220,225\r
146db 102,15,56,221,208\r
147db 102,15,56,221,216\r
148db 102,15,56,221,224\r
149 ret\r
150align 16\r
151__aesni_decrypt3:\r
152 movups xmm0,[edx]\r
153 shl ecx,4\r
154 movups xmm1,[16+edx]\r
155 xorps xmm2,xmm0\r
156 pxor xmm3,xmm0\r
157 pxor xmm4,xmm0\r
158 movups xmm0,[32+edx]\r
159 lea edx,[32+ecx*1+edx]\r
160 neg ecx\r
161 add ecx,16\r
162L$005dec3_loop:\r
163db 102,15,56,222,209\r
164db 102,15,56,222,217\r
165db 102,15,56,222,225\r
166 movups xmm1,[ecx*1+edx]\r
167 add ecx,32\r
168db 102,15,56,222,208\r
169db 102,15,56,222,216\r
170db 102,15,56,222,224\r
171 movups xmm0,[ecx*1+edx-16]\r
172 jnz NEAR L$005dec3_loop\r
173db 102,15,56,222,209\r
174db 102,15,56,222,217\r
175db 102,15,56,222,225\r
176db 102,15,56,223,208\r
177db 102,15,56,223,216\r
178db 102,15,56,223,224\r
179 ret\r
180align 16\r
181__aesni_encrypt4:\r
182 movups xmm0,[edx]\r
183 movups xmm1,[16+edx]\r
184 shl ecx,4\r
185 xorps xmm2,xmm0\r
186 pxor xmm3,xmm0\r
187 pxor xmm4,xmm0\r
188 pxor xmm5,xmm0\r
189 movups xmm0,[32+edx]\r
190 lea edx,[32+ecx*1+edx]\r
191 neg ecx\r
192db 15,31,64,0\r
193 add ecx,16\r
194L$006enc4_loop:\r
195db 102,15,56,220,209\r
196db 102,15,56,220,217\r
197db 102,15,56,220,225\r
198db 102,15,56,220,233\r
199 movups xmm1,[ecx*1+edx]\r
200 add ecx,32\r
201db 102,15,56,220,208\r
202db 102,15,56,220,216\r
203db 102,15,56,220,224\r
204db 102,15,56,220,232\r
205 movups xmm0,[ecx*1+edx-16]\r
206 jnz NEAR L$006enc4_loop\r
207db 102,15,56,220,209\r
208db 102,15,56,220,217\r
209db 102,15,56,220,225\r
210db 102,15,56,220,233\r
211db 102,15,56,221,208\r
212db 102,15,56,221,216\r
213db 102,15,56,221,224\r
214db 102,15,56,221,232\r
215 ret\r
216align 16\r
217__aesni_decrypt4:\r
218 movups xmm0,[edx]\r
219 movups xmm1,[16+edx]\r
220 shl ecx,4\r
221 xorps xmm2,xmm0\r
222 pxor xmm3,xmm0\r
223 pxor xmm4,xmm0\r
224 pxor xmm5,xmm0\r
225 movups xmm0,[32+edx]\r
226 lea edx,[32+ecx*1+edx]\r
227 neg ecx\r
228db 15,31,64,0\r
229 add ecx,16\r
230L$007dec4_loop:\r
231db 102,15,56,222,209\r
232db 102,15,56,222,217\r
233db 102,15,56,222,225\r
234db 102,15,56,222,233\r
235 movups xmm1,[ecx*1+edx]\r
236 add ecx,32\r
237db 102,15,56,222,208\r
238db 102,15,56,222,216\r
239db 102,15,56,222,224\r
240db 102,15,56,222,232\r
241 movups xmm0,[ecx*1+edx-16]\r
242 jnz NEAR L$007dec4_loop\r
243db 102,15,56,222,209\r
244db 102,15,56,222,217\r
245db 102,15,56,222,225\r
246db 102,15,56,222,233\r
247db 102,15,56,223,208\r
248db 102,15,56,223,216\r
249db 102,15,56,223,224\r
250db 102,15,56,223,232\r
251 ret\r
252align 16\r
253__aesni_encrypt6:\r
254 movups xmm0,[edx]\r
255 shl ecx,4\r
256 movups xmm1,[16+edx]\r
257 xorps xmm2,xmm0\r
258 pxor xmm3,xmm0\r
259 pxor xmm4,xmm0\r
260db 102,15,56,220,209\r
261 pxor xmm5,xmm0\r
262 pxor xmm6,xmm0\r
263db 102,15,56,220,217\r
264 lea edx,[32+ecx*1+edx]\r
265 neg ecx\r
266db 102,15,56,220,225\r
267 pxor xmm7,xmm0\r
268 movups xmm0,[ecx*1+edx]\r
269 add ecx,16\r
270 jmp NEAR L$008_aesni_encrypt6_inner\r
271align 16\r
272L$009enc6_loop:\r
273db 102,15,56,220,209\r
274db 102,15,56,220,217\r
275db 102,15,56,220,225\r
276L$008_aesni_encrypt6_inner:\r
277db 102,15,56,220,233\r
278db 102,15,56,220,241\r
279db 102,15,56,220,249\r
280L$_aesni_encrypt6_enter:\r
281 movups xmm1,[ecx*1+edx]\r
282 add ecx,32\r
283db 102,15,56,220,208\r
284db 102,15,56,220,216\r
285db 102,15,56,220,224\r
286db 102,15,56,220,232\r
287db 102,15,56,220,240\r
288db 102,15,56,220,248\r
289 movups xmm0,[ecx*1+edx-16]\r
290 jnz NEAR L$009enc6_loop\r
291db 102,15,56,220,209\r
292db 102,15,56,220,217\r
293db 102,15,56,220,225\r
294db 102,15,56,220,233\r
295db 102,15,56,220,241\r
296db 102,15,56,220,249\r
297db 102,15,56,221,208\r
298db 102,15,56,221,216\r
299db 102,15,56,221,224\r
300db 102,15,56,221,232\r
301db 102,15,56,221,240\r
302db 102,15,56,221,248\r
303 ret\r
304align 16\r
305__aesni_decrypt6:\r
306 movups xmm0,[edx]\r
307 shl ecx,4\r
308 movups xmm1,[16+edx]\r
309 xorps xmm2,xmm0\r
310 pxor xmm3,xmm0\r
311 pxor xmm4,xmm0\r
312db 102,15,56,222,209\r
313 pxor xmm5,xmm0\r
314 pxor xmm6,xmm0\r
315db 102,15,56,222,217\r
316 lea edx,[32+ecx*1+edx]\r
317 neg ecx\r
318db 102,15,56,222,225\r
319 pxor xmm7,xmm0\r
320 movups xmm0,[ecx*1+edx]\r
321 add ecx,16\r
322 jmp NEAR L$010_aesni_decrypt6_inner\r
323align 16\r
324L$011dec6_loop:\r
325db 102,15,56,222,209\r
326db 102,15,56,222,217\r
327db 102,15,56,222,225\r
328L$010_aesni_decrypt6_inner:\r
329db 102,15,56,222,233\r
330db 102,15,56,222,241\r
331db 102,15,56,222,249\r
332L$_aesni_decrypt6_enter:\r
333 movups xmm1,[ecx*1+edx]\r
334 add ecx,32\r
335db 102,15,56,222,208\r
336db 102,15,56,222,216\r
337db 102,15,56,222,224\r
338db 102,15,56,222,232\r
339db 102,15,56,222,240\r
340db 102,15,56,222,248\r
341 movups xmm0,[ecx*1+edx-16]\r
342 jnz NEAR L$011dec6_loop\r
343db 102,15,56,222,209\r
344db 102,15,56,222,217\r
345db 102,15,56,222,225\r
346db 102,15,56,222,233\r
347db 102,15,56,222,241\r
348db 102,15,56,222,249\r
349db 102,15,56,223,208\r
350db 102,15,56,223,216\r
351db 102,15,56,223,224\r
352db 102,15,56,223,232\r
353db 102,15,56,223,240\r
354db 102,15,56,223,248\r
355 ret\r
356global _aesni_ecb_encrypt\r
357align 16\r
358_aesni_ecb_encrypt:\r
359L$_aesni_ecb_encrypt_begin:\r
360 push ebp\r
361 push ebx\r
362 push esi\r
363 push edi\r
364 mov esi,DWORD [20+esp]\r
365 mov edi,DWORD [24+esp]\r
366 mov eax,DWORD [28+esp]\r
367 mov edx,DWORD [32+esp]\r
368 mov ebx,DWORD [36+esp]\r
369 and eax,-16\r
370 jz NEAR L$012ecb_ret\r
371 mov ecx,DWORD [240+edx]\r
372 test ebx,ebx\r
373 jz NEAR L$013ecb_decrypt\r
374 mov ebp,edx\r
375 mov ebx,ecx\r
376 cmp eax,96\r
377 jb NEAR L$014ecb_enc_tail\r
378 movdqu xmm2,[esi]\r
379 movdqu xmm3,[16+esi]\r
380 movdqu xmm4,[32+esi]\r
381 movdqu xmm5,[48+esi]\r
382 movdqu xmm6,[64+esi]\r
383 movdqu xmm7,[80+esi]\r
384 lea esi,[96+esi]\r
385 sub eax,96\r
386 jmp NEAR L$015ecb_enc_loop6_enter\r
387align 16\r
388L$016ecb_enc_loop6:\r
389 movups [edi],xmm2\r
390 movdqu xmm2,[esi]\r
391 movups [16+edi],xmm3\r
392 movdqu xmm3,[16+esi]\r
393 movups [32+edi],xmm4\r
394 movdqu xmm4,[32+esi]\r
395 movups [48+edi],xmm5\r
396 movdqu xmm5,[48+esi]\r
397 movups [64+edi],xmm6\r
398 movdqu xmm6,[64+esi]\r
399 movups [80+edi],xmm7\r
400 lea edi,[96+edi]\r
401 movdqu xmm7,[80+esi]\r
402 lea esi,[96+esi]\r
403L$015ecb_enc_loop6_enter:\r
404 call __aesni_encrypt6\r
405 mov edx,ebp\r
406 mov ecx,ebx\r
407 sub eax,96\r
408 jnc NEAR L$016ecb_enc_loop6\r
409 movups [edi],xmm2\r
410 movups [16+edi],xmm3\r
411 movups [32+edi],xmm4\r
412 movups [48+edi],xmm5\r
413 movups [64+edi],xmm6\r
414 movups [80+edi],xmm7\r
415 lea edi,[96+edi]\r
416 add eax,96\r
417 jz NEAR L$012ecb_ret\r
418L$014ecb_enc_tail:\r
419 movups xmm2,[esi]\r
420 cmp eax,32\r
421 jb NEAR L$017ecb_enc_one\r
422 movups xmm3,[16+esi]\r
423 je NEAR L$018ecb_enc_two\r
424 movups xmm4,[32+esi]\r
425 cmp eax,64\r
426 jb NEAR L$019ecb_enc_three\r
427 movups xmm5,[48+esi]\r
428 je NEAR L$020ecb_enc_four\r
429 movups xmm6,[64+esi]\r
430 xorps xmm7,xmm7\r
431 call __aesni_encrypt6\r
432 movups [edi],xmm2\r
433 movups [16+edi],xmm3\r
434 movups [32+edi],xmm4\r
435 movups [48+edi],xmm5\r
436 movups [64+edi],xmm6\r
437 jmp NEAR L$012ecb_ret\r
438align 16\r
439L$017ecb_enc_one:\r
440 movups xmm0,[edx]\r
441 movups xmm1,[16+edx]\r
442 lea edx,[32+edx]\r
443 xorps xmm2,xmm0\r
444L$021enc1_loop_3:\r
445db 102,15,56,220,209\r
446 dec ecx\r
447 movups xmm1,[edx]\r
448 lea edx,[16+edx]\r
449 jnz NEAR L$021enc1_loop_3\r
450db 102,15,56,221,209\r
451 movups [edi],xmm2\r
452 jmp NEAR L$012ecb_ret\r
453align 16\r
454L$018ecb_enc_two:\r
455 call __aesni_encrypt2\r
456 movups [edi],xmm2\r
457 movups [16+edi],xmm3\r
458 jmp NEAR L$012ecb_ret\r
459align 16\r
460L$019ecb_enc_three:\r
461 call __aesni_encrypt3\r
462 movups [edi],xmm2\r
463 movups [16+edi],xmm3\r
464 movups [32+edi],xmm4\r
465 jmp NEAR L$012ecb_ret\r
466align 16\r
467L$020ecb_enc_four:\r
468 call __aesni_encrypt4\r
469 movups [edi],xmm2\r
470 movups [16+edi],xmm3\r
471 movups [32+edi],xmm4\r
472 movups [48+edi],xmm5\r
473 jmp NEAR L$012ecb_ret\r
474align 16\r
475L$013ecb_decrypt:\r
476 mov ebp,edx\r
477 mov ebx,ecx\r
478 cmp eax,96\r
479 jb NEAR L$022ecb_dec_tail\r
480 movdqu xmm2,[esi]\r
481 movdqu xmm3,[16+esi]\r
482 movdqu xmm4,[32+esi]\r
483 movdqu xmm5,[48+esi]\r
484 movdqu xmm6,[64+esi]\r
485 movdqu xmm7,[80+esi]\r
486 lea esi,[96+esi]\r
487 sub eax,96\r
488 jmp NEAR L$023ecb_dec_loop6_enter\r
489align 16\r
490L$024ecb_dec_loop6:\r
491 movups [edi],xmm2\r
492 movdqu xmm2,[esi]\r
493 movups [16+edi],xmm3\r
494 movdqu xmm3,[16+esi]\r
495 movups [32+edi],xmm4\r
496 movdqu xmm4,[32+esi]\r
497 movups [48+edi],xmm5\r
498 movdqu xmm5,[48+esi]\r
499 movups [64+edi],xmm6\r
500 movdqu xmm6,[64+esi]\r
501 movups [80+edi],xmm7\r
502 lea edi,[96+edi]\r
503 movdqu xmm7,[80+esi]\r
504 lea esi,[96+esi]\r
505L$023ecb_dec_loop6_enter:\r
506 call __aesni_decrypt6\r
507 mov edx,ebp\r
508 mov ecx,ebx\r
509 sub eax,96\r
510 jnc NEAR L$024ecb_dec_loop6\r
511 movups [edi],xmm2\r
512 movups [16+edi],xmm3\r
513 movups [32+edi],xmm4\r
514 movups [48+edi],xmm5\r
515 movups [64+edi],xmm6\r
516 movups [80+edi],xmm7\r
517 lea edi,[96+edi]\r
518 add eax,96\r
519 jz NEAR L$012ecb_ret\r
520L$022ecb_dec_tail:\r
521 movups xmm2,[esi]\r
522 cmp eax,32\r
523 jb NEAR L$025ecb_dec_one\r
524 movups xmm3,[16+esi]\r
525 je NEAR L$026ecb_dec_two\r
526 movups xmm4,[32+esi]\r
527 cmp eax,64\r
528 jb NEAR L$027ecb_dec_three\r
529 movups xmm5,[48+esi]\r
530 je NEAR L$028ecb_dec_four\r
531 movups xmm6,[64+esi]\r
532 xorps xmm7,xmm7\r
533 call __aesni_decrypt6\r
534 movups [edi],xmm2\r
535 movups [16+edi],xmm3\r
536 movups [32+edi],xmm4\r
537 movups [48+edi],xmm5\r
538 movups [64+edi],xmm6\r
539 jmp NEAR L$012ecb_ret\r
540align 16\r
541L$025ecb_dec_one:\r
542 movups xmm0,[edx]\r
543 movups xmm1,[16+edx]\r
544 lea edx,[32+edx]\r
545 xorps xmm2,xmm0\r
546L$029dec1_loop_4:\r
547db 102,15,56,222,209\r
548 dec ecx\r
549 movups xmm1,[edx]\r
550 lea edx,[16+edx]\r
551 jnz NEAR L$029dec1_loop_4\r
552db 102,15,56,223,209\r
553 movups [edi],xmm2\r
554 jmp NEAR L$012ecb_ret\r
555align 16\r
556L$026ecb_dec_two:\r
557 call __aesni_decrypt2\r
558 movups [edi],xmm2\r
559 movups [16+edi],xmm3\r
560 jmp NEAR L$012ecb_ret\r
561align 16\r
562L$027ecb_dec_three:\r
563 call __aesni_decrypt3\r
564 movups [edi],xmm2\r
565 movups [16+edi],xmm3\r
566 movups [32+edi],xmm4\r
567 jmp NEAR L$012ecb_ret\r
568align 16\r
569L$028ecb_dec_four:\r
570 call __aesni_decrypt4\r
571 movups [edi],xmm2\r
572 movups [16+edi],xmm3\r
573 movups [32+edi],xmm4\r
574 movups [48+edi],xmm5\r
575L$012ecb_ret:\r
576 pxor xmm0,xmm0\r
577 pxor xmm1,xmm1\r
578 pxor xmm2,xmm2\r
579 pxor xmm3,xmm3\r
580 pxor xmm4,xmm4\r
581 pxor xmm5,xmm5\r
582 pxor xmm6,xmm6\r
583 pxor xmm7,xmm7\r
584 pop edi\r
585 pop esi\r
586 pop ebx\r
587 pop ebp\r
588 ret\r
589global _aesni_ccm64_encrypt_blocks\r
590align 16\r
591_aesni_ccm64_encrypt_blocks:\r
592L$_aesni_ccm64_encrypt_blocks_begin:\r
593 push ebp\r
594 push ebx\r
595 push esi\r
596 push edi\r
597 mov esi,DWORD [20+esp]\r
598 mov edi,DWORD [24+esp]\r
599 mov eax,DWORD [28+esp]\r
600 mov edx,DWORD [32+esp]\r
601 mov ebx,DWORD [36+esp]\r
602 mov ecx,DWORD [40+esp]\r
603 mov ebp,esp\r
604 sub esp,60\r
605 and esp,-16\r
606 mov DWORD [48+esp],ebp\r
607 movdqu xmm7,[ebx]\r
608 movdqu xmm3,[ecx]\r
609 mov ecx,DWORD [240+edx]\r
610 mov DWORD [esp],202182159\r
611 mov DWORD [4+esp],134810123\r
612 mov DWORD [8+esp],67438087\r
613 mov DWORD [12+esp],66051\r
614 mov ebx,1\r
615 xor ebp,ebp\r
616 mov DWORD [16+esp],ebx\r
617 mov DWORD [20+esp],ebp\r
618 mov DWORD [24+esp],ebp\r
619 mov DWORD [28+esp],ebp\r
620 shl ecx,4\r
621 mov ebx,16\r
622 lea ebp,[edx]\r
623 movdqa xmm5,[esp]\r
624 movdqa xmm2,xmm7\r
625 lea edx,[32+ecx*1+edx]\r
626 sub ebx,ecx\r
627db 102,15,56,0,253\r
628L$030ccm64_enc_outer:\r
629 movups xmm0,[ebp]\r
630 mov ecx,ebx\r
631 movups xmm6,[esi]\r
632 xorps xmm2,xmm0\r
633 movups xmm1,[16+ebp]\r
634 xorps xmm0,xmm6\r
635 xorps xmm3,xmm0\r
636 movups xmm0,[32+ebp]\r
637L$031ccm64_enc2_loop:\r
638db 102,15,56,220,209\r
639db 102,15,56,220,217\r
640 movups xmm1,[ecx*1+edx]\r
641 add ecx,32\r
642db 102,15,56,220,208\r
643db 102,15,56,220,216\r
644 movups xmm0,[ecx*1+edx-16]\r
645 jnz NEAR L$031ccm64_enc2_loop\r
646db 102,15,56,220,209\r
647db 102,15,56,220,217\r
648 paddq xmm7,[16+esp]\r
649 dec eax\r
650db 102,15,56,221,208\r
651db 102,15,56,221,216\r
652 lea esi,[16+esi]\r
653 xorps xmm6,xmm2\r
654 movdqa xmm2,xmm7\r
655 movups [edi],xmm6\r
656db 102,15,56,0,213\r
657 lea edi,[16+edi]\r
658 jnz NEAR L$030ccm64_enc_outer\r
659 mov esp,DWORD [48+esp]\r
660 mov edi,DWORD [40+esp]\r
661 movups [edi],xmm3\r
662 pxor xmm0,xmm0\r
663 pxor xmm1,xmm1\r
664 pxor xmm2,xmm2\r
665 pxor xmm3,xmm3\r
666 pxor xmm4,xmm4\r
667 pxor xmm5,xmm5\r
668 pxor xmm6,xmm6\r
669 pxor xmm7,xmm7\r
670 pop edi\r
671 pop esi\r
672 pop ebx\r
673 pop ebp\r
674 ret\r
675global _aesni_ccm64_decrypt_blocks\r
676align 16\r
677_aesni_ccm64_decrypt_blocks:\r
678L$_aesni_ccm64_decrypt_blocks_begin:\r
679 push ebp\r
680 push ebx\r
681 push esi\r
682 push edi\r
683 mov esi,DWORD [20+esp]\r
684 mov edi,DWORD [24+esp]\r
685 mov eax,DWORD [28+esp]\r
686 mov edx,DWORD [32+esp]\r
687 mov ebx,DWORD [36+esp]\r
688 mov ecx,DWORD [40+esp]\r
689 mov ebp,esp\r
690 sub esp,60\r
691 and esp,-16\r
692 mov DWORD [48+esp],ebp\r
693 movdqu xmm7,[ebx]\r
694 movdqu xmm3,[ecx]\r
695 mov ecx,DWORD [240+edx]\r
696 mov DWORD [esp],202182159\r
697 mov DWORD [4+esp],134810123\r
698 mov DWORD [8+esp],67438087\r
699 mov DWORD [12+esp],66051\r
700 mov ebx,1\r
701 xor ebp,ebp\r
702 mov DWORD [16+esp],ebx\r
703 mov DWORD [20+esp],ebp\r
704 mov DWORD [24+esp],ebp\r
705 mov DWORD [28+esp],ebp\r
706 movdqa xmm5,[esp]\r
707 movdqa xmm2,xmm7\r
708 mov ebp,edx\r
709 mov ebx,ecx\r
710db 102,15,56,0,253\r
711 movups xmm0,[edx]\r
712 movups xmm1,[16+edx]\r
713 lea edx,[32+edx]\r
714 xorps xmm2,xmm0\r
715L$032enc1_loop_5:\r
716db 102,15,56,220,209\r
717 dec ecx\r
718 movups xmm1,[edx]\r
719 lea edx,[16+edx]\r
720 jnz NEAR L$032enc1_loop_5\r
721db 102,15,56,221,209\r
722 shl ebx,4\r
723 mov ecx,16\r
724 movups xmm6,[esi]\r
725 paddq xmm7,[16+esp]\r
726 lea esi,[16+esi]\r
727 sub ecx,ebx\r
728 lea edx,[32+ebx*1+ebp]\r
729 mov ebx,ecx\r
730 jmp NEAR L$033ccm64_dec_outer\r
731align 16\r
732L$033ccm64_dec_outer:\r
733 xorps xmm6,xmm2\r
734 movdqa xmm2,xmm7\r
735 movups [edi],xmm6\r
736 lea edi,[16+edi]\r
737db 102,15,56,0,213\r
738 sub eax,1\r
739 jz NEAR L$034ccm64_dec_break\r
740 movups xmm0,[ebp]\r
741 mov ecx,ebx\r
742 movups xmm1,[16+ebp]\r
743 xorps xmm6,xmm0\r
744 xorps xmm2,xmm0\r
745 xorps xmm3,xmm6\r
746 movups xmm0,[32+ebp]\r
747L$035ccm64_dec2_loop:\r
748db 102,15,56,220,209\r
749db 102,15,56,220,217\r
750 movups xmm1,[ecx*1+edx]\r
751 add ecx,32\r
752db 102,15,56,220,208\r
753db 102,15,56,220,216\r
754 movups xmm0,[ecx*1+edx-16]\r
755 jnz NEAR L$035ccm64_dec2_loop\r
756 movups xmm6,[esi]\r
757 paddq xmm7,[16+esp]\r
758db 102,15,56,220,209\r
759db 102,15,56,220,217\r
760db 102,15,56,221,208\r
761db 102,15,56,221,216\r
762 lea esi,[16+esi]\r
763 jmp NEAR L$033ccm64_dec_outer\r
764align 16\r
765L$034ccm64_dec_break:\r
766 mov ecx,DWORD [240+ebp]\r
767 mov edx,ebp\r
768 movups xmm0,[edx]\r
769 movups xmm1,[16+edx]\r
770 xorps xmm6,xmm0\r
771 lea edx,[32+edx]\r
772 xorps xmm3,xmm6\r
773L$036enc1_loop_6:\r
774db 102,15,56,220,217\r
775 dec ecx\r
776 movups xmm1,[edx]\r
777 lea edx,[16+edx]\r
778 jnz NEAR L$036enc1_loop_6\r
779db 102,15,56,221,217\r
780 mov esp,DWORD [48+esp]\r
781 mov edi,DWORD [40+esp]\r
782 movups [edi],xmm3\r
783 pxor xmm0,xmm0\r
784 pxor xmm1,xmm1\r
785 pxor xmm2,xmm2\r
786 pxor xmm3,xmm3\r
787 pxor xmm4,xmm4\r
788 pxor xmm5,xmm5\r
789 pxor xmm6,xmm6\r
790 pxor xmm7,xmm7\r
791 pop edi\r
792 pop esi\r
793 pop ebx\r
794 pop ebp\r
795 ret\r
796global _aesni_ctr32_encrypt_blocks\r
797align 16\r
798_aesni_ctr32_encrypt_blocks:\r
799L$_aesni_ctr32_encrypt_blocks_begin:\r
800 push ebp\r
801 push ebx\r
802 push esi\r
803 push edi\r
804 mov esi,DWORD [20+esp]\r
805 mov edi,DWORD [24+esp]\r
806 mov eax,DWORD [28+esp]\r
807 mov edx,DWORD [32+esp]\r
808 mov ebx,DWORD [36+esp]\r
809 mov ebp,esp\r
810 sub esp,88\r
811 and esp,-16\r
812 mov DWORD [80+esp],ebp\r
813 cmp eax,1\r
814 je NEAR L$037ctr32_one_shortcut\r
815 movdqu xmm7,[ebx]\r
816 mov DWORD [esp],202182159\r
817 mov DWORD [4+esp],134810123\r
818 mov DWORD [8+esp],67438087\r
819 mov DWORD [12+esp],66051\r
820 mov ecx,6\r
821 xor ebp,ebp\r
822 mov DWORD [16+esp],ecx\r
823 mov DWORD [20+esp],ecx\r
824 mov DWORD [24+esp],ecx\r
825 mov DWORD [28+esp],ebp\r
826db 102,15,58,22,251,3\r
827db 102,15,58,34,253,3\r
828 mov ecx,DWORD [240+edx]\r
829 bswap ebx\r
830 pxor xmm0,xmm0\r
831 pxor xmm1,xmm1\r
832 movdqa xmm2,[esp]\r
833db 102,15,58,34,195,0\r
834 lea ebp,[3+ebx]\r
835db 102,15,58,34,205,0\r
836 inc ebx\r
837db 102,15,58,34,195,1\r
838 inc ebp\r
839db 102,15,58,34,205,1\r
840 inc ebx\r
841db 102,15,58,34,195,2\r
842 inc ebp\r
843db 102,15,58,34,205,2\r
844 movdqa [48+esp],xmm0\r
845db 102,15,56,0,194\r
846 movdqu xmm6,[edx]\r
847 movdqa [64+esp],xmm1\r
848db 102,15,56,0,202\r
849 pshufd xmm2,xmm0,192\r
850 pshufd xmm3,xmm0,128\r
851 cmp eax,6\r
852 jb NEAR L$038ctr32_tail\r
853 pxor xmm7,xmm6\r
854 shl ecx,4\r
855 mov ebx,16\r
856 movdqa [32+esp],xmm7\r
857 mov ebp,edx\r
858 sub ebx,ecx\r
859 lea edx,[32+ecx*1+edx]\r
860 sub eax,6\r
861 jmp NEAR L$039ctr32_loop6\r
862align 16\r
863L$039ctr32_loop6:\r
864 pshufd xmm4,xmm0,64\r
865 movdqa xmm0,[32+esp]\r
866 pshufd xmm5,xmm1,192\r
867 pxor xmm2,xmm0\r
868 pshufd xmm6,xmm1,128\r
869 pxor xmm3,xmm0\r
870 pshufd xmm7,xmm1,64\r
871 movups xmm1,[16+ebp]\r
872 pxor xmm4,xmm0\r
873 pxor xmm5,xmm0\r
874db 102,15,56,220,209\r
875 pxor xmm6,xmm0\r
876 pxor xmm7,xmm0\r
877db 102,15,56,220,217\r
878 movups xmm0,[32+ebp]\r
879 mov ecx,ebx\r
880db 102,15,56,220,225\r
881db 102,15,56,220,233\r
882db 102,15,56,220,241\r
883db 102,15,56,220,249\r
884 call L$_aesni_encrypt6_enter\r
885 movups xmm1,[esi]\r
886 movups xmm0,[16+esi]\r
887 xorps xmm2,xmm1\r
888 movups xmm1,[32+esi]\r
889 xorps xmm3,xmm0\r
890 movups [edi],xmm2\r
891 movdqa xmm0,[16+esp]\r
892 xorps xmm4,xmm1\r
893 movdqa xmm1,[64+esp]\r
894 movups [16+edi],xmm3\r
895 movups [32+edi],xmm4\r
896 paddd xmm1,xmm0\r
897 paddd xmm0,[48+esp]\r
898 movdqa xmm2,[esp]\r
899 movups xmm3,[48+esi]\r
900 movups xmm4,[64+esi]\r
901 xorps xmm5,xmm3\r
902 movups xmm3,[80+esi]\r
903 lea esi,[96+esi]\r
904 movdqa [48+esp],xmm0\r
905db 102,15,56,0,194\r
906 xorps xmm6,xmm4\r
907 movups [48+edi],xmm5\r
908 xorps xmm7,xmm3\r
909 movdqa [64+esp],xmm1\r
910db 102,15,56,0,202\r
911 movups [64+edi],xmm6\r
912 pshufd xmm2,xmm0,192\r
913 movups [80+edi],xmm7\r
914 lea edi,[96+edi]\r
915 pshufd xmm3,xmm0,128\r
916 sub eax,6\r
917 jnc NEAR L$039ctr32_loop6\r
918 add eax,6\r
919 jz NEAR L$040ctr32_ret\r
920 movdqu xmm7,[ebp]\r
921 mov edx,ebp\r
922 pxor xmm7,[32+esp]\r
923 mov ecx,DWORD [240+ebp]\r
924L$038ctr32_tail:\r
925 por xmm2,xmm7\r
926 cmp eax,2\r
927 jb NEAR L$041ctr32_one\r
928 pshufd xmm4,xmm0,64\r
929 por xmm3,xmm7\r
930 je NEAR L$042ctr32_two\r
931 pshufd xmm5,xmm1,192\r
932 por xmm4,xmm7\r
933 cmp eax,4\r
934 jb NEAR L$043ctr32_three\r
935 pshufd xmm6,xmm1,128\r
936 por xmm5,xmm7\r
937 je NEAR L$044ctr32_four\r
938 por xmm6,xmm7\r
939 call __aesni_encrypt6\r
940 movups xmm1,[esi]\r
941 movups xmm0,[16+esi]\r
942 xorps xmm2,xmm1\r
943 movups xmm1,[32+esi]\r
944 xorps xmm3,xmm0\r
945 movups xmm0,[48+esi]\r
946 xorps xmm4,xmm1\r
947 movups xmm1,[64+esi]\r
948 xorps xmm5,xmm0\r
949 movups [edi],xmm2\r
950 xorps xmm6,xmm1\r
951 movups [16+edi],xmm3\r
952 movups [32+edi],xmm4\r
953 movups [48+edi],xmm5\r
954 movups [64+edi],xmm6\r
955 jmp NEAR L$040ctr32_ret\r
956align 16\r
957L$037ctr32_one_shortcut:\r
958 movups xmm2,[ebx]\r
959 mov ecx,DWORD [240+edx]\r
960L$041ctr32_one:\r
961 movups xmm0,[edx]\r
962 movups xmm1,[16+edx]\r
963 lea edx,[32+edx]\r
964 xorps xmm2,xmm0\r
965L$045enc1_loop_7:\r
966db 102,15,56,220,209\r
967 dec ecx\r
968 movups xmm1,[edx]\r
969 lea edx,[16+edx]\r
970 jnz NEAR L$045enc1_loop_7\r
971db 102,15,56,221,209\r
972 movups xmm6,[esi]\r
973 xorps xmm6,xmm2\r
974 movups [edi],xmm6\r
975 jmp NEAR L$040ctr32_ret\r
976align 16\r
977L$042ctr32_two:\r
978 call __aesni_encrypt2\r
979 movups xmm5,[esi]\r
980 movups xmm6,[16+esi]\r
981 xorps xmm2,xmm5\r
982 xorps xmm3,xmm6\r
983 movups [edi],xmm2\r
984 movups [16+edi],xmm3\r
985 jmp NEAR L$040ctr32_ret\r
986align 16\r
987L$043ctr32_three:\r
988 call __aesni_encrypt3\r
989 movups xmm5,[esi]\r
990 movups xmm6,[16+esi]\r
991 xorps xmm2,xmm5\r
992 movups xmm7,[32+esi]\r
993 xorps xmm3,xmm6\r
994 movups [edi],xmm2\r
995 xorps xmm4,xmm7\r
996 movups [16+edi],xmm3\r
997 movups [32+edi],xmm4\r
998 jmp NEAR L$040ctr32_ret\r
999align 16\r
1000L$044ctr32_four:\r
1001 call __aesni_encrypt4\r
1002 movups xmm6,[esi]\r
1003 movups xmm7,[16+esi]\r
1004 movups xmm1,[32+esi]\r
1005 xorps xmm2,xmm6\r
1006 movups xmm0,[48+esi]\r
1007 xorps xmm3,xmm7\r
1008 movups [edi],xmm2\r
1009 xorps xmm4,xmm1\r
1010 movups [16+edi],xmm3\r
1011 xorps xmm5,xmm0\r
1012 movups [32+edi],xmm4\r
1013 movups [48+edi],xmm5\r
1014L$040ctr32_ret:\r
1015 pxor xmm0,xmm0\r
1016 pxor xmm1,xmm1\r
1017 pxor xmm2,xmm2\r
1018 pxor xmm3,xmm3\r
1019 pxor xmm4,xmm4\r
1020 movdqa [32+esp],xmm0\r
1021 pxor xmm5,xmm5\r
1022 movdqa [48+esp],xmm0\r
1023 pxor xmm6,xmm6\r
1024 movdqa [64+esp],xmm0\r
1025 pxor xmm7,xmm7\r
1026 mov esp,DWORD [80+esp]\r
1027 pop edi\r
1028 pop esi\r
1029 pop ebx\r
1030 pop ebp\r
1031 ret\r
1032global _aesni_xts_encrypt\r
1033align 16\r
1034_aesni_xts_encrypt:\r
1035L$_aesni_xts_encrypt_begin:\r
1036 push ebp\r
1037 push ebx\r
1038 push esi\r
1039 push edi\r
1040 mov edx,DWORD [36+esp]\r
1041 mov esi,DWORD [40+esp]\r
1042 mov ecx,DWORD [240+edx]\r
1043 movups xmm2,[esi]\r
1044 movups xmm0,[edx]\r
1045 movups xmm1,[16+edx]\r
1046 lea edx,[32+edx]\r
1047 xorps xmm2,xmm0\r
1048L$046enc1_loop_8:\r
1049db 102,15,56,220,209\r
1050 dec ecx\r
1051 movups xmm1,[edx]\r
1052 lea edx,[16+edx]\r
1053 jnz NEAR L$046enc1_loop_8\r
1054db 102,15,56,221,209\r
1055 mov esi,DWORD [20+esp]\r
1056 mov edi,DWORD [24+esp]\r
1057 mov eax,DWORD [28+esp]\r
1058 mov edx,DWORD [32+esp]\r
1059 mov ebp,esp\r
1060 sub esp,120\r
1061 mov ecx,DWORD [240+edx]\r
1062 and esp,-16\r
1063 mov DWORD [96+esp],135\r
1064 mov DWORD [100+esp],0\r
1065 mov DWORD [104+esp],1\r
1066 mov DWORD [108+esp],0\r
1067 mov DWORD [112+esp],eax\r
1068 mov DWORD [116+esp],ebp\r
1069 movdqa xmm1,xmm2\r
1070 pxor xmm0,xmm0\r
1071 movdqa xmm3,[96+esp]\r
1072 pcmpgtd xmm0,xmm1\r
1073 and eax,-16\r
1074 mov ebp,edx\r
1075 mov ebx,ecx\r
1076 sub eax,96\r
1077 jc NEAR L$047xts_enc_short\r
1078 shl ecx,4\r
1079 mov ebx,16\r
1080 sub ebx,ecx\r
1081 lea edx,[32+ecx*1+edx]\r
1082 jmp NEAR L$048xts_enc_loop6\r
1083align 16\r
1084L$048xts_enc_loop6:\r
1085 pshufd xmm2,xmm0,19\r
1086 pxor xmm0,xmm0\r
1087 movdqa [esp],xmm1\r
1088 paddq xmm1,xmm1\r
1089 pand xmm2,xmm3\r
1090 pcmpgtd xmm0,xmm1\r
1091 pxor xmm1,xmm2\r
1092 pshufd xmm2,xmm0,19\r
1093 pxor xmm0,xmm0\r
1094 movdqa [16+esp],xmm1\r
1095 paddq xmm1,xmm1\r
1096 pand xmm2,xmm3\r
1097 pcmpgtd xmm0,xmm1\r
1098 pxor xmm1,xmm2\r
1099 pshufd xmm2,xmm0,19\r
1100 pxor xmm0,xmm0\r
1101 movdqa [32+esp],xmm1\r
1102 paddq xmm1,xmm1\r
1103 pand xmm2,xmm3\r
1104 pcmpgtd xmm0,xmm1\r
1105 pxor xmm1,xmm2\r
1106 pshufd xmm2,xmm0,19\r
1107 pxor xmm0,xmm0\r
1108 movdqa [48+esp],xmm1\r
1109 paddq xmm1,xmm1\r
1110 pand xmm2,xmm3\r
1111 pcmpgtd xmm0,xmm1\r
1112 pxor xmm1,xmm2\r
1113 pshufd xmm7,xmm0,19\r
1114 movdqa [64+esp],xmm1\r
1115 paddq xmm1,xmm1\r
1116 movups xmm0,[ebp]\r
1117 pand xmm7,xmm3\r
1118 movups xmm2,[esi]\r
1119 pxor xmm7,xmm1\r
1120 mov ecx,ebx\r
1121 movdqu xmm3,[16+esi]\r
1122 xorps xmm2,xmm0\r
1123 movdqu xmm4,[32+esi]\r
1124 pxor xmm3,xmm0\r
1125 movdqu xmm5,[48+esi]\r
1126 pxor xmm4,xmm0\r
1127 movdqu xmm6,[64+esi]\r
1128 pxor xmm5,xmm0\r
1129 movdqu xmm1,[80+esi]\r
1130 pxor xmm6,xmm0\r
1131 lea esi,[96+esi]\r
1132 pxor xmm2,[esp]\r
1133 movdqa [80+esp],xmm7\r
1134 pxor xmm7,xmm1\r
1135 movups xmm1,[16+ebp]\r
1136 pxor xmm3,[16+esp]\r
1137 pxor xmm4,[32+esp]\r
1138db 102,15,56,220,209\r
1139 pxor xmm5,[48+esp]\r
1140 pxor xmm6,[64+esp]\r
1141db 102,15,56,220,217\r
1142 pxor xmm7,xmm0\r
1143 movups xmm0,[32+ebp]\r
1144db 102,15,56,220,225\r
1145db 102,15,56,220,233\r
1146db 102,15,56,220,241\r
1147db 102,15,56,220,249\r
1148 call L$_aesni_encrypt6_enter\r
1149 movdqa xmm1,[80+esp]\r
1150 pxor xmm0,xmm0\r
1151 xorps xmm2,[esp]\r
1152 pcmpgtd xmm0,xmm1\r
1153 xorps xmm3,[16+esp]\r
1154 movups [edi],xmm2\r
1155 xorps xmm4,[32+esp]\r
1156 movups [16+edi],xmm3\r
1157 xorps xmm5,[48+esp]\r
1158 movups [32+edi],xmm4\r
1159 xorps xmm6,[64+esp]\r
1160 movups [48+edi],xmm5\r
1161 xorps xmm7,xmm1\r
1162 movups [64+edi],xmm6\r
1163 pshufd xmm2,xmm0,19\r
1164 movups [80+edi],xmm7\r
1165 lea edi,[96+edi]\r
1166 movdqa xmm3,[96+esp]\r
1167 pxor xmm0,xmm0\r
1168 paddq xmm1,xmm1\r
1169 pand xmm2,xmm3\r
1170 pcmpgtd xmm0,xmm1\r
1171 pxor xmm1,xmm2\r
1172 sub eax,96\r
1173 jnc NEAR L$048xts_enc_loop6\r
1174 mov ecx,DWORD [240+ebp]\r
1175 mov edx,ebp\r
1176 mov ebx,ecx\r
1177L$047xts_enc_short:\r
1178 add eax,96\r
1179 jz NEAR L$049xts_enc_done6x\r
1180 movdqa xmm5,xmm1\r
1181 cmp eax,32\r
1182 jb NEAR L$050xts_enc_one\r
1183 pshufd xmm2,xmm0,19\r
1184 pxor xmm0,xmm0\r
1185 paddq xmm1,xmm1\r
1186 pand xmm2,xmm3\r
1187 pcmpgtd xmm0,xmm1\r
1188 pxor xmm1,xmm2\r
1189 je NEAR L$051xts_enc_two\r
1190 pshufd xmm2,xmm0,19\r
1191 pxor xmm0,xmm0\r
1192 movdqa xmm6,xmm1\r
1193 paddq xmm1,xmm1\r
1194 pand xmm2,xmm3\r
1195 pcmpgtd xmm0,xmm1\r
1196 pxor xmm1,xmm2\r
1197 cmp eax,64\r
1198 jb NEAR L$052xts_enc_three\r
1199 pshufd xmm2,xmm0,19\r
1200 pxor xmm0,xmm0\r
1201 movdqa xmm7,xmm1\r
1202 paddq xmm1,xmm1\r
1203 pand xmm2,xmm3\r
1204 pcmpgtd xmm0,xmm1\r
1205 pxor xmm1,xmm2\r
1206 movdqa [esp],xmm5\r
1207 movdqa [16+esp],xmm6\r
1208 je NEAR L$053xts_enc_four\r
1209 movdqa [32+esp],xmm7\r
1210 pshufd xmm7,xmm0,19\r
1211 movdqa [48+esp],xmm1\r
1212 paddq xmm1,xmm1\r
1213 pand xmm7,xmm3\r
1214 pxor xmm7,xmm1\r
1215 movdqu xmm2,[esi]\r
1216 movdqu xmm3,[16+esi]\r
1217 movdqu xmm4,[32+esi]\r
1218 pxor xmm2,[esp]\r
1219 movdqu xmm5,[48+esi]\r
1220 pxor xmm3,[16+esp]\r
1221 movdqu xmm6,[64+esi]\r
1222 pxor xmm4,[32+esp]\r
1223 lea esi,[80+esi]\r
1224 pxor xmm5,[48+esp]\r
1225 movdqa [64+esp],xmm7\r
1226 pxor xmm6,xmm7\r
1227 call __aesni_encrypt6\r
1228 movaps xmm1,[64+esp]\r
1229 xorps xmm2,[esp]\r
1230 xorps xmm3,[16+esp]\r
1231 xorps xmm4,[32+esp]\r
1232 movups [edi],xmm2\r
1233 xorps xmm5,[48+esp]\r
1234 movups [16+edi],xmm3\r
1235 xorps xmm6,xmm1\r
1236 movups [32+edi],xmm4\r
1237 movups [48+edi],xmm5\r
1238 movups [64+edi],xmm6\r
1239 lea edi,[80+edi]\r
1240 jmp NEAR L$054xts_enc_done\r
1241align 16\r
1242L$050xts_enc_one:\r
1243 movups xmm2,[esi]\r
1244 lea esi,[16+esi]\r
1245 xorps xmm2,xmm5\r
1246 movups xmm0,[edx]\r
1247 movups xmm1,[16+edx]\r
1248 lea edx,[32+edx]\r
1249 xorps xmm2,xmm0\r
1250L$055enc1_loop_9:\r
1251db 102,15,56,220,209\r
1252 dec ecx\r
1253 movups xmm1,[edx]\r
1254 lea edx,[16+edx]\r
1255 jnz NEAR L$055enc1_loop_9\r
1256db 102,15,56,221,209\r
1257 xorps xmm2,xmm5\r
1258 movups [edi],xmm2\r
1259 lea edi,[16+edi]\r
1260 movdqa xmm1,xmm5\r
1261 jmp NEAR L$054xts_enc_done\r
1262align 16\r
1263L$051xts_enc_two:\r
1264 movaps xmm6,xmm1\r
1265 movups xmm2,[esi]\r
1266 movups xmm3,[16+esi]\r
1267 lea esi,[32+esi]\r
1268 xorps xmm2,xmm5\r
1269 xorps xmm3,xmm6\r
1270 call __aesni_encrypt2\r
1271 xorps xmm2,xmm5\r
1272 xorps xmm3,xmm6\r
1273 movups [edi],xmm2\r
1274 movups [16+edi],xmm3\r
1275 lea edi,[32+edi]\r
1276 movdqa xmm1,xmm6\r
1277 jmp NEAR L$054xts_enc_done\r
1278align 16\r
1279L$052xts_enc_three:\r
1280 movaps xmm7,xmm1\r
1281 movups xmm2,[esi]\r
1282 movups xmm3,[16+esi]\r
1283 movups xmm4,[32+esi]\r
1284 lea esi,[48+esi]\r
1285 xorps xmm2,xmm5\r
1286 xorps xmm3,xmm6\r
1287 xorps xmm4,xmm7\r
1288 call __aesni_encrypt3\r
1289 xorps xmm2,xmm5\r
1290 xorps xmm3,xmm6\r
1291 xorps xmm4,xmm7\r
1292 movups [edi],xmm2\r
1293 movups [16+edi],xmm3\r
1294 movups [32+edi],xmm4\r
1295 lea edi,[48+edi]\r
1296 movdqa xmm1,xmm7\r
1297 jmp NEAR L$054xts_enc_done\r
1298align 16\r
1299L$053xts_enc_four:\r
1300 movaps xmm6,xmm1\r
1301 movups xmm2,[esi]\r
1302 movups xmm3,[16+esi]\r
1303 movups xmm4,[32+esi]\r
1304 xorps xmm2,[esp]\r
1305 movups xmm5,[48+esi]\r
1306 lea esi,[64+esi]\r
1307 xorps xmm3,[16+esp]\r
1308 xorps xmm4,xmm7\r
1309 xorps xmm5,xmm6\r
1310 call __aesni_encrypt4\r
1311 xorps xmm2,[esp]\r
1312 xorps xmm3,[16+esp]\r
1313 xorps xmm4,xmm7\r
1314 movups [edi],xmm2\r
1315 xorps xmm5,xmm6\r
1316 movups [16+edi],xmm3\r
1317 movups [32+edi],xmm4\r
1318 movups [48+edi],xmm5\r
1319 lea edi,[64+edi]\r
1320 movdqa xmm1,xmm6\r
1321 jmp NEAR L$054xts_enc_done\r
1322align 16\r
1323L$049xts_enc_done6x:\r
1324 mov eax,DWORD [112+esp]\r
1325 and eax,15\r
1326 jz NEAR L$056xts_enc_ret\r
1327 movdqa xmm5,xmm1\r
1328 mov DWORD [112+esp],eax\r
1329 jmp NEAR L$057xts_enc_steal\r
1330align 16\r
1331L$054xts_enc_done:\r
1332 mov eax,DWORD [112+esp]\r
1333 pxor xmm0,xmm0\r
1334 and eax,15\r
1335 jz NEAR L$056xts_enc_ret\r
1336 pcmpgtd xmm0,xmm1\r
1337 mov DWORD [112+esp],eax\r
1338 pshufd xmm5,xmm0,19\r
1339 paddq xmm1,xmm1\r
1340 pand xmm5,[96+esp]\r
1341 pxor xmm5,xmm1\r
1342L$057xts_enc_steal:\r
1343 movzx ecx,BYTE [esi]\r
1344 movzx edx,BYTE [edi-16]\r
1345 lea esi,[1+esi]\r
1346 mov BYTE [edi-16],cl\r
1347 mov BYTE [edi],dl\r
1348 lea edi,[1+edi]\r
1349 sub eax,1\r
1350 jnz NEAR L$057xts_enc_steal\r
1351 sub edi,DWORD [112+esp]\r
1352 mov edx,ebp\r
1353 mov ecx,ebx\r
1354 movups xmm2,[edi-16]\r
1355 xorps xmm2,xmm5\r
1356 movups xmm0,[edx]\r
1357 movups xmm1,[16+edx]\r
1358 lea edx,[32+edx]\r
1359 xorps xmm2,xmm0\r
1360L$058enc1_loop_10:\r
1361db 102,15,56,220,209\r
1362 dec ecx\r
1363 movups xmm1,[edx]\r
1364 lea edx,[16+edx]\r
1365 jnz NEAR L$058enc1_loop_10\r
1366db 102,15,56,221,209\r
1367 xorps xmm2,xmm5\r
1368 movups [edi-16],xmm2\r
1369L$056xts_enc_ret:\r
1370 pxor xmm0,xmm0\r
1371 pxor xmm1,xmm1\r
1372 pxor xmm2,xmm2\r
1373 movdqa [esp],xmm0\r
1374 pxor xmm3,xmm3\r
1375 movdqa [16+esp],xmm0\r
1376 pxor xmm4,xmm4\r
1377 movdqa [32+esp],xmm0\r
1378 pxor xmm5,xmm5\r
1379 movdqa [48+esp],xmm0\r
1380 pxor xmm6,xmm6\r
1381 movdqa [64+esp],xmm0\r
1382 pxor xmm7,xmm7\r
1383 movdqa [80+esp],xmm0\r
1384 mov esp,DWORD [116+esp]\r
1385 pop edi\r
1386 pop esi\r
1387 pop ebx\r
1388 pop ebp\r
1389 ret\r
1390global _aesni_xts_decrypt\r
1391align 16\r
1392_aesni_xts_decrypt:\r
1393L$_aesni_xts_decrypt_begin:\r
1394 push ebp\r
1395 push ebx\r
1396 push esi\r
1397 push edi\r
1398 mov edx,DWORD [36+esp]\r
1399 mov esi,DWORD [40+esp]\r
1400 mov ecx,DWORD [240+edx]\r
1401 movups xmm2,[esi]\r
1402 movups xmm0,[edx]\r
1403 movups xmm1,[16+edx]\r
1404 lea edx,[32+edx]\r
1405 xorps xmm2,xmm0\r
1406L$059enc1_loop_11:\r
1407db 102,15,56,220,209\r
1408 dec ecx\r
1409 movups xmm1,[edx]\r
1410 lea edx,[16+edx]\r
1411 jnz NEAR L$059enc1_loop_11\r
1412db 102,15,56,221,209\r
1413 mov esi,DWORD [20+esp]\r
1414 mov edi,DWORD [24+esp]\r
1415 mov eax,DWORD [28+esp]\r
1416 mov edx,DWORD [32+esp]\r
1417 mov ebp,esp\r
1418 sub esp,120\r
1419 and esp,-16\r
1420 xor ebx,ebx\r
1421 test eax,15\r
1422 setnz bl\r
1423 shl ebx,4\r
1424 sub eax,ebx\r
1425 mov DWORD [96+esp],135\r
1426 mov DWORD [100+esp],0\r
1427 mov DWORD [104+esp],1\r
1428 mov DWORD [108+esp],0\r
1429 mov DWORD [112+esp],eax\r
1430 mov DWORD [116+esp],ebp\r
1431 mov ecx,DWORD [240+edx]\r
1432 mov ebp,edx\r
1433 mov ebx,ecx\r
1434 movdqa xmm1,xmm2\r
1435 pxor xmm0,xmm0\r
1436 movdqa xmm3,[96+esp]\r
1437 pcmpgtd xmm0,xmm1\r
1438 and eax,-16\r
1439 sub eax,96\r
1440 jc NEAR L$060xts_dec_short\r
1441 shl ecx,4\r
1442 mov ebx,16\r
1443 sub ebx,ecx\r
1444 lea edx,[32+ecx*1+edx]\r
1445 jmp NEAR L$061xts_dec_loop6\r
1446align 16\r
1447L$061xts_dec_loop6:\r
1448 pshufd xmm2,xmm0,19\r
1449 pxor xmm0,xmm0\r
1450 movdqa [esp],xmm1\r
1451 paddq xmm1,xmm1\r
1452 pand xmm2,xmm3\r
1453 pcmpgtd xmm0,xmm1\r
1454 pxor xmm1,xmm2\r
1455 pshufd xmm2,xmm0,19\r
1456 pxor xmm0,xmm0\r
1457 movdqa [16+esp],xmm1\r
1458 paddq xmm1,xmm1\r
1459 pand xmm2,xmm3\r
1460 pcmpgtd xmm0,xmm1\r
1461 pxor xmm1,xmm2\r
1462 pshufd xmm2,xmm0,19\r
1463 pxor xmm0,xmm0\r
1464 movdqa [32+esp],xmm1\r
1465 paddq xmm1,xmm1\r
1466 pand xmm2,xmm3\r
1467 pcmpgtd xmm0,xmm1\r
1468 pxor xmm1,xmm2\r
1469 pshufd xmm2,xmm0,19\r
1470 pxor xmm0,xmm0\r
1471 movdqa [48+esp],xmm1\r
1472 paddq xmm1,xmm1\r
1473 pand xmm2,xmm3\r
1474 pcmpgtd xmm0,xmm1\r
1475 pxor xmm1,xmm2\r
1476 pshufd xmm7,xmm0,19\r
1477 movdqa [64+esp],xmm1\r
1478 paddq xmm1,xmm1\r
1479 movups xmm0,[ebp]\r
1480 pand xmm7,xmm3\r
1481 movups xmm2,[esi]\r
1482 pxor xmm7,xmm1\r
1483 mov ecx,ebx\r
1484 movdqu xmm3,[16+esi]\r
1485 xorps xmm2,xmm0\r
1486 movdqu xmm4,[32+esi]\r
1487 pxor xmm3,xmm0\r
1488 movdqu xmm5,[48+esi]\r
1489 pxor xmm4,xmm0\r
1490 movdqu xmm6,[64+esi]\r
1491 pxor xmm5,xmm0\r
1492 movdqu xmm1,[80+esi]\r
1493 pxor xmm6,xmm0\r
1494 lea esi,[96+esi]\r
1495 pxor xmm2,[esp]\r
1496 movdqa [80+esp],xmm7\r
1497 pxor xmm7,xmm1\r
1498 movups xmm1,[16+ebp]\r
1499 pxor xmm3,[16+esp]\r
1500 pxor xmm4,[32+esp]\r
1501db 102,15,56,222,209\r
1502 pxor xmm5,[48+esp]\r
1503 pxor xmm6,[64+esp]\r
1504db 102,15,56,222,217\r
1505 pxor xmm7,xmm0\r
1506 movups xmm0,[32+ebp]\r
1507db 102,15,56,222,225\r
1508db 102,15,56,222,233\r
1509db 102,15,56,222,241\r
1510db 102,15,56,222,249\r
1511 call L$_aesni_decrypt6_enter\r
1512 movdqa xmm1,[80+esp]\r
1513 pxor xmm0,xmm0\r
1514 xorps xmm2,[esp]\r
1515 pcmpgtd xmm0,xmm1\r
1516 xorps xmm3,[16+esp]\r
1517 movups [edi],xmm2\r
1518 xorps xmm4,[32+esp]\r
1519 movups [16+edi],xmm3\r
1520 xorps xmm5,[48+esp]\r
1521 movups [32+edi],xmm4\r
1522 xorps xmm6,[64+esp]\r
1523 movups [48+edi],xmm5\r
1524 xorps xmm7,xmm1\r
1525 movups [64+edi],xmm6\r
1526 pshufd xmm2,xmm0,19\r
1527 movups [80+edi],xmm7\r
1528 lea edi,[96+edi]\r
1529 movdqa xmm3,[96+esp]\r
1530 pxor xmm0,xmm0\r
1531 paddq xmm1,xmm1\r
1532 pand xmm2,xmm3\r
1533 pcmpgtd xmm0,xmm1\r
1534 pxor xmm1,xmm2\r
1535 sub eax,96\r
1536 jnc NEAR L$061xts_dec_loop6\r
1537 mov ecx,DWORD [240+ebp]\r
1538 mov edx,ebp\r
1539 mov ebx,ecx\r
1540L$060xts_dec_short:\r
1541 add eax,96\r
1542 jz NEAR L$062xts_dec_done6x\r
1543 movdqa xmm5,xmm1\r
1544 cmp eax,32\r
1545 jb NEAR L$063xts_dec_one\r
1546 pshufd xmm2,xmm0,19\r
1547 pxor xmm0,xmm0\r
1548 paddq xmm1,xmm1\r
1549 pand xmm2,xmm3\r
1550 pcmpgtd xmm0,xmm1\r
1551 pxor xmm1,xmm2\r
1552 je NEAR L$064xts_dec_two\r
1553 pshufd xmm2,xmm0,19\r
1554 pxor xmm0,xmm0\r
1555 movdqa xmm6,xmm1\r
1556 paddq xmm1,xmm1\r
1557 pand xmm2,xmm3\r
1558 pcmpgtd xmm0,xmm1\r
1559 pxor xmm1,xmm2\r
1560 cmp eax,64\r
1561 jb NEAR L$065xts_dec_three\r
1562 pshufd xmm2,xmm0,19\r
1563 pxor xmm0,xmm0\r
1564 movdqa xmm7,xmm1\r
1565 paddq xmm1,xmm1\r
1566 pand xmm2,xmm3\r
1567 pcmpgtd xmm0,xmm1\r
1568 pxor xmm1,xmm2\r
1569 movdqa [esp],xmm5\r
1570 movdqa [16+esp],xmm6\r
1571 je NEAR L$066xts_dec_four\r
1572 movdqa [32+esp],xmm7\r
1573 pshufd xmm7,xmm0,19\r
1574 movdqa [48+esp],xmm1\r
1575 paddq xmm1,xmm1\r
1576 pand xmm7,xmm3\r
1577 pxor xmm7,xmm1\r
1578 movdqu xmm2,[esi]\r
1579 movdqu xmm3,[16+esi]\r
1580 movdqu xmm4,[32+esi]\r
1581 pxor xmm2,[esp]\r
1582 movdqu xmm5,[48+esi]\r
1583 pxor xmm3,[16+esp]\r
1584 movdqu xmm6,[64+esi]\r
1585 pxor xmm4,[32+esp]\r
1586 lea esi,[80+esi]\r
1587 pxor xmm5,[48+esp]\r
1588 movdqa [64+esp],xmm7\r
1589 pxor xmm6,xmm7\r
1590 call __aesni_decrypt6\r
1591 movaps xmm1,[64+esp]\r
1592 xorps xmm2,[esp]\r
1593 xorps xmm3,[16+esp]\r
1594 xorps xmm4,[32+esp]\r
1595 movups [edi],xmm2\r
1596 xorps xmm5,[48+esp]\r
1597 movups [16+edi],xmm3\r
1598 xorps xmm6,xmm1\r
1599 movups [32+edi],xmm4\r
1600 movups [48+edi],xmm5\r
1601 movups [64+edi],xmm6\r
1602 lea edi,[80+edi]\r
1603 jmp NEAR L$067xts_dec_done\r
1604align 16\r
1605L$063xts_dec_one:\r
1606 movups xmm2,[esi]\r
1607 lea esi,[16+esi]\r
1608 xorps xmm2,xmm5\r
1609 movups xmm0,[edx]\r
1610 movups xmm1,[16+edx]\r
1611 lea edx,[32+edx]\r
1612 xorps xmm2,xmm0\r
1613L$068dec1_loop_12:\r
1614db 102,15,56,222,209\r
1615 dec ecx\r
1616 movups xmm1,[edx]\r
1617 lea edx,[16+edx]\r
1618 jnz NEAR L$068dec1_loop_12\r
1619db 102,15,56,223,209\r
1620 xorps xmm2,xmm5\r
1621 movups [edi],xmm2\r
1622 lea edi,[16+edi]\r
1623 movdqa xmm1,xmm5\r
1624 jmp NEAR L$067xts_dec_done\r
1625align 16\r
1626L$064xts_dec_two:\r
1627 movaps xmm6,xmm1\r
1628 movups xmm2,[esi]\r
1629 movups xmm3,[16+esi]\r
1630 lea esi,[32+esi]\r
1631 xorps xmm2,xmm5\r
1632 xorps xmm3,xmm6\r
1633 call __aesni_decrypt2\r
1634 xorps xmm2,xmm5\r
1635 xorps xmm3,xmm6\r
1636 movups [edi],xmm2\r
1637 movups [16+edi],xmm3\r
1638 lea edi,[32+edi]\r
1639 movdqa xmm1,xmm6\r
1640 jmp NEAR L$067xts_dec_done\r
1641align 16\r
1642L$065xts_dec_three:\r
1643 movaps xmm7,xmm1\r
1644 movups xmm2,[esi]\r
1645 movups xmm3,[16+esi]\r
1646 movups xmm4,[32+esi]\r
1647 lea esi,[48+esi]\r
1648 xorps xmm2,xmm5\r
1649 xorps xmm3,xmm6\r
1650 xorps xmm4,xmm7\r
1651 call __aesni_decrypt3\r
1652 xorps xmm2,xmm5\r
1653 xorps xmm3,xmm6\r
1654 xorps xmm4,xmm7\r
1655 movups [edi],xmm2\r
1656 movups [16+edi],xmm3\r
1657 movups [32+edi],xmm4\r
1658 lea edi,[48+edi]\r
1659 movdqa xmm1,xmm7\r
1660 jmp NEAR L$067xts_dec_done\r
1661align 16\r
1662L$066xts_dec_four:\r
1663 movaps xmm6,xmm1\r
1664 movups xmm2,[esi]\r
1665 movups xmm3,[16+esi]\r
1666 movups xmm4,[32+esi]\r
1667 xorps xmm2,[esp]\r
1668 movups xmm5,[48+esi]\r
1669 lea esi,[64+esi]\r
1670 xorps xmm3,[16+esp]\r
1671 xorps xmm4,xmm7\r
1672 xorps xmm5,xmm6\r
1673 call __aesni_decrypt4\r
1674 xorps xmm2,[esp]\r
1675 xorps xmm3,[16+esp]\r
1676 xorps xmm4,xmm7\r
1677 movups [edi],xmm2\r
1678 xorps xmm5,xmm6\r
1679 movups [16+edi],xmm3\r
1680 movups [32+edi],xmm4\r
1681 movups [48+edi],xmm5\r
1682 lea edi,[64+edi]\r
1683 movdqa xmm1,xmm6\r
1684 jmp NEAR L$067xts_dec_done\r
1685align 16\r
1686L$062xts_dec_done6x:\r
1687 mov eax,DWORD [112+esp]\r
1688 and eax,15\r
1689 jz NEAR L$069xts_dec_ret\r
1690 mov DWORD [112+esp],eax\r
1691 jmp NEAR L$070xts_dec_only_one_more\r
1692align 16\r
1693L$067xts_dec_done:\r
1694 mov eax,DWORD [112+esp]\r
1695 pxor xmm0,xmm0\r
1696 and eax,15\r
1697 jz NEAR L$069xts_dec_ret\r
1698 pcmpgtd xmm0,xmm1\r
1699 mov DWORD [112+esp],eax\r
1700 pshufd xmm2,xmm0,19\r
1701 pxor xmm0,xmm0\r
1702 movdqa xmm3,[96+esp]\r
1703 paddq xmm1,xmm1\r
1704 pand xmm2,xmm3\r
1705 pcmpgtd xmm0,xmm1\r
1706 pxor xmm1,xmm2\r
1707L$070xts_dec_only_one_more:\r
1708 pshufd xmm5,xmm0,19\r
1709 movdqa xmm6,xmm1\r
1710 paddq xmm1,xmm1\r
1711 pand xmm5,xmm3\r
1712 pxor xmm5,xmm1\r
1713 mov edx,ebp\r
1714 mov ecx,ebx\r
1715 movups xmm2,[esi]\r
1716 xorps xmm2,xmm5\r
1717 movups xmm0,[edx]\r
1718 movups xmm1,[16+edx]\r
1719 lea edx,[32+edx]\r
1720 xorps xmm2,xmm0\r
1721L$071dec1_loop_13:\r
1722db 102,15,56,222,209\r
1723 dec ecx\r
1724 movups xmm1,[edx]\r
1725 lea edx,[16+edx]\r
1726 jnz NEAR L$071dec1_loop_13\r
1727db 102,15,56,223,209\r
1728 xorps xmm2,xmm5\r
1729 movups [edi],xmm2\r
1730L$072xts_dec_steal:\r
1731 movzx ecx,BYTE [16+esi]\r
1732 movzx edx,BYTE [edi]\r
1733 lea esi,[1+esi]\r
1734 mov BYTE [edi],cl\r
1735 mov BYTE [16+edi],dl\r
1736 lea edi,[1+edi]\r
1737 sub eax,1\r
1738 jnz NEAR L$072xts_dec_steal\r
1739 sub edi,DWORD [112+esp]\r
1740 mov edx,ebp\r
1741 mov ecx,ebx\r
1742 movups xmm2,[edi]\r
1743 xorps xmm2,xmm6\r
1744 movups xmm0,[edx]\r
1745 movups xmm1,[16+edx]\r
1746 lea edx,[32+edx]\r
1747 xorps xmm2,xmm0\r
1748L$073dec1_loop_14:\r
1749db 102,15,56,222,209\r
1750 dec ecx\r
1751 movups xmm1,[edx]\r
1752 lea edx,[16+edx]\r
1753 jnz NEAR L$073dec1_loop_14\r
1754db 102,15,56,223,209\r
1755 xorps xmm2,xmm6\r
1756 movups [edi],xmm2\r
1757L$069xts_dec_ret:\r
1758 pxor xmm0,xmm0\r
1759 pxor xmm1,xmm1\r
1760 pxor xmm2,xmm2\r
1761 movdqa [esp],xmm0\r
1762 pxor xmm3,xmm3\r
1763 movdqa [16+esp],xmm0\r
1764 pxor xmm4,xmm4\r
1765 movdqa [32+esp],xmm0\r
1766 pxor xmm5,xmm5\r
1767 movdqa [48+esp],xmm0\r
1768 pxor xmm6,xmm6\r
1769 movdqa [64+esp],xmm0\r
1770 pxor xmm7,xmm7\r
1771 movdqa [80+esp],xmm0\r
1772 mov esp,DWORD [116+esp]\r
1773 pop edi\r
1774 pop esi\r
1775 pop ebx\r
1776 pop ebp\r
1777 ret\r
1778global _aesni_ocb_encrypt\r
1779align 16\r
1780_aesni_ocb_encrypt:\r
1781L$_aesni_ocb_encrypt_begin:\r
1782 push ebp\r
1783 push ebx\r
1784 push esi\r
1785 push edi\r
1786 mov ecx,DWORD [40+esp]\r
1787 mov ebx,DWORD [48+esp]\r
1788 mov esi,DWORD [20+esp]\r
1789 mov edi,DWORD [24+esp]\r
1790 mov eax,DWORD [28+esp]\r
1791 mov edx,DWORD [32+esp]\r
1792 movdqu xmm0,[ecx]\r
1793 mov ebp,DWORD [36+esp]\r
1794 movdqu xmm1,[ebx]\r
1795 mov ebx,DWORD [44+esp]\r
1796 mov ecx,esp\r
1797 sub esp,132\r
1798 and esp,-16\r
1799 sub edi,esi\r
1800 shl eax,4\r
1801 lea eax,[eax*1+esi-96]\r
1802 mov DWORD [120+esp],edi\r
1803 mov DWORD [124+esp],eax\r
1804 mov DWORD [128+esp],ecx\r
1805 mov ecx,DWORD [240+edx]\r
1806 test ebp,1\r
1807 jnz NEAR L$074odd\r
1808 bsf eax,ebp\r
1809 add ebp,1\r
1810 shl eax,4\r
1811 movdqu xmm7,[eax*1+ebx]\r
1812 mov eax,edx\r
1813 movdqu xmm2,[esi]\r
1814 lea esi,[16+esi]\r
1815 pxor xmm7,xmm0\r
1816 pxor xmm1,xmm2\r
1817 pxor xmm2,xmm7\r
1818 movdqa xmm6,xmm1\r
1819 movups xmm0,[edx]\r
1820 movups xmm1,[16+edx]\r
1821 lea edx,[32+edx]\r
1822 xorps xmm2,xmm0\r
1823L$075enc1_loop_15:\r
1824db 102,15,56,220,209\r
1825 dec ecx\r
1826 movups xmm1,[edx]\r
1827 lea edx,[16+edx]\r
1828 jnz NEAR L$075enc1_loop_15\r
1829db 102,15,56,221,209\r
1830 xorps xmm2,xmm7\r
1831 movdqa xmm0,xmm7\r
1832 movdqa xmm1,xmm6\r
1833 movups [esi*1+edi-16],xmm2\r
1834 mov ecx,DWORD [240+eax]\r
1835 mov edx,eax\r
1836 mov eax,DWORD [124+esp]\r
1837L$074odd:\r
1838 shl ecx,4\r
1839 mov edi,16\r
1840 sub edi,ecx\r
1841 mov DWORD [112+esp],edx\r
1842 lea edx,[32+ecx*1+edx]\r
1843 mov DWORD [116+esp],edi\r
1844 cmp esi,eax\r
1845 ja NEAR L$076short\r
1846 jmp NEAR L$077grandloop\r
1847align 32\r
1848L$077grandloop:\r
1849 lea ecx,[1+ebp]\r
1850 lea eax,[3+ebp]\r
1851 lea edi,[5+ebp]\r
1852 add ebp,6\r
1853 bsf ecx,ecx\r
1854 bsf eax,eax\r
1855 bsf edi,edi\r
1856 shl ecx,4\r
1857 shl eax,4\r
1858 shl edi,4\r
1859 movdqu xmm2,[ebx]\r
1860 movdqu xmm3,[ecx*1+ebx]\r
1861 mov ecx,DWORD [116+esp]\r
1862 movdqa xmm4,xmm2\r
1863 movdqu xmm5,[eax*1+ebx]\r
1864 movdqa xmm6,xmm2\r
1865 movdqu xmm7,[edi*1+ebx]\r
1866 pxor xmm2,xmm0\r
1867 pxor xmm3,xmm2\r
1868 movdqa [esp],xmm2\r
1869 pxor xmm4,xmm3\r
1870 movdqa [16+esp],xmm3\r
1871 pxor xmm5,xmm4\r
1872 movdqa [32+esp],xmm4\r
1873 pxor xmm6,xmm5\r
1874 movdqa [48+esp],xmm5\r
1875 pxor xmm7,xmm6\r
1876 movdqa [64+esp],xmm6\r
1877 movdqa [80+esp],xmm7\r
1878 movups xmm0,[ecx*1+edx-48]\r
1879 movdqu xmm2,[esi]\r
1880 movdqu xmm3,[16+esi]\r
1881 movdqu xmm4,[32+esi]\r
1882 movdqu xmm5,[48+esi]\r
1883 movdqu xmm6,[64+esi]\r
1884 movdqu xmm7,[80+esi]\r
1885 lea esi,[96+esi]\r
1886 pxor xmm1,xmm2\r
1887 pxor xmm2,xmm0\r
1888 pxor xmm1,xmm3\r
1889 pxor xmm3,xmm0\r
1890 pxor xmm1,xmm4\r
1891 pxor xmm4,xmm0\r
1892 pxor xmm1,xmm5\r
1893 pxor xmm5,xmm0\r
1894 pxor xmm1,xmm6\r
1895 pxor xmm6,xmm0\r
1896 pxor xmm1,xmm7\r
1897 pxor xmm7,xmm0\r
1898 movdqa [96+esp],xmm1\r
1899 movups xmm1,[ecx*1+edx-32]\r
1900 pxor xmm2,[esp]\r
1901 pxor xmm3,[16+esp]\r
1902 pxor xmm4,[32+esp]\r
1903 pxor xmm5,[48+esp]\r
1904 pxor xmm6,[64+esp]\r
1905 pxor xmm7,[80+esp]\r
1906 movups xmm0,[ecx*1+edx-16]\r
1907db 102,15,56,220,209\r
1908db 102,15,56,220,217\r
1909db 102,15,56,220,225\r
1910db 102,15,56,220,233\r
1911db 102,15,56,220,241\r
1912db 102,15,56,220,249\r
1913 mov edi,DWORD [120+esp]\r
1914 mov eax,DWORD [124+esp]\r
1915 call L$_aesni_encrypt6_enter\r
1916 movdqa xmm0,[80+esp]\r
1917 pxor xmm2,[esp]\r
1918 pxor xmm3,[16+esp]\r
1919 pxor xmm4,[32+esp]\r
1920 pxor xmm5,[48+esp]\r
1921 pxor xmm6,[64+esp]\r
1922 pxor xmm7,xmm0\r
1923 movdqa xmm1,[96+esp]\r
1924 movdqu [esi*1+edi-96],xmm2\r
1925 movdqu [esi*1+edi-80],xmm3\r
1926 movdqu [esi*1+edi-64],xmm4\r
1927 movdqu [esi*1+edi-48],xmm5\r
1928 movdqu [esi*1+edi-32],xmm6\r
1929 movdqu [esi*1+edi-16],xmm7\r
1930 cmp esi,eax\r
1931 jb NEAR L$077grandloop\r
1932L$076short:\r
1933 add eax,96\r
1934 sub eax,esi\r
1935 jz NEAR L$078done\r
1936 cmp eax,32\r
1937 jb NEAR L$079one\r
1938 je NEAR L$080two\r
1939 cmp eax,64\r
1940 jb NEAR L$081three\r
1941 je NEAR L$082four\r
1942 lea ecx,[1+ebp]\r
1943 lea eax,[3+ebp]\r
1944 bsf ecx,ecx\r
1945 bsf eax,eax\r
1946 shl ecx,4\r
1947 shl eax,4\r
1948 movdqu xmm2,[ebx]\r
1949 movdqu xmm3,[ecx*1+ebx]\r
1950 mov ecx,DWORD [116+esp]\r
1951 movdqa xmm4,xmm2\r
1952 movdqu xmm5,[eax*1+ebx]\r
1953 movdqa xmm6,xmm2\r
1954 pxor xmm2,xmm0\r
1955 pxor xmm3,xmm2\r
1956 movdqa [esp],xmm2\r
1957 pxor xmm4,xmm3\r
1958 movdqa [16+esp],xmm3\r
1959 pxor xmm5,xmm4\r
1960 movdqa [32+esp],xmm4\r
1961 pxor xmm6,xmm5\r
1962 movdqa [48+esp],xmm5\r
1963 pxor xmm7,xmm6\r
1964 movdqa [64+esp],xmm6\r
1965 movups xmm0,[ecx*1+edx-48]\r
1966 movdqu xmm2,[esi]\r
1967 movdqu xmm3,[16+esi]\r
1968 movdqu xmm4,[32+esi]\r
1969 movdqu xmm5,[48+esi]\r
1970 movdqu xmm6,[64+esi]\r
1971 pxor xmm7,xmm7\r
1972 pxor xmm1,xmm2\r
1973 pxor xmm2,xmm0\r
1974 pxor xmm1,xmm3\r
1975 pxor xmm3,xmm0\r
1976 pxor xmm1,xmm4\r
1977 pxor xmm4,xmm0\r
1978 pxor xmm1,xmm5\r
1979 pxor xmm5,xmm0\r
1980 pxor xmm1,xmm6\r
1981 pxor xmm6,xmm0\r
1982 movdqa [96+esp],xmm1\r
1983 movups xmm1,[ecx*1+edx-32]\r
1984 pxor xmm2,[esp]\r
1985 pxor xmm3,[16+esp]\r
1986 pxor xmm4,[32+esp]\r
1987 pxor xmm5,[48+esp]\r
1988 pxor xmm6,[64+esp]\r
1989 movups xmm0,[ecx*1+edx-16]\r
1990db 102,15,56,220,209\r
1991db 102,15,56,220,217\r
1992db 102,15,56,220,225\r
1993db 102,15,56,220,233\r
1994db 102,15,56,220,241\r
1995db 102,15,56,220,249\r
1996 mov edi,DWORD [120+esp]\r
1997 call L$_aesni_encrypt6_enter\r
1998 movdqa xmm0,[64+esp]\r
1999 pxor xmm2,[esp]\r
2000 pxor xmm3,[16+esp]\r
2001 pxor xmm4,[32+esp]\r
2002 pxor xmm5,[48+esp]\r
2003 pxor xmm6,xmm0\r
2004 movdqa xmm1,[96+esp]\r
2005 movdqu [esi*1+edi],xmm2\r
2006 movdqu [16+esi*1+edi],xmm3\r
2007 movdqu [32+esi*1+edi],xmm4\r
2008 movdqu [48+esi*1+edi],xmm5\r
2009 movdqu [64+esi*1+edi],xmm6\r
2010 jmp NEAR L$078done\r
2011align 16\r
2012L$079one:\r
2013 movdqu xmm7,[ebx]\r
2014 mov edx,DWORD [112+esp]\r
2015 movdqu xmm2,[esi]\r
2016 mov ecx,DWORD [240+edx]\r
2017 pxor xmm7,xmm0\r
2018 pxor xmm1,xmm2\r
2019 pxor xmm2,xmm7\r
2020 movdqa xmm6,xmm1\r
2021 mov edi,DWORD [120+esp]\r
2022 movups xmm0,[edx]\r
2023 movups xmm1,[16+edx]\r
2024 lea edx,[32+edx]\r
2025 xorps xmm2,xmm0\r
2026L$083enc1_loop_16:\r
2027db 102,15,56,220,209\r
2028 dec ecx\r
2029 movups xmm1,[edx]\r
2030 lea edx,[16+edx]\r
2031 jnz NEAR L$083enc1_loop_16\r
2032db 102,15,56,221,209\r
2033 xorps xmm2,xmm7\r
2034 movdqa xmm0,xmm7\r
2035 movdqa xmm1,xmm6\r
2036 movups [esi*1+edi],xmm2\r
2037 jmp NEAR L$078done\r
2038align 16\r
2039L$080two:\r
2040 lea ecx,[1+ebp]\r
2041 mov edx,DWORD [112+esp]\r
2042 bsf ecx,ecx\r
2043 shl ecx,4\r
2044 movdqu xmm6,[ebx]\r
2045 movdqu xmm7,[ecx*1+ebx]\r
2046 movdqu xmm2,[esi]\r
2047 movdqu xmm3,[16+esi]\r
2048 mov ecx,DWORD [240+edx]\r
2049 pxor xmm6,xmm0\r
2050 pxor xmm7,xmm6\r
2051 pxor xmm1,xmm2\r
2052 pxor xmm2,xmm6\r
2053 pxor xmm1,xmm3\r
2054 pxor xmm3,xmm7\r
2055 movdqa xmm5,xmm1\r
2056 mov edi,DWORD [120+esp]\r
2057 call __aesni_encrypt2\r
2058 xorps xmm2,xmm6\r
2059 xorps xmm3,xmm7\r
2060 movdqa xmm0,xmm7\r
2061 movdqa xmm1,xmm5\r
2062 movups [esi*1+edi],xmm2\r
2063 movups [16+esi*1+edi],xmm3\r
2064 jmp NEAR L$078done\r
2065align 16\r
2066L$081three:\r
2067 lea ecx,[1+ebp]\r
2068 mov edx,DWORD [112+esp]\r
2069 bsf ecx,ecx\r
2070 shl ecx,4\r
2071 movdqu xmm5,[ebx]\r
2072 movdqu xmm6,[ecx*1+ebx]\r
2073 movdqa xmm7,xmm5\r
2074 movdqu xmm2,[esi]\r
2075 movdqu xmm3,[16+esi]\r
2076 movdqu xmm4,[32+esi]\r
2077 mov ecx,DWORD [240+edx]\r
2078 pxor xmm5,xmm0\r
2079 pxor xmm6,xmm5\r
2080 pxor xmm7,xmm6\r
2081 pxor xmm1,xmm2\r
2082 pxor xmm2,xmm5\r
2083 pxor xmm1,xmm3\r
2084 pxor xmm3,xmm6\r
2085 pxor xmm1,xmm4\r
2086 pxor xmm4,xmm7\r
2087 movdqa [96+esp],xmm1\r
2088 mov edi,DWORD [120+esp]\r
2089 call __aesni_encrypt3\r
2090 xorps xmm2,xmm5\r
2091 xorps xmm3,xmm6\r
2092 xorps xmm4,xmm7\r
2093 movdqa xmm0,xmm7\r
2094 movdqa xmm1,[96+esp]\r
2095 movups [esi*1+edi],xmm2\r
2096 movups [16+esi*1+edi],xmm3\r
2097 movups [32+esi*1+edi],xmm4\r
2098 jmp NEAR L$078done\r
2099align 16\r
2100L$082four:\r
2101 lea ecx,[1+ebp]\r
2102 lea eax,[3+ebp]\r
2103 bsf ecx,ecx\r
2104 bsf eax,eax\r
2105 mov edx,DWORD [112+esp]\r
2106 shl ecx,4\r
2107 shl eax,4\r
2108 movdqu xmm4,[ebx]\r
2109 movdqu xmm5,[ecx*1+ebx]\r
2110 movdqa xmm6,xmm4\r
2111 movdqu xmm7,[eax*1+ebx]\r
2112 pxor xmm4,xmm0\r
2113 movdqu xmm2,[esi]\r
2114 pxor xmm5,xmm4\r
2115 movdqu xmm3,[16+esi]\r
2116 pxor xmm6,xmm5\r
2117 movdqa [esp],xmm4\r
2118 pxor xmm7,xmm6\r
2119 movdqa [16+esp],xmm5\r
2120 movdqu xmm4,[32+esi]\r
2121 movdqu xmm5,[48+esi]\r
2122 mov ecx,DWORD [240+edx]\r
2123 pxor xmm1,xmm2\r
2124 pxor xmm2,[esp]\r
2125 pxor xmm1,xmm3\r
2126 pxor xmm3,[16+esp]\r
2127 pxor xmm1,xmm4\r
2128 pxor xmm4,xmm6\r
2129 pxor xmm1,xmm5\r
2130 pxor xmm5,xmm7\r
2131 movdqa [96+esp],xmm1\r
2132 mov edi,DWORD [120+esp]\r
2133 call __aesni_encrypt4\r
2134 xorps xmm2,[esp]\r
2135 xorps xmm3,[16+esp]\r
2136 xorps xmm4,xmm6\r
2137 movups [esi*1+edi],xmm2\r
2138 xorps xmm5,xmm7\r
2139 movups [16+esi*1+edi],xmm3\r
2140 movdqa xmm0,xmm7\r
2141 movups [32+esi*1+edi],xmm4\r
2142 movdqa xmm1,[96+esp]\r
2143 movups [48+esi*1+edi],xmm5\r
2144L$078done:\r
2145 mov edx,DWORD [128+esp]\r
2146 pxor xmm2,xmm2\r
2147 pxor xmm3,xmm3\r
2148 movdqa [esp],xmm2\r
2149 pxor xmm4,xmm4\r
2150 movdqa [16+esp],xmm2\r
2151 pxor xmm5,xmm5\r
2152 movdqa [32+esp],xmm2\r
2153 pxor xmm6,xmm6\r
2154 movdqa [48+esp],xmm2\r
2155 pxor xmm7,xmm7\r
2156 movdqa [64+esp],xmm2\r
2157 movdqa [80+esp],xmm2\r
2158 movdqa [96+esp],xmm2\r
2159 lea esp,[edx]\r
2160 mov ecx,DWORD [40+esp]\r
2161 mov ebx,DWORD [48+esp]\r
2162 movdqu [ecx],xmm0\r
2163 pxor xmm0,xmm0\r
2164 movdqu [ebx],xmm1\r
2165 pxor xmm1,xmm1\r
2166 pop edi\r
2167 pop esi\r
2168 pop ebx\r
2169 pop ebp\r
2170 ret\r
2171global _aesni_ocb_decrypt\r
2172align 16\r
2173_aesni_ocb_decrypt:\r
2174L$_aesni_ocb_decrypt_begin:\r
2175 push ebp\r
2176 push ebx\r
2177 push esi\r
2178 push edi\r
2179 mov ecx,DWORD [40+esp]\r
2180 mov ebx,DWORD [48+esp]\r
2181 mov esi,DWORD [20+esp]\r
2182 mov edi,DWORD [24+esp]\r
2183 mov eax,DWORD [28+esp]\r
2184 mov edx,DWORD [32+esp]\r
2185 movdqu xmm0,[ecx]\r
2186 mov ebp,DWORD [36+esp]\r
2187 movdqu xmm1,[ebx]\r
2188 mov ebx,DWORD [44+esp]\r
2189 mov ecx,esp\r
2190 sub esp,132\r
2191 and esp,-16\r
2192 sub edi,esi\r
2193 shl eax,4\r
2194 lea eax,[eax*1+esi-96]\r
2195 mov DWORD [120+esp],edi\r
2196 mov DWORD [124+esp],eax\r
2197 mov DWORD [128+esp],ecx\r
2198 mov ecx,DWORD [240+edx]\r
2199 test ebp,1\r
2200 jnz NEAR L$084odd\r
2201 bsf eax,ebp\r
2202 add ebp,1\r
2203 shl eax,4\r
2204 movdqu xmm7,[eax*1+ebx]\r
2205 mov eax,edx\r
2206 movdqu xmm2,[esi]\r
2207 lea esi,[16+esi]\r
2208 pxor xmm7,xmm0\r
2209 pxor xmm2,xmm7\r
2210 movdqa xmm6,xmm1\r
2211 movups xmm0,[edx]\r
2212 movups xmm1,[16+edx]\r
2213 lea edx,[32+edx]\r
2214 xorps xmm2,xmm0\r
2215L$085dec1_loop_17:\r
2216db 102,15,56,222,209\r
2217 dec ecx\r
2218 movups xmm1,[edx]\r
2219 lea edx,[16+edx]\r
2220 jnz NEAR L$085dec1_loop_17\r
2221db 102,15,56,223,209\r
2222 xorps xmm2,xmm7\r
2223 movaps xmm1,xmm6\r
2224 movdqa xmm0,xmm7\r
2225 xorps xmm1,xmm2\r
2226 movups [esi*1+edi-16],xmm2\r
2227 mov ecx,DWORD [240+eax]\r
2228 mov edx,eax\r
2229 mov eax,DWORD [124+esp]\r
2230L$084odd:\r
2231 shl ecx,4\r
2232 mov edi,16\r
2233 sub edi,ecx\r
2234 mov DWORD [112+esp],edx\r
2235 lea edx,[32+ecx*1+edx]\r
2236 mov DWORD [116+esp],edi\r
2237 cmp esi,eax\r
2238 ja NEAR L$086short\r
2239 jmp NEAR L$087grandloop\r
2240align 32\r
2241L$087grandloop:\r
2242 lea ecx,[1+ebp]\r
2243 lea eax,[3+ebp]\r
2244 lea edi,[5+ebp]\r
2245 add ebp,6\r
2246 bsf ecx,ecx\r
2247 bsf eax,eax\r
2248 bsf edi,edi\r
2249 shl ecx,4\r
2250 shl eax,4\r
2251 shl edi,4\r
2252 movdqu xmm2,[ebx]\r
2253 movdqu xmm3,[ecx*1+ebx]\r
2254 mov ecx,DWORD [116+esp]\r
2255 movdqa xmm4,xmm2\r
2256 movdqu xmm5,[eax*1+ebx]\r
2257 movdqa xmm6,xmm2\r
2258 movdqu xmm7,[edi*1+ebx]\r
2259 pxor xmm2,xmm0\r
2260 pxor xmm3,xmm2\r
2261 movdqa [esp],xmm2\r
2262 pxor xmm4,xmm3\r
2263 movdqa [16+esp],xmm3\r
2264 pxor xmm5,xmm4\r
2265 movdqa [32+esp],xmm4\r
2266 pxor xmm6,xmm5\r
2267 movdqa [48+esp],xmm5\r
2268 pxor xmm7,xmm6\r
2269 movdqa [64+esp],xmm6\r
2270 movdqa [80+esp],xmm7\r
2271 movups xmm0,[ecx*1+edx-48]\r
2272 movdqu xmm2,[esi]\r
2273 movdqu xmm3,[16+esi]\r
2274 movdqu xmm4,[32+esi]\r
2275 movdqu xmm5,[48+esi]\r
2276 movdqu xmm6,[64+esi]\r
2277 movdqu xmm7,[80+esi]\r
2278 lea esi,[96+esi]\r
2279 movdqa [96+esp],xmm1\r
2280 pxor xmm2,xmm0\r
2281 pxor xmm3,xmm0\r
2282 pxor xmm4,xmm0\r
2283 pxor xmm5,xmm0\r
2284 pxor xmm6,xmm0\r
2285 pxor xmm7,xmm0\r
2286 movups xmm1,[ecx*1+edx-32]\r
2287 pxor xmm2,[esp]\r
2288 pxor xmm3,[16+esp]\r
2289 pxor xmm4,[32+esp]\r
2290 pxor xmm5,[48+esp]\r
2291 pxor xmm6,[64+esp]\r
2292 pxor xmm7,[80+esp]\r
2293 movups xmm0,[ecx*1+edx-16]\r
2294db 102,15,56,222,209\r
2295db 102,15,56,222,217\r
2296db 102,15,56,222,225\r
2297db 102,15,56,222,233\r
2298db 102,15,56,222,241\r
2299db 102,15,56,222,249\r
2300 mov edi,DWORD [120+esp]\r
2301 mov eax,DWORD [124+esp]\r
2302 call L$_aesni_decrypt6_enter\r
2303 movdqa xmm0,[80+esp]\r
2304 pxor xmm2,[esp]\r
2305 movdqa xmm1,[96+esp]\r
2306 pxor xmm3,[16+esp]\r
2307 pxor xmm4,[32+esp]\r
2308 pxor xmm5,[48+esp]\r
2309 pxor xmm6,[64+esp]\r
2310 pxor xmm7,xmm0\r
2311 pxor xmm1,xmm2\r
2312 movdqu [esi*1+edi-96],xmm2\r
2313 pxor xmm1,xmm3\r
2314 movdqu [esi*1+edi-80],xmm3\r
2315 pxor xmm1,xmm4\r
2316 movdqu [esi*1+edi-64],xmm4\r
2317 pxor xmm1,xmm5\r
2318 movdqu [esi*1+edi-48],xmm5\r
2319 pxor xmm1,xmm6\r
2320 movdqu [esi*1+edi-32],xmm6\r
2321 pxor xmm1,xmm7\r
2322 movdqu [esi*1+edi-16],xmm7\r
2323 cmp esi,eax\r
2324 jb NEAR L$087grandloop\r
2325L$086short:\r
2326 add eax,96\r
2327 sub eax,esi\r
2328 jz NEAR L$088done\r
2329 cmp eax,32\r
2330 jb NEAR L$089one\r
2331 je NEAR L$090two\r
2332 cmp eax,64\r
2333 jb NEAR L$091three\r
2334 je NEAR L$092four\r
2335 lea ecx,[1+ebp]\r
2336 lea eax,[3+ebp]\r
2337 bsf ecx,ecx\r
2338 bsf eax,eax\r
2339 shl ecx,4\r
2340 shl eax,4\r
2341 movdqu xmm2,[ebx]\r
2342 movdqu xmm3,[ecx*1+ebx]\r
2343 mov ecx,DWORD [116+esp]\r
2344 movdqa xmm4,xmm2\r
2345 movdqu xmm5,[eax*1+ebx]\r
2346 movdqa xmm6,xmm2\r
2347 pxor xmm2,xmm0\r
2348 pxor xmm3,xmm2\r
2349 movdqa [esp],xmm2\r
2350 pxor xmm4,xmm3\r
2351 movdqa [16+esp],xmm3\r
2352 pxor xmm5,xmm4\r
2353 movdqa [32+esp],xmm4\r
2354 pxor xmm6,xmm5\r
2355 movdqa [48+esp],xmm5\r
2356 pxor xmm7,xmm6\r
2357 movdqa [64+esp],xmm6\r
2358 movups xmm0,[ecx*1+edx-48]\r
2359 movdqu xmm2,[esi]\r
2360 movdqu xmm3,[16+esi]\r
2361 movdqu xmm4,[32+esi]\r
2362 movdqu xmm5,[48+esi]\r
2363 movdqu xmm6,[64+esi]\r
2364 pxor xmm7,xmm7\r
2365 movdqa [96+esp],xmm1\r
2366 pxor xmm2,xmm0\r
2367 pxor xmm3,xmm0\r
2368 pxor xmm4,xmm0\r
2369 pxor xmm5,xmm0\r
2370 pxor xmm6,xmm0\r
2371 movups xmm1,[ecx*1+edx-32]\r
2372 pxor xmm2,[esp]\r
2373 pxor xmm3,[16+esp]\r
2374 pxor xmm4,[32+esp]\r
2375 pxor xmm5,[48+esp]\r
2376 pxor xmm6,[64+esp]\r
2377 movups xmm0,[ecx*1+edx-16]\r
2378db 102,15,56,222,209\r
2379db 102,15,56,222,217\r
2380db 102,15,56,222,225\r
2381db 102,15,56,222,233\r
2382db 102,15,56,222,241\r
2383db 102,15,56,222,249\r
2384 mov edi,DWORD [120+esp]\r
2385 call L$_aesni_decrypt6_enter\r
2386 movdqa xmm0,[64+esp]\r
2387 pxor xmm2,[esp]\r
2388 movdqa xmm1,[96+esp]\r
2389 pxor xmm3,[16+esp]\r
2390 pxor xmm4,[32+esp]\r
2391 pxor xmm5,[48+esp]\r
2392 pxor xmm6,xmm0\r
2393 pxor xmm1,xmm2\r
2394 movdqu [esi*1+edi],xmm2\r
2395 pxor xmm1,xmm3\r
2396 movdqu [16+esi*1+edi],xmm3\r
2397 pxor xmm1,xmm4\r
2398 movdqu [32+esi*1+edi],xmm4\r
2399 pxor xmm1,xmm5\r
2400 movdqu [48+esi*1+edi],xmm5\r
2401 pxor xmm1,xmm6\r
2402 movdqu [64+esi*1+edi],xmm6\r
2403 jmp NEAR L$088done\r
2404align 16\r
2405L$089one:\r
2406 movdqu xmm7,[ebx]\r
2407 mov edx,DWORD [112+esp]\r
2408 movdqu xmm2,[esi]\r
2409 mov ecx,DWORD [240+edx]\r
2410 pxor xmm7,xmm0\r
2411 pxor xmm2,xmm7\r
2412 movdqa xmm6,xmm1\r
2413 mov edi,DWORD [120+esp]\r
2414 movups xmm0,[edx]\r
2415 movups xmm1,[16+edx]\r
2416 lea edx,[32+edx]\r
2417 xorps xmm2,xmm0\r
2418L$093dec1_loop_18:\r
2419db 102,15,56,222,209\r
2420 dec ecx\r
2421 movups xmm1,[edx]\r
2422 lea edx,[16+edx]\r
2423 jnz NEAR L$093dec1_loop_18\r
2424db 102,15,56,223,209\r
2425 xorps xmm2,xmm7\r
2426 movaps xmm1,xmm6\r
2427 movdqa xmm0,xmm7\r
2428 xorps xmm1,xmm2\r
2429 movups [esi*1+edi],xmm2\r
2430 jmp NEAR L$088done\r
2431align 16\r
2432L$090two:\r
2433 lea ecx,[1+ebp]\r
2434 mov edx,DWORD [112+esp]\r
2435 bsf ecx,ecx\r
2436 shl ecx,4\r
2437 movdqu xmm6,[ebx]\r
2438 movdqu xmm7,[ecx*1+ebx]\r
2439 movdqu xmm2,[esi]\r
2440 movdqu xmm3,[16+esi]\r
2441 mov ecx,DWORD [240+edx]\r
2442 movdqa xmm5,xmm1\r
2443 pxor xmm6,xmm0\r
2444 pxor xmm7,xmm6\r
2445 pxor xmm2,xmm6\r
2446 pxor xmm3,xmm7\r
2447 mov edi,DWORD [120+esp]\r
2448 call __aesni_decrypt2\r
2449 xorps xmm2,xmm6\r
2450 xorps xmm3,xmm7\r
2451 movdqa xmm0,xmm7\r
2452 xorps xmm5,xmm2\r
2453 movups [esi*1+edi],xmm2\r
2454 xorps xmm5,xmm3\r
2455 movups [16+esi*1+edi],xmm3\r
2456 movaps xmm1,xmm5\r
2457 jmp NEAR L$088done\r
2458align 16\r
2459L$091three:\r
2460 lea ecx,[1+ebp]\r
2461 mov edx,DWORD [112+esp]\r
2462 bsf ecx,ecx\r
2463 shl ecx,4\r
2464 movdqu xmm5,[ebx]\r
2465 movdqu xmm6,[ecx*1+ebx]\r
2466 movdqa xmm7,xmm5\r
2467 movdqu xmm2,[esi]\r
2468 movdqu xmm3,[16+esi]\r
2469 movdqu xmm4,[32+esi]\r
2470 mov ecx,DWORD [240+edx]\r
2471 movdqa [96+esp],xmm1\r
2472 pxor xmm5,xmm0\r
2473 pxor xmm6,xmm5\r
2474 pxor xmm7,xmm6\r
2475 pxor xmm2,xmm5\r
2476 pxor xmm3,xmm6\r
2477 pxor xmm4,xmm7\r
2478 mov edi,DWORD [120+esp]\r
2479 call __aesni_decrypt3\r
2480 movdqa xmm1,[96+esp]\r
2481 xorps xmm2,xmm5\r
2482 xorps xmm3,xmm6\r
2483 xorps xmm4,xmm7\r
2484 movups [esi*1+edi],xmm2\r
2485 pxor xmm1,xmm2\r
2486 movdqa xmm0,xmm7\r
2487 movups [16+esi*1+edi],xmm3\r
2488 pxor xmm1,xmm3\r
2489 movups [32+esi*1+edi],xmm4\r
2490 pxor xmm1,xmm4\r
2491 jmp NEAR L$088done\r
2492align 16\r
2493L$092four:\r
2494 lea ecx,[1+ebp]\r
2495 lea eax,[3+ebp]\r
2496 bsf ecx,ecx\r
2497 bsf eax,eax\r
2498 mov edx,DWORD [112+esp]\r
2499 shl ecx,4\r
2500 shl eax,4\r
2501 movdqu xmm4,[ebx]\r
2502 movdqu xmm5,[ecx*1+ebx]\r
2503 movdqa xmm6,xmm4\r
2504 movdqu xmm7,[eax*1+ebx]\r
2505 pxor xmm4,xmm0\r
2506 movdqu xmm2,[esi]\r
2507 pxor xmm5,xmm4\r
2508 movdqu xmm3,[16+esi]\r
2509 pxor xmm6,xmm5\r
2510 movdqa [esp],xmm4\r
2511 pxor xmm7,xmm6\r
2512 movdqa [16+esp],xmm5\r
2513 movdqu xmm4,[32+esi]\r
2514 movdqu xmm5,[48+esi]\r
2515 mov ecx,DWORD [240+edx]\r
2516 movdqa [96+esp],xmm1\r
2517 pxor xmm2,[esp]\r
2518 pxor xmm3,[16+esp]\r
2519 pxor xmm4,xmm6\r
2520 pxor xmm5,xmm7\r
2521 mov edi,DWORD [120+esp]\r
2522 call __aesni_decrypt4\r
2523 movdqa xmm1,[96+esp]\r
2524 xorps xmm2,[esp]\r
2525 xorps xmm3,[16+esp]\r
2526 xorps xmm4,xmm6\r
2527 movups [esi*1+edi],xmm2\r
2528 pxor xmm1,xmm2\r
2529 xorps xmm5,xmm7\r
2530 movups [16+esi*1+edi],xmm3\r
2531 pxor xmm1,xmm3\r
2532 movdqa xmm0,xmm7\r
2533 movups [32+esi*1+edi],xmm4\r
2534 pxor xmm1,xmm4\r
2535 movups [48+esi*1+edi],xmm5\r
2536 pxor xmm1,xmm5\r
2537L$088done:\r
2538 mov edx,DWORD [128+esp]\r
2539 pxor xmm2,xmm2\r
2540 pxor xmm3,xmm3\r
2541 movdqa [esp],xmm2\r
2542 pxor xmm4,xmm4\r
2543 movdqa [16+esp],xmm2\r
2544 pxor xmm5,xmm5\r
2545 movdqa [32+esp],xmm2\r
2546 pxor xmm6,xmm6\r
2547 movdqa [48+esp],xmm2\r
2548 pxor xmm7,xmm7\r
2549 movdqa [64+esp],xmm2\r
2550 movdqa [80+esp],xmm2\r
2551 movdqa [96+esp],xmm2\r
2552 lea esp,[edx]\r
2553 mov ecx,DWORD [40+esp]\r
2554 mov ebx,DWORD [48+esp]\r
2555 movdqu [ecx],xmm0\r
2556 pxor xmm0,xmm0\r
2557 movdqu [ebx],xmm1\r
2558 pxor xmm1,xmm1\r
2559 pop edi\r
2560 pop esi\r
2561 pop ebx\r
2562 pop ebp\r
2563 ret\r
2564global _aesni_cbc_encrypt\r
2565align 16\r
2566_aesni_cbc_encrypt:\r
2567L$_aesni_cbc_encrypt_begin:\r
2568 push ebp\r
2569 push ebx\r
2570 push esi\r
2571 push edi\r
2572 mov esi,DWORD [20+esp]\r
2573 mov ebx,esp\r
2574 mov edi,DWORD [24+esp]\r
2575 sub ebx,24\r
2576 mov eax,DWORD [28+esp]\r
2577 and ebx,-16\r
2578 mov edx,DWORD [32+esp]\r
2579 mov ebp,DWORD [36+esp]\r
2580 test eax,eax\r
2581 jz NEAR L$094cbc_abort\r
2582 cmp DWORD [40+esp],0\r
2583 xchg ebx,esp\r
2584 movups xmm7,[ebp]\r
2585 mov ecx,DWORD [240+edx]\r
2586 mov ebp,edx\r
2587 mov DWORD [16+esp],ebx\r
2588 mov ebx,ecx\r
2589 je NEAR L$095cbc_decrypt\r
2590 movaps xmm2,xmm7\r
2591 cmp eax,16\r
2592 jb NEAR L$096cbc_enc_tail\r
2593 sub eax,16\r
2594 jmp NEAR L$097cbc_enc_loop\r
2595align 16\r
2596L$097cbc_enc_loop:\r
2597 movups xmm7,[esi]\r
2598 lea esi,[16+esi]\r
2599 movups xmm0,[edx]\r
2600 movups xmm1,[16+edx]\r
2601 xorps xmm7,xmm0\r
2602 lea edx,[32+edx]\r
2603 xorps xmm2,xmm7\r
2604L$098enc1_loop_19:\r
2605db 102,15,56,220,209\r
2606 dec ecx\r
2607 movups xmm1,[edx]\r
2608 lea edx,[16+edx]\r
2609 jnz NEAR L$098enc1_loop_19\r
2610db 102,15,56,221,209\r
2611 mov ecx,ebx\r
2612 mov edx,ebp\r
2613 movups [edi],xmm2\r
2614 lea edi,[16+edi]\r
2615 sub eax,16\r
2616 jnc NEAR L$097cbc_enc_loop\r
2617 add eax,16\r
2618 jnz NEAR L$096cbc_enc_tail\r
2619 movaps xmm7,xmm2\r
2620 pxor xmm2,xmm2\r
2621 jmp NEAR L$099cbc_ret\r
2622L$096cbc_enc_tail:\r
2623 mov ecx,eax\r
2624dd 2767451785\r
2625 mov ecx,16\r
2626 sub ecx,eax\r
2627 xor eax,eax\r
2628dd 2868115081\r
2629 lea edi,[edi-16]\r
2630 mov ecx,ebx\r
2631 mov esi,edi\r
2632 mov edx,ebp\r
2633 jmp NEAR L$097cbc_enc_loop\r
2634align 16\r
2635L$095cbc_decrypt:\r
2636 cmp eax,80\r
2637 jbe NEAR L$100cbc_dec_tail\r
2638 movaps [esp],xmm7\r
2639 sub eax,80\r
2640 jmp NEAR L$101cbc_dec_loop6_enter\r
2641align 16\r
2642L$102cbc_dec_loop6:\r
2643 movaps [esp],xmm0\r
2644 movups [edi],xmm7\r
2645 lea edi,[16+edi]\r
2646L$101cbc_dec_loop6_enter:\r
2647 movdqu xmm2,[esi]\r
2648 movdqu xmm3,[16+esi]\r
2649 movdqu xmm4,[32+esi]\r
2650 movdqu xmm5,[48+esi]\r
2651 movdqu xmm6,[64+esi]\r
2652 movdqu xmm7,[80+esi]\r
2653 call __aesni_decrypt6\r
2654 movups xmm1,[esi]\r
2655 movups xmm0,[16+esi]\r
2656 xorps xmm2,[esp]\r
2657 xorps xmm3,xmm1\r
2658 movups xmm1,[32+esi]\r
2659 xorps xmm4,xmm0\r
2660 movups xmm0,[48+esi]\r
2661 xorps xmm5,xmm1\r
2662 movups xmm1,[64+esi]\r
2663 xorps xmm6,xmm0\r
2664 movups xmm0,[80+esi]\r
2665 xorps xmm7,xmm1\r
2666 movups [edi],xmm2\r
2667 movups [16+edi],xmm3\r
2668 lea esi,[96+esi]\r
2669 movups [32+edi],xmm4\r
2670 mov ecx,ebx\r
2671 movups [48+edi],xmm5\r
2672 mov edx,ebp\r
2673 movups [64+edi],xmm6\r
2674 lea edi,[80+edi]\r
2675 sub eax,96\r
2676 ja NEAR L$102cbc_dec_loop6\r
2677 movaps xmm2,xmm7\r
2678 movaps xmm7,xmm0\r
2679 add eax,80\r
2680 jle NEAR L$103cbc_dec_clear_tail_collected\r
2681 movups [edi],xmm2\r
2682 lea edi,[16+edi]\r
2683L$100cbc_dec_tail:\r
2684 movups xmm2,[esi]\r
2685 movaps xmm6,xmm2\r
2686 cmp eax,16\r
2687 jbe NEAR L$104cbc_dec_one\r
2688 movups xmm3,[16+esi]\r
2689 movaps xmm5,xmm3\r
2690 cmp eax,32\r
2691 jbe NEAR L$105cbc_dec_two\r
2692 movups xmm4,[32+esi]\r
2693 cmp eax,48\r
2694 jbe NEAR L$106cbc_dec_three\r
2695 movups xmm5,[48+esi]\r
2696 cmp eax,64\r
2697 jbe NEAR L$107cbc_dec_four\r
2698 movups xmm6,[64+esi]\r
2699 movaps [esp],xmm7\r
2700 movups xmm2,[esi]\r
2701 xorps xmm7,xmm7\r
2702 call __aesni_decrypt6\r
2703 movups xmm1,[esi]\r
2704 movups xmm0,[16+esi]\r
2705 xorps xmm2,[esp]\r
2706 xorps xmm3,xmm1\r
2707 movups xmm1,[32+esi]\r
2708 xorps xmm4,xmm0\r
2709 movups xmm0,[48+esi]\r
2710 xorps xmm5,xmm1\r
2711 movups xmm7,[64+esi]\r
2712 xorps xmm6,xmm0\r
2713 movups [edi],xmm2\r
2714 movups [16+edi],xmm3\r
2715 pxor xmm3,xmm3\r
2716 movups [32+edi],xmm4\r
2717 pxor xmm4,xmm4\r
2718 movups [48+edi],xmm5\r
2719 pxor xmm5,xmm5\r
2720 lea edi,[64+edi]\r
2721 movaps xmm2,xmm6\r
2722 pxor xmm6,xmm6\r
2723 sub eax,80\r
2724 jmp NEAR L$108cbc_dec_tail_collected\r
2725align 16\r
2726L$104cbc_dec_one:\r
2727 movups xmm0,[edx]\r
2728 movups xmm1,[16+edx]\r
2729 lea edx,[32+edx]\r
2730 xorps xmm2,xmm0\r
2731L$109dec1_loop_20:\r
2732db 102,15,56,222,209\r
2733 dec ecx\r
2734 movups xmm1,[edx]\r
2735 lea edx,[16+edx]\r
2736 jnz NEAR L$109dec1_loop_20\r
2737db 102,15,56,223,209\r
2738 xorps xmm2,xmm7\r
2739 movaps xmm7,xmm6\r
2740 sub eax,16\r
2741 jmp NEAR L$108cbc_dec_tail_collected\r
2742align 16\r
2743L$105cbc_dec_two:\r
2744 call __aesni_decrypt2\r
2745 xorps xmm2,xmm7\r
2746 xorps xmm3,xmm6\r
2747 movups [edi],xmm2\r
2748 movaps xmm2,xmm3\r
2749 pxor xmm3,xmm3\r
2750 lea edi,[16+edi]\r
2751 movaps xmm7,xmm5\r
2752 sub eax,32\r
2753 jmp NEAR L$108cbc_dec_tail_collected\r
2754align 16\r
2755L$106cbc_dec_three:\r
2756 call __aesni_decrypt3\r
2757 xorps xmm2,xmm7\r
2758 xorps xmm3,xmm6\r
2759 xorps xmm4,xmm5\r
2760 movups [edi],xmm2\r
2761 movaps xmm2,xmm4\r
2762 pxor xmm4,xmm4\r
2763 movups [16+edi],xmm3\r
2764 pxor xmm3,xmm3\r
2765 lea edi,[32+edi]\r
2766 movups xmm7,[32+esi]\r
2767 sub eax,48\r
2768 jmp NEAR L$108cbc_dec_tail_collected\r
2769align 16\r
2770L$107cbc_dec_four:\r
2771 call __aesni_decrypt4\r
2772 movups xmm1,[16+esi]\r
2773 movups xmm0,[32+esi]\r
2774 xorps xmm2,xmm7\r
2775 movups xmm7,[48+esi]\r
2776 xorps xmm3,xmm6\r
2777 movups [edi],xmm2\r
2778 xorps xmm4,xmm1\r
2779 movups [16+edi],xmm3\r
2780 pxor xmm3,xmm3\r
2781 xorps xmm5,xmm0\r
2782 movups [32+edi],xmm4\r
2783 pxor xmm4,xmm4\r
2784 lea edi,[48+edi]\r
2785 movaps xmm2,xmm5\r
2786 pxor xmm5,xmm5\r
2787 sub eax,64\r
2788 jmp NEAR L$108cbc_dec_tail_collected\r
2789align 16\r
2790L$103cbc_dec_clear_tail_collected:\r
2791 pxor xmm3,xmm3\r
2792 pxor xmm4,xmm4\r
2793 pxor xmm5,xmm5\r
2794 pxor xmm6,xmm6\r
2795L$108cbc_dec_tail_collected:\r
2796 and eax,15\r
2797 jnz NEAR L$110cbc_dec_tail_partial\r
2798 movups [edi],xmm2\r
2799 pxor xmm0,xmm0\r
2800 jmp NEAR L$099cbc_ret\r
2801align 16\r
2802L$110cbc_dec_tail_partial:\r
2803 movaps [esp],xmm2\r
2804 pxor xmm0,xmm0\r
2805 mov ecx,16\r
2806 mov esi,esp\r
2807 sub ecx,eax\r
2808dd 2767451785\r
2809 movdqa [esp],xmm2\r
2810L$099cbc_ret:\r
2811 mov esp,DWORD [16+esp]\r
2812 mov ebp,DWORD [36+esp]\r
2813 pxor xmm2,xmm2\r
2814 pxor xmm1,xmm1\r
2815 movups [ebp],xmm7\r
2816 pxor xmm7,xmm7\r
2817L$094cbc_abort:\r
2818 pop edi\r
2819 pop esi\r
2820 pop ebx\r
2821 pop ebp\r
2822 ret\r
2823align 16\r
2824__aesni_set_encrypt_key:\r
2825 push ebp\r
2826 push ebx\r
2827 test eax,eax\r
2828 jz NEAR L$111bad_pointer\r
2829 test edx,edx\r
2830 jz NEAR L$111bad_pointer\r
2831 call L$112pic\r
2832L$112pic:\r
2833 pop ebx\r
2834 lea ebx,[(L$key_const-L$112pic)+ebx]\r
2835 lea ebp,[_OPENSSL_ia32cap_P]\r
2836 movups xmm0,[eax]\r
2837 xorps xmm4,xmm4\r
2838 mov ebp,DWORD [4+ebp]\r
2839 lea edx,[16+edx]\r
2840 and ebp,268437504\r
2841 cmp ecx,256\r
2842 je NEAR L$11314rounds\r
2843 cmp ecx,192\r
2844 je NEAR L$11412rounds\r
2845 cmp ecx,128\r
2846 jne NEAR L$115bad_keybits\r
2847align 16\r
2848L$11610rounds:\r
2849 cmp ebp,268435456\r
2850 je NEAR L$11710rounds_alt\r
2851 mov ecx,9\r
2852 movups [edx-16],xmm0\r
2853db 102,15,58,223,200,1\r
2854 call L$118key_128_cold\r
2855db 102,15,58,223,200,2\r
2856 call L$119key_128\r
2857db 102,15,58,223,200,4\r
2858 call L$119key_128\r
2859db 102,15,58,223,200,8\r
2860 call L$119key_128\r
2861db 102,15,58,223,200,16\r
2862 call L$119key_128\r
2863db 102,15,58,223,200,32\r
2864 call L$119key_128\r
2865db 102,15,58,223,200,64\r
2866 call L$119key_128\r
2867db 102,15,58,223,200,128\r
2868 call L$119key_128\r
2869db 102,15,58,223,200,27\r
2870 call L$119key_128\r
2871db 102,15,58,223,200,54\r
2872 call L$119key_128\r
2873 movups [edx],xmm0\r
2874 mov DWORD [80+edx],ecx\r
2875 jmp NEAR L$120good_key\r
2876align 16\r
2877L$119key_128:\r
2878 movups [edx],xmm0\r
2879 lea edx,[16+edx]\r
2880L$118key_128_cold:\r
2881 shufps xmm4,xmm0,16\r
2882 xorps xmm0,xmm4\r
2883 shufps xmm4,xmm0,140\r
2884 xorps xmm0,xmm4\r
2885 shufps xmm1,xmm1,255\r
2886 xorps xmm0,xmm1\r
2887 ret\r
2888align 16\r
2889L$11710rounds_alt:\r
2890 movdqa xmm5,[ebx]\r
2891 mov ecx,8\r
2892 movdqa xmm4,[32+ebx]\r
2893 movdqa xmm2,xmm0\r
2894 movdqu [edx-16],xmm0\r
2895L$121loop_key128:\r
2896db 102,15,56,0,197\r
2897db 102,15,56,221,196\r
2898 pslld xmm4,1\r
2899 lea edx,[16+edx]\r
2900 movdqa xmm3,xmm2\r
2901 pslldq xmm2,4\r
2902 pxor xmm3,xmm2\r
2903 pslldq xmm2,4\r
2904 pxor xmm3,xmm2\r
2905 pslldq xmm2,4\r
2906 pxor xmm2,xmm3\r
2907 pxor xmm0,xmm2\r
2908 movdqu [edx-16],xmm0\r
2909 movdqa xmm2,xmm0\r
2910 dec ecx\r
2911 jnz NEAR L$121loop_key128\r
2912 movdqa xmm4,[48+ebx]\r
2913db 102,15,56,0,197\r
2914db 102,15,56,221,196\r
2915 pslld xmm4,1\r
2916 movdqa xmm3,xmm2\r
2917 pslldq xmm2,4\r
2918 pxor xmm3,xmm2\r
2919 pslldq xmm2,4\r
2920 pxor xmm3,xmm2\r
2921 pslldq xmm2,4\r
2922 pxor xmm2,xmm3\r
2923 pxor xmm0,xmm2\r
2924 movdqu [edx],xmm0\r
2925 movdqa xmm2,xmm0\r
2926db 102,15,56,0,197\r
2927db 102,15,56,221,196\r
2928 movdqa xmm3,xmm2\r
2929 pslldq xmm2,4\r
2930 pxor xmm3,xmm2\r
2931 pslldq xmm2,4\r
2932 pxor xmm3,xmm2\r
2933 pslldq xmm2,4\r
2934 pxor xmm2,xmm3\r
2935 pxor xmm0,xmm2\r
2936 movdqu [16+edx],xmm0\r
2937 mov ecx,9\r
2938 mov DWORD [96+edx],ecx\r
2939 jmp NEAR L$120good_key\r
2940align 16\r
2941L$11412rounds:\r
2942 movq xmm2,[16+eax]\r
2943 cmp ebp,268435456\r
2944 je NEAR L$12212rounds_alt\r
2945 mov ecx,11\r
2946 movups [edx-16],xmm0\r
2947db 102,15,58,223,202,1\r
2948 call L$123key_192a_cold\r
2949db 102,15,58,223,202,2\r
2950 call L$124key_192b\r
2951db 102,15,58,223,202,4\r
2952 call L$125key_192a\r
2953db 102,15,58,223,202,8\r
2954 call L$124key_192b\r
2955db 102,15,58,223,202,16\r
2956 call L$125key_192a\r
2957db 102,15,58,223,202,32\r
2958 call L$124key_192b\r
2959db 102,15,58,223,202,64\r
2960 call L$125key_192a\r
2961db 102,15,58,223,202,128\r
2962 call L$124key_192b\r
2963 movups [edx],xmm0\r
2964 mov DWORD [48+edx],ecx\r
2965 jmp NEAR L$120good_key\r
2966align 16\r
2967L$125key_192a:\r
2968 movups [edx],xmm0\r
2969 lea edx,[16+edx]\r
2970align 16\r
2971L$123key_192a_cold:\r
2972 movaps xmm5,xmm2\r
2973L$126key_192b_warm:\r
2974 shufps xmm4,xmm0,16\r
2975 movdqa xmm3,xmm2\r
2976 xorps xmm0,xmm4\r
2977 shufps xmm4,xmm0,140\r
2978 pslldq xmm3,4\r
2979 xorps xmm0,xmm4\r
2980 pshufd xmm1,xmm1,85\r
2981 pxor xmm2,xmm3\r
2982 pxor xmm0,xmm1\r
2983 pshufd xmm3,xmm0,255\r
2984 pxor xmm2,xmm3\r
2985 ret\r
2986align 16\r
2987L$124key_192b:\r
2988 movaps xmm3,xmm0\r
2989 shufps xmm5,xmm0,68\r
2990 movups [edx],xmm5\r
2991 shufps xmm3,xmm2,78\r
2992 movups [16+edx],xmm3\r
2993 lea edx,[32+edx]\r
2994 jmp NEAR L$126key_192b_warm\r
2995align 16\r
2996L$12212rounds_alt:\r
2997 movdqa xmm5,[16+ebx]\r
2998 movdqa xmm4,[32+ebx]\r
2999 mov ecx,8\r
3000 movdqu [edx-16],xmm0\r
3001L$127loop_key192:\r
3002 movq [edx],xmm2\r
3003 movdqa xmm1,xmm2\r
3004db 102,15,56,0,213\r
3005db 102,15,56,221,212\r
3006 pslld xmm4,1\r
3007 lea edx,[24+edx]\r
3008 movdqa xmm3,xmm0\r
3009 pslldq xmm0,4\r
3010 pxor xmm3,xmm0\r
3011 pslldq xmm0,4\r
3012 pxor xmm3,xmm0\r
3013 pslldq xmm0,4\r
3014 pxor xmm0,xmm3\r
3015 pshufd xmm3,xmm0,255\r
3016 pxor xmm3,xmm1\r
3017 pslldq xmm1,4\r
3018 pxor xmm3,xmm1\r
3019 pxor xmm0,xmm2\r
3020 pxor xmm2,xmm3\r
3021 movdqu [edx-16],xmm0\r
3022 dec ecx\r
3023 jnz NEAR L$127loop_key192\r
3024 mov ecx,11\r
3025 mov DWORD [32+edx],ecx\r
3026 jmp NEAR L$120good_key\r
3027align 16\r
3028L$11314rounds:\r
3029 movups xmm2,[16+eax]\r
3030 lea edx,[16+edx]\r
3031 cmp ebp,268435456\r
3032 je NEAR L$12814rounds_alt\r
3033 mov ecx,13\r
3034 movups [edx-32],xmm0\r
3035 movups [edx-16],xmm2\r
3036db 102,15,58,223,202,1\r
3037 call L$129key_256a_cold\r
3038db 102,15,58,223,200,1\r
3039 call L$130key_256b\r
3040db 102,15,58,223,202,2\r
3041 call L$131key_256a\r
3042db 102,15,58,223,200,2\r
3043 call L$130key_256b\r
3044db 102,15,58,223,202,4\r
3045 call L$131key_256a\r
3046db 102,15,58,223,200,4\r
3047 call L$130key_256b\r
3048db 102,15,58,223,202,8\r
3049 call L$131key_256a\r
3050db 102,15,58,223,200,8\r
3051 call L$130key_256b\r
3052db 102,15,58,223,202,16\r
3053 call L$131key_256a\r
3054db 102,15,58,223,200,16\r
3055 call L$130key_256b\r
3056db 102,15,58,223,202,32\r
3057 call L$131key_256a\r
3058db 102,15,58,223,200,32\r
3059 call L$130key_256b\r
3060db 102,15,58,223,202,64\r
3061 call L$131key_256a\r
3062 movups [edx],xmm0\r
3063 mov DWORD [16+edx],ecx\r
3064 xor eax,eax\r
3065 jmp NEAR L$120good_key\r
3066align 16\r
3067L$131key_256a:\r
3068 movups [edx],xmm2\r
3069 lea edx,[16+edx]\r
3070L$129key_256a_cold:\r
3071 shufps xmm4,xmm0,16\r
3072 xorps xmm0,xmm4\r
3073 shufps xmm4,xmm0,140\r
3074 xorps xmm0,xmm4\r
3075 shufps xmm1,xmm1,255\r
3076 xorps xmm0,xmm1\r
3077 ret\r
3078align 16\r
3079L$130key_256b:\r
3080 movups [edx],xmm0\r
3081 lea edx,[16+edx]\r
3082 shufps xmm4,xmm2,16\r
3083 xorps xmm2,xmm4\r
3084 shufps xmm4,xmm2,140\r
3085 xorps xmm2,xmm4\r
3086 shufps xmm1,xmm1,170\r
3087 xorps xmm2,xmm1\r
3088 ret\r
3089align 16\r
3090L$12814rounds_alt:\r
3091 movdqa xmm5,[ebx]\r
3092 movdqa xmm4,[32+ebx]\r
3093 mov ecx,7\r
3094 movdqu [edx-32],xmm0\r
3095 movdqa xmm1,xmm2\r
3096 movdqu [edx-16],xmm2\r
3097L$132loop_key256:\r
3098db 102,15,56,0,213\r
3099db 102,15,56,221,212\r
3100 movdqa xmm3,xmm0\r
3101 pslldq xmm0,4\r
3102 pxor xmm3,xmm0\r
3103 pslldq xmm0,4\r
3104 pxor xmm3,xmm0\r
3105 pslldq xmm0,4\r
3106 pxor xmm0,xmm3\r
3107 pslld xmm4,1\r
3108 pxor xmm0,xmm2\r
3109 movdqu [edx],xmm0\r
3110 dec ecx\r
3111 jz NEAR L$133done_key256\r
3112 pshufd xmm2,xmm0,255\r
3113 pxor xmm3,xmm3\r
3114db 102,15,56,221,211\r
3115 movdqa xmm3,xmm1\r
3116 pslldq xmm1,4\r
3117 pxor xmm3,xmm1\r
3118 pslldq xmm1,4\r
3119 pxor xmm3,xmm1\r
3120 pslldq xmm1,4\r
3121 pxor xmm1,xmm3\r
3122 pxor xmm2,xmm1\r
3123 movdqu [16+edx],xmm2\r
3124 lea edx,[32+edx]\r
3125 movdqa xmm1,xmm2\r
3126 jmp NEAR L$132loop_key256\r
3127L$133done_key256:\r
3128 mov ecx,13\r
3129 mov DWORD [16+edx],ecx\r
3130L$120good_key:\r
3131 pxor xmm0,xmm0\r
3132 pxor xmm1,xmm1\r
3133 pxor xmm2,xmm2\r
3134 pxor xmm3,xmm3\r
3135 pxor xmm4,xmm4\r
3136 pxor xmm5,xmm5\r
3137 xor eax,eax\r
3138 pop ebx\r
3139 pop ebp\r
3140 ret\r
3141align 4\r
3142L$111bad_pointer:\r
3143 mov eax,-1\r
3144 pop ebx\r
3145 pop ebp\r
3146 ret\r
3147align 4\r
3148L$115bad_keybits:\r
3149 pxor xmm0,xmm0\r
3150 mov eax,-2\r
3151 pop ebx\r
3152 pop ebp\r
3153 ret\r
3154global _aesni_set_encrypt_key\r
3155align 16\r
3156_aesni_set_encrypt_key:\r
3157L$_aesni_set_encrypt_key_begin:\r
3158 mov eax,DWORD [4+esp]\r
3159 mov ecx,DWORD [8+esp]\r
3160 mov edx,DWORD [12+esp]\r
3161 call __aesni_set_encrypt_key\r
3162 ret\r
3163global _aesni_set_decrypt_key\r
3164align 16\r
3165_aesni_set_decrypt_key:\r
3166L$_aesni_set_decrypt_key_begin:\r
3167 mov eax,DWORD [4+esp]\r
3168 mov ecx,DWORD [8+esp]\r
3169 mov edx,DWORD [12+esp]\r
3170 call __aesni_set_encrypt_key\r
3171 mov edx,DWORD [12+esp]\r
3172 shl ecx,4\r
3173 test eax,eax\r
3174 jnz NEAR L$134dec_key_ret\r
3175 lea eax,[16+ecx*1+edx]\r
3176 movups xmm0,[edx]\r
3177 movups xmm1,[eax]\r
3178 movups [eax],xmm0\r
3179 movups [edx],xmm1\r
3180 lea edx,[16+edx]\r
3181 lea eax,[eax-16]\r
3182L$135dec_key_inverse:\r
3183 movups xmm0,[edx]\r
3184 movups xmm1,[eax]\r
3185db 102,15,56,219,192\r
3186db 102,15,56,219,201\r
3187 lea edx,[16+edx]\r
3188 lea eax,[eax-16]\r
3189 movups [16+eax],xmm0\r
3190 movups [edx-16],xmm1\r
3191 cmp eax,edx\r
3192 ja NEAR L$135dec_key_inverse\r
3193 movups xmm0,[edx]\r
3194db 102,15,56,219,192\r
3195 movups [edx],xmm0\r
3196 pxor xmm0,xmm0\r
3197 pxor xmm1,xmm1\r
3198 xor eax,eax\r
3199L$134dec_key_ret:\r
3200 ret\r
3201align 64\r
3202L$key_const:\r
3203dd 202313229,202313229,202313229,202313229\r
3204dd 67569157,67569157,67569157,67569157\r
3205dd 1,1,1,1\r
3206dd 27,27,27,27\r
3207db 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69\r
3208db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83\r
3209db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115\r
3210db 115,108,46,111,114,103,62,0\r
3211segment .bss\r
3212common _OPENSSL_ia32cap_P 16\r