updated licenses
[gnutls.git] / lib / accelerated / x86 / macosx / appro-aes-x86-macosx.s
blobaf47a8cb18cef250c44f95cb297a51dff309e4e3
1 # Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
2 # All rights reserved.
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 #
8 # * Redistributions of source code must retain copyright notices,
9 # this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following
13 # disclaimer in the documentation and/or other materials
14 # provided with the distribution.
16 # * Neither the name of the Andy Polyakov nor the names of its
17 # copyright holder and contributors may be used to endorse or
18 # promote products derived from this software without specific
19 # prior written permission.
21 # ALTERNATIVELY, provided that this notice is retained in full, this
22 # product may be distributed under the terms of the GNU General Public
23 # License (GPL), in which case the provisions of the GPL apply INSTEAD OF
24 # those given above.
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 # *** This file is auto-generated ***
40 .file "devel/perlasm/aesni-x86.s"
41 .text
42 .globl _aesni_encrypt
43 .align 4
44 _aesni_encrypt:
45 L_aesni_encrypt_begin:
46 movl 4(%esp),%eax
47 movl 12(%esp),%edx
48 movups (%eax),%xmm2
49 movl 240(%edx),%ecx
50 movl 8(%esp),%eax
51 movups (%edx),%xmm0
52 movups 16(%edx),%xmm1
53 leal 32(%edx),%edx
54 xorps %xmm0,%xmm2
55 L000enc1_loop_1:
56 .byte 102,15,56,220,209
57 decl %ecx
58 movups (%edx),%xmm1
59 leal 16(%edx),%edx
60 jnz L000enc1_loop_1
61 .byte 102,15,56,221,209
62 movups %xmm2,(%eax)
63 ret
64 .globl _aesni_decrypt
65 .align 4
66 _aesni_decrypt:
67 L_aesni_decrypt_begin:
68 movl 4(%esp),%eax
69 movl 12(%esp),%edx
70 movups (%eax),%xmm2
71 movl 240(%edx),%ecx
72 movl 8(%esp),%eax
73 movups (%edx),%xmm0
74 movups 16(%edx),%xmm1
75 leal 32(%edx),%edx
76 xorps %xmm0,%xmm2
77 L001dec1_loop_2:
78 .byte 102,15,56,222,209
79 decl %ecx
80 movups (%edx),%xmm1
81 leal 16(%edx),%edx
82 jnz L001dec1_loop_2
83 .byte 102,15,56,223,209
84 movups %xmm2,(%eax)
85 ret
86 .align 4
87 __aesni_encrypt3:
88 movups (%edx),%xmm0
89 shrl $1,%ecx
90 movups 16(%edx),%xmm1
91 leal 32(%edx),%edx
92 xorps %xmm0,%xmm2
93 pxor %xmm0,%xmm3
94 pxor %xmm0,%xmm4
95 movups (%edx),%xmm0
96 L002enc3_loop:
97 .byte 102,15,56,220,209
98 .byte 102,15,56,220,217
99 decl %ecx
100 .byte 102,15,56,220,225
101 movups 16(%edx),%xmm1
102 .byte 102,15,56,220,208
103 .byte 102,15,56,220,216
104 leal 32(%edx),%edx
105 .byte 102,15,56,220,224
106 movups (%edx),%xmm0
107 jnz L002enc3_loop
108 .byte 102,15,56,220,209
109 .byte 102,15,56,220,217
110 .byte 102,15,56,220,225
111 .byte 102,15,56,221,208
112 .byte 102,15,56,221,216
113 .byte 102,15,56,221,224
115 .align 4
116 __aesni_decrypt3:
117 movups (%edx),%xmm0
118 shrl $1,%ecx
119 movups 16(%edx),%xmm1
120 leal 32(%edx),%edx
121 xorps %xmm0,%xmm2
122 pxor %xmm0,%xmm3
123 pxor %xmm0,%xmm4
124 movups (%edx),%xmm0
125 L003dec3_loop:
126 .byte 102,15,56,222,209
127 .byte 102,15,56,222,217
128 decl %ecx
129 .byte 102,15,56,222,225
130 movups 16(%edx),%xmm1
131 .byte 102,15,56,222,208
132 .byte 102,15,56,222,216
133 leal 32(%edx),%edx
134 .byte 102,15,56,222,224
135 movups (%edx),%xmm0
136 jnz L003dec3_loop
137 .byte 102,15,56,222,209
138 .byte 102,15,56,222,217
139 .byte 102,15,56,222,225
140 .byte 102,15,56,223,208
141 .byte 102,15,56,223,216
142 .byte 102,15,56,223,224
144 .align 4
145 __aesni_encrypt4:
146 movups (%edx),%xmm0
147 movups 16(%edx),%xmm1
148 shrl $1,%ecx
149 leal 32(%edx),%edx
150 xorps %xmm0,%xmm2
151 pxor %xmm0,%xmm3
152 pxor %xmm0,%xmm4
153 pxor %xmm0,%xmm5
154 movups (%edx),%xmm0
155 L004enc4_loop:
156 .byte 102,15,56,220,209
157 .byte 102,15,56,220,217
158 decl %ecx
159 .byte 102,15,56,220,225
160 .byte 102,15,56,220,233
161 movups 16(%edx),%xmm1
162 .byte 102,15,56,220,208
163 .byte 102,15,56,220,216
164 leal 32(%edx),%edx
165 .byte 102,15,56,220,224
166 .byte 102,15,56,220,232
167 movups (%edx),%xmm0
168 jnz L004enc4_loop
169 .byte 102,15,56,220,209
170 .byte 102,15,56,220,217
171 .byte 102,15,56,220,225
172 .byte 102,15,56,220,233
173 .byte 102,15,56,221,208
174 .byte 102,15,56,221,216
175 .byte 102,15,56,221,224
176 .byte 102,15,56,221,232
178 .align 4
179 __aesni_decrypt4:
180 movups (%edx),%xmm0
181 movups 16(%edx),%xmm1
182 shrl $1,%ecx
183 leal 32(%edx),%edx
184 xorps %xmm0,%xmm2
185 pxor %xmm0,%xmm3
186 pxor %xmm0,%xmm4
187 pxor %xmm0,%xmm5
188 movups (%edx),%xmm0
189 L005dec4_loop:
190 .byte 102,15,56,222,209
191 .byte 102,15,56,222,217
192 decl %ecx
193 .byte 102,15,56,222,225
194 .byte 102,15,56,222,233
195 movups 16(%edx),%xmm1
196 .byte 102,15,56,222,208
197 .byte 102,15,56,222,216
198 leal 32(%edx),%edx
199 .byte 102,15,56,222,224
200 .byte 102,15,56,222,232
201 movups (%edx),%xmm0
202 jnz L005dec4_loop
203 .byte 102,15,56,222,209
204 .byte 102,15,56,222,217
205 .byte 102,15,56,222,225
206 .byte 102,15,56,222,233
207 .byte 102,15,56,223,208
208 .byte 102,15,56,223,216
209 .byte 102,15,56,223,224
210 .byte 102,15,56,223,232
212 .align 4
213 __aesni_encrypt6:
214 movups (%edx),%xmm0
215 shrl $1,%ecx
216 movups 16(%edx),%xmm1
217 leal 32(%edx),%edx
218 xorps %xmm0,%xmm2
219 pxor %xmm0,%xmm3
220 .byte 102,15,56,220,209
221 pxor %xmm0,%xmm4
222 .byte 102,15,56,220,217
223 pxor %xmm0,%xmm5
224 decl %ecx
225 .byte 102,15,56,220,225
226 pxor %xmm0,%xmm6
227 .byte 102,15,56,220,233
228 pxor %xmm0,%xmm7
229 .byte 102,15,56,220,241
230 movups (%edx),%xmm0
231 .byte 102,15,56,220,249
232 jmp L_aesni_encrypt6_enter
233 .align 4,0x90
234 L006enc6_loop:
235 .byte 102,15,56,220,209
236 .byte 102,15,56,220,217
237 decl %ecx
238 .byte 102,15,56,220,225
239 .byte 102,15,56,220,233
240 .byte 102,15,56,220,241
241 .byte 102,15,56,220,249
242 .align 4,0x90
243 L_aesni_encrypt6_enter:
244 movups 16(%edx),%xmm1
245 .byte 102,15,56,220,208
246 .byte 102,15,56,220,216
247 leal 32(%edx),%edx
248 .byte 102,15,56,220,224
249 .byte 102,15,56,220,232
250 .byte 102,15,56,220,240
251 .byte 102,15,56,220,248
252 movups (%edx),%xmm0
253 jnz L006enc6_loop
254 .byte 102,15,56,220,209
255 .byte 102,15,56,220,217
256 .byte 102,15,56,220,225
257 .byte 102,15,56,220,233
258 .byte 102,15,56,220,241
259 .byte 102,15,56,220,249
260 .byte 102,15,56,221,208
261 .byte 102,15,56,221,216
262 .byte 102,15,56,221,224
263 .byte 102,15,56,221,232
264 .byte 102,15,56,221,240
265 .byte 102,15,56,221,248
267 .align 4
268 __aesni_decrypt6:
269 movups (%edx),%xmm0
270 shrl $1,%ecx
271 movups 16(%edx),%xmm1
272 leal 32(%edx),%edx
273 xorps %xmm0,%xmm2
274 pxor %xmm0,%xmm3
275 .byte 102,15,56,222,209
276 pxor %xmm0,%xmm4
277 .byte 102,15,56,222,217
278 pxor %xmm0,%xmm5
279 decl %ecx
280 .byte 102,15,56,222,225
281 pxor %xmm0,%xmm6
282 .byte 102,15,56,222,233
283 pxor %xmm0,%xmm7
284 .byte 102,15,56,222,241
285 movups (%edx),%xmm0
286 .byte 102,15,56,222,249
287 jmp L_aesni_decrypt6_enter
288 .align 4,0x90
289 L007dec6_loop:
290 .byte 102,15,56,222,209
291 .byte 102,15,56,222,217
292 decl %ecx
293 .byte 102,15,56,222,225
294 .byte 102,15,56,222,233
295 .byte 102,15,56,222,241
296 .byte 102,15,56,222,249
297 .align 4,0x90
298 L_aesni_decrypt6_enter:
299 movups 16(%edx),%xmm1
300 .byte 102,15,56,222,208
301 .byte 102,15,56,222,216
302 leal 32(%edx),%edx
303 .byte 102,15,56,222,224
304 .byte 102,15,56,222,232
305 .byte 102,15,56,222,240
306 .byte 102,15,56,222,248
307 movups (%edx),%xmm0
308 jnz L007dec6_loop
309 .byte 102,15,56,222,209
310 .byte 102,15,56,222,217
311 .byte 102,15,56,222,225
312 .byte 102,15,56,222,233
313 .byte 102,15,56,222,241
314 .byte 102,15,56,222,249
315 .byte 102,15,56,223,208
316 .byte 102,15,56,223,216
317 .byte 102,15,56,223,224
318 .byte 102,15,56,223,232
319 .byte 102,15,56,223,240
320 .byte 102,15,56,223,248
322 .globl _aesni_ecb_encrypt
323 .align 4
324 _aesni_ecb_encrypt:
325 L_aesni_ecb_encrypt_begin:
326 pushl %ebp
327 pushl %ebx
328 pushl %esi
329 pushl %edi
330 movl 20(%esp),%esi
331 movl 24(%esp),%edi
332 movl 28(%esp),%eax
333 movl 32(%esp),%edx
334 movl 36(%esp),%ebx
335 andl $-16,%eax
336 jz L008ecb_ret
337 movl 240(%edx),%ecx
338 testl %ebx,%ebx
339 jz L009ecb_decrypt
340 movl %edx,%ebp
341 movl %ecx,%ebx
342 cmpl $96,%eax
343 jb L010ecb_enc_tail
344 movdqu (%esi),%xmm2
345 movdqu 16(%esi),%xmm3
346 movdqu 32(%esi),%xmm4
347 movdqu 48(%esi),%xmm5
348 movdqu 64(%esi),%xmm6
349 movdqu 80(%esi),%xmm7
350 leal 96(%esi),%esi
351 subl $96,%eax
352 jmp L011ecb_enc_loop6_enter
353 .align 4,0x90
354 L012ecb_enc_loop6:
355 movups %xmm2,(%edi)
356 movdqu (%esi),%xmm2
357 movups %xmm3,16(%edi)
358 movdqu 16(%esi),%xmm3
359 movups %xmm4,32(%edi)
360 movdqu 32(%esi),%xmm4
361 movups %xmm5,48(%edi)
362 movdqu 48(%esi),%xmm5
363 movups %xmm6,64(%edi)
364 movdqu 64(%esi),%xmm6
365 movups %xmm7,80(%edi)
366 leal 96(%edi),%edi
367 movdqu 80(%esi),%xmm7
368 leal 96(%esi),%esi
369 L011ecb_enc_loop6_enter:
370 call __aesni_encrypt6
371 movl %ebp,%edx
372 movl %ebx,%ecx
373 subl $96,%eax
374 jnc L012ecb_enc_loop6
375 movups %xmm2,(%edi)
376 movups %xmm3,16(%edi)
377 movups %xmm4,32(%edi)
378 movups %xmm5,48(%edi)
379 movups %xmm6,64(%edi)
380 movups %xmm7,80(%edi)
381 leal 96(%edi),%edi
382 addl $96,%eax
383 jz L008ecb_ret
384 L010ecb_enc_tail:
385 movups (%esi),%xmm2
386 cmpl $32,%eax
387 jb L013ecb_enc_one
388 movups 16(%esi),%xmm3
389 je L014ecb_enc_two
390 movups 32(%esi),%xmm4
391 cmpl $64,%eax
392 jb L015ecb_enc_three
393 movups 48(%esi),%xmm5
394 je L016ecb_enc_four
395 movups 64(%esi),%xmm6
396 xorps %xmm7,%xmm7
397 call __aesni_encrypt6
398 movups %xmm2,(%edi)
399 movups %xmm3,16(%edi)
400 movups %xmm4,32(%edi)
401 movups %xmm5,48(%edi)
402 movups %xmm6,64(%edi)
403 jmp L008ecb_ret
404 .align 4,0x90
405 L013ecb_enc_one:
406 movups (%edx),%xmm0
407 movups 16(%edx),%xmm1
408 leal 32(%edx),%edx
409 xorps %xmm0,%xmm2
410 L017enc1_loop_3:
411 .byte 102,15,56,220,209
412 decl %ecx
413 movups (%edx),%xmm1
414 leal 16(%edx),%edx
415 jnz L017enc1_loop_3
416 .byte 102,15,56,221,209
417 movups %xmm2,(%edi)
418 jmp L008ecb_ret
419 .align 4,0x90
420 L014ecb_enc_two:
421 xorps %xmm4,%xmm4
422 call __aesni_encrypt3
423 movups %xmm2,(%edi)
424 movups %xmm3,16(%edi)
425 jmp L008ecb_ret
426 .align 4,0x90
427 L015ecb_enc_three:
428 call __aesni_encrypt3
429 movups %xmm2,(%edi)
430 movups %xmm3,16(%edi)
431 movups %xmm4,32(%edi)
432 jmp L008ecb_ret
433 .align 4,0x90
434 L016ecb_enc_four:
435 call __aesni_encrypt4
436 movups %xmm2,(%edi)
437 movups %xmm3,16(%edi)
438 movups %xmm4,32(%edi)
439 movups %xmm5,48(%edi)
440 jmp L008ecb_ret
441 .align 4,0x90
442 L009ecb_decrypt:
443 movl %edx,%ebp
444 movl %ecx,%ebx
445 cmpl $96,%eax
446 jb L018ecb_dec_tail
447 movdqu (%esi),%xmm2
448 movdqu 16(%esi),%xmm3
449 movdqu 32(%esi),%xmm4
450 movdqu 48(%esi),%xmm5
451 movdqu 64(%esi),%xmm6
452 movdqu 80(%esi),%xmm7
453 leal 96(%esi),%esi
454 subl $96,%eax
455 jmp L019ecb_dec_loop6_enter
456 .align 4,0x90
457 L020ecb_dec_loop6:
458 movups %xmm2,(%edi)
459 movdqu (%esi),%xmm2
460 movups %xmm3,16(%edi)
461 movdqu 16(%esi),%xmm3
462 movups %xmm4,32(%edi)
463 movdqu 32(%esi),%xmm4
464 movups %xmm5,48(%edi)
465 movdqu 48(%esi),%xmm5
466 movups %xmm6,64(%edi)
467 movdqu 64(%esi),%xmm6
468 movups %xmm7,80(%edi)
469 leal 96(%edi),%edi
470 movdqu 80(%esi),%xmm7
471 leal 96(%esi),%esi
472 L019ecb_dec_loop6_enter:
473 call __aesni_decrypt6
474 movl %ebp,%edx
475 movl %ebx,%ecx
476 subl $96,%eax
477 jnc L020ecb_dec_loop6
478 movups %xmm2,(%edi)
479 movups %xmm3,16(%edi)
480 movups %xmm4,32(%edi)
481 movups %xmm5,48(%edi)
482 movups %xmm6,64(%edi)
483 movups %xmm7,80(%edi)
484 leal 96(%edi),%edi
485 addl $96,%eax
486 jz L008ecb_ret
487 L018ecb_dec_tail:
488 movups (%esi),%xmm2
489 cmpl $32,%eax
490 jb L021ecb_dec_one
491 movups 16(%esi),%xmm3
492 je L022ecb_dec_two
493 movups 32(%esi),%xmm4
494 cmpl $64,%eax
495 jb L023ecb_dec_three
496 movups 48(%esi),%xmm5
497 je L024ecb_dec_four
498 movups 64(%esi),%xmm6
499 xorps %xmm7,%xmm7
500 call __aesni_decrypt6
501 movups %xmm2,(%edi)
502 movups %xmm3,16(%edi)
503 movups %xmm4,32(%edi)
504 movups %xmm5,48(%edi)
505 movups %xmm6,64(%edi)
506 jmp L008ecb_ret
507 .align 4,0x90
508 L021ecb_dec_one:
509 movups (%edx),%xmm0
510 movups 16(%edx),%xmm1
511 leal 32(%edx),%edx
512 xorps %xmm0,%xmm2
513 L025dec1_loop_4:
514 .byte 102,15,56,222,209
515 decl %ecx
516 movups (%edx),%xmm1
517 leal 16(%edx),%edx
518 jnz L025dec1_loop_4
519 .byte 102,15,56,223,209
520 movups %xmm2,(%edi)
521 jmp L008ecb_ret
522 .align 4,0x90
523 L022ecb_dec_two:
524 xorps %xmm4,%xmm4
525 call __aesni_decrypt3
526 movups %xmm2,(%edi)
527 movups %xmm3,16(%edi)
528 jmp L008ecb_ret
529 .align 4,0x90
530 L023ecb_dec_three:
531 call __aesni_decrypt3
532 movups %xmm2,(%edi)
533 movups %xmm3,16(%edi)
534 movups %xmm4,32(%edi)
535 jmp L008ecb_ret
536 .align 4,0x90
537 L024ecb_dec_four:
538 call __aesni_decrypt4
539 movups %xmm2,(%edi)
540 movups %xmm3,16(%edi)
541 movups %xmm4,32(%edi)
542 movups %xmm5,48(%edi)
543 L008ecb_ret:
544 popl %edi
545 popl %esi
546 popl %ebx
547 popl %ebp
549 .globl _aesni_ccm64_encrypt_blocks
550 .align 4
551 _aesni_ccm64_encrypt_blocks:
552 L_aesni_ccm64_encrypt_blocks_begin:
553 pushl %ebp
554 pushl %ebx
555 pushl %esi
556 pushl %edi
557 movl 20(%esp),%esi
558 movl 24(%esp),%edi
559 movl 28(%esp),%eax
560 movl 32(%esp),%edx
561 movl 36(%esp),%ebx
562 movl 40(%esp),%ecx
563 movl %esp,%ebp
564 subl $60,%esp
565 andl $-16,%esp
566 movl %ebp,48(%esp)
567 movdqu (%ebx),%xmm7
568 movdqu (%ecx),%xmm3
569 movl 240(%edx),%ecx
570 movl $202182159,(%esp)
571 movl $134810123,4(%esp)
572 movl $67438087,8(%esp)
573 movl $66051,12(%esp)
574 movl $1,%ebx
575 xorl %ebp,%ebp
576 movl %ebx,16(%esp)
577 movl %ebp,20(%esp)
578 movl %ebp,24(%esp)
579 movl %ebp,28(%esp)
580 shrl $1,%ecx
581 leal (%edx),%ebp
582 movdqa (%esp),%xmm5
583 movdqa %xmm7,%xmm2
584 movl %ecx,%ebx
585 .byte 102,15,56,0,253
586 L026ccm64_enc_outer:
587 movups (%ebp),%xmm0
588 movl %ebx,%ecx
589 movups (%esi),%xmm6
590 xorps %xmm0,%xmm2
591 movups 16(%ebp),%xmm1
592 xorps %xmm6,%xmm0
593 leal 32(%ebp),%edx
594 xorps %xmm0,%xmm3
595 movups (%edx),%xmm0
596 L027ccm64_enc2_loop:
597 .byte 102,15,56,220,209
598 decl %ecx
599 .byte 102,15,56,220,217
600 movups 16(%edx),%xmm1
601 .byte 102,15,56,220,208
602 leal 32(%edx),%edx
603 .byte 102,15,56,220,216
604 movups (%edx),%xmm0
605 jnz L027ccm64_enc2_loop
606 .byte 102,15,56,220,209
607 .byte 102,15,56,220,217
608 paddq 16(%esp),%xmm7
609 .byte 102,15,56,221,208
610 .byte 102,15,56,221,216
611 decl %eax
612 leal 16(%esi),%esi
613 xorps %xmm2,%xmm6
614 movdqa %xmm7,%xmm2
615 movups %xmm6,(%edi)
616 leal 16(%edi),%edi
617 .byte 102,15,56,0,213
618 jnz L026ccm64_enc_outer
619 movl 48(%esp),%esp
620 movl 40(%esp),%edi
621 movups %xmm3,(%edi)
622 popl %edi
623 popl %esi
624 popl %ebx
625 popl %ebp
627 .globl _aesni_ccm64_decrypt_blocks
628 .align 4
629 _aesni_ccm64_decrypt_blocks:
630 L_aesni_ccm64_decrypt_blocks_begin:
631 pushl %ebp
632 pushl %ebx
633 pushl %esi
634 pushl %edi
635 movl 20(%esp),%esi
636 movl 24(%esp),%edi
637 movl 28(%esp),%eax
638 movl 32(%esp),%edx
639 movl 36(%esp),%ebx
640 movl 40(%esp),%ecx
641 movl %esp,%ebp
642 subl $60,%esp
643 andl $-16,%esp
644 movl %ebp,48(%esp)
645 movdqu (%ebx),%xmm7
646 movdqu (%ecx),%xmm3
647 movl 240(%edx),%ecx
648 movl $202182159,(%esp)
649 movl $134810123,4(%esp)
650 movl $67438087,8(%esp)
651 movl $66051,12(%esp)
652 movl $1,%ebx
653 xorl %ebp,%ebp
654 movl %ebx,16(%esp)
655 movl %ebp,20(%esp)
656 movl %ebp,24(%esp)
657 movl %ebp,28(%esp)
658 movdqa (%esp),%xmm5
659 movdqa %xmm7,%xmm2
660 movl %edx,%ebp
661 movl %ecx,%ebx
662 .byte 102,15,56,0,253
663 movups (%edx),%xmm0
664 movups 16(%edx),%xmm1
665 leal 32(%edx),%edx
666 xorps %xmm0,%xmm2
667 L028enc1_loop_5:
668 .byte 102,15,56,220,209
669 decl %ecx
670 movups (%edx),%xmm1
671 leal 16(%edx),%edx
672 jnz L028enc1_loop_5
673 .byte 102,15,56,221,209
674 movups (%esi),%xmm6
675 paddq 16(%esp),%xmm7
676 leal 16(%esi),%esi
677 jmp L029ccm64_dec_outer
678 .align 4,0x90
679 L029ccm64_dec_outer:
680 xorps %xmm2,%xmm6
681 movdqa %xmm7,%xmm2
682 movl %ebx,%ecx
683 movups %xmm6,(%edi)
684 leal 16(%edi),%edi
685 .byte 102,15,56,0,213
686 subl $1,%eax
687 jz L030ccm64_dec_break
688 movups (%ebp),%xmm0
689 shrl $1,%ecx
690 movups 16(%ebp),%xmm1
691 xorps %xmm0,%xmm6
692 leal 32(%ebp),%edx
693 xorps %xmm0,%xmm2
694 xorps %xmm6,%xmm3
695 movups (%edx),%xmm0
696 L031ccm64_dec2_loop:
697 .byte 102,15,56,220,209
698 decl %ecx
699 .byte 102,15,56,220,217
700 movups 16(%edx),%xmm1
701 .byte 102,15,56,220,208
702 leal 32(%edx),%edx
703 .byte 102,15,56,220,216
704 movups (%edx),%xmm0
705 jnz L031ccm64_dec2_loop
706 movups (%esi),%xmm6
707 paddq 16(%esp),%xmm7
708 .byte 102,15,56,220,209
709 .byte 102,15,56,220,217
710 leal 16(%esi),%esi
711 .byte 102,15,56,221,208
712 .byte 102,15,56,221,216
713 jmp L029ccm64_dec_outer
714 .align 4,0x90
715 L030ccm64_dec_break:
716 movl %ebp,%edx
717 movups (%edx),%xmm0
718 movups 16(%edx),%xmm1
719 xorps %xmm0,%xmm6
720 leal 32(%edx),%edx
721 xorps %xmm6,%xmm3
722 L032enc1_loop_6:
723 .byte 102,15,56,220,217
724 decl %ecx
725 movups (%edx),%xmm1
726 leal 16(%edx),%edx
727 jnz L032enc1_loop_6
728 .byte 102,15,56,221,217
729 movl 48(%esp),%esp
730 movl 40(%esp),%edi
731 movups %xmm3,(%edi)
732 popl %edi
733 popl %esi
734 popl %ebx
735 popl %ebp
737 .globl _aesni_ctr32_encrypt_blocks
738 .align 4
739 _aesni_ctr32_encrypt_blocks:
740 L_aesni_ctr32_encrypt_blocks_begin:
741 pushl %ebp
742 pushl %ebx
743 pushl %esi
744 pushl %edi
745 movl 20(%esp),%esi
746 movl 24(%esp),%edi
747 movl 28(%esp),%eax
748 movl 32(%esp),%edx
749 movl 36(%esp),%ebx
750 movl %esp,%ebp
751 subl $88,%esp
752 andl $-16,%esp
753 movl %ebp,80(%esp)
754 cmpl $1,%eax
755 je L033ctr32_one_shortcut
756 movdqu (%ebx),%xmm7
757 movl $202182159,(%esp)
758 movl $134810123,4(%esp)
759 movl $67438087,8(%esp)
760 movl $66051,12(%esp)
761 movl $6,%ecx
762 xorl %ebp,%ebp
763 movl %ecx,16(%esp)
764 movl %ecx,20(%esp)
765 movl %ecx,24(%esp)
766 movl %ebp,28(%esp)
767 .byte 102,15,58,22,251,3
768 .byte 102,15,58,34,253,3
769 movl 240(%edx),%ecx
770 bswap %ebx
771 pxor %xmm1,%xmm1
772 pxor %xmm0,%xmm0
773 movdqa (%esp),%xmm2
774 .byte 102,15,58,34,203,0
775 leal 3(%ebx),%ebp
776 .byte 102,15,58,34,197,0
777 incl %ebx
778 .byte 102,15,58,34,203,1
779 incl %ebp
780 .byte 102,15,58,34,197,1
781 incl %ebx
782 .byte 102,15,58,34,203,2
783 incl %ebp
784 .byte 102,15,58,34,197,2
785 movdqa %xmm1,48(%esp)
786 .byte 102,15,56,0,202
787 movdqa %xmm0,64(%esp)
788 .byte 102,15,56,0,194
789 pshufd $192,%xmm1,%xmm2
790 pshufd $128,%xmm1,%xmm3
791 cmpl $6,%eax
792 jb L034ctr32_tail
793 movdqa %xmm7,32(%esp)
794 shrl $1,%ecx
795 movl %edx,%ebp
796 movl %ecx,%ebx
797 subl $6,%eax
798 jmp L035ctr32_loop6
799 .align 4,0x90
800 L035ctr32_loop6:
801 pshufd $64,%xmm1,%xmm4
802 movdqa 32(%esp),%xmm1
803 pshufd $192,%xmm0,%xmm5
804 por %xmm1,%xmm2
805 pshufd $128,%xmm0,%xmm6
806 por %xmm1,%xmm3
807 pshufd $64,%xmm0,%xmm7
808 por %xmm1,%xmm4
809 por %xmm1,%xmm5
810 por %xmm1,%xmm6
811 por %xmm1,%xmm7
812 movups (%ebp),%xmm0
813 movups 16(%ebp),%xmm1
814 leal 32(%ebp),%edx
815 decl %ecx
816 pxor %xmm0,%xmm2
817 pxor %xmm0,%xmm3
818 .byte 102,15,56,220,209
819 pxor %xmm0,%xmm4
820 .byte 102,15,56,220,217
821 pxor %xmm0,%xmm5
822 .byte 102,15,56,220,225
823 pxor %xmm0,%xmm6
824 .byte 102,15,56,220,233
825 pxor %xmm0,%xmm7
826 .byte 102,15,56,220,241
827 movups (%edx),%xmm0
828 .byte 102,15,56,220,249
829 call L_aesni_encrypt6_enter
830 movups (%esi),%xmm1
831 movups 16(%esi),%xmm0
832 xorps %xmm1,%xmm2
833 movups 32(%esi),%xmm1
834 xorps %xmm0,%xmm3
835 movups %xmm2,(%edi)
836 movdqa 16(%esp),%xmm0
837 xorps %xmm1,%xmm4
838 movdqa 48(%esp),%xmm1
839 movups %xmm3,16(%edi)
840 movups %xmm4,32(%edi)
841 paddd %xmm0,%xmm1
842 paddd 64(%esp),%xmm0
843 movdqa (%esp),%xmm2
844 movups 48(%esi),%xmm3
845 movups 64(%esi),%xmm4
846 xorps %xmm3,%xmm5
847 movups 80(%esi),%xmm3
848 leal 96(%esi),%esi
849 movdqa %xmm1,48(%esp)
850 .byte 102,15,56,0,202
851 xorps %xmm4,%xmm6
852 movups %xmm5,48(%edi)
853 xorps %xmm3,%xmm7
854 movdqa %xmm0,64(%esp)
855 .byte 102,15,56,0,194
856 movups %xmm6,64(%edi)
857 pshufd $192,%xmm1,%xmm2
858 movups %xmm7,80(%edi)
859 leal 96(%edi),%edi
860 movl %ebx,%ecx
861 pshufd $128,%xmm1,%xmm3
862 subl $6,%eax
863 jnc L035ctr32_loop6
864 addl $6,%eax
865 jz L036ctr32_ret
866 movl %ebp,%edx
867 leal 1(,%ecx,2),%ecx
868 movdqa 32(%esp),%xmm7
869 L034ctr32_tail:
870 por %xmm7,%xmm2
871 cmpl $2,%eax
872 jb L037ctr32_one
873 pshufd $64,%xmm1,%xmm4
874 por %xmm7,%xmm3
875 je L038ctr32_two
876 pshufd $192,%xmm0,%xmm5
877 por %xmm7,%xmm4
878 cmpl $4,%eax
879 jb L039ctr32_three
880 pshufd $128,%xmm0,%xmm6
881 por %xmm7,%xmm5
882 je L040ctr32_four
883 por %xmm7,%xmm6
884 call __aesni_encrypt6
885 movups (%esi),%xmm1
886 movups 16(%esi),%xmm0
887 xorps %xmm1,%xmm2
888 movups 32(%esi),%xmm1
889 xorps %xmm0,%xmm3
890 movups 48(%esi),%xmm0
891 xorps %xmm1,%xmm4
892 movups 64(%esi),%xmm1
893 xorps %xmm0,%xmm5
894 movups %xmm2,(%edi)
895 xorps %xmm1,%xmm6
896 movups %xmm3,16(%edi)
897 movups %xmm4,32(%edi)
898 movups %xmm5,48(%edi)
899 movups %xmm6,64(%edi)
900 jmp L036ctr32_ret
901 .align 4,0x90
902 L033ctr32_one_shortcut:
903 movups (%ebx),%xmm2
904 movl 240(%edx),%ecx
905 L037ctr32_one:
906 movups (%edx),%xmm0
907 movups 16(%edx),%xmm1
908 leal 32(%edx),%edx
909 xorps %xmm0,%xmm2
910 L041enc1_loop_7:
911 .byte 102,15,56,220,209
912 decl %ecx
913 movups (%edx),%xmm1
914 leal 16(%edx),%edx
915 jnz L041enc1_loop_7
916 .byte 102,15,56,221,209
917 movups (%esi),%xmm6
918 xorps %xmm2,%xmm6
919 movups %xmm6,(%edi)
920 jmp L036ctr32_ret
921 .align 4,0x90
922 L038ctr32_two:
923 call __aesni_encrypt3
924 movups (%esi),%xmm5
925 movups 16(%esi),%xmm6
926 xorps %xmm5,%xmm2
927 xorps %xmm6,%xmm3
928 movups %xmm2,(%edi)
929 movups %xmm3,16(%edi)
930 jmp L036ctr32_ret
931 .align 4,0x90
932 L039ctr32_three:
933 call __aesni_encrypt3
934 movups (%esi),%xmm5
935 movups 16(%esi),%xmm6
936 xorps %xmm5,%xmm2
937 movups 32(%esi),%xmm7
938 xorps %xmm6,%xmm3
939 movups %xmm2,(%edi)
940 xorps %xmm7,%xmm4
941 movups %xmm3,16(%edi)
942 movups %xmm4,32(%edi)
943 jmp L036ctr32_ret
944 .align 4,0x90
945 L040ctr32_four:
946 call __aesni_encrypt4
947 movups (%esi),%xmm6
948 movups 16(%esi),%xmm7
949 movups 32(%esi),%xmm1
950 xorps %xmm6,%xmm2
951 movups 48(%esi),%xmm0
952 xorps %xmm7,%xmm3
953 movups %xmm2,(%edi)
954 xorps %xmm1,%xmm4
955 movups %xmm3,16(%edi)
956 xorps %xmm0,%xmm5
957 movups %xmm4,32(%edi)
958 movups %xmm5,48(%edi)
959 L036ctr32_ret:
960 movl 80(%esp),%esp
961 popl %edi
962 popl %esi
963 popl %ebx
964 popl %ebp
966 .globl _aesni_xts_encrypt
967 .align 4
968 _aesni_xts_encrypt:
969 L_aesni_xts_encrypt_begin:
970 pushl %ebp
971 pushl %ebx
972 pushl %esi
973 pushl %edi
974 movl 36(%esp),%edx
975 movl 40(%esp),%esi
976 movl 240(%edx),%ecx
977 movups (%esi),%xmm2
978 movups (%edx),%xmm0
979 movups 16(%edx),%xmm1
980 leal 32(%edx),%edx
981 xorps %xmm0,%xmm2
982 L042enc1_loop_8:
983 .byte 102,15,56,220,209
984 decl %ecx
985 movups (%edx),%xmm1
986 leal 16(%edx),%edx
987 jnz L042enc1_loop_8
988 .byte 102,15,56,221,209
989 movl 20(%esp),%esi
990 movl 24(%esp),%edi
991 movl 28(%esp),%eax
992 movl 32(%esp),%edx
993 movl %esp,%ebp
994 subl $120,%esp
995 movl 240(%edx),%ecx
996 andl $-16,%esp
997 movl $135,96(%esp)
998 movl $0,100(%esp)
999 movl $1,104(%esp)
1000 movl $0,108(%esp)
1001 movl %eax,112(%esp)
1002 movl %ebp,116(%esp)
1003 movdqa %xmm2,%xmm1
1004 pxor %xmm0,%xmm0
1005 movdqa 96(%esp),%xmm3
1006 pcmpgtd %xmm1,%xmm0
1007 andl $-16,%eax
1008 movl %edx,%ebp
1009 movl %ecx,%ebx
1010 subl $96,%eax
1011 jc L043xts_enc_short
1012 shrl $1,%ecx
1013 movl %ecx,%ebx
1014 jmp L044xts_enc_loop6
1015 .align 4,0x90
1016 L044xts_enc_loop6:
1017 pshufd $19,%xmm0,%xmm2
1018 pxor %xmm0,%xmm0
1019 movdqa %xmm1,(%esp)
1020 paddq %xmm1,%xmm1
1021 pand %xmm3,%xmm2
1022 pcmpgtd %xmm1,%xmm0
1023 pxor %xmm2,%xmm1
1024 pshufd $19,%xmm0,%xmm2
1025 pxor %xmm0,%xmm0
1026 movdqa %xmm1,16(%esp)
1027 paddq %xmm1,%xmm1
1028 pand %xmm3,%xmm2
1029 pcmpgtd %xmm1,%xmm0
1030 pxor %xmm2,%xmm1
1031 pshufd $19,%xmm0,%xmm2
1032 pxor %xmm0,%xmm0
1033 movdqa %xmm1,32(%esp)
1034 paddq %xmm1,%xmm1
1035 pand %xmm3,%xmm2
1036 pcmpgtd %xmm1,%xmm0
1037 pxor %xmm2,%xmm1
1038 pshufd $19,%xmm0,%xmm2
1039 pxor %xmm0,%xmm0
1040 movdqa %xmm1,48(%esp)
1041 paddq %xmm1,%xmm1
1042 pand %xmm3,%xmm2
1043 pcmpgtd %xmm1,%xmm0
1044 pxor %xmm2,%xmm1
1045 pshufd $19,%xmm0,%xmm7
1046 movdqa %xmm1,64(%esp)
1047 paddq %xmm1,%xmm1
1048 movups (%ebp),%xmm0
1049 pand %xmm3,%xmm7
1050 movups (%esi),%xmm2
1051 pxor %xmm1,%xmm7
1052 movdqu 16(%esi),%xmm3
1053 xorps %xmm0,%xmm2
1054 movdqu 32(%esi),%xmm4
1055 pxor %xmm0,%xmm3
1056 movdqu 48(%esi),%xmm5
1057 pxor %xmm0,%xmm4
1058 movdqu 64(%esi),%xmm6
1059 pxor %xmm0,%xmm5
1060 movdqu 80(%esi),%xmm1
1061 pxor %xmm0,%xmm6
1062 leal 96(%esi),%esi
1063 pxor (%esp),%xmm2
1064 movdqa %xmm7,80(%esp)
1065 pxor %xmm1,%xmm7
1066 movups 16(%ebp),%xmm1
1067 leal 32(%ebp),%edx
1068 pxor 16(%esp),%xmm3
1069 .byte 102,15,56,220,209
1070 pxor 32(%esp),%xmm4
1071 .byte 102,15,56,220,217
1072 pxor 48(%esp),%xmm5
1073 decl %ecx
1074 .byte 102,15,56,220,225
1075 pxor 64(%esp),%xmm6
1076 .byte 102,15,56,220,233
1077 pxor %xmm0,%xmm7
1078 .byte 102,15,56,220,241
1079 movups (%edx),%xmm0
1080 .byte 102,15,56,220,249
1081 call L_aesni_encrypt6_enter
1082 movdqa 80(%esp),%xmm1
1083 pxor %xmm0,%xmm0
1084 xorps (%esp),%xmm2
1085 pcmpgtd %xmm1,%xmm0
1086 xorps 16(%esp),%xmm3
1087 movups %xmm2,(%edi)
1088 xorps 32(%esp),%xmm4
1089 movups %xmm3,16(%edi)
1090 xorps 48(%esp),%xmm5
1091 movups %xmm4,32(%edi)
1092 xorps 64(%esp),%xmm6
1093 movups %xmm5,48(%edi)
1094 xorps %xmm1,%xmm7
1095 movups %xmm6,64(%edi)
1096 pshufd $19,%xmm0,%xmm2
1097 movups %xmm7,80(%edi)
1098 leal 96(%edi),%edi
1099 movdqa 96(%esp),%xmm3
1100 pxor %xmm0,%xmm0
1101 paddq %xmm1,%xmm1
1102 pand %xmm3,%xmm2
1103 pcmpgtd %xmm1,%xmm0
1104 movl %ebx,%ecx
1105 pxor %xmm2,%xmm1
1106 subl $96,%eax
1107 jnc L044xts_enc_loop6
1108 leal 1(,%ecx,2),%ecx
1109 movl %ebp,%edx
1110 movl %ecx,%ebx
1111 L043xts_enc_short:
1112 addl $96,%eax
1113 jz L045xts_enc_done6x
1114 movdqa %xmm1,%xmm5
1115 cmpl $32,%eax
1116 jb L046xts_enc_one
1117 pshufd $19,%xmm0,%xmm2
1118 pxor %xmm0,%xmm0
1119 paddq %xmm1,%xmm1
1120 pand %xmm3,%xmm2
1121 pcmpgtd %xmm1,%xmm0
1122 pxor %xmm2,%xmm1
1123 je L047xts_enc_two
1124 pshufd $19,%xmm0,%xmm2
1125 pxor %xmm0,%xmm0
1126 movdqa %xmm1,%xmm6
1127 paddq %xmm1,%xmm1
1128 pand %xmm3,%xmm2
1129 pcmpgtd %xmm1,%xmm0
1130 pxor %xmm2,%xmm1
1131 cmpl $64,%eax
1132 jb L048xts_enc_three
1133 pshufd $19,%xmm0,%xmm2
1134 pxor %xmm0,%xmm0
1135 movdqa %xmm1,%xmm7
1136 paddq %xmm1,%xmm1
1137 pand %xmm3,%xmm2
1138 pcmpgtd %xmm1,%xmm0
1139 pxor %xmm2,%xmm1
1140 movdqa %xmm5,(%esp)
1141 movdqa %xmm6,16(%esp)
1142 je L049xts_enc_four
1143 movdqa %xmm7,32(%esp)
1144 pshufd $19,%xmm0,%xmm7
1145 movdqa %xmm1,48(%esp)
1146 paddq %xmm1,%xmm1
1147 pand %xmm3,%xmm7
1148 pxor %xmm1,%xmm7
1149 movdqu (%esi),%xmm2
1150 movdqu 16(%esi),%xmm3
1151 movdqu 32(%esi),%xmm4
1152 pxor (%esp),%xmm2
1153 movdqu 48(%esi),%xmm5
1154 pxor 16(%esp),%xmm3
1155 movdqu 64(%esi),%xmm6
1156 pxor 32(%esp),%xmm4
1157 leal 80(%esi),%esi
1158 pxor 48(%esp),%xmm5
1159 movdqa %xmm7,64(%esp)
1160 pxor %xmm7,%xmm6
1161 call __aesni_encrypt6
1162 movaps 64(%esp),%xmm1
1163 xorps (%esp),%xmm2
1164 xorps 16(%esp),%xmm3
1165 xorps 32(%esp),%xmm4
1166 movups %xmm2,(%edi)
1167 xorps 48(%esp),%xmm5
1168 movups %xmm3,16(%edi)
1169 xorps %xmm1,%xmm6
1170 movups %xmm4,32(%edi)
1171 movups %xmm5,48(%edi)
1172 movups %xmm6,64(%edi)
1173 leal 80(%edi),%edi
1174 jmp L050xts_enc_done
1175 .align 4,0x90
1176 L046xts_enc_one:
1177 movups (%esi),%xmm2
1178 leal 16(%esi),%esi
1179 xorps %xmm5,%xmm2
1180 movups (%edx),%xmm0
1181 movups 16(%edx),%xmm1
1182 leal 32(%edx),%edx
1183 xorps %xmm0,%xmm2
1184 L051enc1_loop_9:
1185 .byte 102,15,56,220,209
1186 decl %ecx
1187 movups (%edx),%xmm1
1188 leal 16(%edx),%edx
1189 jnz L051enc1_loop_9
1190 .byte 102,15,56,221,209
1191 xorps %xmm5,%xmm2
1192 movups %xmm2,(%edi)
1193 leal 16(%edi),%edi
1194 movdqa %xmm5,%xmm1
1195 jmp L050xts_enc_done
1196 .align 4,0x90
1197 L047xts_enc_two:
1198 movaps %xmm1,%xmm6
1199 movups (%esi),%xmm2
1200 movups 16(%esi),%xmm3
1201 leal 32(%esi),%esi
1202 xorps %xmm5,%xmm2
1203 xorps %xmm6,%xmm3
1204 xorps %xmm4,%xmm4
1205 call __aesni_encrypt3
1206 xorps %xmm5,%xmm2
1207 xorps %xmm6,%xmm3
1208 movups %xmm2,(%edi)
1209 movups %xmm3,16(%edi)
1210 leal 32(%edi),%edi
1211 movdqa %xmm6,%xmm1
1212 jmp L050xts_enc_done
1213 .align 4,0x90
1214 L048xts_enc_three:
1215 movaps %xmm1,%xmm7
1216 movups (%esi),%xmm2
1217 movups 16(%esi),%xmm3
1218 movups 32(%esi),%xmm4
1219 leal 48(%esi),%esi
1220 xorps %xmm5,%xmm2
1221 xorps %xmm6,%xmm3
1222 xorps %xmm7,%xmm4
1223 call __aesni_encrypt3
1224 xorps %xmm5,%xmm2
1225 xorps %xmm6,%xmm3
1226 xorps %xmm7,%xmm4
1227 movups %xmm2,(%edi)
1228 movups %xmm3,16(%edi)
1229 movups %xmm4,32(%edi)
1230 leal 48(%edi),%edi
1231 movdqa %xmm7,%xmm1
1232 jmp L050xts_enc_done
1233 .align 4,0x90
1234 L049xts_enc_four:
1235 movaps %xmm1,%xmm6
1236 movups (%esi),%xmm2
1237 movups 16(%esi),%xmm3
1238 movups 32(%esi),%xmm4
1239 xorps (%esp),%xmm2
1240 movups 48(%esi),%xmm5
1241 leal 64(%esi),%esi
1242 xorps 16(%esp),%xmm3
1243 xorps %xmm7,%xmm4
1244 xorps %xmm6,%xmm5
1245 call __aesni_encrypt4
1246 xorps (%esp),%xmm2
1247 xorps 16(%esp),%xmm3
1248 xorps %xmm7,%xmm4
1249 movups %xmm2,(%edi)
1250 xorps %xmm6,%xmm5
1251 movups %xmm3,16(%edi)
1252 movups %xmm4,32(%edi)
1253 movups %xmm5,48(%edi)
1254 leal 64(%edi),%edi
1255 movdqa %xmm6,%xmm1
1256 jmp L050xts_enc_done
1257 .align 4,0x90
1258 L045xts_enc_done6x:
1259 movl 112(%esp),%eax
1260 andl $15,%eax
1261 jz L052xts_enc_ret
1262 movdqa %xmm1,%xmm5
1263 movl %eax,112(%esp)
1264 jmp L053xts_enc_steal
1265 .align 4,0x90
1266 L050xts_enc_done:
1267 movl 112(%esp),%eax
1268 pxor %xmm0,%xmm0
1269 andl $15,%eax
1270 jz L052xts_enc_ret
1271 pcmpgtd %xmm1,%xmm0
1272 movl %eax,112(%esp)
1273 pshufd $19,%xmm0,%xmm5
1274 paddq %xmm1,%xmm1
1275 pand 96(%esp),%xmm5
1276 pxor %xmm1,%xmm5
1277 L053xts_enc_steal:
1278 movzbl (%esi),%ecx
1279 movzbl -16(%edi),%edx
1280 leal 1(%esi),%esi
1281 movb %cl,-16(%edi)
1282 movb %dl,(%edi)
1283 leal 1(%edi),%edi
1284 subl $1,%eax
1285 jnz L053xts_enc_steal
1286 subl 112(%esp),%edi
1287 movl %ebp,%edx
1288 movl %ebx,%ecx
1289 movups -16(%edi),%xmm2
1290 xorps %xmm5,%xmm2
1291 movups (%edx),%xmm0
1292 movups 16(%edx),%xmm1
1293 leal 32(%edx),%edx
1294 xorps %xmm0,%xmm2
1295 L054enc1_loop_10:
1296 .byte 102,15,56,220,209
1297 decl %ecx
1298 movups (%edx),%xmm1
1299 leal 16(%edx),%edx
1300 jnz L054enc1_loop_10
1301 .byte 102,15,56,221,209
1302 xorps %xmm5,%xmm2
1303 movups %xmm2,-16(%edi)
1304 L052xts_enc_ret:
1305 movl 116(%esp),%esp
1306 popl %edi
1307 popl %esi
1308 popl %ebx
1309 popl %ebp
1311 .globl _aesni_xts_decrypt
1312 .align 4
1313 _aesni_xts_decrypt:
1314 L_aesni_xts_decrypt_begin:
1315 pushl %ebp
1316 pushl %ebx
1317 pushl %esi
1318 pushl %edi
1319 movl 36(%esp),%edx
1320 movl 40(%esp),%esi
1321 movl 240(%edx),%ecx
1322 movups (%esi),%xmm2
1323 movups (%edx),%xmm0
1324 movups 16(%edx),%xmm1
1325 leal 32(%edx),%edx
1326 xorps %xmm0,%xmm2
1327 L055enc1_loop_11:
1328 .byte 102,15,56,220,209
1329 decl %ecx
1330 movups (%edx),%xmm1
1331 leal 16(%edx),%edx
1332 jnz L055enc1_loop_11
1333 .byte 102,15,56,221,209
1334 movl 20(%esp),%esi
1335 movl 24(%esp),%edi
1336 movl 28(%esp),%eax
1337 movl 32(%esp),%edx
1338 movl %esp,%ebp
1339 subl $120,%esp
1340 andl $-16,%esp
1341 xorl %ebx,%ebx
1342 testl $15,%eax
1343 setnz %bl
1344 shll $4,%ebx
1345 subl %ebx,%eax
1346 movl $135,96(%esp)
1347 movl $0,100(%esp)
1348 movl $1,104(%esp)
1349 movl $0,108(%esp)
1350 movl %eax,112(%esp)
1351 movl %ebp,116(%esp)
1352 movl 240(%edx),%ecx
1353 movl %edx,%ebp
1354 movl %ecx,%ebx
1355 movdqa %xmm2,%xmm1
1356 pxor %xmm0,%xmm0
1357 movdqa 96(%esp),%xmm3
1358 pcmpgtd %xmm1,%xmm0
1359 andl $-16,%eax
1360 subl $96,%eax
1361 jc L056xts_dec_short
1362 shrl $1,%ecx
1363 movl %ecx,%ebx
1364 jmp L057xts_dec_loop6
1365 .align 4,0x90
1366 L057xts_dec_loop6:
1367 pshufd $19,%xmm0,%xmm2
1368 pxor %xmm0,%xmm0
1369 movdqa %xmm1,(%esp)
1370 paddq %xmm1,%xmm1
1371 pand %xmm3,%xmm2
1372 pcmpgtd %xmm1,%xmm0
1373 pxor %xmm2,%xmm1
1374 pshufd $19,%xmm0,%xmm2
1375 pxor %xmm0,%xmm0
1376 movdqa %xmm1,16(%esp)
1377 paddq %xmm1,%xmm1
1378 pand %xmm3,%xmm2
1379 pcmpgtd %xmm1,%xmm0
1380 pxor %xmm2,%xmm1
1381 pshufd $19,%xmm0,%xmm2
1382 pxor %xmm0,%xmm0
1383 movdqa %xmm1,32(%esp)
1384 paddq %xmm1,%xmm1
1385 pand %xmm3,%xmm2
1386 pcmpgtd %xmm1,%xmm0
1387 pxor %xmm2,%xmm1
1388 pshufd $19,%xmm0,%xmm2
1389 pxor %xmm0,%xmm0
1390 movdqa %xmm1,48(%esp)
1391 paddq %xmm1,%xmm1
1392 pand %xmm3,%xmm2
1393 pcmpgtd %xmm1,%xmm0
1394 pxor %xmm2,%xmm1
1395 pshufd $19,%xmm0,%xmm7
1396 movdqa %xmm1,64(%esp)
1397 paddq %xmm1,%xmm1
1398 movups (%ebp),%xmm0
1399 pand %xmm3,%xmm7
1400 movups (%esi),%xmm2
1401 pxor %xmm1,%xmm7
1402 movdqu 16(%esi),%xmm3
1403 xorps %xmm0,%xmm2
1404 movdqu 32(%esi),%xmm4
1405 pxor %xmm0,%xmm3
1406 movdqu 48(%esi),%xmm5
1407 pxor %xmm0,%xmm4
1408 movdqu 64(%esi),%xmm6
1409 pxor %xmm0,%xmm5
1410 movdqu 80(%esi),%xmm1
1411 pxor %xmm0,%xmm6
1412 leal 96(%esi),%esi
1413 pxor (%esp),%xmm2
1414 movdqa %xmm7,80(%esp)
1415 pxor %xmm1,%xmm7
1416 movups 16(%ebp),%xmm1
1417 leal 32(%ebp),%edx
1418 pxor 16(%esp),%xmm3
1419 .byte 102,15,56,222,209
1420 pxor 32(%esp),%xmm4
1421 .byte 102,15,56,222,217
1422 pxor 48(%esp),%xmm5
1423 decl %ecx
1424 .byte 102,15,56,222,225
1425 pxor 64(%esp),%xmm6
1426 .byte 102,15,56,222,233
1427 pxor %xmm0,%xmm7
1428 .byte 102,15,56,222,241
1429 movups (%edx),%xmm0
1430 .byte 102,15,56,222,249
1431 call L_aesni_decrypt6_enter
1432 movdqa 80(%esp),%xmm1
1433 pxor %xmm0,%xmm0
1434 xorps (%esp),%xmm2
1435 pcmpgtd %xmm1,%xmm0
1436 xorps 16(%esp),%xmm3
1437 movups %xmm2,(%edi)
1438 xorps 32(%esp),%xmm4
1439 movups %xmm3,16(%edi)
1440 xorps 48(%esp),%xmm5
1441 movups %xmm4,32(%edi)
1442 xorps 64(%esp),%xmm6
1443 movups %xmm5,48(%edi)
1444 xorps %xmm1,%xmm7
1445 movups %xmm6,64(%edi)
1446 pshufd $19,%xmm0,%xmm2
1447 movups %xmm7,80(%edi)
1448 leal 96(%edi),%edi
1449 movdqa 96(%esp),%xmm3
1450 pxor %xmm0,%xmm0
1451 paddq %xmm1,%xmm1
1452 pand %xmm3,%xmm2
1453 pcmpgtd %xmm1,%xmm0
1454 movl %ebx,%ecx
1455 pxor %xmm2,%xmm1
1456 subl $96,%eax
1457 jnc L057xts_dec_loop6
1458 leal 1(,%ecx,2),%ecx
1459 movl %ebp,%edx
1460 movl %ecx,%ebx
1461 L056xts_dec_short:
1462 addl $96,%eax
1463 jz L058xts_dec_done6x
1464 movdqa %xmm1,%xmm5
1465 cmpl $32,%eax
1466 jb L059xts_dec_one
1467 pshufd $19,%xmm0,%xmm2
1468 pxor %xmm0,%xmm0
1469 paddq %xmm1,%xmm1
1470 pand %xmm3,%xmm2
1471 pcmpgtd %xmm1,%xmm0
1472 pxor %xmm2,%xmm1
1473 je L060xts_dec_two
1474 pshufd $19,%xmm0,%xmm2
1475 pxor %xmm0,%xmm0
1476 movdqa %xmm1,%xmm6
1477 paddq %xmm1,%xmm1
1478 pand %xmm3,%xmm2
1479 pcmpgtd %xmm1,%xmm0
1480 pxor %xmm2,%xmm1
1481 cmpl $64,%eax
1482 jb L061xts_dec_three
1483 pshufd $19,%xmm0,%xmm2
1484 pxor %xmm0,%xmm0
1485 movdqa %xmm1,%xmm7
1486 paddq %xmm1,%xmm1
1487 pand %xmm3,%xmm2
1488 pcmpgtd %xmm1,%xmm0
1489 pxor %xmm2,%xmm1
1490 movdqa %xmm5,(%esp)
1491 movdqa %xmm6,16(%esp)
1492 je L062xts_dec_four
1493 movdqa %xmm7,32(%esp)
1494 pshufd $19,%xmm0,%xmm7
1495 movdqa %xmm1,48(%esp)
1496 paddq %xmm1,%xmm1
1497 pand %xmm3,%xmm7
1498 pxor %xmm1,%xmm7
1499 movdqu (%esi),%xmm2
1500 movdqu 16(%esi),%xmm3
1501 movdqu 32(%esi),%xmm4
1502 pxor (%esp),%xmm2
1503 movdqu 48(%esi),%xmm5
1504 pxor 16(%esp),%xmm3
1505 movdqu 64(%esi),%xmm6
1506 pxor 32(%esp),%xmm4
1507 leal 80(%esi),%esi
1508 pxor 48(%esp),%xmm5
1509 movdqa %xmm7,64(%esp)
1510 pxor %xmm7,%xmm6
1511 call __aesni_decrypt6
1512 movaps 64(%esp),%xmm1
1513 xorps (%esp),%xmm2
1514 xorps 16(%esp),%xmm3
1515 xorps 32(%esp),%xmm4
1516 movups %xmm2,(%edi)
1517 xorps 48(%esp),%xmm5
1518 movups %xmm3,16(%edi)
1519 xorps %xmm1,%xmm6
1520 movups %xmm4,32(%edi)
1521 movups %xmm5,48(%edi)
1522 movups %xmm6,64(%edi)
1523 leal 80(%edi),%edi
1524 jmp L063xts_dec_done
1525 .align 4,0x90
1526 L059xts_dec_one:
1527 movups (%esi),%xmm2
1528 leal 16(%esi),%esi
1529 xorps %xmm5,%xmm2
1530 movups (%edx),%xmm0
1531 movups 16(%edx),%xmm1
1532 leal 32(%edx),%edx
1533 xorps %xmm0,%xmm2
1534 L064dec1_loop_12:
1535 .byte 102,15,56,222,209
1536 decl %ecx
1537 movups (%edx),%xmm1
1538 leal 16(%edx),%edx
1539 jnz L064dec1_loop_12
1540 .byte 102,15,56,223,209
1541 xorps %xmm5,%xmm2
1542 movups %xmm2,(%edi)
1543 leal 16(%edi),%edi
1544 movdqa %xmm5,%xmm1
1545 jmp L063xts_dec_done
1546 .align 4,0x90
1547 L060xts_dec_two:
1548 movaps %xmm1,%xmm6
1549 movups (%esi),%xmm2
1550 movups 16(%esi),%xmm3
1551 leal 32(%esi),%esi
1552 xorps %xmm5,%xmm2
1553 xorps %xmm6,%xmm3
1554 call __aesni_decrypt3
1555 xorps %xmm5,%xmm2
1556 xorps %xmm6,%xmm3
1557 movups %xmm2,(%edi)
1558 movups %xmm3,16(%edi)
1559 leal 32(%edi),%edi
1560 movdqa %xmm6,%xmm1
1561 jmp L063xts_dec_done
1562 .align 4,0x90
1563 L061xts_dec_three:
1564 movaps %xmm1,%xmm7
1565 movups (%esi),%xmm2
1566 movups 16(%esi),%xmm3
1567 movups 32(%esi),%xmm4
1568 leal 48(%esi),%esi
1569 xorps %xmm5,%xmm2
1570 xorps %xmm6,%xmm3
1571 xorps %xmm7,%xmm4
1572 call __aesni_decrypt3
1573 xorps %xmm5,%xmm2
1574 xorps %xmm6,%xmm3
1575 xorps %xmm7,%xmm4
1576 movups %xmm2,(%edi)
1577 movups %xmm3,16(%edi)
1578 movups %xmm4,32(%edi)
1579 leal 48(%edi),%edi
1580 movdqa %xmm7,%xmm1
1581 jmp L063xts_dec_done
1582 .align 4,0x90
1583 L062xts_dec_four:
1584 movaps %xmm1,%xmm6
1585 movups (%esi),%xmm2
1586 movups 16(%esi),%xmm3
1587 movups 32(%esi),%xmm4
1588 xorps (%esp),%xmm2
1589 movups 48(%esi),%xmm5
1590 leal 64(%esi),%esi
1591 xorps 16(%esp),%xmm3
1592 xorps %xmm7,%xmm4
1593 xorps %xmm6,%xmm5
1594 call __aesni_decrypt4
1595 xorps (%esp),%xmm2
1596 xorps 16(%esp),%xmm3
1597 xorps %xmm7,%xmm4
1598 movups %xmm2,(%edi)
1599 xorps %xmm6,%xmm5
1600 movups %xmm3,16(%edi)
1601 movups %xmm4,32(%edi)
1602 movups %xmm5,48(%edi)
1603 leal 64(%edi),%edi
1604 movdqa %xmm6,%xmm1
1605 jmp L063xts_dec_done
1606 .align 4,0x90
1607 L058xts_dec_done6x:
1608 movl 112(%esp),%eax
1609 andl $15,%eax
1610 jz L065xts_dec_ret
1611 movl %eax,112(%esp)
1612 jmp L066xts_dec_only_one_more
1613 .align 4,0x90
1614 L063xts_dec_done:
1615 movl 112(%esp),%eax
1616 pxor %xmm0,%xmm0
1617 andl $15,%eax
1618 jz L065xts_dec_ret
1619 pcmpgtd %xmm1,%xmm0
1620 movl %eax,112(%esp)
1621 pshufd $19,%xmm0,%xmm2
1622 pxor %xmm0,%xmm0
1623 movdqa 96(%esp),%xmm3
1624 paddq %xmm1,%xmm1
1625 pand %xmm3,%xmm2
1626 pcmpgtd %xmm1,%xmm0
1627 pxor %xmm2,%xmm1
1628 L066xts_dec_only_one_more:
1629 pshufd $19,%xmm0,%xmm5
1630 movdqa %xmm1,%xmm6
1631 paddq %xmm1,%xmm1
1632 pand %xmm3,%xmm5
1633 pxor %xmm1,%xmm5
1634 movl %ebp,%edx
1635 movl %ebx,%ecx
1636 movups (%esi),%xmm2
1637 xorps %xmm5,%xmm2
1638 movups (%edx),%xmm0
1639 movups 16(%edx),%xmm1
1640 leal 32(%edx),%edx
1641 xorps %xmm0,%xmm2
1642 L067dec1_loop_13:
1643 .byte 102,15,56,222,209
1644 decl %ecx
1645 movups (%edx),%xmm1
1646 leal 16(%edx),%edx
1647 jnz L067dec1_loop_13
1648 .byte 102,15,56,223,209
1649 xorps %xmm5,%xmm2
1650 movups %xmm2,(%edi)
1651 L068xts_dec_steal:
1652 movzbl 16(%esi),%ecx
1653 movzbl (%edi),%edx
1654 leal 1(%esi),%esi
1655 movb %cl,(%edi)
1656 movb %dl,16(%edi)
1657 leal 1(%edi),%edi
1658 subl $1,%eax
1659 jnz L068xts_dec_steal
1660 subl 112(%esp),%edi
1661 movl %ebp,%edx
1662 movl %ebx,%ecx
1663 movups (%edi),%xmm2
1664 xorps %xmm6,%xmm2
1665 movups (%edx),%xmm0
1666 movups 16(%edx),%xmm1
1667 leal 32(%edx),%edx
1668 xorps %xmm0,%xmm2
1669 L069dec1_loop_14:
1670 .byte 102,15,56,222,209
1671 decl %ecx
1672 movups (%edx),%xmm1
1673 leal 16(%edx),%edx
1674 jnz L069dec1_loop_14
1675 .byte 102,15,56,223,209
1676 xorps %xmm6,%xmm2
1677 movups %xmm2,(%edi)
1678 L065xts_dec_ret:
1679 movl 116(%esp),%esp
1680 popl %edi
1681 popl %esi
1682 popl %ebx
1683 popl %ebp
1685 .globl _aesni_cbc_encrypt
1686 .align 4
1687 _aesni_cbc_encrypt:
1688 L_aesni_cbc_encrypt_begin:
1689 pushl %ebp
1690 pushl %ebx
1691 pushl %esi
1692 pushl %edi
1693 movl 20(%esp),%esi
1694 movl %esp,%ebx
1695 movl 24(%esp),%edi
1696 subl $24,%ebx
1697 movl 28(%esp),%eax
1698 andl $-16,%ebx
1699 movl 32(%esp),%edx
1700 movl 36(%esp),%ebp
1701 testl %eax,%eax
1702 jz L070cbc_abort
1703 cmpl $0,40(%esp)
1704 xchgl %esp,%ebx
1705 movups (%ebp),%xmm7
1706 movl 240(%edx),%ecx
1707 movl %edx,%ebp
1708 movl %ebx,16(%esp)
1709 movl %ecx,%ebx
1710 je L071cbc_decrypt
1711 movaps %xmm7,%xmm2
1712 cmpl $16,%eax
1713 jb L072cbc_enc_tail
1714 subl $16,%eax
1715 jmp L073cbc_enc_loop
1716 .align 4,0x90
1717 L073cbc_enc_loop:
1718 movups (%esi),%xmm7
1719 leal 16(%esi),%esi
1720 movups (%edx),%xmm0
1721 movups 16(%edx),%xmm1
1722 xorps %xmm0,%xmm7
1723 leal 32(%edx),%edx
1724 xorps %xmm7,%xmm2
1725 L074enc1_loop_15:
1726 .byte 102,15,56,220,209
1727 decl %ecx
1728 movups (%edx),%xmm1
1729 leal 16(%edx),%edx
1730 jnz L074enc1_loop_15
1731 .byte 102,15,56,221,209
1732 movl %ebx,%ecx
1733 movl %ebp,%edx
1734 movups %xmm2,(%edi)
1735 leal 16(%edi),%edi
1736 subl $16,%eax
1737 jnc L073cbc_enc_loop
1738 addl $16,%eax
1739 jnz L072cbc_enc_tail
1740 movaps %xmm2,%xmm7
1741 jmp L075cbc_ret
1742 L072cbc_enc_tail:
1743 movl %eax,%ecx
1744 .long 2767451785
1745 movl $16,%ecx
1746 subl %eax,%ecx
1747 xorl %eax,%eax
1748 .long 2868115081
1749 leal -16(%edi),%edi
1750 movl %ebx,%ecx
1751 movl %edi,%esi
1752 movl %ebp,%edx
1753 jmp L073cbc_enc_loop
1754 .align 4,0x90
1755 L071cbc_decrypt:
1756 cmpl $80,%eax
1757 jbe L076cbc_dec_tail
1758 movaps %xmm7,(%esp)
1759 subl $80,%eax
1760 jmp L077cbc_dec_loop6_enter
1761 .align 4,0x90
1762 L078cbc_dec_loop6:
1763 movaps %xmm0,(%esp)
1764 movups %xmm7,(%edi)
1765 leal 16(%edi),%edi
1766 L077cbc_dec_loop6_enter:
1767 movdqu (%esi),%xmm2
1768 movdqu 16(%esi),%xmm3
1769 movdqu 32(%esi),%xmm4
1770 movdqu 48(%esi),%xmm5
1771 movdqu 64(%esi),%xmm6
1772 movdqu 80(%esi),%xmm7
1773 call __aesni_decrypt6
1774 movups (%esi),%xmm1
1775 movups 16(%esi),%xmm0
1776 xorps (%esp),%xmm2
1777 xorps %xmm1,%xmm3
1778 movups 32(%esi),%xmm1
1779 xorps %xmm0,%xmm4
1780 movups 48(%esi),%xmm0
1781 xorps %xmm1,%xmm5
1782 movups 64(%esi),%xmm1
1783 xorps %xmm0,%xmm6
1784 movups 80(%esi),%xmm0
1785 xorps %xmm1,%xmm7
1786 movups %xmm2,(%edi)
1787 movups %xmm3,16(%edi)
1788 leal 96(%esi),%esi
1789 movups %xmm4,32(%edi)
1790 movl %ebx,%ecx
1791 movups %xmm5,48(%edi)
1792 movl %ebp,%edx
1793 movups %xmm6,64(%edi)
1794 leal 80(%edi),%edi
1795 subl $96,%eax
1796 ja L078cbc_dec_loop6
1797 movaps %xmm7,%xmm2
1798 movaps %xmm0,%xmm7
1799 addl $80,%eax
1800 jle L079cbc_dec_tail_collected
1801 movups %xmm2,(%edi)
1802 leal 16(%edi),%edi
1803 L076cbc_dec_tail:
1804 movups (%esi),%xmm2
1805 movaps %xmm2,%xmm6
1806 cmpl $16,%eax
1807 jbe L080cbc_dec_one
1808 movups 16(%esi),%xmm3
1809 movaps %xmm3,%xmm5
1810 cmpl $32,%eax
1811 jbe L081cbc_dec_two
1812 movups 32(%esi),%xmm4
1813 cmpl $48,%eax
1814 jbe L082cbc_dec_three
1815 movups 48(%esi),%xmm5
1816 cmpl $64,%eax
1817 jbe L083cbc_dec_four
1818 movups 64(%esi),%xmm6
1819 movaps %xmm7,(%esp)
1820 movups (%esi),%xmm2
1821 xorps %xmm7,%xmm7
1822 call __aesni_decrypt6
1823 movups (%esi),%xmm1
1824 movups 16(%esi),%xmm0
1825 xorps (%esp),%xmm2
1826 xorps %xmm1,%xmm3
1827 movups 32(%esi),%xmm1
1828 xorps %xmm0,%xmm4
1829 movups 48(%esi),%xmm0
1830 xorps %xmm1,%xmm5
1831 movups 64(%esi),%xmm7
1832 xorps %xmm0,%xmm6
1833 movups %xmm2,(%edi)
1834 movups %xmm3,16(%edi)
1835 movups %xmm4,32(%edi)
1836 movups %xmm5,48(%edi)
1837 leal 64(%edi),%edi
1838 movaps %xmm6,%xmm2
1839 subl $80,%eax
1840 jmp L079cbc_dec_tail_collected
1841 .align 4,0x90
1842 L080cbc_dec_one:
1843 movups (%edx),%xmm0
1844 movups 16(%edx),%xmm1
1845 leal 32(%edx),%edx
1846 xorps %xmm0,%xmm2
1847 L084dec1_loop_16:
1848 .byte 102,15,56,222,209
1849 decl %ecx
1850 movups (%edx),%xmm1
1851 leal 16(%edx),%edx
1852 jnz L084dec1_loop_16
1853 .byte 102,15,56,223,209
1854 xorps %xmm7,%xmm2
1855 movaps %xmm6,%xmm7
1856 subl $16,%eax
1857 jmp L079cbc_dec_tail_collected
1858 .align 4,0x90
1859 L081cbc_dec_two:
1860 xorps %xmm4,%xmm4
1861 call __aesni_decrypt3
1862 xorps %xmm7,%xmm2
1863 xorps %xmm6,%xmm3
1864 movups %xmm2,(%edi)
1865 movaps %xmm3,%xmm2
1866 leal 16(%edi),%edi
1867 movaps %xmm5,%xmm7
1868 subl $32,%eax
1869 jmp L079cbc_dec_tail_collected
1870 .align 4,0x90
1871 L082cbc_dec_three:
1872 call __aesni_decrypt3
1873 xorps %xmm7,%xmm2
1874 xorps %xmm6,%xmm3
1875 xorps %xmm5,%xmm4
1876 movups %xmm2,(%edi)
1877 movaps %xmm4,%xmm2
1878 movups %xmm3,16(%edi)
1879 leal 32(%edi),%edi
1880 movups 32(%esi),%xmm7
1881 subl $48,%eax
1882 jmp L079cbc_dec_tail_collected
1883 .align 4,0x90
1884 L083cbc_dec_four:
1885 call __aesni_decrypt4
1886 movups 16(%esi),%xmm1
1887 movups 32(%esi),%xmm0
1888 xorps %xmm7,%xmm2
1889 movups 48(%esi),%xmm7
1890 xorps %xmm6,%xmm3
1891 movups %xmm2,(%edi)
1892 xorps %xmm1,%xmm4
1893 movups %xmm3,16(%edi)
1894 xorps %xmm0,%xmm5
1895 movups %xmm4,32(%edi)
1896 leal 48(%edi),%edi
1897 movaps %xmm5,%xmm2
1898 subl $64,%eax
1899 L079cbc_dec_tail_collected:
1900 andl $15,%eax
1901 jnz L085cbc_dec_tail_partial
1902 movups %xmm2,(%edi)
1903 jmp L075cbc_ret
1904 .align 4,0x90
1905 L085cbc_dec_tail_partial:
1906 movaps %xmm2,(%esp)
1907 movl $16,%ecx
1908 movl %esp,%esi
1909 subl %eax,%ecx
1910 .long 2767451785
1911 L075cbc_ret:
1912 movl 16(%esp),%esp
1913 movl 36(%esp),%ebp
1914 movups %xmm7,(%ebp)
1915 L070cbc_abort:
1916 popl %edi
1917 popl %esi
1918 popl %ebx
1919 popl %ebp
1921 .align 4
1922 __aesni_set_encrypt_key:
1923 testl %eax,%eax
1924 jz L086bad_pointer
1925 testl %edx,%edx
1926 jz L086bad_pointer
1927 movups (%eax),%xmm0
1928 xorps %xmm4,%xmm4
1929 leal 16(%edx),%edx
1930 cmpl $256,%ecx
1931 je L08714rounds
1932 cmpl $192,%ecx
1933 je L08812rounds
1934 cmpl $128,%ecx
1935 jne L089bad_keybits
1936 .align 4,0x90
1937 L09010rounds:
1938 movl $9,%ecx
1939 movups %xmm0,-16(%edx)
1940 .byte 102,15,58,223,200,1
1941 call L091key_128_cold
1942 .byte 102,15,58,223,200,2
1943 call L092key_128
1944 .byte 102,15,58,223,200,4
1945 call L092key_128
1946 .byte 102,15,58,223,200,8
1947 call L092key_128
1948 .byte 102,15,58,223,200,16
1949 call L092key_128
1950 .byte 102,15,58,223,200,32
1951 call L092key_128
1952 .byte 102,15,58,223,200,64
1953 call L092key_128
1954 .byte 102,15,58,223,200,128
1955 call L092key_128
1956 .byte 102,15,58,223,200,27
1957 call L092key_128
1958 .byte 102,15,58,223,200,54
1959 call L092key_128
1960 movups %xmm0,(%edx)
1961 movl %ecx,80(%edx)
1962 xorl %eax,%eax
1964 .align 4,0x90
1965 L092key_128:
1966 movups %xmm0,(%edx)
1967 leal 16(%edx),%edx
1968 L091key_128_cold:
1969 shufps $16,%xmm0,%xmm4
1970 xorps %xmm4,%xmm0
1971 shufps $140,%xmm0,%xmm4
1972 xorps %xmm4,%xmm0
1973 shufps $255,%xmm1,%xmm1
1974 xorps %xmm1,%xmm0
1976 .align 4,0x90
1977 L08812rounds:
1978 movq 16(%eax),%xmm2
1979 movl $11,%ecx
1980 movups %xmm0,-16(%edx)
1981 .byte 102,15,58,223,202,1
1982 call L093key_192a_cold
1983 .byte 102,15,58,223,202,2
1984 call L094key_192b
1985 .byte 102,15,58,223,202,4
1986 call L095key_192a
1987 .byte 102,15,58,223,202,8
1988 call L094key_192b
1989 .byte 102,15,58,223,202,16
1990 call L095key_192a
1991 .byte 102,15,58,223,202,32
1992 call L094key_192b
1993 .byte 102,15,58,223,202,64
1994 call L095key_192a
1995 .byte 102,15,58,223,202,128
1996 call L094key_192b
1997 movups %xmm0,(%edx)
1998 movl %ecx,48(%edx)
1999 xorl %eax,%eax
2001 .align 4,0x90
2002 L095key_192a:
2003 movups %xmm0,(%edx)
2004 leal 16(%edx),%edx
2005 .align 4,0x90
2006 L093key_192a_cold:
2007 movaps %xmm2,%xmm5
2008 L096key_192b_warm:
2009 shufps $16,%xmm0,%xmm4
2010 movdqa %xmm2,%xmm3
2011 xorps %xmm4,%xmm0
2012 shufps $140,%xmm0,%xmm4
2013 pslldq $4,%xmm3
2014 xorps %xmm4,%xmm0
2015 pshufd $85,%xmm1,%xmm1
2016 pxor %xmm3,%xmm2
2017 pxor %xmm1,%xmm0
2018 pshufd $255,%xmm0,%xmm3
2019 pxor %xmm3,%xmm2
2021 .align 4,0x90
2022 L094key_192b:
2023 movaps %xmm0,%xmm3
2024 shufps $68,%xmm0,%xmm5
2025 movups %xmm5,(%edx)
2026 shufps $78,%xmm2,%xmm3
2027 movups %xmm3,16(%edx)
2028 leal 32(%edx),%edx
2029 jmp L096key_192b_warm
2030 .align 4,0x90
2031 L08714rounds:
2032 movups 16(%eax),%xmm2
2033 movl $13,%ecx
2034 leal 16(%edx),%edx
2035 movups %xmm0,-32(%edx)
2036 movups %xmm2,-16(%edx)
2037 .byte 102,15,58,223,202,1
2038 call L097key_256a_cold
2039 .byte 102,15,58,223,200,1
2040 call L098key_256b
2041 .byte 102,15,58,223,202,2
2042 call L099key_256a
2043 .byte 102,15,58,223,200,2
2044 call L098key_256b
2045 .byte 102,15,58,223,202,4
2046 call L099key_256a
2047 .byte 102,15,58,223,200,4
2048 call L098key_256b
2049 .byte 102,15,58,223,202,8
2050 call L099key_256a
2051 .byte 102,15,58,223,200,8
2052 call L098key_256b
2053 .byte 102,15,58,223,202,16
2054 call L099key_256a
2055 .byte 102,15,58,223,200,16
2056 call L098key_256b
2057 .byte 102,15,58,223,202,32
2058 call L099key_256a
2059 .byte 102,15,58,223,200,32
2060 call L098key_256b
2061 .byte 102,15,58,223,202,64
2062 call L099key_256a
2063 movups %xmm0,(%edx)
2064 movl %ecx,16(%edx)
2065 xorl %eax,%eax
2067 .align 4,0x90
2068 L099key_256a:
2069 movups %xmm2,(%edx)
2070 leal 16(%edx),%edx
2071 L097key_256a_cold:
2072 shufps $16,%xmm0,%xmm4
2073 xorps %xmm4,%xmm0
2074 shufps $140,%xmm0,%xmm4
2075 xorps %xmm4,%xmm0
2076 shufps $255,%xmm1,%xmm1
2077 xorps %xmm1,%xmm0
2079 .align 4,0x90
2080 L098key_256b:
2081 movups %xmm0,(%edx)
2082 leal 16(%edx),%edx
2083 shufps $16,%xmm2,%xmm4
2084 xorps %xmm4,%xmm2
2085 shufps $140,%xmm2,%xmm4
2086 xorps %xmm4,%xmm2
2087 shufps $170,%xmm1,%xmm1
2088 xorps %xmm1,%xmm2
2090 .align 2,0x90
2091 L086bad_pointer:
2092 movl $-1,%eax
2094 .align 2,0x90
2095 L089bad_keybits:
2096 movl $-2,%eax
2098 .globl _aesni_set_encrypt_key
2099 .align 4
2100 _aesni_set_encrypt_key:
2101 L_aesni_set_encrypt_key_begin:
2102 movl 4(%esp),%eax
2103 movl 8(%esp),%ecx
2104 movl 12(%esp),%edx
2105 call __aesni_set_encrypt_key
2107 .globl _aesni_set_decrypt_key
2108 .align 4
2109 _aesni_set_decrypt_key:
2110 L_aesni_set_decrypt_key_begin:
2111 movl 4(%esp),%eax
2112 movl 8(%esp),%ecx
2113 movl 12(%esp),%edx
2114 call __aesni_set_encrypt_key
2115 movl 12(%esp),%edx
2116 shll $4,%ecx
2117 testl %eax,%eax
2118 jnz L100dec_key_ret
2119 leal 16(%edx,%ecx,1),%eax
2120 movups (%edx),%xmm0
2121 movups (%eax),%xmm1
2122 movups %xmm0,(%eax)
2123 movups %xmm1,(%edx)
2124 leal 16(%edx),%edx
2125 leal -16(%eax),%eax
2126 L101dec_key_inverse:
2127 movups (%edx),%xmm0
2128 movups (%eax),%xmm1
2129 .byte 102,15,56,219,192
2130 .byte 102,15,56,219,201
2131 leal 16(%edx),%edx
2132 leal -16(%eax),%eax
2133 movups %xmm0,16(%eax)
2134 movups %xmm1,-16(%edx)
2135 cmpl %edx,%eax
2136 ja L101dec_key_inverse
2137 movups (%edx),%xmm0
2138 .byte 102,15,56,219,192
2139 movups %xmm0,(%edx)
2140 xorl %eax,%eax
2141 L100dec_key_ret:
2143 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
2144 .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
2145 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2146 .byte 115,108,46,111,114,103,62,0