]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CryptoPkg/Library/OpensslLib/IA32Gcc/crypto/aes/aesni-x86.S
CryptoPkg/OpensslLib: Commit the auto-generated assembly files for IA32
[mirror_edk2.git] / CryptoPkg / Library / OpensslLib / IA32Gcc / crypto / aes / aesni-x86.S
diff --git a/CryptoPkg/Library/OpensslLib/IA32Gcc/crypto/aes/aesni-x86.S b/CryptoPkg/Library/OpensslLib/IA32Gcc/crypto/aes/aesni-x86.S
new file mode 100644 (file)
index 0000000..836e831
--- /dev/null
@@ -0,0 +1,3247 @@
+# 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