--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/aes/asm/aesni-x86.pl\r
+#\r
+# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+.globl aesni_encrypt\r
+.type aesni_encrypt,@function\r
+.align 16\r
+aesni_encrypt:\r
+.L_aesni_encrypt_begin:\r
+ movl 4(%esp),%eax\r
+ movl 12(%esp),%edx\r
+ movups (%eax),%xmm2\r
+ movl 240(%edx),%ecx\r
+ movl 8(%esp),%eax\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L000enc1_loop_1:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L000enc1_loop_1\r
+.byte 102,15,56,221,209\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ movups %xmm2,(%eax)\r
+ pxor %xmm2,%xmm2\r
+ ret\r
+.size aesni_encrypt,.-.L_aesni_encrypt_begin\r
+.globl aesni_decrypt\r
+.type aesni_decrypt,@function\r
+.align 16\r
+aesni_decrypt:\r
+.L_aesni_decrypt_begin:\r
+ movl 4(%esp),%eax\r
+ movl 12(%esp),%edx\r
+ movups (%eax),%xmm2\r
+ movl 240(%edx),%ecx\r
+ movl 8(%esp),%eax\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L001dec1_loop_2:\r
+.byte 102,15,56,222,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L001dec1_loop_2\r
+.byte 102,15,56,223,209\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ movups %xmm2,(%eax)\r
+ pxor %xmm2,%xmm2\r
+ ret\r
+.size aesni_decrypt,.-.L_aesni_decrypt_begin\r
+.type _aesni_encrypt2,@function\r
+.align 16\r
+_aesni_encrypt2:\r
+ movups (%edx),%xmm0\r
+ shll $4,%ecx\r
+ movups 16(%edx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ movups 32(%edx),%xmm0\r
+ leal 32(%edx,%ecx,1),%edx\r
+ negl %ecx\r
+ addl $16,%ecx\r
+.L002enc2_loop:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L002enc2_loop\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+ ret\r
+.size _aesni_encrypt2,.-_aesni_encrypt2\r
+.type _aesni_decrypt2,@function\r
+.align 16\r
+_aesni_decrypt2:\r
+ movups (%edx),%xmm0\r
+ shll $4,%ecx\r
+ movups 16(%edx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ movups 32(%edx),%xmm0\r
+ leal 32(%edx,%ecx,1),%edx\r
+ negl %ecx\r
+ addl $16,%ecx\r
+.L003dec2_loop:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L003dec2_loop\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+ ret\r
+.size _aesni_decrypt2,.-_aesni_decrypt2\r
+.type _aesni_encrypt3,@function\r
+.align 16\r
+_aesni_encrypt3:\r
+ movups (%edx),%xmm0\r
+ shll $4,%ecx\r
+ movups 16(%edx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+ movups 32(%edx),%xmm0\r
+ leal 32(%edx,%ecx,1),%edx\r
+ negl %ecx\r
+ addl $16,%ecx\r
+.L004enc3_loop:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L004enc3_loop\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+.byte 102,15,56,221,224\r
+ ret\r
+.size _aesni_encrypt3,.-_aesni_encrypt3\r
+.type _aesni_decrypt3,@function\r
+.align 16\r
+_aesni_decrypt3:\r
+ movups (%edx),%xmm0\r
+ shll $4,%ecx\r
+ movups 16(%edx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+ movups 32(%edx),%xmm0\r
+ leal 32(%edx,%ecx,1),%edx\r
+ negl %ecx\r
+ addl $16,%ecx\r
+.L005dec3_loop:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L005dec3_loop\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+.byte 102,15,56,223,224\r
+ ret\r
+.size _aesni_decrypt3,.-_aesni_decrypt3\r
+.type _aesni_encrypt4,@function\r
+.align 16\r
+_aesni_encrypt4:\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ shll $4,%ecx\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm0,%xmm5\r
+ movups 32(%edx),%xmm0\r
+ leal 32(%edx,%ecx,1),%edx\r
+ negl %ecx\r
+.byte 15,31,64,0\r
+ addl $16,%ecx\r
+.L006enc4_loop:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L006enc4_loop\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+.byte 102,15,56,221,224\r
+.byte 102,15,56,221,232\r
+ ret\r
+.size _aesni_encrypt4,.-_aesni_encrypt4\r
+.type _aesni_decrypt4,@function\r
+.align 16\r
+_aesni_decrypt4:\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ shll $4,%ecx\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm0,%xmm5\r
+ movups 32(%edx),%xmm0\r
+ leal 32(%edx,%ecx,1),%edx\r
+ negl %ecx\r
+.byte 15,31,64,0\r
+ addl $16,%ecx\r
+.L007dec4_loop:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L007dec4_loop\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+.byte 102,15,56,223,224\r
+.byte 102,15,56,223,232\r
+ ret\r
+.size _aesni_decrypt4,.-_aesni_decrypt4\r
+.type _aesni_encrypt6,@function\r
+.align 16\r
+_aesni_encrypt6:\r
+ movups (%edx),%xmm0\r
+ shll $4,%ecx\r
+ movups 16(%edx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+.byte 102,15,56,220,209\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+.byte 102,15,56,220,217\r
+ leal 32(%edx,%ecx,1),%edx\r
+ negl %ecx\r
+.byte 102,15,56,220,225\r
+ pxor %xmm0,%xmm7\r
+ movups (%edx,%ecx,1),%xmm0\r
+ addl $16,%ecx\r
+ jmp .L008_aesni_encrypt6_inner\r
+.align 16\r
+.L009enc6_loop:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.L008_aesni_encrypt6_inner:\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.L_aesni_encrypt6_enter:\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L009enc6_loop\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+.byte 102,15,56,221,224\r
+.byte 102,15,56,221,232\r
+.byte 102,15,56,221,240\r
+.byte 102,15,56,221,248\r
+ ret\r
+.size _aesni_encrypt6,.-_aesni_encrypt6\r
+.type _aesni_decrypt6,@function\r
+.align 16\r
+_aesni_decrypt6:\r
+ movups (%edx),%xmm0\r
+ shll $4,%ecx\r
+ movups 16(%edx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+.byte 102,15,56,222,209\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+.byte 102,15,56,222,217\r
+ leal 32(%edx,%ecx,1),%edx\r
+ negl %ecx\r
+.byte 102,15,56,222,225\r
+ pxor %xmm0,%xmm7\r
+ movups (%edx,%ecx,1),%xmm0\r
+ addl $16,%ecx\r
+ jmp .L010_aesni_decrypt6_inner\r
+.align 16\r
+.L011dec6_loop:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.L010_aesni_decrypt6_inner:\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.L_aesni_decrypt6_enter:\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L011dec6_loop\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+.byte 102,15,56,223,224\r
+.byte 102,15,56,223,232\r
+.byte 102,15,56,223,240\r
+.byte 102,15,56,223,248\r
+ ret\r
+.size _aesni_decrypt6,.-_aesni_decrypt6\r
+.globl aesni_ecb_encrypt\r
+.type aesni_ecb_encrypt,@function\r
+.align 16\r
+aesni_ecb_encrypt:\r
+.L_aesni_ecb_encrypt_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 20(%esp),%esi\r
+ movl 24(%esp),%edi\r
+ movl 28(%esp),%eax\r
+ movl 32(%esp),%edx\r
+ movl 36(%esp),%ebx\r
+ andl $-16,%eax\r
+ jz .L012ecb_ret\r
+ movl 240(%edx),%ecx\r
+ testl %ebx,%ebx\r
+ jz .L013ecb_decrypt\r
+ movl %edx,%ebp\r
+ movl %ecx,%ebx\r
+ cmpl $96,%eax\r
+ jb .L014ecb_enc_tail\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movdqu 64(%esi),%xmm6\r
+ movdqu 80(%esi),%xmm7\r
+ leal 96(%esi),%esi\r
+ subl $96,%eax\r
+ jmp .L015ecb_enc_loop6_enter\r
+.align 16\r
+.L016ecb_enc_loop6:\r
+ movups %xmm2,(%edi)\r
+ movdqu (%esi),%xmm2\r
+ movups %xmm3,16(%edi)\r
+ movdqu 16(%esi),%xmm3\r
+ movups %xmm4,32(%edi)\r
+ movdqu 32(%esi),%xmm4\r
+ movups %xmm5,48(%edi)\r
+ movdqu 48(%esi),%xmm5\r
+ movups %xmm6,64(%edi)\r
+ movdqu 64(%esi),%xmm6\r
+ movups %xmm7,80(%edi)\r
+ leal 96(%edi),%edi\r
+ movdqu 80(%esi),%xmm7\r
+ leal 96(%esi),%esi\r
+.L015ecb_enc_loop6_enter:\r
+ call _aesni_encrypt6\r
+ movl %ebp,%edx\r
+ movl %ebx,%ecx\r
+ subl $96,%eax\r
+ jnc .L016ecb_enc_loop6\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ movups %xmm6,64(%edi)\r
+ movups %xmm7,80(%edi)\r
+ leal 96(%edi),%edi\r
+ addl $96,%eax\r
+ jz .L012ecb_ret\r
+.L014ecb_enc_tail:\r
+ movups (%esi),%xmm2\r
+ cmpl $32,%eax\r
+ jb .L017ecb_enc_one\r
+ movups 16(%esi),%xmm3\r
+ je .L018ecb_enc_two\r
+ movups 32(%esi),%xmm4\r
+ cmpl $64,%eax\r
+ jb .L019ecb_enc_three\r
+ movups 48(%esi),%xmm5\r
+ je .L020ecb_enc_four\r
+ movups 64(%esi),%xmm6\r
+ xorps %xmm7,%xmm7\r
+ call _aesni_encrypt6\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ movups %xmm6,64(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L017ecb_enc_one:\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L021enc1_loop_3:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L021enc1_loop_3\r
+.byte 102,15,56,221,209\r
+ movups %xmm2,(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L018ecb_enc_two:\r
+ call _aesni_encrypt2\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L019ecb_enc_three:\r
+ call _aesni_encrypt3\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L020ecb_enc_four:\r
+ call _aesni_encrypt4\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L013ecb_decrypt:\r
+ movl %edx,%ebp\r
+ movl %ecx,%ebx\r
+ cmpl $96,%eax\r
+ jb .L022ecb_dec_tail\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movdqu 64(%esi),%xmm6\r
+ movdqu 80(%esi),%xmm7\r
+ leal 96(%esi),%esi\r
+ subl $96,%eax\r
+ jmp .L023ecb_dec_loop6_enter\r
+.align 16\r
+.L024ecb_dec_loop6:\r
+ movups %xmm2,(%edi)\r
+ movdqu (%esi),%xmm2\r
+ movups %xmm3,16(%edi)\r
+ movdqu 16(%esi),%xmm3\r
+ movups %xmm4,32(%edi)\r
+ movdqu 32(%esi),%xmm4\r
+ movups %xmm5,48(%edi)\r
+ movdqu 48(%esi),%xmm5\r
+ movups %xmm6,64(%edi)\r
+ movdqu 64(%esi),%xmm6\r
+ movups %xmm7,80(%edi)\r
+ leal 96(%edi),%edi\r
+ movdqu 80(%esi),%xmm7\r
+ leal 96(%esi),%esi\r
+.L023ecb_dec_loop6_enter:\r
+ call _aesni_decrypt6\r
+ movl %ebp,%edx\r
+ movl %ebx,%ecx\r
+ subl $96,%eax\r
+ jnc .L024ecb_dec_loop6\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ movups %xmm6,64(%edi)\r
+ movups %xmm7,80(%edi)\r
+ leal 96(%edi),%edi\r
+ addl $96,%eax\r
+ jz .L012ecb_ret\r
+.L022ecb_dec_tail:\r
+ movups (%esi),%xmm2\r
+ cmpl $32,%eax\r
+ jb .L025ecb_dec_one\r
+ movups 16(%esi),%xmm3\r
+ je .L026ecb_dec_two\r
+ movups 32(%esi),%xmm4\r
+ cmpl $64,%eax\r
+ jb .L027ecb_dec_three\r
+ movups 48(%esi),%xmm5\r
+ je .L028ecb_dec_four\r
+ movups 64(%esi),%xmm6\r
+ xorps %xmm7,%xmm7\r
+ call _aesni_decrypt6\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ movups %xmm6,64(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L025ecb_dec_one:\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L029dec1_loop_4:\r
+.byte 102,15,56,222,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L029dec1_loop_4\r
+.byte 102,15,56,223,209\r
+ movups %xmm2,(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L026ecb_dec_two:\r
+ call _aesni_decrypt2\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L027ecb_dec_three:\r
+ call _aesni_decrypt3\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ jmp .L012ecb_ret\r
+.align 16\r
+.L028ecb_dec_four:\r
+ call _aesni_decrypt4\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+.L012ecb_ret:\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin\r
+.globl aesni_ccm64_encrypt_blocks\r
+.type aesni_ccm64_encrypt_blocks,@function\r
+.align 16\r
+aesni_ccm64_encrypt_blocks:\r
+.L_aesni_ccm64_encrypt_blocks_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 20(%esp),%esi\r
+ movl 24(%esp),%edi\r
+ movl 28(%esp),%eax\r
+ movl 32(%esp),%edx\r
+ movl 36(%esp),%ebx\r
+ movl 40(%esp),%ecx\r
+ movl %esp,%ebp\r
+ subl $60,%esp\r
+ andl $-16,%esp\r
+ movl %ebp,48(%esp)\r
+ movdqu (%ebx),%xmm7\r
+ movdqu (%ecx),%xmm3\r
+ movl 240(%edx),%ecx\r
+ movl $202182159,(%esp)\r
+ movl $134810123,4(%esp)\r
+ movl $67438087,8(%esp)\r
+ movl $66051,12(%esp)\r
+ movl $1,%ebx\r
+ xorl %ebp,%ebp\r
+ movl %ebx,16(%esp)\r
+ movl %ebp,20(%esp)\r
+ movl %ebp,24(%esp)\r
+ movl %ebp,28(%esp)\r
+ shll $4,%ecx\r
+ movl $16,%ebx\r
+ leal (%edx),%ebp\r
+ movdqa (%esp),%xmm5\r
+ movdqa %xmm7,%xmm2\r
+ leal 32(%edx,%ecx,1),%edx\r
+ subl %ecx,%ebx\r
+.byte 102,15,56,0,253\r
+.L030ccm64_enc_outer:\r
+ movups (%ebp),%xmm0\r
+ movl %ebx,%ecx\r
+ movups (%esi),%xmm6\r
+ xorps %xmm0,%xmm2\r
+ movups 16(%ebp),%xmm1\r
+ xorps %xmm6,%xmm0\r
+ xorps %xmm0,%xmm3\r
+ movups 32(%ebp),%xmm0\r
+.L031ccm64_enc2_loop:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L031ccm64_enc2_loop\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ paddq 16(%esp),%xmm7\r
+ decl %eax\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+ leal 16(%esi),%esi\r
+ xorps %xmm2,%xmm6\r
+ movdqa %xmm7,%xmm2\r
+ movups %xmm6,(%edi)\r
+.byte 102,15,56,0,213\r
+ leal 16(%edi),%edi\r
+ jnz .L030ccm64_enc_outer\r
+ movl 48(%esp),%esp\r
+ movl 40(%esp),%edi\r
+ movups %xmm3,(%edi)\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin\r
+.globl aesni_ccm64_decrypt_blocks\r
+.type aesni_ccm64_decrypt_blocks,@function\r
+.align 16\r
+aesni_ccm64_decrypt_blocks:\r
+.L_aesni_ccm64_decrypt_blocks_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 20(%esp),%esi\r
+ movl 24(%esp),%edi\r
+ movl 28(%esp),%eax\r
+ movl 32(%esp),%edx\r
+ movl 36(%esp),%ebx\r
+ movl 40(%esp),%ecx\r
+ movl %esp,%ebp\r
+ subl $60,%esp\r
+ andl $-16,%esp\r
+ movl %ebp,48(%esp)\r
+ movdqu (%ebx),%xmm7\r
+ movdqu (%ecx),%xmm3\r
+ movl 240(%edx),%ecx\r
+ movl $202182159,(%esp)\r
+ movl $134810123,4(%esp)\r
+ movl $67438087,8(%esp)\r
+ movl $66051,12(%esp)\r
+ movl $1,%ebx\r
+ xorl %ebp,%ebp\r
+ movl %ebx,16(%esp)\r
+ movl %ebp,20(%esp)\r
+ movl %ebp,24(%esp)\r
+ movl %ebp,28(%esp)\r
+ movdqa (%esp),%xmm5\r
+ movdqa %xmm7,%xmm2\r
+ movl %edx,%ebp\r
+ movl %ecx,%ebx\r
+.byte 102,15,56,0,253\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L032enc1_loop_5:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L032enc1_loop_5\r
+.byte 102,15,56,221,209\r
+ shll $4,%ebx\r
+ movl $16,%ecx\r
+ movups (%esi),%xmm6\r
+ paddq 16(%esp),%xmm7\r
+ leal 16(%esi),%esi\r
+ subl %ebx,%ecx\r
+ leal 32(%ebp,%ebx,1),%edx\r
+ movl %ecx,%ebx\r
+ jmp .L033ccm64_dec_outer\r
+.align 16\r
+.L033ccm64_dec_outer:\r
+ xorps %xmm2,%xmm6\r
+ movdqa %xmm7,%xmm2\r
+ movups %xmm6,(%edi)\r
+ leal 16(%edi),%edi\r
+.byte 102,15,56,0,213\r
+ subl $1,%eax\r
+ jz .L034ccm64_dec_break\r
+ movups (%ebp),%xmm0\r
+ movl %ebx,%ecx\r
+ movups 16(%ebp),%xmm1\r
+ xorps %xmm0,%xmm6\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ movups 32(%ebp),%xmm0\r
+.L035ccm64_dec2_loop:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ movups (%edx,%ecx,1),%xmm1\r
+ addl $32,%ecx\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+ jnz .L035ccm64_dec2_loop\r
+ movups (%esi),%xmm6\r
+ paddq 16(%esp),%xmm7\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+ leal 16(%esi),%esi\r
+ jmp .L033ccm64_dec_outer\r
+.align 16\r
+.L034ccm64_dec_break:\r
+ movl 240(%ebp),%ecx\r
+ movl %ebp,%edx\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ xorps %xmm0,%xmm6\r
+ leal 32(%edx),%edx\r
+ xorps %xmm6,%xmm3\r
+.L036enc1_loop_6:\r
+.byte 102,15,56,220,217\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L036enc1_loop_6\r
+.byte 102,15,56,221,217\r
+ movl 48(%esp),%esp\r
+ movl 40(%esp),%edi\r
+ movups %xmm3,(%edi)\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin\r
+.globl aesni_ctr32_encrypt_blocks\r
+.type aesni_ctr32_encrypt_blocks,@function\r
+.align 16\r
+aesni_ctr32_encrypt_blocks:\r
+.L_aesni_ctr32_encrypt_blocks_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 20(%esp),%esi\r
+ movl 24(%esp),%edi\r
+ movl 28(%esp),%eax\r
+ movl 32(%esp),%edx\r
+ movl 36(%esp),%ebx\r
+ movl %esp,%ebp\r
+ subl $88,%esp\r
+ andl $-16,%esp\r
+ movl %ebp,80(%esp)\r
+ cmpl $1,%eax\r
+ je .L037ctr32_one_shortcut\r
+ movdqu (%ebx),%xmm7\r
+ movl $202182159,(%esp)\r
+ movl $134810123,4(%esp)\r
+ movl $67438087,8(%esp)\r
+ movl $66051,12(%esp)\r
+ movl $6,%ecx\r
+ xorl %ebp,%ebp\r
+ movl %ecx,16(%esp)\r
+ movl %ecx,20(%esp)\r
+ movl %ecx,24(%esp)\r
+ movl %ebp,28(%esp)\r
+.byte 102,15,58,22,251,3\r
+.byte 102,15,58,34,253,3\r
+ movl 240(%edx),%ecx\r
+ bswap %ebx\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ movdqa (%esp),%xmm2\r
+.byte 102,15,58,34,195,0\r
+ leal 3(%ebx),%ebp\r
+.byte 102,15,58,34,205,0\r
+ incl %ebx\r
+.byte 102,15,58,34,195,1\r
+ incl %ebp\r
+.byte 102,15,58,34,205,1\r
+ incl %ebx\r
+.byte 102,15,58,34,195,2\r
+ incl %ebp\r
+.byte 102,15,58,34,205,2\r
+ movdqa %xmm0,48(%esp)\r
+.byte 102,15,56,0,194\r
+ movdqu (%edx),%xmm6\r
+ movdqa %xmm1,64(%esp)\r
+.byte 102,15,56,0,202\r
+ pshufd $192,%xmm0,%xmm2\r
+ pshufd $128,%xmm0,%xmm3\r
+ cmpl $6,%eax\r
+ jb .L038ctr32_tail\r
+ pxor %xmm6,%xmm7\r
+ shll $4,%ecx\r
+ movl $16,%ebx\r
+ movdqa %xmm7,32(%esp)\r
+ movl %edx,%ebp\r
+ subl %ecx,%ebx\r
+ leal 32(%edx,%ecx,1),%edx\r
+ subl $6,%eax\r
+ jmp .L039ctr32_loop6\r
+.align 16\r
+.L039ctr32_loop6:\r
+ pshufd $64,%xmm0,%xmm4\r
+ movdqa 32(%esp),%xmm0\r
+ pshufd $192,%xmm1,%xmm5\r
+ pxor %xmm0,%xmm2\r
+ pshufd $128,%xmm1,%xmm6\r
+ pxor %xmm0,%xmm3\r
+ pshufd $64,%xmm1,%xmm7\r
+ movups 16(%ebp),%xmm1\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm0,%xmm5\r
+.byte 102,15,56,220,209\r
+ pxor %xmm0,%xmm6\r
+ pxor %xmm0,%xmm7\r
+.byte 102,15,56,220,217\r
+ movups 32(%ebp),%xmm0\r
+ movl %ebx,%ecx\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ call .L_aesni_encrypt6_enter\r
+ movups (%esi),%xmm1\r
+ movups 16(%esi),%xmm0\r
+ xorps %xmm1,%xmm2\r
+ movups 32(%esi),%xmm1\r
+ xorps %xmm0,%xmm3\r
+ movups %xmm2,(%edi)\r
+ movdqa 16(%esp),%xmm0\r
+ xorps %xmm1,%xmm4\r
+ movdqa 64(%esp),%xmm1\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ paddd %xmm0,%xmm1\r
+ paddd 48(%esp),%xmm0\r
+ movdqa (%esp),%xmm2\r
+ movups 48(%esi),%xmm3\r
+ movups 64(%esi),%xmm4\r
+ xorps %xmm3,%xmm5\r
+ movups 80(%esi),%xmm3\r
+ leal 96(%esi),%esi\r
+ movdqa %xmm0,48(%esp)\r
+.byte 102,15,56,0,194\r
+ xorps %xmm4,%xmm6\r
+ movups %xmm5,48(%edi)\r
+ xorps %xmm3,%xmm7\r
+ movdqa %xmm1,64(%esp)\r
+.byte 102,15,56,0,202\r
+ movups %xmm6,64(%edi)\r
+ pshufd $192,%xmm0,%xmm2\r
+ movups %xmm7,80(%edi)\r
+ leal 96(%edi),%edi\r
+ pshufd $128,%xmm0,%xmm3\r
+ subl $6,%eax\r
+ jnc .L039ctr32_loop6\r
+ addl $6,%eax\r
+ jz .L040ctr32_ret\r
+ movdqu (%ebp),%xmm7\r
+ movl %ebp,%edx\r
+ pxor 32(%esp),%xmm7\r
+ movl 240(%ebp),%ecx\r
+.L038ctr32_tail:\r
+ por %xmm7,%xmm2\r
+ cmpl $2,%eax\r
+ jb .L041ctr32_one\r
+ pshufd $64,%xmm0,%xmm4\r
+ por %xmm7,%xmm3\r
+ je .L042ctr32_two\r
+ pshufd $192,%xmm1,%xmm5\r
+ por %xmm7,%xmm4\r
+ cmpl $4,%eax\r
+ jb .L043ctr32_three\r
+ pshufd $128,%xmm1,%xmm6\r
+ por %xmm7,%xmm5\r
+ je .L044ctr32_four\r
+ por %xmm7,%xmm6\r
+ call _aesni_encrypt6\r
+ movups (%esi),%xmm1\r
+ movups 16(%esi),%xmm0\r
+ xorps %xmm1,%xmm2\r
+ movups 32(%esi),%xmm1\r
+ xorps %xmm0,%xmm3\r
+ movups 48(%esi),%xmm0\r
+ xorps %xmm1,%xmm4\r
+ movups 64(%esi),%xmm1\r
+ xorps %xmm0,%xmm5\r
+ movups %xmm2,(%edi)\r
+ xorps %xmm1,%xmm6\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ movups %xmm6,64(%edi)\r
+ jmp .L040ctr32_ret\r
+.align 16\r
+.L037ctr32_one_shortcut:\r
+ movups (%ebx),%xmm2\r
+ movl 240(%edx),%ecx\r
+.L041ctr32_one:\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L045enc1_loop_7:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L045enc1_loop_7\r
+.byte 102,15,56,221,209\r
+ movups (%esi),%xmm6\r
+ xorps %xmm2,%xmm6\r
+ movups %xmm6,(%edi)\r
+ jmp .L040ctr32_ret\r
+.align 16\r
+.L042ctr32_two:\r
+ call _aesni_encrypt2\r
+ movups (%esi),%xmm5\r
+ movups 16(%esi),%xmm6\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ jmp .L040ctr32_ret\r
+.align 16\r
+.L043ctr32_three:\r
+ call _aesni_encrypt3\r
+ movups (%esi),%xmm5\r
+ movups 16(%esi),%xmm6\r
+ xorps %xmm5,%xmm2\r
+ movups 32(%esi),%xmm7\r
+ xorps %xmm6,%xmm3\r
+ movups %xmm2,(%edi)\r
+ xorps %xmm7,%xmm4\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ jmp .L040ctr32_ret\r
+.align 16\r
+.L044ctr32_four:\r
+ call _aesni_encrypt4\r
+ movups (%esi),%xmm6\r
+ movups 16(%esi),%xmm7\r
+ movups 32(%esi),%xmm1\r
+ xorps %xmm6,%xmm2\r
+ movups 48(%esi),%xmm0\r
+ xorps %xmm7,%xmm3\r
+ movups %xmm2,(%edi)\r
+ xorps %xmm1,%xmm4\r
+ movups %xmm3,16(%edi)\r
+ xorps %xmm0,%xmm5\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+.L040ctr32_ret:\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ movdqa %xmm0,32(%esp)\r
+ pxor %xmm5,%xmm5\r
+ movdqa %xmm0,48(%esp)\r
+ pxor %xmm6,%xmm6\r
+ movdqa %xmm0,64(%esp)\r
+ pxor %xmm7,%xmm7\r
+ movl 80(%esp),%esp\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin\r
+.globl aesni_xts_encrypt\r
+.type aesni_xts_encrypt,@function\r
+.align 16\r
+aesni_xts_encrypt:\r
+.L_aesni_xts_encrypt_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 36(%esp),%edx\r
+ movl 40(%esp),%esi\r
+ movl 240(%edx),%ecx\r
+ movups (%esi),%xmm2\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L046enc1_loop_8:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L046enc1_loop_8\r
+.byte 102,15,56,221,209\r
+ movl 20(%esp),%esi\r
+ movl 24(%esp),%edi\r
+ movl 28(%esp),%eax\r
+ movl 32(%esp),%edx\r
+ movl %esp,%ebp\r
+ subl $120,%esp\r
+ movl 240(%edx),%ecx\r
+ andl $-16,%esp\r
+ movl $135,96(%esp)\r
+ movl $0,100(%esp)\r
+ movl $1,104(%esp)\r
+ movl $0,108(%esp)\r
+ movl %eax,112(%esp)\r
+ movl %ebp,116(%esp)\r
+ movdqa %xmm2,%xmm1\r
+ pxor %xmm0,%xmm0\r
+ movdqa 96(%esp),%xmm3\r
+ pcmpgtd %xmm1,%xmm0\r
+ andl $-16,%eax\r
+ movl %edx,%ebp\r
+ movl %ecx,%ebx\r
+ subl $96,%eax\r
+ jc .L047xts_enc_short\r
+ shll $4,%ecx\r
+ movl $16,%ebx\r
+ subl %ecx,%ebx\r
+ leal 32(%edx,%ecx,1),%edx\r
+ jmp .L048xts_enc_loop6\r
+.align 16\r
+.L048xts_enc_loop6:\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,16(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,32(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,48(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ pshufd $19,%xmm0,%xmm7\r
+ movdqa %xmm1,64(%esp)\r
+ paddq %xmm1,%xmm1\r
+ movups (%ebp),%xmm0\r
+ pand %xmm3,%xmm7\r
+ movups (%esi),%xmm2\r
+ pxor %xmm1,%xmm7\r
+ movl %ebx,%ecx\r
+ movdqu 16(%esi),%xmm3\r
+ xorps %xmm0,%xmm2\r
+ movdqu 32(%esi),%xmm4\r
+ pxor %xmm0,%xmm3\r
+ movdqu 48(%esi),%xmm5\r
+ pxor %xmm0,%xmm4\r
+ movdqu 64(%esi),%xmm6\r
+ pxor %xmm0,%xmm5\r
+ movdqu 80(%esi),%xmm1\r
+ pxor %xmm0,%xmm6\r
+ leal 96(%esi),%esi\r
+ pxor (%esp),%xmm2\r
+ movdqa %xmm7,80(%esp)\r
+ pxor %xmm1,%xmm7\r
+ movups 16(%ebp),%xmm1\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+.byte 102,15,56,220,209\r
+ pxor 48(%esp),%xmm5\r
+ pxor 64(%esp),%xmm6\r
+.byte 102,15,56,220,217\r
+ pxor %xmm0,%xmm7\r
+ movups 32(%ebp),%xmm0\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ call .L_aesni_encrypt6_enter\r
+ movdqa 80(%esp),%xmm1\r
+ pxor %xmm0,%xmm0\r
+ xorps (%esp),%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ xorps 16(%esp),%xmm3\r
+ movups %xmm2,(%edi)\r
+ xorps 32(%esp),%xmm4\r
+ movups %xmm3,16(%edi)\r
+ xorps 48(%esp),%xmm5\r
+ movups %xmm4,32(%edi)\r
+ xorps 64(%esp),%xmm6\r
+ movups %xmm5,48(%edi)\r
+ xorps %xmm1,%xmm7\r
+ movups %xmm6,64(%edi)\r
+ pshufd $19,%xmm0,%xmm2\r
+ movups %xmm7,80(%edi)\r
+ leal 96(%edi),%edi\r
+ movdqa 96(%esp),%xmm3\r
+ pxor %xmm0,%xmm0\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ subl $96,%eax\r
+ jnc .L048xts_enc_loop6\r
+ movl 240(%ebp),%ecx\r
+ movl %ebp,%edx\r
+ movl %ecx,%ebx\r
+.L047xts_enc_short:\r
+ addl $96,%eax\r
+ jz .L049xts_enc_done6x\r
+ movdqa %xmm1,%xmm5\r
+ cmpl $32,%eax\r
+ jb .L050xts_enc_one\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ je .L051xts_enc_two\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,%xmm6\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ cmpl $64,%eax\r
+ jb .L052xts_enc_three\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,%xmm7\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm5,(%esp)\r
+ movdqa %xmm6,16(%esp)\r
+ je .L053xts_enc_four\r
+ movdqa %xmm7,32(%esp)\r
+ pshufd $19,%xmm0,%xmm7\r
+ movdqa %xmm1,48(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm7\r
+ pxor %xmm1,%xmm7\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ pxor (%esp),%xmm2\r
+ movdqu 48(%esi),%xmm5\r
+ pxor 16(%esp),%xmm3\r
+ movdqu 64(%esi),%xmm6\r
+ pxor 32(%esp),%xmm4\r
+ leal 80(%esi),%esi\r
+ pxor 48(%esp),%xmm5\r
+ movdqa %xmm7,64(%esp)\r
+ pxor %xmm7,%xmm6\r
+ call _aesni_encrypt6\r
+ movaps 64(%esp),%xmm1\r
+ xorps (%esp),%xmm2\r
+ xorps 16(%esp),%xmm3\r
+ xorps 32(%esp),%xmm4\r
+ movups %xmm2,(%edi)\r
+ xorps 48(%esp),%xmm5\r
+ movups %xmm3,16(%edi)\r
+ xorps %xmm1,%xmm6\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ movups %xmm6,64(%edi)\r
+ leal 80(%edi),%edi\r
+ jmp .L054xts_enc_done\r
+.align 16\r
+.L050xts_enc_one:\r
+ movups (%esi),%xmm2\r
+ leal 16(%esi),%esi\r
+ xorps %xmm5,%xmm2\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L055enc1_loop_9:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L055enc1_loop_9\r
+.byte 102,15,56,221,209\r
+ xorps %xmm5,%xmm2\r
+ movups %xmm2,(%edi)\r
+ leal 16(%edi),%edi\r
+ movdqa %xmm5,%xmm1\r
+ jmp .L054xts_enc_done\r
+.align 16\r
+.L051xts_enc_two:\r
+ movaps %xmm1,%xmm6\r
+ movups (%esi),%xmm2\r
+ movups 16(%esi),%xmm3\r
+ leal 32(%esi),%esi\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ call _aesni_encrypt2\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ leal 32(%edi),%edi\r
+ movdqa %xmm6,%xmm1\r
+ jmp .L054xts_enc_done\r
+.align 16\r
+.L052xts_enc_three:\r
+ movaps %xmm1,%xmm7\r
+ movups (%esi),%xmm2\r
+ movups 16(%esi),%xmm3\r
+ movups 32(%esi),%xmm4\r
+ leal 48(%esi),%esi\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ xorps %xmm7,%xmm4\r
+ call _aesni_encrypt3\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ xorps %xmm7,%xmm4\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ leal 48(%edi),%edi\r
+ movdqa %xmm7,%xmm1\r
+ jmp .L054xts_enc_done\r
+.align 16\r
+.L053xts_enc_four:\r
+ movaps %xmm1,%xmm6\r
+ movups (%esi),%xmm2\r
+ movups 16(%esi),%xmm3\r
+ movups 32(%esi),%xmm4\r
+ xorps (%esp),%xmm2\r
+ movups 48(%esi),%xmm5\r
+ leal 64(%esi),%esi\r
+ xorps 16(%esp),%xmm3\r
+ xorps %xmm7,%xmm4\r
+ xorps %xmm6,%xmm5\r
+ call _aesni_encrypt4\r
+ xorps (%esp),%xmm2\r
+ xorps 16(%esp),%xmm3\r
+ xorps %xmm7,%xmm4\r
+ movups %xmm2,(%edi)\r
+ xorps %xmm6,%xmm5\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ leal 64(%edi),%edi\r
+ movdqa %xmm6,%xmm1\r
+ jmp .L054xts_enc_done\r
+.align 16\r
+.L049xts_enc_done6x:\r
+ movl 112(%esp),%eax\r
+ andl $15,%eax\r
+ jz .L056xts_enc_ret\r
+ movdqa %xmm1,%xmm5\r
+ movl %eax,112(%esp)\r
+ jmp .L057xts_enc_steal\r
+.align 16\r
+.L054xts_enc_done:\r
+ movl 112(%esp),%eax\r
+ pxor %xmm0,%xmm0\r
+ andl $15,%eax\r
+ jz .L056xts_enc_ret\r
+ pcmpgtd %xmm1,%xmm0\r
+ movl %eax,112(%esp)\r
+ pshufd $19,%xmm0,%xmm5\r
+ paddq %xmm1,%xmm1\r
+ pand 96(%esp),%xmm5\r
+ pxor %xmm1,%xmm5\r
+.L057xts_enc_steal:\r
+ movzbl (%esi),%ecx\r
+ movzbl -16(%edi),%edx\r
+ leal 1(%esi),%esi\r
+ movb %cl,-16(%edi)\r
+ movb %dl,(%edi)\r
+ leal 1(%edi),%edi\r
+ subl $1,%eax\r
+ jnz .L057xts_enc_steal\r
+ subl 112(%esp),%edi\r
+ movl %ebp,%edx\r
+ movl %ebx,%ecx\r
+ movups -16(%edi),%xmm2\r
+ xorps %xmm5,%xmm2\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L058enc1_loop_10:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L058enc1_loop_10\r
+.byte 102,15,56,221,209\r
+ xorps %xmm5,%xmm2\r
+ movups %xmm2,-16(%edi)\r
+.L056xts_enc_ret:\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ movdqa %xmm0,(%esp)\r
+ pxor %xmm3,%xmm3\r
+ movdqa %xmm0,16(%esp)\r
+ pxor %xmm4,%xmm4\r
+ movdqa %xmm0,32(%esp)\r
+ pxor %xmm5,%xmm5\r
+ movdqa %xmm0,48(%esp)\r
+ pxor %xmm6,%xmm6\r
+ movdqa %xmm0,64(%esp)\r
+ pxor %xmm7,%xmm7\r
+ movdqa %xmm0,80(%esp)\r
+ movl 116(%esp),%esp\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin\r
+.globl aesni_xts_decrypt\r
+.type aesni_xts_decrypt,@function\r
+.align 16\r
+aesni_xts_decrypt:\r
+.L_aesni_xts_decrypt_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 36(%esp),%edx\r
+ movl 40(%esp),%esi\r
+ movl 240(%edx),%ecx\r
+ movups (%esi),%xmm2\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L059enc1_loop_11:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L059enc1_loop_11\r
+.byte 102,15,56,221,209\r
+ movl 20(%esp),%esi\r
+ movl 24(%esp),%edi\r
+ movl 28(%esp),%eax\r
+ movl 32(%esp),%edx\r
+ movl %esp,%ebp\r
+ subl $120,%esp\r
+ andl $-16,%esp\r
+ xorl %ebx,%ebx\r
+ testl $15,%eax\r
+ setnz %bl\r
+ shll $4,%ebx\r
+ subl %ebx,%eax\r
+ movl $135,96(%esp)\r
+ movl $0,100(%esp)\r
+ movl $1,104(%esp)\r
+ movl $0,108(%esp)\r
+ movl %eax,112(%esp)\r
+ movl %ebp,116(%esp)\r
+ movl 240(%edx),%ecx\r
+ movl %edx,%ebp\r
+ movl %ecx,%ebx\r
+ movdqa %xmm2,%xmm1\r
+ pxor %xmm0,%xmm0\r
+ movdqa 96(%esp),%xmm3\r
+ pcmpgtd %xmm1,%xmm0\r
+ andl $-16,%eax\r
+ subl $96,%eax\r
+ jc .L060xts_dec_short\r
+ shll $4,%ecx\r
+ movl $16,%ebx\r
+ subl %ecx,%ebx\r
+ leal 32(%edx,%ecx,1),%edx\r
+ jmp .L061xts_dec_loop6\r
+.align 16\r
+.L061xts_dec_loop6:\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,16(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,32(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,48(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ pshufd $19,%xmm0,%xmm7\r
+ movdqa %xmm1,64(%esp)\r
+ paddq %xmm1,%xmm1\r
+ movups (%ebp),%xmm0\r
+ pand %xmm3,%xmm7\r
+ movups (%esi),%xmm2\r
+ pxor %xmm1,%xmm7\r
+ movl %ebx,%ecx\r
+ movdqu 16(%esi),%xmm3\r
+ xorps %xmm0,%xmm2\r
+ movdqu 32(%esi),%xmm4\r
+ pxor %xmm0,%xmm3\r
+ movdqu 48(%esi),%xmm5\r
+ pxor %xmm0,%xmm4\r
+ movdqu 64(%esi),%xmm6\r
+ pxor %xmm0,%xmm5\r
+ movdqu 80(%esi),%xmm1\r
+ pxor %xmm0,%xmm6\r
+ leal 96(%esi),%esi\r
+ pxor (%esp),%xmm2\r
+ movdqa %xmm7,80(%esp)\r
+ pxor %xmm1,%xmm7\r
+ movups 16(%ebp),%xmm1\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+.byte 102,15,56,222,209\r
+ pxor 48(%esp),%xmm5\r
+ pxor 64(%esp),%xmm6\r
+.byte 102,15,56,222,217\r
+ pxor %xmm0,%xmm7\r
+ movups 32(%ebp),%xmm0\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ call .L_aesni_decrypt6_enter\r
+ movdqa 80(%esp),%xmm1\r
+ pxor %xmm0,%xmm0\r
+ xorps (%esp),%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ xorps 16(%esp),%xmm3\r
+ movups %xmm2,(%edi)\r
+ xorps 32(%esp),%xmm4\r
+ movups %xmm3,16(%edi)\r
+ xorps 48(%esp),%xmm5\r
+ movups %xmm4,32(%edi)\r
+ xorps 64(%esp),%xmm6\r
+ movups %xmm5,48(%edi)\r
+ xorps %xmm1,%xmm7\r
+ movups %xmm6,64(%edi)\r
+ pshufd $19,%xmm0,%xmm2\r
+ movups %xmm7,80(%edi)\r
+ leal 96(%edi),%edi\r
+ movdqa 96(%esp),%xmm3\r
+ pxor %xmm0,%xmm0\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ subl $96,%eax\r
+ jnc .L061xts_dec_loop6\r
+ movl 240(%ebp),%ecx\r
+ movl %ebp,%edx\r
+ movl %ecx,%ebx\r
+.L060xts_dec_short:\r
+ addl $96,%eax\r
+ jz .L062xts_dec_done6x\r
+ movdqa %xmm1,%xmm5\r
+ cmpl $32,%eax\r
+ jb .L063xts_dec_one\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ je .L064xts_dec_two\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,%xmm6\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ cmpl $64,%eax\r
+ jb .L065xts_dec_three\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa %xmm1,%xmm7\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm5,(%esp)\r
+ movdqa %xmm6,16(%esp)\r
+ je .L066xts_dec_four\r
+ movdqa %xmm7,32(%esp)\r
+ pshufd $19,%xmm0,%xmm7\r
+ movdqa %xmm1,48(%esp)\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm7\r
+ pxor %xmm1,%xmm7\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ pxor (%esp),%xmm2\r
+ movdqu 48(%esi),%xmm5\r
+ pxor 16(%esp),%xmm3\r
+ movdqu 64(%esi),%xmm6\r
+ pxor 32(%esp),%xmm4\r
+ leal 80(%esi),%esi\r
+ pxor 48(%esp),%xmm5\r
+ movdqa %xmm7,64(%esp)\r
+ pxor %xmm7,%xmm6\r
+ call _aesni_decrypt6\r
+ movaps 64(%esp),%xmm1\r
+ xorps (%esp),%xmm2\r
+ xorps 16(%esp),%xmm3\r
+ xorps 32(%esp),%xmm4\r
+ movups %xmm2,(%edi)\r
+ xorps 48(%esp),%xmm5\r
+ movups %xmm3,16(%edi)\r
+ xorps %xmm1,%xmm6\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ movups %xmm6,64(%edi)\r
+ leal 80(%edi),%edi\r
+ jmp .L067xts_dec_done\r
+.align 16\r
+.L063xts_dec_one:\r
+ movups (%esi),%xmm2\r
+ leal 16(%esi),%esi\r
+ xorps %xmm5,%xmm2\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L068dec1_loop_12:\r
+.byte 102,15,56,222,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L068dec1_loop_12\r
+.byte 102,15,56,223,209\r
+ xorps %xmm5,%xmm2\r
+ movups %xmm2,(%edi)\r
+ leal 16(%edi),%edi\r
+ movdqa %xmm5,%xmm1\r
+ jmp .L067xts_dec_done\r
+.align 16\r
+.L064xts_dec_two:\r
+ movaps %xmm1,%xmm6\r
+ movups (%esi),%xmm2\r
+ movups 16(%esi),%xmm3\r
+ leal 32(%esi),%esi\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ call _aesni_decrypt2\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ leal 32(%edi),%edi\r
+ movdqa %xmm6,%xmm1\r
+ jmp .L067xts_dec_done\r
+.align 16\r
+.L065xts_dec_three:\r
+ movaps %xmm1,%xmm7\r
+ movups (%esi),%xmm2\r
+ movups 16(%esi),%xmm3\r
+ movups 32(%esi),%xmm4\r
+ leal 48(%esi),%esi\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ xorps %xmm7,%xmm4\r
+ call _aesni_decrypt3\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ xorps %xmm7,%xmm4\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ leal 48(%edi),%edi\r
+ movdqa %xmm7,%xmm1\r
+ jmp .L067xts_dec_done\r
+.align 16\r
+.L066xts_dec_four:\r
+ movaps %xmm1,%xmm6\r
+ movups (%esi),%xmm2\r
+ movups 16(%esi),%xmm3\r
+ movups 32(%esi),%xmm4\r
+ xorps (%esp),%xmm2\r
+ movups 48(%esi),%xmm5\r
+ leal 64(%esi),%esi\r
+ xorps 16(%esp),%xmm3\r
+ xorps %xmm7,%xmm4\r
+ xorps %xmm6,%xmm5\r
+ call _aesni_decrypt4\r
+ xorps (%esp),%xmm2\r
+ xorps 16(%esp),%xmm3\r
+ xorps %xmm7,%xmm4\r
+ movups %xmm2,(%edi)\r
+ xorps %xmm6,%xmm5\r
+ movups %xmm3,16(%edi)\r
+ movups %xmm4,32(%edi)\r
+ movups %xmm5,48(%edi)\r
+ leal 64(%edi),%edi\r
+ movdqa %xmm6,%xmm1\r
+ jmp .L067xts_dec_done\r
+.align 16\r
+.L062xts_dec_done6x:\r
+ movl 112(%esp),%eax\r
+ andl $15,%eax\r
+ jz .L069xts_dec_ret\r
+ movl %eax,112(%esp)\r
+ jmp .L070xts_dec_only_one_more\r
+.align 16\r
+.L067xts_dec_done:\r
+ movl 112(%esp),%eax\r
+ pxor %xmm0,%xmm0\r
+ andl $15,%eax\r
+ jz .L069xts_dec_ret\r
+ pcmpgtd %xmm1,%xmm0\r
+ movl %eax,112(%esp)\r
+ pshufd $19,%xmm0,%xmm2\r
+ pxor %xmm0,%xmm0\r
+ movdqa 96(%esp),%xmm3\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm2\r
+ pcmpgtd %xmm1,%xmm0\r
+ pxor %xmm2,%xmm1\r
+.L070xts_dec_only_one_more:\r
+ pshufd $19,%xmm0,%xmm5\r
+ movdqa %xmm1,%xmm6\r
+ paddq %xmm1,%xmm1\r
+ pand %xmm3,%xmm5\r
+ pxor %xmm1,%xmm5\r
+ movl %ebp,%edx\r
+ movl %ebx,%ecx\r
+ movups (%esi),%xmm2\r
+ xorps %xmm5,%xmm2\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L071dec1_loop_13:\r
+.byte 102,15,56,222,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L071dec1_loop_13\r
+.byte 102,15,56,223,209\r
+ xorps %xmm5,%xmm2\r
+ movups %xmm2,(%edi)\r
+.L072xts_dec_steal:\r
+ movzbl 16(%esi),%ecx\r
+ movzbl (%edi),%edx\r
+ leal 1(%esi),%esi\r
+ movb %cl,(%edi)\r
+ movb %dl,16(%edi)\r
+ leal 1(%edi),%edi\r
+ subl $1,%eax\r
+ jnz .L072xts_dec_steal\r
+ subl 112(%esp),%edi\r
+ movl %ebp,%edx\r
+ movl %ebx,%ecx\r
+ movups (%edi),%xmm2\r
+ xorps %xmm6,%xmm2\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L073dec1_loop_14:\r
+.byte 102,15,56,222,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L073dec1_loop_14\r
+.byte 102,15,56,223,209\r
+ xorps %xmm6,%xmm2\r
+ movups %xmm2,(%edi)\r
+.L069xts_dec_ret:\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ movdqa %xmm0,(%esp)\r
+ pxor %xmm3,%xmm3\r
+ movdqa %xmm0,16(%esp)\r
+ pxor %xmm4,%xmm4\r
+ movdqa %xmm0,32(%esp)\r
+ pxor %xmm5,%xmm5\r
+ movdqa %xmm0,48(%esp)\r
+ pxor %xmm6,%xmm6\r
+ movdqa %xmm0,64(%esp)\r
+ pxor %xmm7,%xmm7\r
+ movdqa %xmm0,80(%esp)\r
+ movl 116(%esp),%esp\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin\r
+.globl aesni_ocb_encrypt\r
+.type aesni_ocb_encrypt,@function\r
+.align 16\r
+aesni_ocb_encrypt:\r
+.L_aesni_ocb_encrypt_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 40(%esp),%ecx\r
+ movl 48(%esp),%ebx\r
+ movl 20(%esp),%esi\r
+ movl 24(%esp),%edi\r
+ movl 28(%esp),%eax\r
+ movl 32(%esp),%edx\r
+ movdqu (%ecx),%xmm0\r
+ movl 36(%esp),%ebp\r
+ movdqu (%ebx),%xmm1\r
+ movl 44(%esp),%ebx\r
+ movl %esp,%ecx\r
+ subl $132,%esp\r
+ andl $-16,%esp\r
+ subl %esi,%edi\r
+ shll $4,%eax\r
+ leal -96(%esi,%eax,1),%eax\r
+ movl %edi,120(%esp)\r
+ movl %eax,124(%esp)\r
+ movl %ecx,128(%esp)\r
+ movl 240(%edx),%ecx\r
+ testl $1,%ebp\r
+ jnz .L074odd\r
+ bsfl %ebp,%eax\r
+ addl $1,%ebp\r
+ shll $4,%eax\r
+ movdqu (%ebx,%eax,1),%xmm7\r
+ movl %edx,%eax\r
+ movdqu (%esi),%xmm2\r
+ leal 16(%esi),%esi\r
+ pxor %xmm0,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ pxor %xmm7,%xmm2\r
+ movdqa %xmm1,%xmm6\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L075enc1_loop_15:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L075enc1_loop_15\r
+.byte 102,15,56,221,209\r
+ xorps %xmm7,%xmm2\r
+ movdqa %xmm7,%xmm0\r
+ movdqa %xmm6,%xmm1\r
+ movups %xmm2,-16(%edi,%esi,1)\r
+ movl 240(%eax),%ecx\r
+ movl %eax,%edx\r
+ movl 124(%esp),%eax\r
+.L074odd:\r
+ shll $4,%ecx\r
+ movl $16,%edi\r
+ subl %ecx,%edi\r
+ movl %edx,112(%esp)\r
+ leal 32(%edx,%ecx,1),%edx\r
+ movl %edi,116(%esp)\r
+ cmpl %eax,%esi\r
+ ja .L076short\r
+ jmp .L077grandloop\r
+.align 32\r
+.L077grandloop:\r
+ leal 1(%ebp),%ecx\r
+ leal 3(%ebp),%eax\r
+ leal 5(%ebp),%edi\r
+ addl $6,%ebp\r
+ bsfl %ecx,%ecx\r
+ bsfl %eax,%eax\r
+ bsfl %edi,%edi\r
+ shll $4,%ecx\r
+ shll $4,%eax\r
+ shll $4,%edi\r
+ movdqu (%ebx),%xmm2\r
+ movdqu (%ebx,%ecx,1),%xmm3\r
+ movl 116(%esp),%ecx\r
+ movdqa %xmm2,%xmm4\r
+ movdqu (%ebx,%eax,1),%xmm5\r
+ movdqa %xmm2,%xmm6\r
+ movdqu (%ebx,%edi,1),%xmm7\r
+ pxor %xmm0,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ movdqa %xmm2,(%esp)\r
+ pxor %xmm3,%xmm4\r
+ movdqa %xmm3,16(%esp)\r
+ pxor %xmm4,%xmm5\r
+ movdqa %xmm4,32(%esp)\r
+ pxor %xmm5,%xmm6\r
+ movdqa %xmm5,48(%esp)\r
+ pxor %xmm6,%xmm7\r
+ movdqa %xmm6,64(%esp)\r
+ movdqa %xmm7,80(%esp)\r
+ movups -48(%edx,%ecx,1),%xmm0\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movdqu 64(%esi),%xmm6\r
+ movdqu 80(%esi),%xmm7\r
+ leal 96(%esi),%esi\r
+ pxor %xmm2,%xmm1\r
+ pxor %xmm0,%xmm2\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm5,%xmm1\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm6,%xmm1\r
+ pxor %xmm0,%xmm6\r
+ pxor %xmm7,%xmm1\r
+ pxor %xmm0,%xmm7\r
+ movdqa %xmm1,96(%esp)\r
+ movups -32(%edx,%ecx,1),%xmm1\r
+ pxor (%esp),%xmm2\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+ pxor 48(%esp),%xmm5\r
+ pxor 64(%esp),%xmm6\r
+ pxor 80(%esp),%xmm7\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ movl 120(%esp),%edi\r
+ movl 124(%esp),%eax\r
+ call .L_aesni_encrypt6_enter\r
+ movdqa 80(%esp),%xmm0\r
+ pxor (%esp),%xmm2\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+ pxor 48(%esp),%xmm5\r
+ pxor 64(%esp),%xmm6\r
+ pxor %xmm0,%xmm7\r
+ movdqa 96(%esp),%xmm1\r
+ movdqu %xmm2,-96(%edi,%esi,1)\r
+ movdqu %xmm3,-80(%edi,%esi,1)\r
+ movdqu %xmm4,-64(%edi,%esi,1)\r
+ movdqu %xmm5,-48(%edi,%esi,1)\r
+ movdqu %xmm6,-32(%edi,%esi,1)\r
+ movdqu %xmm7,-16(%edi,%esi,1)\r
+ cmpl %eax,%esi\r
+ jb .L077grandloop\r
+.L076short:\r
+ addl $96,%eax\r
+ subl %esi,%eax\r
+ jz .L078done\r
+ cmpl $32,%eax\r
+ jb .L079one\r
+ je .L080two\r
+ cmpl $64,%eax\r
+ jb .L081three\r
+ je .L082four\r
+ leal 1(%ebp),%ecx\r
+ leal 3(%ebp),%eax\r
+ bsfl %ecx,%ecx\r
+ bsfl %eax,%eax\r
+ shll $4,%ecx\r
+ shll $4,%eax\r
+ movdqu (%ebx),%xmm2\r
+ movdqu (%ebx,%ecx,1),%xmm3\r
+ movl 116(%esp),%ecx\r
+ movdqa %xmm2,%xmm4\r
+ movdqu (%ebx,%eax,1),%xmm5\r
+ movdqa %xmm2,%xmm6\r
+ pxor %xmm0,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ movdqa %xmm2,(%esp)\r
+ pxor %xmm3,%xmm4\r
+ movdqa %xmm3,16(%esp)\r
+ pxor %xmm4,%xmm5\r
+ movdqa %xmm4,32(%esp)\r
+ pxor %xmm5,%xmm6\r
+ movdqa %xmm5,48(%esp)\r
+ pxor %xmm6,%xmm7\r
+ movdqa %xmm6,64(%esp)\r
+ movups -48(%edx,%ecx,1),%xmm0\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movdqu 64(%esi),%xmm6\r
+ pxor %xmm7,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ pxor %xmm0,%xmm2\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm5,%xmm1\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm6,%xmm1\r
+ pxor %xmm0,%xmm6\r
+ movdqa %xmm1,96(%esp)\r
+ movups -32(%edx,%ecx,1),%xmm1\r
+ pxor (%esp),%xmm2\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+ pxor 48(%esp),%xmm5\r
+ pxor 64(%esp),%xmm6\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ movl 120(%esp),%edi\r
+ call .L_aesni_encrypt6_enter\r
+ movdqa 64(%esp),%xmm0\r
+ pxor (%esp),%xmm2\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+ pxor 48(%esp),%xmm5\r
+ pxor %xmm0,%xmm6\r
+ movdqa 96(%esp),%xmm1\r
+ movdqu %xmm2,(%edi,%esi,1)\r
+ movdqu %xmm3,16(%edi,%esi,1)\r
+ movdqu %xmm4,32(%edi,%esi,1)\r
+ movdqu %xmm5,48(%edi,%esi,1)\r
+ movdqu %xmm6,64(%edi,%esi,1)\r
+ jmp .L078done\r
+.align 16\r
+.L079one:\r
+ movdqu (%ebx),%xmm7\r
+ movl 112(%esp),%edx\r
+ movdqu (%esi),%xmm2\r
+ movl 240(%edx),%ecx\r
+ pxor %xmm0,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ pxor %xmm7,%xmm2\r
+ movdqa %xmm1,%xmm6\r
+ movl 120(%esp),%edi\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L083enc1_loop_16:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L083enc1_loop_16\r
+.byte 102,15,56,221,209\r
+ xorps %xmm7,%xmm2\r
+ movdqa %xmm7,%xmm0\r
+ movdqa %xmm6,%xmm1\r
+ movups %xmm2,(%edi,%esi,1)\r
+ jmp .L078done\r
+.align 16\r
+.L080two:\r
+ leal 1(%ebp),%ecx\r
+ movl 112(%esp),%edx\r
+ bsfl %ecx,%ecx\r
+ shll $4,%ecx\r
+ movdqu (%ebx),%xmm6\r
+ movdqu (%ebx,%ecx,1),%xmm7\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movl 240(%edx),%ecx\r
+ pxor %xmm0,%xmm6\r
+ pxor %xmm6,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ pxor %xmm6,%xmm2\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm7,%xmm3\r
+ movdqa %xmm1,%xmm5\r
+ movl 120(%esp),%edi\r
+ call _aesni_encrypt2\r
+ xorps %xmm6,%xmm2\r
+ xorps %xmm7,%xmm3\r
+ movdqa %xmm7,%xmm0\r
+ movdqa %xmm5,%xmm1\r
+ movups %xmm2,(%edi,%esi,1)\r
+ movups %xmm3,16(%edi,%esi,1)\r
+ jmp .L078done\r
+.align 16\r
+.L081three:\r
+ leal 1(%ebp),%ecx\r
+ movl 112(%esp),%edx\r
+ bsfl %ecx,%ecx\r
+ shll $4,%ecx\r
+ movdqu (%ebx),%xmm5\r
+ movdqu (%ebx,%ecx,1),%xmm6\r
+ movdqa %xmm5,%xmm7\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movl 240(%edx),%ecx\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm5,%xmm6\r
+ pxor %xmm6,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ pxor %xmm5,%xmm2\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm6,%xmm3\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm7,%xmm4\r
+ movdqa %xmm1,96(%esp)\r
+ movl 120(%esp),%edi\r
+ call _aesni_encrypt3\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ xorps %xmm7,%xmm4\r
+ movdqa %xmm7,%xmm0\r
+ movdqa 96(%esp),%xmm1\r
+ movups %xmm2,(%edi,%esi,1)\r
+ movups %xmm3,16(%edi,%esi,1)\r
+ movups %xmm4,32(%edi,%esi,1)\r
+ jmp .L078done\r
+.align 16\r
+.L082four:\r
+ leal 1(%ebp),%ecx\r
+ leal 3(%ebp),%eax\r
+ bsfl %ecx,%ecx\r
+ bsfl %eax,%eax\r
+ movl 112(%esp),%edx\r
+ shll $4,%ecx\r
+ shll $4,%eax\r
+ movdqu (%ebx),%xmm4\r
+ movdqu (%ebx,%ecx,1),%xmm5\r
+ movdqa %xmm4,%xmm6\r
+ movdqu (%ebx,%eax,1),%xmm7\r
+ pxor %xmm0,%xmm4\r
+ movdqu (%esi),%xmm2\r
+ pxor %xmm4,%xmm5\r
+ movdqu 16(%esi),%xmm3\r
+ pxor %xmm5,%xmm6\r
+ movdqa %xmm4,(%esp)\r
+ pxor %xmm6,%xmm7\r
+ movdqa %xmm5,16(%esp)\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movl 240(%edx),%ecx\r
+ pxor %xmm2,%xmm1\r
+ pxor (%esp),%xmm2\r
+ pxor %xmm3,%xmm1\r
+ pxor 16(%esp),%xmm3\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm6,%xmm4\r
+ pxor %xmm5,%xmm1\r
+ pxor %xmm7,%xmm5\r
+ movdqa %xmm1,96(%esp)\r
+ movl 120(%esp),%edi\r
+ call _aesni_encrypt4\r
+ xorps (%esp),%xmm2\r
+ xorps 16(%esp),%xmm3\r
+ xorps %xmm6,%xmm4\r
+ movups %xmm2,(%edi,%esi,1)\r
+ xorps %xmm7,%xmm5\r
+ movups %xmm3,16(%edi,%esi,1)\r
+ movdqa %xmm7,%xmm0\r
+ movups %xmm4,32(%edi,%esi,1)\r
+ movdqa 96(%esp),%xmm1\r
+ movups %xmm5,48(%edi,%esi,1)\r
+.L078done:\r
+ movl 128(%esp),%edx\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ movdqa %xmm2,(%esp)\r
+ pxor %xmm4,%xmm4\r
+ movdqa %xmm2,16(%esp)\r
+ pxor %xmm5,%xmm5\r
+ movdqa %xmm2,32(%esp)\r
+ pxor %xmm6,%xmm6\r
+ movdqa %xmm2,48(%esp)\r
+ pxor %xmm7,%xmm7\r
+ movdqa %xmm2,64(%esp)\r
+ movdqa %xmm2,80(%esp)\r
+ movdqa %xmm2,96(%esp)\r
+ leal (%edx),%esp\r
+ movl 40(%esp),%ecx\r
+ movl 48(%esp),%ebx\r
+ movdqu %xmm0,(%ecx)\r
+ pxor %xmm0,%xmm0\r
+ movdqu %xmm1,(%ebx)\r
+ pxor %xmm1,%xmm1\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin\r
+.globl aesni_ocb_decrypt\r
+.type aesni_ocb_decrypt,@function\r
+.align 16\r
+aesni_ocb_decrypt:\r
+.L_aesni_ocb_decrypt_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 40(%esp),%ecx\r
+ movl 48(%esp),%ebx\r
+ movl 20(%esp),%esi\r
+ movl 24(%esp),%edi\r
+ movl 28(%esp),%eax\r
+ movl 32(%esp),%edx\r
+ movdqu (%ecx),%xmm0\r
+ movl 36(%esp),%ebp\r
+ movdqu (%ebx),%xmm1\r
+ movl 44(%esp),%ebx\r
+ movl %esp,%ecx\r
+ subl $132,%esp\r
+ andl $-16,%esp\r
+ subl %esi,%edi\r
+ shll $4,%eax\r
+ leal -96(%esi,%eax,1),%eax\r
+ movl %edi,120(%esp)\r
+ movl %eax,124(%esp)\r
+ movl %ecx,128(%esp)\r
+ movl 240(%edx),%ecx\r
+ testl $1,%ebp\r
+ jnz .L084odd\r
+ bsfl %ebp,%eax\r
+ addl $1,%ebp\r
+ shll $4,%eax\r
+ movdqu (%ebx,%eax,1),%xmm7\r
+ movl %edx,%eax\r
+ movdqu (%esi),%xmm2\r
+ leal 16(%esi),%esi\r
+ pxor %xmm0,%xmm7\r
+ pxor %xmm7,%xmm2\r
+ movdqa %xmm1,%xmm6\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L085dec1_loop_17:\r
+.byte 102,15,56,222,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L085dec1_loop_17\r
+.byte 102,15,56,223,209\r
+ xorps %xmm7,%xmm2\r
+ movaps %xmm6,%xmm1\r
+ movdqa %xmm7,%xmm0\r
+ xorps %xmm2,%xmm1\r
+ movups %xmm2,-16(%edi,%esi,1)\r
+ movl 240(%eax),%ecx\r
+ movl %eax,%edx\r
+ movl 124(%esp),%eax\r
+.L084odd:\r
+ shll $4,%ecx\r
+ movl $16,%edi\r
+ subl %ecx,%edi\r
+ movl %edx,112(%esp)\r
+ leal 32(%edx,%ecx,1),%edx\r
+ movl %edi,116(%esp)\r
+ cmpl %eax,%esi\r
+ ja .L086short\r
+ jmp .L087grandloop\r
+.align 32\r
+.L087grandloop:\r
+ leal 1(%ebp),%ecx\r
+ leal 3(%ebp),%eax\r
+ leal 5(%ebp),%edi\r
+ addl $6,%ebp\r
+ bsfl %ecx,%ecx\r
+ bsfl %eax,%eax\r
+ bsfl %edi,%edi\r
+ shll $4,%ecx\r
+ shll $4,%eax\r
+ shll $4,%edi\r
+ movdqu (%ebx),%xmm2\r
+ movdqu (%ebx,%ecx,1),%xmm3\r
+ movl 116(%esp),%ecx\r
+ movdqa %xmm2,%xmm4\r
+ movdqu (%ebx,%eax,1),%xmm5\r
+ movdqa %xmm2,%xmm6\r
+ movdqu (%ebx,%edi,1),%xmm7\r
+ pxor %xmm0,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ movdqa %xmm2,(%esp)\r
+ pxor %xmm3,%xmm4\r
+ movdqa %xmm3,16(%esp)\r
+ pxor %xmm4,%xmm5\r
+ movdqa %xmm4,32(%esp)\r
+ pxor %xmm5,%xmm6\r
+ movdqa %xmm5,48(%esp)\r
+ pxor %xmm6,%xmm7\r
+ movdqa %xmm6,64(%esp)\r
+ movdqa %xmm7,80(%esp)\r
+ movups -48(%edx,%ecx,1),%xmm0\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movdqu 64(%esi),%xmm6\r
+ movdqu 80(%esi),%xmm7\r
+ leal 96(%esi),%esi\r
+ movdqa %xmm1,96(%esp)\r
+ pxor %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+ pxor %xmm0,%xmm7\r
+ movups -32(%edx,%ecx,1),%xmm1\r
+ pxor (%esp),%xmm2\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+ pxor 48(%esp),%xmm5\r
+ pxor 64(%esp),%xmm6\r
+ pxor 80(%esp),%xmm7\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ movl 120(%esp),%edi\r
+ movl 124(%esp),%eax\r
+ call .L_aesni_decrypt6_enter\r
+ movdqa 80(%esp),%xmm0\r
+ pxor (%esp),%xmm2\r
+ movdqa 96(%esp),%xmm1\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+ pxor 48(%esp),%xmm5\r
+ pxor 64(%esp),%xmm6\r
+ pxor %xmm0,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqu %xmm2,-96(%edi,%esi,1)\r
+ pxor %xmm3,%xmm1\r
+ movdqu %xmm3,-80(%edi,%esi,1)\r
+ pxor %xmm4,%xmm1\r
+ movdqu %xmm4,-64(%edi,%esi,1)\r
+ pxor %xmm5,%xmm1\r
+ movdqu %xmm5,-48(%edi,%esi,1)\r
+ pxor %xmm6,%xmm1\r
+ movdqu %xmm6,-32(%edi,%esi,1)\r
+ pxor %xmm7,%xmm1\r
+ movdqu %xmm7,-16(%edi,%esi,1)\r
+ cmpl %eax,%esi\r
+ jb .L087grandloop\r
+.L086short:\r
+ addl $96,%eax\r
+ subl %esi,%eax\r
+ jz .L088done\r
+ cmpl $32,%eax\r
+ jb .L089one\r
+ je .L090two\r
+ cmpl $64,%eax\r
+ jb .L091three\r
+ je .L092four\r
+ leal 1(%ebp),%ecx\r
+ leal 3(%ebp),%eax\r
+ bsfl %ecx,%ecx\r
+ bsfl %eax,%eax\r
+ shll $4,%ecx\r
+ shll $4,%eax\r
+ movdqu (%ebx),%xmm2\r
+ movdqu (%ebx,%ecx,1),%xmm3\r
+ movl 116(%esp),%ecx\r
+ movdqa %xmm2,%xmm4\r
+ movdqu (%ebx,%eax,1),%xmm5\r
+ movdqa %xmm2,%xmm6\r
+ pxor %xmm0,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ movdqa %xmm2,(%esp)\r
+ pxor %xmm3,%xmm4\r
+ movdqa %xmm3,16(%esp)\r
+ pxor %xmm4,%xmm5\r
+ movdqa %xmm4,32(%esp)\r
+ pxor %xmm5,%xmm6\r
+ movdqa %xmm5,48(%esp)\r
+ pxor %xmm6,%xmm7\r
+ movdqa %xmm6,64(%esp)\r
+ movups -48(%edx,%ecx,1),%xmm0\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movdqu 64(%esi),%xmm6\r
+ pxor %xmm7,%xmm7\r
+ movdqa %xmm1,96(%esp)\r
+ pxor %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+ movups -32(%edx,%ecx,1),%xmm1\r
+ pxor (%esp),%xmm2\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+ pxor 48(%esp),%xmm5\r
+ pxor 64(%esp),%xmm6\r
+ movups -16(%edx,%ecx,1),%xmm0\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ movl 120(%esp),%edi\r
+ call .L_aesni_decrypt6_enter\r
+ movdqa 64(%esp),%xmm0\r
+ pxor (%esp),%xmm2\r
+ movdqa 96(%esp),%xmm1\r
+ pxor 16(%esp),%xmm3\r
+ pxor 32(%esp),%xmm4\r
+ pxor 48(%esp),%xmm5\r
+ pxor %xmm0,%xmm6\r
+ pxor %xmm2,%xmm1\r
+ movdqu %xmm2,(%edi,%esi,1)\r
+ pxor %xmm3,%xmm1\r
+ movdqu %xmm3,16(%edi,%esi,1)\r
+ pxor %xmm4,%xmm1\r
+ movdqu %xmm4,32(%edi,%esi,1)\r
+ pxor %xmm5,%xmm1\r
+ movdqu %xmm5,48(%edi,%esi,1)\r
+ pxor %xmm6,%xmm1\r
+ movdqu %xmm6,64(%edi,%esi,1)\r
+ jmp .L088done\r
+.align 16\r
+.L089one:\r
+ movdqu (%ebx),%xmm7\r
+ movl 112(%esp),%edx\r
+ movdqu (%esi),%xmm2\r
+ movl 240(%edx),%ecx\r
+ pxor %xmm0,%xmm7\r
+ pxor %xmm7,%xmm2\r
+ movdqa %xmm1,%xmm6\r
+ movl 120(%esp),%edi\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L093dec1_loop_18:\r
+.byte 102,15,56,222,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L093dec1_loop_18\r
+.byte 102,15,56,223,209\r
+ xorps %xmm7,%xmm2\r
+ movaps %xmm6,%xmm1\r
+ movdqa %xmm7,%xmm0\r
+ xorps %xmm2,%xmm1\r
+ movups %xmm2,(%edi,%esi,1)\r
+ jmp .L088done\r
+.align 16\r
+.L090two:\r
+ leal 1(%ebp),%ecx\r
+ movl 112(%esp),%edx\r
+ bsfl %ecx,%ecx\r
+ shll $4,%ecx\r
+ movdqu (%ebx),%xmm6\r
+ movdqu (%ebx,%ecx,1),%xmm7\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movl 240(%edx),%ecx\r
+ movdqa %xmm1,%xmm5\r
+ pxor %xmm0,%xmm6\r
+ pxor %xmm6,%xmm7\r
+ pxor %xmm6,%xmm2\r
+ pxor %xmm7,%xmm3\r
+ movl 120(%esp),%edi\r
+ call _aesni_decrypt2\r
+ xorps %xmm6,%xmm2\r
+ xorps %xmm7,%xmm3\r
+ movdqa %xmm7,%xmm0\r
+ xorps %xmm2,%xmm5\r
+ movups %xmm2,(%edi,%esi,1)\r
+ xorps %xmm3,%xmm5\r
+ movups %xmm3,16(%edi,%esi,1)\r
+ movaps %xmm5,%xmm1\r
+ jmp .L088done\r
+.align 16\r
+.L091three:\r
+ leal 1(%ebp),%ecx\r
+ movl 112(%esp),%edx\r
+ bsfl %ecx,%ecx\r
+ shll $4,%ecx\r
+ movdqu (%ebx),%xmm5\r
+ movdqu (%ebx,%ecx,1),%xmm6\r
+ movdqa %xmm5,%xmm7\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movl 240(%edx),%ecx\r
+ movdqa %xmm1,96(%esp)\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm5,%xmm6\r
+ pxor %xmm6,%xmm7\r
+ pxor %xmm5,%xmm2\r
+ pxor %xmm6,%xmm3\r
+ pxor %xmm7,%xmm4\r
+ movl 120(%esp),%edi\r
+ call _aesni_decrypt3\r
+ movdqa 96(%esp),%xmm1\r
+ xorps %xmm5,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ xorps %xmm7,%xmm4\r
+ movups %xmm2,(%edi,%esi,1)\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm7,%xmm0\r
+ movups %xmm3,16(%edi,%esi,1)\r
+ pxor %xmm3,%xmm1\r
+ movups %xmm4,32(%edi,%esi,1)\r
+ pxor %xmm4,%xmm1\r
+ jmp .L088done\r
+.align 16\r
+.L092four:\r
+ leal 1(%ebp),%ecx\r
+ leal 3(%ebp),%eax\r
+ bsfl %ecx,%ecx\r
+ bsfl %eax,%eax\r
+ movl 112(%esp),%edx\r
+ shll $4,%ecx\r
+ shll $4,%eax\r
+ movdqu (%ebx),%xmm4\r
+ movdqu (%ebx,%ecx,1),%xmm5\r
+ movdqa %xmm4,%xmm6\r
+ movdqu (%ebx,%eax,1),%xmm7\r
+ pxor %xmm0,%xmm4\r
+ movdqu (%esi),%xmm2\r
+ pxor %xmm4,%xmm5\r
+ movdqu 16(%esi),%xmm3\r
+ pxor %xmm5,%xmm6\r
+ movdqa %xmm4,(%esp)\r
+ pxor %xmm6,%xmm7\r
+ movdqa %xmm5,16(%esp)\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movl 240(%edx),%ecx\r
+ movdqa %xmm1,96(%esp)\r
+ pxor (%esp),%xmm2\r
+ pxor 16(%esp),%xmm3\r
+ pxor %xmm6,%xmm4\r
+ pxor %xmm7,%xmm5\r
+ movl 120(%esp),%edi\r
+ call _aesni_decrypt4\r
+ movdqa 96(%esp),%xmm1\r
+ xorps (%esp),%xmm2\r
+ xorps 16(%esp),%xmm3\r
+ xorps %xmm6,%xmm4\r
+ movups %xmm2,(%edi,%esi,1)\r
+ pxor %xmm2,%xmm1\r
+ xorps %xmm7,%xmm5\r
+ movups %xmm3,16(%edi,%esi,1)\r
+ pxor %xmm3,%xmm1\r
+ movdqa %xmm7,%xmm0\r
+ movups %xmm4,32(%edi,%esi,1)\r
+ pxor %xmm4,%xmm1\r
+ movups %xmm5,48(%edi,%esi,1)\r
+ pxor %xmm5,%xmm1\r
+.L088done:\r
+ movl 128(%esp),%edx\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ movdqa %xmm2,(%esp)\r
+ pxor %xmm4,%xmm4\r
+ movdqa %xmm2,16(%esp)\r
+ pxor %xmm5,%xmm5\r
+ movdqa %xmm2,32(%esp)\r
+ pxor %xmm6,%xmm6\r
+ movdqa %xmm2,48(%esp)\r
+ pxor %xmm7,%xmm7\r
+ movdqa %xmm2,64(%esp)\r
+ movdqa %xmm2,80(%esp)\r
+ movdqa %xmm2,96(%esp)\r
+ leal (%edx),%esp\r
+ movl 40(%esp),%ecx\r
+ movl 48(%esp),%ebx\r
+ movdqu %xmm0,(%ecx)\r
+ pxor %xmm0,%xmm0\r
+ movdqu %xmm1,(%ebx)\r
+ pxor %xmm1,%xmm1\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin\r
+.globl aesni_cbc_encrypt\r
+.type aesni_cbc_encrypt,@function\r
+.align 16\r
+aesni_cbc_encrypt:\r
+.L_aesni_cbc_encrypt_begin:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ pushl %esi\r
+ pushl %edi\r
+ movl 20(%esp),%esi\r
+ movl %esp,%ebx\r
+ movl 24(%esp),%edi\r
+ subl $24,%ebx\r
+ movl 28(%esp),%eax\r
+ andl $-16,%ebx\r
+ movl 32(%esp),%edx\r
+ movl 36(%esp),%ebp\r
+ testl %eax,%eax\r
+ jz .L094cbc_abort\r
+ cmpl $0,40(%esp)\r
+ xchgl %esp,%ebx\r
+ movups (%ebp),%xmm7\r
+ movl 240(%edx),%ecx\r
+ movl %edx,%ebp\r
+ movl %ebx,16(%esp)\r
+ movl %ecx,%ebx\r
+ je .L095cbc_decrypt\r
+ movaps %xmm7,%xmm2\r
+ cmpl $16,%eax\r
+ jb .L096cbc_enc_tail\r
+ subl $16,%eax\r
+ jmp .L097cbc_enc_loop\r
+.align 16\r
+.L097cbc_enc_loop:\r
+ movups (%esi),%xmm7\r
+ leal 16(%esi),%esi\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ xorps %xmm0,%xmm7\r
+ leal 32(%edx),%edx\r
+ xorps %xmm7,%xmm2\r
+.L098enc1_loop_19:\r
+.byte 102,15,56,220,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L098enc1_loop_19\r
+.byte 102,15,56,221,209\r
+ movl %ebx,%ecx\r
+ movl %ebp,%edx\r
+ movups %xmm2,(%edi)\r
+ leal 16(%edi),%edi\r
+ subl $16,%eax\r
+ jnc .L097cbc_enc_loop\r
+ addl $16,%eax\r
+ jnz .L096cbc_enc_tail\r
+ movaps %xmm2,%xmm7\r
+ pxor %xmm2,%xmm2\r
+ jmp .L099cbc_ret\r
+.L096cbc_enc_tail:\r
+ movl %eax,%ecx\r
+.long 2767451785\r
+ movl $16,%ecx\r
+ subl %eax,%ecx\r
+ xorl %eax,%eax\r
+.long 2868115081\r
+ leal -16(%edi),%edi\r
+ movl %ebx,%ecx\r
+ movl %edi,%esi\r
+ movl %ebp,%edx\r
+ jmp .L097cbc_enc_loop\r
+.align 16\r
+.L095cbc_decrypt:\r
+ cmpl $80,%eax\r
+ jbe .L100cbc_dec_tail\r
+ movaps %xmm7,(%esp)\r
+ subl $80,%eax\r
+ jmp .L101cbc_dec_loop6_enter\r
+.align 16\r
+.L102cbc_dec_loop6:\r
+ movaps %xmm0,(%esp)\r
+ movups %xmm7,(%edi)\r
+ leal 16(%edi),%edi\r
+.L101cbc_dec_loop6_enter:\r
+ movdqu (%esi),%xmm2\r
+ movdqu 16(%esi),%xmm3\r
+ movdqu 32(%esi),%xmm4\r
+ movdqu 48(%esi),%xmm5\r
+ movdqu 64(%esi),%xmm6\r
+ movdqu 80(%esi),%xmm7\r
+ call _aesni_decrypt6\r
+ movups (%esi),%xmm1\r
+ movups 16(%esi),%xmm0\r
+ xorps (%esp),%xmm2\r
+ xorps %xmm1,%xmm3\r
+ movups 32(%esi),%xmm1\r
+ xorps %xmm0,%xmm4\r
+ movups 48(%esi),%xmm0\r
+ xorps %xmm1,%xmm5\r
+ movups 64(%esi),%xmm1\r
+ xorps %xmm0,%xmm6\r
+ movups 80(%esi),%xmm0\r
+ xorps %xmm1,%xmm7\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ leal 96(%esi),%esi\r
+ movups %xmm4,32(%edi)\r
+ movl %ebx,%ecx\r
+ movups %xmm5,48(%edi)\r
+ movl %ebp,%edx\r
+ movups %xmm6,64(%edi)\r
+ leal 80(%edi),%edi\r
+ subl $96,%eax\r
+ ja .L102cbc_dec_loop6\r
+ movaps %xmm7,%xmm2\r
+ movaps %xmm0,%xmm7\r
+ addl $80,%eax\r
+ jle .L103cbc_dec_clear_tail_collected\r
+ movups %xmm2,(%edi)\r
+ leal 16(%edi),%edi\r
+.L100cbc_dec_tail:\r
+ movups (%esi),%xmm2\r
+ movaps %xmm2,%xmm6\r
+ cmpl $16,%eax\r
+ jbe .L104cbc_dec_one\r
+ movups 16(%esi),%xmm3\r
+ movaps %xmm3,%xmm5\r
+ cmpl $32,%eax\r
+ jbe .L105cbc_dec_two\r
+ movups 32(%esi),%xmm4\r
+ cmpl $48,%eax\r
+ jbe .L106cbc_dec_three\r
+ movups 48(%esi),%xmm5\r
+ cmpl $64,%eax\r
+ jbe .L107cbc_dec_four\r
+ movups 64(%esi),%xmm6\r
+ movaps %xmm7,(%esp)\r
+ movups (%esi),%xmm2\r
+ xorps %xmm7,%xmm7\r
+ call _aesni_decrypt6\r
+ movups (%esi),%xmm1\r
+ movups 16(%esi),%xmm0\r
+ xorps (%esp),%xmm2\r
+ xorps %xmm1,%xmm3\r
+ movups 32(%esi),%xmm1\r
+ xorps %xmm0,%xmm4\r
+ movups 48(%esi),%xmm0\r
+ xorps %xmm1,%xmm5\r
+ movups 64(%esi),%xmm7\r
+ xorps %xmm0,%xmm6\r
+ movups %xmm2,(%edi)\r
+ movups %xmm3,16(%edi)\r
+ pxor %xmm3,%xmm3\r
+ movups %xmm4,32(%edi)\r
+ pxor %xmm4,%xmm4\r
+ movups %xmm5,48(%edi)\r
+ pxor %xmm5,%xmm5\r
+ leal 64(%edi),%edi\r
+ movaps %xmm6,%xmm2\r
+ pxor %xmm6,%xmm6\r
+ subl $80,%eax\r
+ jmp .L108cbc_dec_tail_collected\r
+.align 16\r
+.L104cbc_dec_one:\r
+ movups (%edx),%xmm0\r
+ movups 16(%edx),%xmm1\r
+ leal 32(%edx),%edx\r
+ xorps %xmm0,%xmm2\r
+.L109dec1_loop_20:\r
+.byte 102,15,56,222,209\r
+ decl %ecx\r
+ movups (%edx),%xmm1\r
+ leal 16(%edx),%edx\r
+ jnz .L109dec1_loop_20\r
+.byte 102,15,56,223,209\r
+ xorps %xmm7,%xmm2\r
+ movaps %xmm6,%xmm7\r
+ subl $16,%eax\r
+ jmp .L108cbc_dec_tail_collected\r
+.align 16\r
+.L105cbc_dec_two:\r
+ call _aesni_decrypt2\r
+ xorps %xmm7,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ movups %xmm2,(%edi)\r
+ movaps %xmm3,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ leal 16(%edi),%edi\r
+ movaps %xmm5,%xmm7\r
+ subl $32,%eax\r
+ jmp .L108cbc_dec_tail_collected\r
+.align 16\r
+.L106cbc_dec_three:\r
+ call _aesni_decrypt3\r
+ xorps %xmm7,%xmm2\r
+ xorps %xmm6,%xmm3\r
+ xorps %xmm5,%xmm4\r
+ movups %xmm2,(%edi)\r
+ movaps %xmm4,%xmm2\r
+ pxor %xmm4,%xmm4\r
+ movups %xmm3,16(%edi)\r
+ pxor %xmm3,%xmm3\r
+ leal 32(%edi),%edi\r
+ movups 32(%esi),%xmm7\r
+ subl $48,%eax\r
+ jmp .L108cbc_dec_tail_collected\r
+.align 16\r
+.L107cbc_dec_four:\r
+ call _aesni_decrypt4\r
+ movups 16(%esi),%xmm1\r
+ movups 32(%esi),%xmm0\r
+ xorps %xmm7,%xmm2\r
+ movups 48(%esi),%xmm7\r
+ xorps %xmm6,%xmm3\r
+ movups %xmm2,(%edi)\r
+ xorps %xmm1,%xmm4\r
+ movups %xmm3,16(%edi)\r
+ pxor %xmm3,%xmm3\r
+ xorps %xmm0,%xmm5\r
+ movups %xmm4,32(%edi)\r
+ pxor %xmm4,%xmm4\r
+ leal 48(%edi),%edi\r
+ movaps %xmm5,%xmm2\r
+ pxor %xmm5,%xmm5\r
+ subl $64,%eax\r
+ jmp .L108cbc_dec_tail_collected\r
+.align 16\r
+.L103cbc_dec_clear_tail_collected:\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+.L108cbc_dec_tail_collected:\r
+ andl $15,%eax\r
+ jnz .L110cbc_dec_tail_partial\r
+ movups %xmm2,(%edi)\r
+ pxor %xmm0,%xmm0\r
+ jmp .L099cbc_ret\r
+.align 16\r
+.L110cbc_dec_tail_partial:\r
+ movaps %xmm2,(%esp)\r
+ pxor %xmm0,%xmm0\r
+ movl $16,%ecx\r
+ movl %esp,%esi\r
+ subl %eax,%ecx\r
+.long 2767451785\r
+ movdqa %xmm2,(%esp)\r
+.L099cbc_ret:\r
+ movl 16(%esp),%esp\r
+ movl 36(%esp),%ebp\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm1,%xmm1\r
+ movups %xmm7,(%ebp)\r
+ pxor %xmm7,%xmm7\r
+.L094cbc_abort:\r
+ popl %edi\r
+ popl %esi\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin\r
+.type _aesni_set_encrypt_key,@function\r
+.align 16\r
+_aesni_set_encrypt_key:\r
+ pushl %ebp\r
+ pushl %ebx\r
+ testl %eax,%eax\r
+ jz .L111bad_pointer\r
+ testl %edx,%edx\r
+ jz .L111bad_pointer\r
+ call .L112pic\r
+.L112pic:\r
+ popl %ebx\r
+ leal .Lkey_const-.L112pic(%ebx),%ebx\r
+ leal OPENSSL_ia32cap_P,%ebp\r
+ movups (%eax),%xmm0\r
+ xorps %xmm4,%xmm4\r
+ movl 4(%ebp),%ebp\r
+ leal 16(%edx),%edx\r
+ andl $268437504,%ebp\r
+ cmpl $256,%ecx\r
+ je .L11314rounds\r
+ cmpl $192,%ecx\r
+ je .L11412rounds\r
+ cmpl $128,%ecx\r
+ jne .L115bad_keybits\r
+.align 16\r
+.L11610rounds:\r
+ cmpl $268435456,%ebp\r
+ je .L11710rounds_alt\r
+ movl $9,%ecx\r
+ movups %xmm0,-16(%edx)\r
+.byte 102,15,58,223,200,1\r
+ call .L118key_128_cold\r
+.byte 102,15,58,223,200,2\r
+ call .L119key_128\r
+.byte 102,15,58,223,200,4\r
+ call .L119key_128\r
+.byte 102,15,58,223,200,8\r
+ call .L119key_128\r
+.byte 102,15,58,223,200,16\r
+ call .L119key_128\r
+.byte 102,15,58,223,200,32\r
+ call .L119key_128\r
+.byte 102,15,58,223,200,64\r
+ call .L119key_128\r
+.byte 102,15,58,223,200,128\r
+ call .L119key_128\r
+.byte 102,15,58,223,200,27\r
+ call .L119key_128\r
+.byte 102,15,58,223,200,54\r
+ call .L119key_128\r
+ movups %xmm0,(%edx)\r
+ movl %ecx,80(%edx)\r
+ jmp .L120good_key\r
+.align 16\r
+.L119key_128:\r
+ movups %xmm0,(%edx)\r
+ leal 16(%edx),%edx\r
+.L118key_128_cold:\r
+ shufps $16,%xmm0,%xmm4\r
+ xorps %xmm4,%xmm0\r
+ shufps $140,%xmm0,%xmm4\r
+ xorps %xmm4,%xmm0\r
+ shufps $255,%xmm1,%xmm1\r
+ xorps %xmm1,%xmm0\r
+ ret\r
+.align 16\r
+.L11710rounds_alt:\r
+ movdqa (%ebx),%xmm5\r
+ movl $8,%ecx\r
+ movdqa 32(%ebx),%xmm4\r
+ movdqa %xmm0,%xmm2\r
+ movdqu %xmm0,-16(%edx)\r
+.L121loop_key128:\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,221,196\r
+ pslld $1,%xmm4\r
+ leal 16(%edx),%edx\r
+ movdqa %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm3,%xmm2\r
+ pxor %xmm2,%xmm0\r
+ movdqu %xmm0,-16(%edx)\r
+ movdqa %xmm0,%xmm2\r
+ decl %ecx\r
+ jnz .L121loop_key128\r
+ movdqa 48(%ebx),%xmm4\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,221,196\r
+ pslld $1,%xmm4\r
+ movdqa %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm3,%xmm2\r
+ pxor %xmm2,%xmm0\r
+ movdqu %xmm0,(%edx)\r
+ movdqa %xmm0,%xmm2\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,221,196\r
+ movdqa %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm3,%xmm2\r
+ pxor %xmm2,%xmm0\r
+ movdqu %xmm0,16(%edx)\r
+ movl $9,%ecx\r
+ movl %ecx,96(%edx)\r
+ jmp .L120good_key\r
+.align 16\r
+.L11412rounds:\r
+ movq 16(%eax),%xmm2\r
+ cmpl $268435456,%ebp\r
+ je .L12212rounds_alt\r
+ movl $11,%ecx\r
+ movups %xmm0,-16(%edx)\r
+.byte 102,15,58,223,202,1\r
+ call .L123key_192a_cold\r
+.byte 102,15,58,223,202,2\r
+ call .L124key_192b\r
+.byte 102,15,58,223,202,4\r
+ call .L125key_192a\r
+.byte 102,15,58,223,202,8\r
+ call .L124key_192b\r
+.byte 102,15,58,223,202,16\r
+ call .L125key_192a\r
+.byte 102,15,58,223,202,32\r
+ call .L124key_192b\r
+.byte 102,15,58,223,202,64\r
+ call .L125key_192a\r
+.byte 102,15,58,223,202,128\r
+ call .L124key_192b\r
+ movups %xmm0,(%edx)\r
+ movl %ecx,48(%edx)\r
+ jmp .L120good_key\r
+.align 16\r
+.L125key_192a:\r
+ movups %xmm0,(%edx)\r
+ leal 16(%edx),%edx\r
+.align 16\r
+.L123key_192a_cold:\r
+ movaps %xmm2,%xmm5\r
+.L126key_192b_warm:\r
+ shufps $16,%xmm0,%xmm4\r
+ movdqa %xmm2,%xmm3\r
+ xorps %xmm4,%xmm0\r
+ shufps $140,%xmm0,%xmm4\r
+ pslldq $4,%xmm3\r
+ xorps %xmm4,%xmm0\r
+ pshufd $85,%xmm1,%xmm1\r
+ pxor %xmm3,%xmm2\r
+ pxor %xmm1,%xmm0\r
+ pshufd $255,%xmm0,%xmm3\r
+ pxor %xmm3,%xmm2\r
+ ret\r
+.align 16\r
+.L124key_192b:\r
+ movaps %xmm0,%xmm3\r
+ shufps $68,%xmm0,%xmm5\r
+ movups %xmm5,(%edx)\r
+ shufps $78,%xmm2,%xmm3\r
+ movups %xmm3,16(%edx)\r
+ leal 32(%edx),%edx\r
+ jmp .L126key_192b_warm\r
+.align 16\r
+.L12212rounds_alt:\r
+ movdqa 16(%ebx),%xmm5\r
+ movdqa 32(%ebx),%xmm4\r
+ movl $8,%ecx\r
+ movdqu %xmm0,-16(%edx)\r
+.L127loop_key192:\r
+ movq %xmm2,(%edx)\r
+ movdqa %xmm2,%xmm1\r
+.byte 102,15,56,0,213\r
+.byte 102,15,56,221,212\r
+ pslld $1,%xmm4\r
+ leal 24(%edx),%edx\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ pshufd $255,%xmm0,%xmm3\r
+ pxor %xmm1,%xmm3\r
+ pslldq $4,%xmm1\r
+ pxor %xmm1,%xmm3\r
+ pxor %xmm2,%xmm0\r
+ pxor %xmm3,%xmm2\r
+ movdqu %xmm0,-16(%edx)\r
+ decl %ecx\r
+ jnz .L127loop_key192\r
+ movl $11,%ecx\r
+ movl %ecx,32(%edx)\r
+ jmp .L120good_key\r
+.align 16\r
+.L11314rounds:\r
+ movups 16(%eax),%xmm2\r
+ leal 16(%edx),%edx\r
+ cmpl $268435456,%ebp\r
+ je .L12814rounds_alt\r
+ movl $13,%ecx\r
+ movups %xmm0,-32(%edx)\r
+ movups %xmm2,-16(%edx)\r
+.byte 102,15,58,223,202,1\r
+ call .L129key_256a_cold\r
+.byte 102,15,58,223,200,1\r
+ call .L130key_256b\r
+.byte 102,15,58,223,202,2\r
+ call .L131key_256a\r
+.byte 102,15,58,223,200,2\r
+ call .L130key_256b\r
+.byte 102,15,58,223,202,4\r
+ call .L131key_256a\r
+.byte 102,15,58,223,200,4\r
+ call .L130key_256b\r
+.byte 102,15,58,223,202,8\r
+ call .L131key_256a\r
+.byte 102,15,58,223,200,8\r
+ call .L130key_256b\r
+.byte 102,15,58,223,202,16\r
+ call .L131key_256a\r
+.byte 102,15,58,223,200,16\r
+ call .L130key_256b\r
+.byte 102,15,58,223,202,32\r
+ call .L131key_256a\r
+.byte 102,15,58,223,200,32\r
+ call .L130key_256b\r
+.byte 102,15,58,223,202,64\r
+ call .L131key_256a\r
+ movups %xmm0,(%edx)\r
+ movl %ecx,16(%edx)\r
+ xorl %eax,%eax\r
+ jmp .L120good_key\r
+.align 16\r
+.L131key_256a:\r
+ movups %xmm2,(%edx)\r
+ leal 16(%edx),%edx\r
+.L129key_256a_cold:\r
+ shufps $16,%xmm0,%xmm4\r
+ xorps %xmm4,%xmm0\r
+ shufps $140,%xmm0,%xmm4\r
+ xorps %xmm4,%xmm0\r
+ shufps $255,%xmm1,%xmm1\r
+ xorps %xmm1,%xmm0\r
+ ret\r
+.align 16\r
+.L130key_256b:\r
+ movups %xmm0,(%edx)\r
+ leal 16(%edx),%edx\r
+ shufps $16,%xmm2,%xmm4\r
+ xorps %xmm4,%xmm2\r
+ shufps $140,%xmm2,%xmm4\r
+ xorps %xmm4,%xmm2\r
+ shufps $170,%xmm1,%xmm1\r
+ xorps %xmm1,%xmm2\r
+ ret\r
+.align 16\r
+.L12814rounds_alt:\r
+ movdqa (%ebx),%xmm5\r
+ movdqa 32(%ebx),%xmm4\r
+ movl $7,%ecx\r
+ movdqu %xmm0,-32(%edx)\r
+ movdqa %xmm2,%xmm1\r
+ movdqu %xmm2,-16(%edx)\r
+.L132loop_key256:\r
+.byte 102,15,56,0,213\r
+.byte 102,15,56,221,212\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ pslld $1,%xmm4\r
+ pxor %xmm2,%xmm0\r
+ movdqu %xmm0,(%edx)\r
+ decl %ecx\r
+ jz .L133done_key256\r
+ pshufd $255,%xmm0,%xmm2\r
+ pxor %xmm3,%xmm3\r
+.byte 102,15,56,221,211\r
+ movdqa %xmm1,%xmm3\r
+ pslldq $4,%xmm1\r
+ pxor %xmm1,%xmm3\r
+ pslldq $4,%xmm1\r
+ pxor %xmm1,%xmm3\r
+ pslldq $4,%xmm1\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm1,%xmm2\r
+ movdqu %xmm2,16(%edx)\r
+ leal 32(%edx),%edx\r
+ movdqa %xmm2,%xmm1\r
+ jmp .L132loop_key256\r
+.L133done_key256:\r
+ movl $13,%ecx\r
+ movl %ecx,16(%edx)\r
+.L120good_key:\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ xorl %eax,%eax\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.align 4\r
+.L111bad_pointer:\r
+ movl $-1,%eax\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.align 4\r
+.L115bad_keybits:\r
+ pxor %xmm0,%xmm0\r
+ movl $-2,%eax\r
+ popl %ebx\r
+ popl %ebp\r
+ ret\r
+.size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key\r
+.globl aesni_set_encrypt_key\r
+.type aesni_set_encrypt_key,@function\r
+.align 16\r
+aesni_set_encrypt_key:\r
+.L_aesni_set_encrypt_key_begin:\r
+ movl 4(%esp),%eax\r
+ movl 8(%esp),%ecx\r
+ movl 12(%esp),%edx\r
+ call _aesni_set_encrypt_key\r
+ ret\r
+.size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin\r
+.globl aesni_set_decrypt_key\r
+.type aesni_set_decrypt_key,@function\r
+.align 16\r
+aesni_set_decrypt_key:\r
+.L_aesni_set_decrypt_key_begin:\r
+ movl 4(%esp),%eax\r
+ movl 8(%esp),%ecx\r
+ movl 12(%esp),%edx\r
+ call _aesni_set_encrypt_key\r
+ movl 12(%esp),%edx\r
+ shll $4,%ecx\r
+ testl %eax,%eax\r
+ jnz .L134dec_key_ret\r
+ leal 16(%edx,%ecx,1),%eax\r
+ movups (%edx),%xmm0\r
+ movups (%eax),%xmm1\r
+ movups %xmm0,(%eax)\r
+ movups %xmm1,(%edx)\r
+ leal 16(%edx),%edx\r
+ leal -16(%eax),%eax\r
+.L135dec_key_inverse:\r
+ movups (%edx),%xmm0\r
+ movups (%eax),%xmm1\r
+.byte 102,15,56,219,192\r
+.byte 102,15,56,219,201\r
+ leal 16(%edx),%edx\r
+ leal -16(%eax),%eax\r
+ movups %xmm0,16(%eax)\r
+ movups %xmm1,-16(%edx)\r
+ cmpl %edx,%eax\r
+ ja .L135dec_key_inverse\r
+ movups (%edx),%xmm0\r
+.byte 102,15,56,219,192\r
+ movups %xmm0,(%edx)\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ xorl %eax,%eax\r
+.L134dec_key_ret:\r
+ ret\r
+.size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin\r
+.align 64\r
+.Lkey_const:\r
+.long 202313229,202313229,202313229,202313229\r
+.long 67569157,67569157,67569157,67569157\r
+.long 1,1,1,1\r
+.long 27,27,27,27\r
+.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69\r
+.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83\r
+.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115\r
+.byte 115,108,46,111,114,103,62,0\r
+.comm OPENSSL_ia32cap_P,16,4\r