aboutsummaryrefslogtreecommitdiff
path: root/client/wolfssl/wolfcrypt/src/aes_gcm_asm.S
diff options
context:
space:
mode:
Diffstat (limited to 'client/wolfssl/wolfcrypt/src/aes_gcm_asm.S')
-rw-r--r--client/wolfssl/wolfcrypt/src/aes_gcm_asm.S8733
1 files changed, 0 insertions, 8733 deletions
diff --git a/client/wolfssl/wolfcrypt/src/aes_gcm_asm.S b/client/wolfssl/wolfcrypt/src/aes_gcm_asm.S
deleted file mode 100644
index e878690..0000000
--- a/client/wolfssl/wolfcrypt/src/aes_gcm_asm.S
+++ /dev/null
@@ -1,8733 +0,0 @@
-/* aes_gcm_asm
- *
- * Copyright (C) 2006-2020 wolfSSL Inc.
- *
- * This file is part of wolfSSL.
- *
- * wolfSSL is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * wolfSSL is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
- */
-
-#ifndef HAVE_INTEL_AVX1
-#define HAVE_INTEL_AVX1
-#endif /* HAVE_INTEL_AVX1 */
-#ifndef NO_AVX2_SUPPORT
-#define HAVE_INTEL_AVX2
-#endif /* NO_AVX2_SUPPORT */
-
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_one:
-.quad 0x0, 0x1
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_two:
-.quad 0x0, 0x2
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_three:
-.quad 0x0, 0x3
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_four:
-.quad 0x0, 0x4
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_five:
-.quad 0x0, 0x5
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_six:
-.quad 0x0, 0x6
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_seven:
-.quad 0x0, 0x7
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_eight:
-.quad 0x0, 0x8
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_bswap_epi64:
-.quad 0x1020304050607, 0x8090a0b0c0d0e0f
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_bswap_mask:
-.quad 0x8090a0b0c0d0e0f, 0x1020304050607
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_aes_gcm_mod2_128:
-.quad 0x1, 0xc200000000000000
-#ifndef __APPLE__
-.text
-.globl AES_GCM_encrypt
-.type AES_GCM_encrypt,@function
-.align 4
-AES_GCM_encrypt:
-#else
-.section __TEXT,__text
-.globl _AES_GCM_encrypt
-.p2align 2
-_AES_GCM_encrypt:
-#endif /* __APPLE__ */
- pushq %r13
- pushq %r12
- pushq %rbx
- pushq %r14
- pushq %r15
- movq %rdx, %r12
- movq %rcx, %rax
- movl 48(%rsp), %r11d
- movl 56(%rsp), %ebx
- movl 64(%rsp), %r14d
- movq 72(%rsp), %r15
- movl 80(%rsp), %r10d
- subq $0xa0, %rsp
- pxor %xmm4, %xmm4
- pxor %xmm6, %xmm6
- cmpl $12, %ebx
- movl %ebx, %edx
- jne L_AES_GCM_encrypt_iv_not_12
- # # Calculate values when IV is 12 bytes
- # Set counter based on IV
- movl $0x1000000, %ecx
- pinsrq $0x00, (%rax), %xmm4
- pinsrd $2, 8(%rax), %xmm4
- pinsrd $3, %ecx, %xmm4
- # H = Encrypt X(=0) and T = Encrypt counter
- movdqa %xmm4, %xmm1
- movdqa (%r15), %xmm5
- pxor %xmm5, %xmm1
- movdqa 16(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 32(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 48(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 64(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 80(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 96(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 112(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 128(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 144(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm7
- jl L_AES_GCM_encrypt_calc_iv_12_last
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 176(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm7
- jl L_AES_GCM_encrypt_calc_iv_12_last
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 208(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 224(%r15), %xmm7
-L_AES_GCM_encrypt_calc_iv_12_last:
- aesenclast %xmm7, %xmm5
- aesenclast %xmm7, %xmm1
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm5
- movdqa %xmm1, 144(%rsp)
- jmp L_AES_GCM_encrypt_iv_done
-L_AES_GCM_encrypt_iv_not_12:
- # Calculate values when IV is not 12 bytes
- # H = Encrypt X(=0)
- movdqa (%r15), %xmm5
- aesenc 16(%r15), %xmm5
- aesenc 32(%r15), %xmm5
- aesenc 48(%r15), %xmm5
- aesenc 64(%r15), %xmm5
- aesenc 80(%r15), %xmm5
- aesenc 96(%r15), %xmm5
- aesenc 112(%r15), %xmm5
- aesenc 128(%r15), %xmm5
- aesenc 144(%r15), %xmm5
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_calc_iv_1_aesenc_avx_last
- aesenc %xmm9, %xmm5
- aesenc 176(%r15), %xmm5
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_calc_iv_1_aesenc_avx_last
- aesenc %xmm9, %xmm5
- aesenc 208(%r15), %xmm5
- movdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_calc_iv_1_aesenc_avx_last:
- aesenclast %xmm9, %xmm5
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm5
- # Calc counter
- # Initialization vector
- cmpl $0x00, %edx
- movq $0x00, %rcx
- je L_AES_GCM_encrypt_calc_iv_done
- cmpl $16, %edx
- jl L_AES_GCM_encrypt_calc_iv_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_encrypt_calc_iv_16_loop:
- movdqu (%rax,%rcx,1), %xmm8
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm4
- pshufd $0x4e, %xmm4, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm4, %xmm3
- pclmulqdq $0x00, %xmm4, %xmm0
- pxor %xmm4, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm4
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm4, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm4
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm4
- por %xmm0, %xmm7
- por %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm4
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_calc_iv_16_loop
- movl %ebx, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_encrypt_calc_iv_done
-L_AES_GCM_encrypt_calc_iv_lt16:
- subq $16, %rsp
- pxor %xmm8, %xmm8
- xorl %ebx, %ebx
- movdqa %xmm8, (%rsp)
-L_AES_GCM_encrypt_calc_iv_loop:
- movzbl (%rax,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_calc_iv_loop
- movdqa (%rsp), %xmm8
- addq $16, %rsp
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm4
- pshufd $0x4e, %xmm4, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm4, %xmm3
- pclmulqdq $0x00, %xmm4, %xmm0
- pxor %xmm4, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm4
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm4, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm4
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm4
- por %xmm0, %xmm7
- por %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm4
-L_AES_GCM_encrypt_calc_iv_done:
- # T = Encrypt counter
- pxor %xmm0, %xmm0
- shll $3, %edx
- pinsrq $0x00, %rdx, %xmm0
- pxor %xmm0, %xmm4
- pshufd $0x4e, %xmm4, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm4, %xmm3
- pclmulqdq $0x00, %xmm4, %xmm0
- pxor %xmm4, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm4
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm4, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm4
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm4
- por %xmm0, %xmm7
- por %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm4
- # Encrypt counter
- movdqa (%r15), %xmm8
- pxor %xmm4, %xmm8
- aesenc 16(%r15), %xmm8
- aesenc 32(%r15), %xmm8
- aesenc 48(%r15), %xmm8
- aesenc 64(%r15), %xmm8
- aesenc 80(%r15), %xmm8
- aesenc 96(%r15), %xmm8
- aesenc 112(%r15), %xmm8
- aesenc 128(%r15), %xmm8
- aesenc 144(%r15), %xmm8
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_calc_iv_2_aesenc_avx_last
- aesenc %xmm9, %xmm8
- aesenc 176(%r15), %xmm8
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_calc_iv_2_aesenc_avx_last
- aesenc %xmm9, %xmm8
- aesenc 208(%r15), %xmm8
- movdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_calc_iv_2_aesenc_avx_last:
- aesenclast %xmm9, %xmm8
- movdqa %xmm8, 144(%rsp)
-L_AES_GCM_encrypt_iv_done:
- # Additional authentication data
- movl %r11d, %edx
- cmpl $0x00, %edx
- je L_AES_GCM_encrypt_calc_aad_done
- xorl %ecx, %ecx
- cmpl $16, %edx
- jl L_AES_GCM_encrypt_calc_aad_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_encrypt_calc_aad_16_loop:
- movdqu (%r12,%rcx,1), %xmm8
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm6
- pshufd $0x4e, %xmm6, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm6, %xmm3
- pclmulqdq $0x00, %xmm6, %xmm0
- pxor %xmm6, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm6
- movdqa %xmm7, %xmm0
- movdqa %xmm6, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm6
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm6
- por %xmm0, %xmm7
- por %xmm1, %xmm6
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm6
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_calc_aad_16_loop
- movl %r11d, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_encrypt_calc_aad_done
-L_AES_GCM_encrypt_calc_aad_lt16:
- subq $16, %rsp
- pxor %xmm8, %xmm8
- xorl %ebx, %ebx
- movdqa %xmm8, (%rsp)
-L_AES_GCM_encrypt_calc_aad_loop:
- movzbl (%r12,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_calc_aad_loop
- movdqa (%rsp), %xmm8
- addq $16, %rsp
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm6
- pshufd $0x4e, %xmm6, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm6, %xmm3
- pclmulqdq $0x00, %xmm6, %xmm0
- pxor %xmm6, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm6
- movdqa %xmm7, %xmm0
- movdqa %xmm6, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm6
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm6
- por %xmm0, %xmm7
- por %xmm1, %xmm6
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm6
-L_AES_GCM_encrypt_calc_aad_done:
- # Calculate counter and H
- pshufb L_aes_gcm_bswap_epi64(%rip), %xmm4
- movdqa %xmm5, %xmm9
- paddd L_aes_gcm_one(%rip), %xmm4
- movdqa %xmm5, %xmm8
- movdqa %xmm4, 128(%rsp)
- psrlq $63, %xmm9
- psllq $0x01, %xmm8
- pslldq $8, %xmm9
- por %xmm9, %xmm8
- pshufd $0xff, %xmm5, %xmm5
- psrad $31, %xmm5
- pand L_aes_gcm_mod2_128(%rip), %xmm5
- pxor %xmm8, %xmm5
- xorq %rbx, %rbx
- cmpl $0x80, %r9d
- movl %r9d, %r13d
- jl L_AES_GCM_encrypt_done_128
- andl $0xffffff80, %r13d
- movdqa %xmm6, %xmm2
- # H ^ 1
- movdqa %xmm5, (%rsp)
- # H ^ 2
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm5, %xmm10
- movdqa %xmm5, %xmm11
- movdqa %xmm5, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm5, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm0
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm0
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm0
- movdqa %xmm0, 16(%rsp)
- # H ^ 3
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm0, %xmm10
- movdqa %xmm0, %xmm11
- movdqa %xmm0, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm0, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm1
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm1
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm1
- movdqa %xmm1, 32(%rsp)
- # H ^ 4
- pshufd $0x4e, %xmm0, %xmm9
- pshufd $0x4e, %xmm0, %xmm10
- movdqa %xmm0, %xmm11
- movdqa %xmm0, %xmm8
- pclmulqdq $0x11, %xmm0, %xmm11
- pclmulqdq $0x00, %xmm0, %xmm8
- pxor %xmm0, %xmm9
- pxor %xmm0, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm3
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm3
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm3
- movdqa %xmm3, 48(%rsp)
- # H ^ 5
- pshufd $0x4e, %xmm0, %xmm9
- pshufd $0x4e, %xmm1, %xmm10
- movdqa %xmm1, %xmm11
- movdqa %xmm1, %xmm8
- pclmulqdq $0x11, %xmm0, %xmm11
- pclmulqdq $0x00, %xmm0, %xmm8
- pxor %xmm0, %xmm9
- pxor %xmm1, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm7
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm7
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm7
- movdqa %xmm7, 64(%rsp)
- # H ^ 6
- pshufd $0x4e, %xmm1, %xmm9
- pshufd $0x4e, %xmm1, %xmm10
- movdqa %xmm1, %xmm11
- movdqa %xmm1, %xmm8
- pclmulqdq $0x11, %xmm1, %xmm11
- pclmulqdq $0x00, %xmm1, %xmm8
- pxor %xmm1, %xmm9
- pxor %xmm1, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm7
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm7
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm7
- movdqa %xmm7, 80(%rsp)
- # H ^ 7
- pshufd $0x4e, %xmm1, %xmm9
- pshufd $0x4e, %xmm3, %xmm10
- movdqa %xmm3, %xmm11
- movdqa %xmm3, %xmm8
- pclmulqdq $0x11, %xmm1, %xmm11
- pclmulqdq $0x00, %xmm1, %xmm8
- pxor %xmm1, %xmm9
- pxor %xmm3, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm7
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm7
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm7
- movdqa %xmm7, 96(%rsp)
- # H ^ 8
- pshufd $0x4e, %xmm3, %xmm9
- pshufd $0x4e, %xmm3, %xmm10
- movdqa %xmm3, %xmm11
- movdqa %xmm3, %xmm8
- pclmulqdq $0x11, %xmm3, %xmm11
- pclmulqdq $0x00, %xmm3, %xmm8
- pxor %xmm3, %xmm9
- pxor %xmm3, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm7
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm7
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm7
- movdqa %xmm7, 112(%rsp)
- # First 128 bytes of input
- movdqa 128(%rsp), %xmm8
- movdqa L_aes_gcm_bswap_epi64(%rip), %xmm1
- movdqa %xmm8, %xmm0
- pshufb %xmm1, %xmm8
- movdqa %xmm0, %xmm9
- paddd L_aes_gcm_one(%rip), %xmm9
- pshufb %xmm1, %xmm9
- movdqa %xmm0, %xmm10
- paddd L_aes_gcm_two(%rip), %xmm10
- pshufb %xmm1, %xmm10
- movdqa %xmm0, %xmm11
- paddd L_aes_gcm_three(%rip), %xmm11
- pshufb %xmm1, %xmm11
- movdqa %xmm0, %xmm12
- paddd L_aes_gcm_four(%rip), %xmm12
- pshufb %xmm1, %xmm12
- movdqa %xmm0, %xmm13
- paddd L_aes_gcm_five(%rip), %xmm13
- pshufb %xmm1, %xmm13
- movdqa %xmm0, %xmm14
- paddd L_aes_gcm_six(%rip), %xmm14
- pshufb %xmm1, %xmm14
- movdqa %xmm0, %xmm15
- paddd L_aes_gcm_seven(%rip), %xmm15
- pshufb %xmm1, %xmm15
- paddd L_aes_gcm_eight(%rip), %xmm0
- movdqa (%r15), %xmm7
- movdqa %xmm0, 128(%rsp)
- pxor %xmm7, %xmm8
- pxor %xmm7, %xmm9
- pxor %xmm7, %xmm10
- pxor %xmm7, %xmm11
- pxor %xmm7, %xmm12
- pxor %xmm7, %xmm13
- pxor %xmm7, %xmm14
- pxor %xmm7, %xmm15
- movdqa 16(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 32(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 48(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 64(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 80(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 96(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 112(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 128(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 144(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm7
- jl L_AES_GCM_encrypt_enc_done
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 176(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm7
- jl L_AES_GCM_encrypt_enc_done
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 208(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 224(%r15), %xmm7
-L_AES_GCM_encrypt_enc_done:
- aesenclast %xmm7, %xmm8
- aesenclast %xmm7, %xmm9
- movdqu (%rdi), %xmm0
- movdqu 16(%rdi), %xmm1
- pxor %xmm0, %xmm8
- pxor %xmm1, %xmm9
- movdqu %xmm8, (%rsi)
- movdqu %xmm9, 16(%rsi)
- aesenclast %xmm7, %xmm10
- aesenclast %xmm7, %xmm11
- movdqu 32(%rdi), %xmm0
- movdqu 48(%rdi), %xmm1
- pxor %xmm0, %xmm10
- pxor %xmm1, %xmm11
- movdqu %xmm10, 32(%rsi)
- movdqu %xmm11, 48(%rsi)
- aesenclast %xmm7, %xmm12
- aesenclast %xmm7, %xmm13
- movdqu 64(%rdi), %xmm0
- movdqu 80(%rdi), %xmm1
- pxor %xmm0, %xmm12
- pxor %xmm1, %xmm13
- movdqu %xmm12, 64(%rsi)
- movdqu %xmm13, 80(%rsi)
- aesenclast %xmm7, %xmm14
- aesenclast %xmm7, %xmm15
- movdqu 96(%rdi), %xmm0
- movdqu 112(%rdi), %xmm1
- pxor %xmm0, %xmm14
- pxor %xmm1, %xmm15
- movdqu %xmm14, 96(%rsi)
- movdqu %xmm15, 112(%rsi)
- cmpl $0x80, %r13d
- movl $0x80, %ebx
- jle L_AES_GCM_encrypt_end_128
- # More 128 bytes of input
-L_AES_GCM_encrypt_ghash_128:
- leaq (%rdi,%rbx,1), %rcx
- leaq (%rsi,%rbx,1), %rdx
- movdqa 128(%rsp), %xmm8
- movdqa L_aes_gcm_bswap_epi64(%rip), %xmm1
- movdqa %xmm8, %xmm0
- pshufb %xmm1, %xmm8
- movdqa %xmm0, %xmm9
- paddd L_aes_gcm_one(%rip), %xmm9
- pshufb %xmm1, %xmm9
- movdqa %xmm0, %xmm10
- paddd L_aes_gcm_two(%rip), %xmm10
- pshufb %xmm1, %xmm10
- movdqa %xmm0, %xmm11
- paddd L_aes_gcm_three(%rip), %xmm11
- pshufb %xmm1, %xmm11
- movdqa %xmm0, %xmm12
- paddd L_aes_gcm_four(%rip), %xmm12
- pshufb %xmm1, %xmm12
- movdqa %xmm0, %xmm13
- paddd L_aes_gcm_five(%rip), %xmm13
- pshufb %xmm1, %xmm13
- movdqa %xmm0, %xmm14
- paddd L_aes_gcm_six(%rip), %xmm14
- pshufb %xmm1, %xmm14
- movdqa %xmm0, %xmm15
- paddd L_aes_gcm_seven(%rip), %xmm15
- pshufb %xmm1, %xmm15
- paddd L_aes_gcm_eight(%rip), %xmm0
- movdqa (%r15), %xmm7
- movdqa %xmm0, 128(%rsp)
- pxor %xmm7, %xmm8
- pxor %xmm7, %xmm9
- pxor %xmm7, %xmm10
- pxor %xmm7, %xmm11
- pxor %xmm7, %xmm12
- pxor %xmm7, %xmm13
- pxor %xmm7, %xmm14
- pxor %xmm7, %xmm15
- movdqa 112(%rsp), %xmm7
- movdqu -128(%rdx), %xmm0
- aesenc 16(%r15), %xmm8
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- pxor %xmm2, %xmm0
- pshufd $0x4e, %xmm7, %xmm1
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm7, %xmm1
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm3
- pclmulqdq $0x11, %xmm7, %xmm3
- aesenc 16(%r15), %xmm9
- aesenc 16(%r15), %xmm10
- movdqa %xmm0, %xmm2
- pclmulqdq $0x00, %xmm7, %xmm2
- aesenc 16(%r15), %xmm11
- aesenc 16(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm1
- aesenc 16(%r15), %xmm13
- aesenc 16(%r15), %xmm14
- aesenc 16(%r15), %xmm15
- pxor %xmm2, %xmm1
- pxor %xmm3, %xmm1
- movdqa 96(%rsp), %xmm7
- movdqu -112(%rdx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 32(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 32(%r15), %xmm9
- aesenc 32(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 32(%r15), %xmm11
- aesenc 32(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 32(%r15), %xmm13
- aesenc 32(%r15), %xmm14
- aesenc 32(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 80(%rsp), %xmm7
- movdqu -96(%rdx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 48(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 48(%r15), %xmm9
- aesenc 48(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 48(%r15), %xmm11
- aesenc 48(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 48(%r15), %xmm13
- aesenc 48(%r15), %xmm14
- aesenc 48(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 64(%rsp), %xmm7
- movdqu -80(%rdx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 64(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 64(%r15), %xmm9
- aesenc 64(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 64(%r15), %xmm11
- aesenc 64(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 64(%r15), %xmm13
- aesenc 64(%r15), %xmm14
- aesenc 64(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 48(%rsp), %xmm7
- movdqu -64(%rdx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 80(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 80(%r15), %xmm9
- aesenc 80(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 80(%r15), %xmm11
- aesenc 80(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 80(%r15), %xmm13
- aesenc 80(%r15), %xmm14
- aesenc 80(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 32(%rsp), %xmm7
- movdqu -48(%rdx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 96(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 96(%r15), %xmm9
- aesenc 96(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 96(%r15), %xmm11
- aesenc 96(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 96(%r15), %xmm13
- aesenc 96(%r15), %xmm14
- aesenc 96(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 16(%rsp), %xmm7
- movdqu -32(%rdx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 112(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 112(%r15), %xmm9
- aesenc 112(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 112(%r15), %xmm11
- aesenc 112(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 112(%r15), %xmm13
- aesenc 112(%r15), %xmm14
- aesenc 112(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa (%rsp), %xmm7
- movdqu -16(%rdx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 128(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 128(%r15), %xmm9
- aesenc 128(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 128(%r15), %xmm11
- aesenc 128(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 128(%r15), %xmm13
- aesenc 128(%r15), %xmm14
- aesenc 128(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa %xmm1, %xmm5
- psrldq $8, %xmm1
- pslldq $8, %xmm5
- aesenc 144(%r15), %xmm8
- pxor %xmm5, %xmm2
- pxor %xmm1, %xmm3
- movdqa %xmm2, %xmm7
- movdqa %xmm2, %xmm4
- movdqa %xmm2, %xmm5
- aesenc 144(%r15), %xmm9
- pslld $31, %xmm7
- pslld $30, %xmm4
- pslld $25, %xmm5
- aesenc 144(%r15), %xmm10
- pxor %xmm4, %xmm7
- pxor %xmm5, %xmm7
- aesenc 144(%r15), %xmm11
- movdqa %xmm7, %xmm4
- pslldq $12, %xmm7
- psrldq $4, %xmm4
- aesenc 144(%r15), %xmm12
- pxor %xmm7, %xmm2
- movdqa %xmm2, %xmm5
- movdqa %xmm2, %xmm1
- movdqa %xmm2, %xmm0
- aesenc 144(%r15), %xmm13
- psrld $0x01, %xmm5
- psrld $2, %xmm1
- psrld $7, %xmm0
- aesenc 144(%r15), %xmm14
- pxor %xmm1, %xmm5
- pxor %xmm0, %xmm5
- aesenc 144(%r15), %xmm15
- pxor %xmm4, %xmm5
- pxor %xmm5, %xmm2
- pxor %xmm3, %xmm2
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm7
- jl L_AES_GCM_encrypt_aesenc_128_ghash_avx_done
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 176(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm7
- jl L_AES_GCM_encrypt_aesenc_128_ghash_avx_done
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 208(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 224(%r15), %xmm7
-L_AES_GCM_encrypt_aesenc_128_ghash_avx_done:
- aesenclast %xmm7, %xmm8
- aesenclast %xmm7, %xmm9
- movdqu (%rcx), %xmm0
- movdqu 16(%rcx), %xmm1
- pxor %xmm0, %xmm8
- pxor %xmm1, %xmm9
- movdqu %xmm8, (%rdx)
- movdqu %xmm9, 16(%rdx)
- aesenclast %xmm7, %xmm10
- aesenclast %xmm7, %xmm11
- movdqu 32(%rcx), %xmm0
- movdqu 48(%rcx), %xmm1
- pxor %xmm0, %xmm10
- pxor %xmm1, %xmm11
- movdqu %xmm10, 32(%rdx)
- movdqu %xmm11, 48(%rdx)
- aesenclast %xmm7, %xmm12
- aesenclast %xmm7, %xmm13
- movdqu 64(%rcx), %xmm0
- movdqu 80(%rcx), %xmm1
- pxor %xmm0, %xmm12
- pxor %xmm1, %xmm13
- movdqu %xmm12, 64(%rdx)
- movdqu %xmm13, 80(%rdx)
- aesenclast %xmm7, %xmm14
- aesenclast %xmm7, %xmm15
- movdqu 96(%rcx), %xmm0
- movdqu 112(%rcx), %xmm1
- pxor %xmm0, %xmm14
- pxor %xmm1, %xmm15
- movdqu %xmm14, 96(%rdx)
- movdqu %xmm15, 112(%rdx)
- addl $0x80, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_encrypt_ghash_128
-L_AES_GCM_encrypt_end_128:
- movdqa L_aes_gcm_bswap_mask(%rip), %xmm4
- pshufb %xmm4, %xmm8
- pshufb %xmm4, %xmm9
- pshufb %xmm4, %xmm10
- pshufb %xmm4, %xmm11
- pxor %xmm2, %xmm8
- pshufb %xmm4, %xmm12
- pshufb %xmm4, %xmm13
- pshufb %xmm4, %xmm14
- pshufb %xmm4, %xmm15
- movdqa 112(%rsp), %xmm7
- pshufd $0x4e, %xmm8, %xmm1
- pshufd $0x4e, %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- pclmulqdq $0x11, %xmm8, %xmm3
- pclmulqdq $0x00, %xmm8, %xmm0
- pxor %xmm8, %xmm1
- pxor %xmm7, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm4
- movdqa %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm4
- pxor %xmm1, %xmm6
- movdqa 96(%rsp), %xmm7
- pshufd $0x4e, %xmm9, %xmm1
- pshufd $0x4e, %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- pclmulqdq $0x11, %xmm9, %xmm3
- pclmulqdq $0x00, %xmm9, %xmm0
- pxor %xmm9, %xmm1
- pxor %xmm7, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- pxor %xmm0, %xmm4
- pxor %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm4
- pxor %xmm1, %xmm6
- movdqa 80(%rsp), %xmm7
- pshufd $0x4e, %xmm10, %xmm1
- pshufd $0x4e, %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- pclmulqdq $0x11, %xmm10, %xmm3
- pclmulqdq $0x00, %xmm10, %xmm0
- pxor %xmm10, %xmm1
- pxor %xmm7, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- pxor %xmm0, %xmm4
- pxor %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm4
- pxor %xmm1, %xmm6
- movdqa 64(%rsp), %xmm7
- pshufd $0x4e, %xmm11, %xmm1
- pshufd $0x4e, %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- pclmulqdq $0x11, %xmm11, %xmm3
- pclmulqdq $0x00, %xmm11, %xmm0
- pxor %xmm11, %xmm1
- pxor %xmm7, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- pxor %xmm0, %xmm4
- pxor %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm4
- pxor %xmm1, %xmm6
- movdqa 48(%rsp), %xmm7
- pshufd $0x4e, %xmm12, %xmm1
- pshufd $0x4e, %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- pclmulqdq $0x11, %xmm12, %xmm3
- pclmulqdq $0x00, %xmm12, %xmm0
- pxor %xmm12, %xmm1
- pxor %xmm7, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- pxor %xmm0, %xmm4
- pxor %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm4
- pxor %xmm1, %xmm6
- movdqa 32(%rsp), %xmm7
- pshufd $0x4e, %xmm13, %xmm1
- pshufd $0x4e, %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- pclmulqdq $0x11, %xmm13, %xmm3
- pclmulqdq $0x00, %xmm13, %xmm0
- pxor %xmm13, %xmm1
- pxor %xmm7, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- pxor %xmm0, %xmm4
- pxor %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm4
- pxor %xmm1, %xmm6
- movdqa 16(%rsp), %xmm7
- pshufd $0x4e, %xmm14, %xmm1
- pshufd $0x4e, %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- pclmulqdq $0x11, %xmm14, %xmm3
- pclmulqdq $0x00, %xmm14, %xmm0
- pxor %xmm14, %xmm1
- pxor %xmm7, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- pxor %xmm0, %xmm4
- pxor %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm4
- pxor %xmm1, %xmm6
- movdqa (%rsp), %xmm7
- pshufd $0x4e, %xmm15, %xmm1
- pshufd $0x4e, %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- pclmulqdq $0x11, %xmm15, %xmm3
- pclmulqdq $0x00, %xmm15, %xmm0
- pxor %xmm15, %xmm1
- pxor %xmm7, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- pxor %xmm0, %xmm4
- pxor %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm4
- pxor %xmm1, %xmm6
- movdqa %xmm4, %xmm0
- movdqa %xmm4, %xmm1
- movdqa %xmm4, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm4
- movdqa %xmm4, %xmm2
- movdqa %xmm4, %xmm3
- movdqa %xmm4, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm4, %xmm2
- pxor %xmm2, %xmm6
- movdqa (%rsp), %xmm5
-L_AES_GCM_encrypt_done_128:
- movl %r9d, %edx
- cmpl %edx, %ebx
- jge L_AES_GCM_encrypt_done_enc
- movl %r9d, %r13d
- andl $0xfffffff0, %r13d
- cmpl %r13d, %ebx
- jge L_AES_GCM_encrypt_last_block_done
- leaq (%rdi,%rbx,1), %rcx
- leaq (%rsi,%rbx,1), %rdx
- movdqa 128(%rsp), %xmm8
- movdqa %xmm8, %xmm9
- pshufb L_aes_gcm_bswap_epi64(%rip), %xmm8
- paddd L_aes_gcm_one(%rip), %xmm9
- pxor (%r15), %xmm8
- movdqa %xmm9, 128(%rsp)
- aesenc 16(%r15), %xmm8
- aesenc 32(%r15), %xmm8
- aesenc 48(%r15), %xmm8
- aesenc 64(%r15), %xmm8
- aesenc 80(%r15), %xmm8
- aesenc 96(%r15), %xmm8
- aesenc 112(%r15), %xmm8
- aesenc 128(%r15), %xmm8
- aesenc 144(%r15), %xmm8
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_aesenc_block_aesenc_avx_last
- aesenc %xmm9, %xmm8
- aesenc 176(%r15), %xmm8
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_aesenc_block_aesenc_avx_last
- aesenc %xmm9, %xmm8
- aesenc 208(%r15), %xmm8
- movdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_aesenc_block_aesenc_avx_last:
- aesenclast %xmm9, %xmm8
- movdqu (%rcx), %xmm9
- pxor %xmm9, %xmm8
- movdqu %xmm8, (%rdx)
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm6
- addl $16, %ebx
- cmpl %r13d, %ebx
- jge L_AES_GCM_encrypt_last_block_ghash
-L_AES_GCM_encrypt_last_block_start:
- leaq (%rdi,%rbx,1), %rcx
- leaq (%rsi,%rbx,1), %rdx
- movdqa 128(%rsp), %xmm8
- movdqa %xmm8, %xmm9
- pshufb L_aes_gcm_bswap_epi64(%rip), %xmm8
- paddd L_aes_gcm_one(%rip), %xmm9
- pxor (%r15), %xmm8
- movdqa %xmm9, 128(%rsp)
- movdqa %xmm6, %xmm10
- pclmulqdq $16, %xmm5, %xmm10
- aesenc 16(%r15), %xmm8
- aesenc 32(%r15), %xmm8
- movdqa %xmm6, %xmm11
- pclmulqdq $0x01, %xmm5, %xmm11
- aesenc 48(%r15), %xmm8
- aesenc 64(%r15), %xmm8
- movdqa %xmm6, %xmm12
- pclmulqdq $0x00, %xmm5, %xmm12
- aesenc 80(%r15), %xmm8
- movdqa %xmm6, %xmm1
- pclmulqdq $0x11, %xmm5, %xmm1
- aesenc 96(%r15), %xmm8
- pxor %xmm11, %xmm10
- movdqa %xmm10, %xmm2
- psrldq $8, %xmm10
- pslldq $8, %xmm2
- aesenc 112(%r15), %xmm8
- movdqa %xmm1, %xmm3
- pxor %xmm12, %xmm2
- pxor %xmm10, %xmm3
- movdqa L_aes_gcm_mod2_128(%rip), %xmm0
- movdqa %xmm2, %xmm11
- pclmulqdq $16, %xmm0, %xmm11
- aesenc 128(%r15), %xmm8
- pshufd $0x4e, %xmm2, %xmm10
- pxor %xmm11, %xmm10
- movdqa %xmm10, %xmm11
- pclmulqdq $16, %xmm0, %xmm11
- aesenc 144(%r15), %xmm8
- pshufd $0x4e, %xmm10, %xmm6
- pxor %xmm11, %xmm6
- pxor %xmm3, %xmm6
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_aesenc_gfmul_last
- aesenc %xmm9, %xmm8
- aesenc 176(%r15), %xmm8
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_aesenc_gfmul_last
- aesenc %xmm9, %xmm8
- aesenc 208(%r15), %xmm8
- movdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_aesenc_gfmul_last:
- aesenclast %xmm9, %xmm8
- movdqu (%rcx), %xmm9
- pxor %xmm9, %xmm8
- movdqu %xmm8, (%rdx)
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm6
- addl $16, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_encrypt_last_block_start
-L_AES_GCM_encrypt_last_block_ghash:
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm6, %xmm10
- movdqa %xmm6, %xmm11
- movdqa %xmm6, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm6, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm6
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm6
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm6
-L_AES_GCM_encrypt_last_block_done:
- movl %r9d, %ecx
- movl %ecx, %edx
- andl $15, %ecx
- jz L_AES_GCM_encrypt_aesenc_last15_enc_avx_done
- movdqa 128(%rsp), %xmm4
- pshufb L_aes_gcm_bswap_epi64(%rip), %xmm4
- pxor (%r15), %xmm4
- aesenc 16(%r15), %xmm4
- aesenc 32(%r15), %xmm4
- aesenc 48(%r15), %xmm4
- aesenc 64(%r15), %xmm4
- aesenc 80(%r15), %xmm4
- aesenc 96(%r15), %xmm4
- aesenc 112(%r15), %xmm4
- aesenc 128(%r15), %xmm4
- aesenc 144(%r15), %xmm4
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_aesenc_last15_enc_avx_aesenc_avx_last
- aesenc %xmm9, %xmm4
- aesenc 176(%r15), %xmm4
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_aesenc_last15_enc_avx_aesenc_avx_last
- aesenc %xmm9, %xmm4
- aesenc 208(%r15), %xmm4
- movdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_aesenc_last15_enc_avx_aesenc_avx_last:
- aesenclast %xmm9, %xmm4
- subq $16, %rsp
- xorl %ecx, %ecx
- movdqa %xmm4, (%rsp)
-L_AES_GCM_encrypt_aesenc_last15_enc_avx_loop:
- movzbl (%rdi,%rbx,1), %r13d
- xorb (%rsp,%rcx,1), %r13b
- movb %r13b, (%rsi,%rbx,1)
- movb %r13b, (%rsp,%rcx,1)
- incl %ebx
- incl %ecx
- cmpl %edx, %ebx
- jl L_AES_GCM_encrypt_aesenc_last15_enc_avx_loop
- xorq %r13, %r13
- cmpl $16, %ecx
- je L_AES_GCM_encrypt_aesenc_last15_enc_avx_finish_enc
-L_AES_GCM_encrypt_aesenc_last15_enc_avx_byte_loop:
- movb %r13b, (%rsp,%rcx,1)
- incl %ecx
- cmpl $16, %ecx
- jl L_AES_GCM_encrypt_aesenc_last15_enc_avx_byte_loop
-L_AES_GCM_encrypt_aesenc_last15_enc_avx_finish_enc:
- movdqa (%rsp), %xmm4
- addq $16, %rsp
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm4
- pxor %xmm4, %xmm6
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm6, %xmm10
- movdqa %xmm6, %xmm11
- movdqa %xmm6, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm6, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm6
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm6
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm6
-L_AES_GCM_encrypt_aesenc_last15_enc_avx_done:
-L_AES_GCM_encrypt_done_enc:
- movl %r9d, %edx
- movl %r11d, %ecx
- shlq $3, %rdx
- shlq $3, %rcx
- pinsrq $0x00, %rdx, %xmm0
- pinsrq $0x01, %rcx, %xmm0
- pxor %xmm0, %xmm6
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm6, %xmm10
- movdqa %xmm6, %xmm11
- movdqa %xmm6, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm6, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm6
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm6
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm6
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm6
- movdqa 144(%rsp), %xmm0
- pxor %xmm6, %xmm0
- cmpl $16, %r14d
- je L_AES_GCM_encrypt_store_tag_16
- xorq %rcx, %rcx
- movdqa %xmm0, (%rsp)
-L_AES_GCM_encrypt_store_tag_loop:
- movzbl (%rsp,%rcx,1), %r13d
- movb %r13b, (%r8,%rcx,1)
- incl %ecx
- cmpl %r14d, %ecx
- jne L_AES_GCM_encrypt_store_tag_loop
- jmp L_AES_GCM_encrypt_store_tag_done
-L_AES_GCM_encrypt_store_tag_16:
- movdqu %xmm0, (%r8)
-L_AES_GCM_encrypt_store_tag_done:
- addq $0xa0, %rsp
- popq %r15
- popq %r14
- popq %rbx
- popq %r12
- popq %r13
- repz retq
-#ifndef __APPLE__
-.size AES_GCM_encrypt,.-AES_GCM_encrypt
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.text
-.globl AES_GCM_decrypt
-.type AES_GCM_decrypt,@function
-.align 4
-AES_GCM_decrypt:
-#else
-.section __TEXT,__text
-.globl _AES_GCM_decrypt
-.p2align 2
-_AES_GCM_decrypt:
-#endif /* __APPLE__ */
- pushq %r13
- pushq %r12
- pushq %rbx
- pushq %r14
- pushq %r15
- pushq %rbp
- movq %rdx, %r12
- movq %rcx, %rax
- movl 56(%rsp), %r11d
- movl 64(%rsp), %ebx
- movl 72(%rsp), %r14d
- movq 80(%rsp), %r15
- movl 88(%rsp), %r10d
- movq 96(%rsp), %rbp
- subq $0xa8, %rsp
- pxor %xmm4, %xmm4
- pxor %xmm6, %xmm6
- cmpl $12, %ebx
- movl %ebx, %edx
- jne L_AES_GCM_decrypt_iv_not_12
- # # Calculate values when IV is 12 bytes
- # Set counter based on IV
- movl $0x1000000, %ecx
- pinsrq $0x00, (%rax), %xmm4
- pinsrd $2, 8(%rax), %xmm4
- pinsrd $3, %ecx, %xmm4
- # H = Encrypt X(=0) and T = Encrypt counter
- movdqa %xmm4, %xmm1
- movdqa (%r15), %xmm5
- pxor %xmm5, %xmm1
- movdqa 16(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 32(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 48(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 64(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 80(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 96(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 112(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 128(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 144(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm7
- jl L_AES_GCM_decrypt_calc_iv_12_last
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 176(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm7
- jl L_AES_GCM_decrypt_calc_iv_12_last
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 208(%r15), %xmm7
- aesenc %xmm7, %xmm5
- aesenc %xmm7, %xmm1
- movdqa 224(%r15), %xmm7
-L_AES_GCM_decrypt_calc_iv_12_last:
- aesenclast %xmm7, %xmm5
- aesenclast %xmm7, %xmm1
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm5
- movdqa %xmm1, 144(%rsp)
- jmp L_AES_GCM_decrypt_iv_done
-L_AES_GCM_decrypt_iv_not_12:
- # Calculate values when IV is not 12 bytes
- # H = Encrypt X(=0)
- movdqa (%r15), %xmm5
- aesenc 16(%r15), %xmm5
- aesenc 32(%r15), %xmm5
- aesenc 48(%r15), %xmm5
- aesenc 64(%r15), %xmm5
- aesenc 80(%r15), %xmm5
- aesenc 96(%r15), %xmm5
- aesenc 112(%r15), %xmm5
- aesenc 128(%r15), %xmm5
- aesenc 144(%r15), %xmm5
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_decrypt_calc_iv_1_aesenc_avx_last
- aesenc %xmm9, %xmm5
- aesenc 176(%r15), %xmm5
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_decrypt_calc_iv_1_aesenc_avx_last
- aesenc %xmm9, %xmm5
- aesenc 208(%r15), %xmm5
- movdqa 224(%r15), %xmm9
-L_AES_GCM_decrypt_calc_iv_1_aesenc_avx_last:
- aesenclast %xmm9, %xmm5
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm5
- # Calc counter
- # Initialization vector
- cmpl $0x00, %edx
- movq $0x00, %rcx
- je L_AES_GCM_decrypt_calc_iv_done
- cmpl $16, %edx
- jl L_AES_GCM_decrypt_calc_iv_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_decrypt_calc_iv_16_loop:
- movdqu (%rax,%rcx,1), %xmm8
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm4
- pshufd $0x4e, %xmm4, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm4, %xmm3
- pclmulqdq $0x00, %xmm4, %xmm0
- pxor %xmm4, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm4
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm4, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm4
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm4
- por %xmm0, %xmm7
- por %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm4
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_calc_iv_16_loop
- movl %ebx, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_decrypt_calc_iv_done
-L_AES_GCM_decrypt_calc_iv_lt16:
- subq $16, %rsp
- pxor %xmm8, %xmm8
- xorl %ebx, %ebx
- movdqa %xmm8, (%rsp)
-L_AES_GCM_decrypt_calc_iv_loop:
- movzbl (%rax,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_calc_iv_loop
- movdqa (%rsp), %xmm8
- addq $16, %rsp
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm4
- pshufd $0x4e, %xmm4, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm4, %xmm3
- pclmulqdq $0x00, %xmm4, %xmm0
- pxor %xmm4, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm4
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm4, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm4
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm4
- por %xmm0, %xmm7
- por %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm4
-L_AES_GCM_decrypt_calc_iv_done:
- # T = Encrypt counter
- pxor %xmm0, %xmm0
- shll $3, %edx
- pinsrq $0x00, %rdx, %xmm0
- pxor %xmm0, %xmm4
- pshufd $0x4e, %xmm4, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm4, %xmm3
- pclmulqdq $0x00, %xmm4, %xmm0
- pxor %xmm4, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm4
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm4, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm4
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm4
- por %xmm0, %xmm7
- por %xmm1, %xmm4
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm4
- # Encrypt counter
- movdqa (%r15), %xmm8
- pxor %xmm4, %xmm8
- aesenc 16(%r15), %xmm8
- aesenc 32(%r15), %xmm8
- aesenc 48(%r15), %xmm8
- aesenc 64(%r15), %xmm8
- aesenc 80(%r15), %xmm8
- aesenc 96(%r15), %xmm8
- aesenc 112(%r15), %xmm8
- aesenc 128(%r15), %xmm8
- aesenc 144(%r15), %xmm8
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_decrypt_calc_iv_2_aesenc_avx_last
- aesenc %xmm9, %xmm8
- aesenc 176(%r15), %xmm8
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_decrypt_calc_iv_2_aesenc_avx_last
- aesenc %xmm9, %xmm8
- aesenc 208(%r15), %xmm8
- movdqa 224(%r15), %xmm9
-L_AES_GCM_decrypt_calc_iv_2_aesenc_avx_last:
- aesenclast %xmm9, %xmm8
- movdqa %xmm8, 144(%rsp)
-L_AES_GCM_decrypt_iv_done:
- # Additional authentication data
- movl %r11d, %edx
- cmpl $0x00, %edx
- je L_AES_GCM_decrypt_calc_aad_done
- xorl %ecx, %ecx
- cmpl $16, %edx
- jl L_AES_GCM_decrypt_calc_aad_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_decrypt_calc_aad_16_loop:
- movdqu (%r12,%rcx,1), %xmm8
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm6
- pshufd $0x4e, %xmm6, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm6, %xmm3
- pclmulqdq $0x00, %xmm6, %xmm0
- pxor %xmm6, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm6
- movdqa %xmm7, %xmm0
- movdqa %xmm6, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm6
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm6
- por %xmm0, %xmm7
- por %xmm1, %xmm6
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm6
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_calc_aad_16_loop
- movl %r11d, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_decrypt_calc_aad_done
-L_AES_GCM_decrypt_calc_aad_lt16:
- subq $16, %rsp
- pxor %xmm8, %xmm8
- xorl %ebx, %ebx
- movdqa %xmm8, (%rsp)
-L_AES_GCM_decrypt_calc_aad_loop:
- movzbl (%r12,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_calc_aad_loop
- movdqa (%rsp), %xmm8
- addq $16, %rsp
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm8
- pxor %xmm8, %xmm6
- pshufd $0x4e, %xmm6, %xmm1
- pshufd $0x4e, %xmm5, %xmm2
- movdqa %xmm5, %xmm3
- movdqa %xmm5, %xmm0
- pclmulqdq $0x11, %xmm6, %xmm3
- pclmulqdq $0x00, %xmm6, %xmm0
- pxor %xmm6, %xmm1
- pxor %xmm5, %xmm2
- pclmulqdq $0x00, %xmm2, %xmm1
- pxor %xmm0, %xmm1
- pxor %xmm3, %xmm1
- movdqa %xmm1, %xmm2
- movdqa %xmm0, %xmm7
- movdqa %xmm3, %xmm6
- pslldq $8, %xmm2
- psrldq $8, %xmm1
- pxor %xmm2, %xmm7
- pxor %xmm1, %xmm6
- movdqa %xmm7, %xmm0
- movdqa %xmm6, %xmm1
- psrld $31, %xmm0
- psrld $31, %xmm1
- pslld $0x01, %xmm7
- pslld $0x01, %xmm6
- movdqa %xmm0, %xmm2
- pslldq $4, %xmm0
- psrldq $12, %xmm2
- pslldq $4, %xmm1
- por %xmm2, %xmm6
- por %xmm0, %xmm7
- por %xmm1, %xmm6
- movdqa %xmm7, %xmm0
- movdqa %xmm7, %xmm1
- movdqa %xmm7, %xmm2
- pslld $31, %xmm0
- pslld $30, %xmm1
- pslld $25, %xmm2
- pxor %xmm1, %xmm0
- pxor %xmm2, %xmm0
- movdqa %xmm0, %xmm1
- psrldq $4, %xmm1
- pslldq $12, %xmm0
- pxor %xmm0, %xmm7
- movdqa %xmm7, %xmm2
- movdqa %xmm7, %xmm3
- movdqa %xmm7, %xmm0
- psrld $0x01, %xmm2
- psrld $2, %xmm3
- psrld $7, %xmm0
- pxor %xmm3, %xmm2
- pxor %xmm0, %xmm2
- pxor %xmm1, %xmm2
- pxor %xmm7, %xmm2
- pxor %xmm2, %xmm6
-L_AES_GCM_decrypt_calc_aad_done:
- # Calculate counter and H
- pshufb L_aes_gcm_bswap_epi64(%rip), %xmm4
- movdqa %xmm5, %xmm9
- paddd L_aes_gcm_one(%rip), %xmm4
- movdqa %xmm5, %xmm8
- movdqa %xmm4, 128(%rsp)
- psrlq $63, %xmm9
- psllq $0x01, %xmm8
- pslldq $8, %xmm9
- por %xmm9, %xmm8
- pshufd $0xff, %xmm5, %xmm5
- psrad $31, %xmm5
- pand L_aes_gcm_mod2_128(%rip), %xmm5
- pxor %xmm8, %xmm5
- xorl %ebx, %ebx
- cmpl $0x80, %r9d
- movl %r9d, %r13d
- jl L_AES_GCM_decrypt_done_128
- andl $0xffffff80, %r13d
- movdqa %xmm6, %xmm2
- # H ^ 1
- movdqa %xmm5, (%rsp)
- # H ^ 2
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm5, %xmm10
- movdqa %xmm5, %xmm11
- movdqa %xmm5, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm5, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm0
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm0
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm0
- movdqa %xmm0, 16(%rsp)
- # H ^ 3
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm0, %xmm10
- movdqa %xmm0, %xmm11
- movdqa %xmm0, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm0, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm1
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm1
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm1
- movdqa %xmm1, 32(%rsp)
- # H ^ 4
- pshufd $0x4e, %xmm0, %xmm9
- pshufd $0x4e, %xmm0, %xmm10
- movdqa %xmm0, %xmm11
- movdqa %xmm0, %xmm8
- pclmulqdq $0x11, %xmm0, %xmm11
- pclmulqdq $0x00, %xmm0, %xmm8
- pxor %xmm0, %xmm9
- pxor %xmm0, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm3
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm3
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm3
- movdqa %xmm3, 48(%rsp)
- # H ^ 5
- pshufd $0x4e, %xmm0, %xmm9
- pshufd $0x4e, %xmm1, %xmm10
- movdqa %xmm1, %xmm11
- movdqa %xmm1, %xmm8
- pclmulqdq $0x11, %xmm0, %xmm11
- pclmulqdq $0x00, %xmm0, %xmm8
- pxor %xmm0, %xmm9
- pxor %xmm1, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm7
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm7
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm7
- movdqa %xmm7, 64(%rsp)
- # H ^ 6
- pshufd $0x4e, %xmm1, %xmm9
- pshufd $0x4e, %xmm1, %xmm10
- movdqa %xmm1, %xmm11
- movdqa %xmm1, %xmm8
- pclmulqdq $0x11, %xmm1, %xmm11
- pclmulqdq $0x00, %xmm1, %xmm8
- pxor %xmm1, %xmm9
- pxor %xmm1, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm7
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm7
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm7
- movdqa %xmm7, 80(%rsp)
- # H ^ 7
- pshufd $0x4e, %xmm1, %xmm9
- pshufd $0x4e, %xmm3, %xmm10
- movdqa %xmm3, %xmm11
- movdqa %xmm3, %xmm8
- pclmulqdq $0x11, %xmm1, %xmm11
- pclmulqdq $0x00, %xmm1, %xmm8
- pxor %xmm1, %xmm9
- pxor %xmm3, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm7
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm7
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm7
- movdqa %xmm7, 96(%rsp)
- # H ^ 8
- pshufd $0x4e, %xmm3, %xmm9
- pshufd $0x4e, %xmm3, %xmm10
- movdqa %xmm3, %xmm11
- movdqa %xmm3, %xmm8
- pclmulqdq $0x11, %xmm3, %xmm11
- pclmulqdq $0x00, %xmm3, %xmm8
- pxor %xmm3, %xmm9
- pxor %xmm3, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm7
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm7
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm7
- movdqa %xmm7, 112(%rsp)
-L_AES_GCM_decrypt_ghash_128:
- leaq (%rdi,%rbx,1), %rcx
- leaq (%rsi,%rbx,1), %rdx
- movdqa 128(%rsp), %xmm8
- movdqa L_aes_gcm_bswap_epi64(%rip), %xmm1
- movdqa %xmm8, %xmm0
- pshufb %xmm1, %xmm8
- movdqa %xmm0, %xmm9
- paddd L_aes_gcm_one(%rip), %xmm9
- pshufb %xmm1, %xmm9
- movdqa %xmm0, %xmm10
- paddd L_aes_gcm_two(%rip), %xmm10
- pshufb %xmm1, %xmm10
- movdqa %xmm0, %xmm11
- paddd L_aes_gcm_three(%rip), %xmm11
- pshufb %xmm1, %xmm11
- movdqa %xmm0, %xmm12
- paddd L_aes_gcm_four(%rip), %xmm12
- pshufb %xmm1, %xmm12
- movdqa %xmm0, %xmm13
- paddd L_aes_gcm_five(%rip), %xmm13
- pshufb %xmm1, %xmm13
- movdqa %xmm0, %xmm14
- paddd L_aes_gcm_six(%rip), %xmm14
- pshufb %xmm1, %xmm14
- movdqa %xmm0, %xmm15
- paddd L_aes_gcm_seven(%rip), %xmm15
- pshufb %xmm1, %xmm15
- paddd L_aes_gcm_eight(%rip), %xmm0
- movdqa (%r15), %xmm7
- movdqa %xmm0, 128(%rsp)
- pxor %xmm7, %xmm8
- pxor %xmm7, %xmm9
- pxor %xmm7, %xmm10
- pxor %xmm7, %xmm11
- pxor %xmm7, %xmm12
- pxor %xmm7, %xmm13
- pxor %xmm7, %xmm14
- pxor %xmm7, %xmm15
- movdqa 112(%rsp), %xmm7
- movdqu (%rcx), %xmm0
- aesenc 16(%r15), %xmm8
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- pxor %xmm2, %xmm0
- pshufd $0x4e, %xmm7, %xmm1
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm7, %xmm1
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm3
- pclmulqdq $0x11, %xmm7, %xmm3
- aesenc 16(%r15), %xmm9
- aesenc 16(%r15), %xmm10
- movdqa %xmm0, %xmm2
- pclmulqdq $0x00, %xmm7, %xmm2
- aesenc 16(%r15), %xmm11
- aesenc 16(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm1
- aesenc 16(%r15), %xmm13
- aesenc 16(%r15), %xmm14
- aesenc 16(%r15), %xmm15
- pxor %xmm2, %xmm1
- pxor %xmm3, %xmm1
- movdqa 96(%rsp), %xmm7
- movdqu 16(%rcx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 32(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 32(%r15), %xmm9
- aesenc 32(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 32(%r15), %xmm11
- aesenc 32(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 32(%r15), %xmm13
- aesenc 32(%r15), %xmm14
- aesenc 32(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 80(%rsp), %xmm7
- movdqu 32(%rcx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 48(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 48(%r15), %xmm9
- aesenc 48(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 48(%r15), %xmm11
- aesenc 48(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 48(%r15), %xmm13
- aesenc 48(%r15), %xmm14
- aesenc 48(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 64(%rsp), %xmm7
- movdqu 48(%rcx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 64(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 64(%r15), %xmm9
- aesenc 64(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 64(%r15), %xmm11
- aesenc 64(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 64(%r15), %xmm13
- aesenc 64(%r15), %xmm14
- aesenc 64(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 48(%rsp), %xmm7
- movdqu 64(%rcx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 80(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 80(%r15), %xmm9
- aesenc 80(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 80(%r15), %xmm11
- aesenc 80(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 80(%r15), %xmm13
- aesenc 80(%r15), %xmm14
- aesenc 80(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 32(%rsp), %xmm7
- movdqu 80(%rcx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 96(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 96(%r15), %xmm9
- aesenc 96(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 96(%r15), %xmm11
- aesenc 96(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 96(%r15), %xmm13
- aesenc 96(%r15), %xmm14
- aesenc 96(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa 16(%rsp), %xmm7
- movdqu 96(%rcx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 112(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 112(%r15), %xmm9
- aesenc 112(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 112(%r15), %xmm11
- aesenc 112(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 112(%r15), %xmm13
- aesenc 112(%r15), %xmm14
- aesenc 112(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa (%rsp), %xmm7
- movdqu 112(%rcx), %xmm0
- pshufd $0x4e, %xmm7, %xmm4
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm0
- aesenc 128(%r15), %xmm8
- pxor %xmm7, %xmm4
- pshufd $0x4e, %xmm0, %xmm5
- pxor %xmm0, %xmm5
- movdqa %xmm0, %xmm6
- pclmulqdq $0x11, %xmm7, %xmm6
- aesenc 128(%r15), %xmm9
- aesenc 128(%r15), %xmm10
- pclmulqdq $0x00, %xmm0, %xmm7
- aesenc 128(%r15), %xmm11
- aesenc 128(%r15), %xmm12
- pclmulqdq $0x00, %xmm5, %xmm4
- aesenc 128(%r15), %xmm13
- aesenc 128(%r15), %xmm14
- aesenc 128(%r15), %xmm15
- pxor %xmm7, %xmm1
- pxor %xmm7, %xmm2
- pxor %xmm6, %xmm1
- pxor %xmm6, %xmm3
- pxor %xmm4, %xmm1
- movdqa %xmm1, %xmm5
- psrldq $8, %xmm1
- pslldq $8, %xmm5
- aesenc 144(%r15), %xmm8
- pxor %xmm5, %xmm2
- pxor %xmm1, %xmm3
- movdqa %xmm2, %xmm7
- movdqa %xmm2, %xmm4
- movdqa %xmm2, %xmm5
- aesenc 144(%r15), %xmm9
- pslld $31, %xmm7
- pslld $30, %xmm4
- pslld $25, %xmm5
- aesenc 144(%r15), %xmm10
- pxor %xmm4, %xmm7
- pxor %xmm5, %xmm7
- aesenc 144(%r15), %xmm11
- movdqa %xmm7, %xmm4
- pslldq $12, %xmm7
- psrldq $4, %xmm4
- aesenc 144(%r15), %xmm12
- pxor %xmm7, %xmm2
- movdqa %xmm2, %xmm5
- movdqa %xmm2, %xmm1
- movdqa %xmm2, %xmm0
- aesenc 144(%r15), %xmm13
- psrld $0x01, %xmm5
- psrld $2, %xmm1
- psrld $7, %xmm0
- aesenc 144(%r15), %xmm14
- pxor %xmm1, %xmm5
- pxor %xmm0, %xmm5
- aesenc 144(%r15), %xmm15
- pxor %xmm4, %xmm5
- pxor %xmm5, %xmm2
- pxor %xmm3, %xmm2
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm7
- jl L_AES_GCM_decrypt_aesenc_128_ghash_avx_done
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 176(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm7
- jl L_AES_GCM_decrypt_aesenc_128_ghash_avx_done
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 208(%r15), %xmm7
- aesenc %xmm7, %xmm8
- aesenc %xmm7, %xmm9
- aesenc %xmm7, %xmm10
- aesenc %xmm7, %xmm11
- aesenc %xmm7, %xmm12
- aesenc %xmm7, %xmm13
- aesenc %xmm7, %xmm14
- aesenc %xmm7, %xmm15
- movdqa 224(%r15), %xmm7
-L_AES_GCM_decrypt_aesenc_128_ghash_avx_done:
- aesenclast %xmm7, %xmm8
- aesenclast %xmm7, %xmm9
- movdqu (%rcx), %xmm0
- movdqu 16(%rcx), %xmm1
- pxor %xmm0, %xmm8
- pxor %xmm1, %xmm9
- movdqu %xmm8, (%rdx)
- movdqu %xmm9, 16(%rdx)
- aesenclast %xmm7, %xmm10
- aesenclast %xmm7, %xmm11
- movdqu 32(%rcx), %xmm0
- movdqu 48(%rcx), %xmm1
- pxor %xmm0, %xmm10
- pxor %xmm1, %xmm11
- movdqu %xmm10, 32(%rdx)
- movdqu %xmm11, 48(%rdx)
- aesenclast %xmm7, %xmm12
- aesenclast %xmm7, %xmm13
- movdqu 64(%rcx), %xmm0
- movdqu 80(%rcx), %xmm1
- pxor %xmm0, %xmm12
- pxor %xmm1, %xmm13
- movdqu %xmm12, 64(%rdx)
- movdqu %xmm13, 80(%rdx)
- aesenclast %xmm7, %xmm14
- aesenclast %xmm7, %xmm15
- movdqu 96(%rcx), %xmm0
- movdqu 112(%rcx), %xmm1
- pxor %xmm0, %xmm14
- pxor %xmm1, %xmm15
- movdqu %xmm14, 96(%rdx)
- movdqu %xmm15, 112(%rdx)
- addl $0x80, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_decrypt_ghash_128
- movdqa %xmm2, %xmm6
- movdqa (%rsp), %xmm5
-L_AES_GCM_decrypt_done_128:
- movl %r9d, %edx
- cmpl %edx, %ebx
- jge L_AES_GCM_decrypt_done_dec
- movl %r9d, %r13d
- andl $0xfffffff0, %r13d
- cmpl %r13d, %ebx
- jge L_AES_GCM_decrypt_last_block_done
-L_AES_GCM_decrypt_last_block_start:
- leaq (%rdi,%rbx,1), %rcx
- leaq (%rsi,%rbx,1), %rdx
- movdqu (%rcx), %xmm1
- movdqa %xmm5, %xmm0
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm1
- pxor %xmm6, %xmm1
- movdqa 128(%rsp), %xmm8
- movdqa %xmm8, %xmm9
- pshufb L_aes_gcm_bswap_epi64(%rip), %xmm8
- paddd L_aes_gcm_one(%rip), %xmm9
- pxor (%r15), %xmm8
- movdqa %xmm9, 128(%rsp)
- movdqa %xmm1, %xmm10
- pclmulqdq $16, %xmm0, %xmm10
- aesenc 16(%r15), %xmm8
- aesenc 32(%r15), %xmm8
- movdqa %xmm1, %xmm11
- pclmulqdq $0x01, %xmm0, %xmm11
- aesenc 48(%r15), %xmm8
- aesenc 64(%r15), %xmm8
- movdqa %xmm1, %xmm12
- pclmulqdq $0x00, %xmm0, %xmm12
- aesenc 80(%r15), %xmm8
- movdqa %xmm1, %xmm1
- pclmulqdq $0x11, %xmm0, %xmm1
- aesenc 96(%r15), %xmm8
- pxor %xmm11, %xmm10
- movdqa %xmm10, %xmm2
- psrldq $8, %xmm10
- pslldq $8, %xmm2
- aesenc 112(%r15), %xmm8
- movdqa %xmm1, %xmm3
- pxor %xmm12, %xmm2
- pxor %xmm10, %xmm3
- movdqa L_aes_gcm_mod2_128(%rip), %xmm0
- movdqa %xmm2, %xmm11
- pclmulqdq $16, %xmm0, %xmm11
- aesenc 128(%r15), %xmm8
- pshufd $0x4e, %xmm2, %xmm10
- pxor %xmm11, %xmm10
- movdqa %xmm10, %xmm11
- pclmulqdq $16, %xmm0, %xmm11
- aesenc 144(%r15), %xmm8
- pshufd $0x4e, %xmm10, %xmm6
- pxor %xmm11, %xmm6
- pxor %xmm3, %xmm6
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_decrypt_aesenc_gfmul_last
- aesenc %xmm9, %xmm8
- aesenc 176(%r15), %xmm8
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_decrypt_aesenc_gfmul_last
- aesenc %xmm9, %xmm8
- aesenc 208(%r15), %xmm8
- movdqa 224(%r15), %xmm9
-L_AES_GCM_decrypt_aesenc_gfmul_last:
- aesenclast %xmm9, %xmm8
- movdqu (%rcx), %xmm9
- pxor %xmm9, %xmm8
- movdqu %xmm8, (%rdx)
- addl $16, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_decrypt_last_block_start
-L_AES_GCM_decrypt_last_block_done:
- movl %r9d, %ecx
- movl %ecx, %edx
- andl $15, %ecx
- jz L_AES_GCM_decrypt_aesenc_last15_dec_avx_done
- movdqa 128(%rsp), %xmm4
- pshufb L_aes_gcm_bswap_epi64(%rip), %xmm4
- pxor (%r15), %xmm4
- aesenc 16(%r15), %xmm4
- aesenc 32(%r15), %xmm4
- aesenc 48(%r15), %xmm4
- aesenc 64(%r15), %xmm4
- aesenc 80(%r15), %xmm4
- aesenc 96(%r15), %xmm4
- aesenc 112(%r15), %xmm4
- aesenc 128(%r15), %xmm4
- aesenc 144(%r15), %xmm4
- cmpl $11, %r10d
- movdqa 160(%r15), %xmm9
- jl L_AES_GCM_decrypt_aesenc_last15_dec_avx_aesenc_avx_last
- aesenc %xmm9, %xmm4
- aesenc 176(%r15), %xmm4
- cmpl $13, %r10d
- movdqa 192(%r15), %xmm9
- jl L_AES_GCM_decrypt_aesenc_last15_dec_avx_aesenc_avx_last
- aesenc %xmm9, %xmm4
- aesenc 208(%r15), %xmm4
- movdqa 224(%r15), %xmm9
-L_AES_GCM_decrypt_aesenc_last15_dec_avx_aesenc_avx_last:
- aesenclast %xmm9, %xmm4
- subq $32, %rsp
- xorl %ecx, %ecx
- movdqa %xmm4, (%rsp)
- pxor %xmm0, %xmm0
- movdqa %xmm0, 16(%rsp)
-L_AES_GCM_decrypt_aesenc_last15_dec_avx_loop:
- movzbl (%rdi,%rbx,1), %r13d
- movb %r13b, 16(%rsp,%rcx,1)
- xorb (%rsp,%rcx,1), %r13b
- movb %r13b, (%rsi,%rbx,1)
- incl %ebx
- incl %ecx
- cmpl %edx, %ebx
- jl L_AES_GCM_decrypt_aesenc_last15_dec_avx_loop
- movdqa 16(%rsp), %xmm4
- addq $32, %rsp
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm4
- pxor %xmm4, %xmm6
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm6, %xmm10
- movdqa %xmm6, %xmm11
- movdqa %xmm6, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm6, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm6
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm6
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm6
-L_AES_GCM_decrypt_aesenc_last15_dec_avx_done:
-L_AES_GCM_decrypt_done_dec:
- movl %r9d, %edx
- movl %r11d, %ecx
- shlq $3, %rdx
- shlq $3, %rcx
- pinsrq $0x00, %rdx, %xmm0
- pinsrq $0x01, %rcx, %xmm0
- pxor %xmm0, %xmm6
- pshufd $0x4e, %xmm5, %xmm9
- pshufd $0x4e, %xmm6, %xmm10
- movdqa %xmm6, %xmm11
- movdqa %xmm6, %xmm8
- pclmulqdq $0x11, %xmm5, %xmm11
- pclmulqdq $0x00, %xmm5, %xmm8
- pxor %xmm5, %xmm9
- pxor %xmm6, %xmm10
- pclmulqdq $0x00, %xmm10, %xmm9
- pxor %xmm8, %xmm9
- pxor %xmm11, %xmm9
- movdqa %xmm9, %xmm10
- movdqa %xmm11, %xmm6
- pslldq $8, %xmm10
- psrldq $8, %xmm9
- pxor %xmm10, %xmm8
- pxor %xmm9, %xmm6
- movdqa %xmm8, %xmm12
- movdqa %xmm8, %xmm13
- movdqa %xmm8, %xmm14
- pslld $31, %xmm12
- pslld $30, %xmm13
- pslld $25, %xmm14
- pxor %xmm13, %xmm12
- pxor %xmm14, %xmm12
- movdqa %xmm12, %xmm13
- psrldq $4, %xmm13
- pslldq $12, %xmm12
- pxor %xmm12, %xmm8
- movdqa %xmm8, %xmm14
- movdqa %xmm8, %xmm10
- movdqa %xmm8, %xmm9
- psrld $0x01, %xmm14
- psrld $2, %xmm10
- psrld $7, %xmm9
- pxor %xmm10, %xmm14
- pxor %xmm9, %xmm14
- pxor %xmm13, %xmm14
- pxor %xmm8, %xmm14
- pxor %xmm14, %xmm6
- pshufb L_aes_gcm_bswap_mask(%rip), %xmm6
- movdqa 144(%rsp), %xmm0
- pxor %xmm6, %xmm0
- cmpl $16, %r14d
- je L_AES_GCM_decrypt_cmp_tag_16
- subq $16, %rsp
- xorq %rcx, %rcx
- xorq %rbx, %rbx
- movdqa %xmm0, (%rsp)
-L_AES_GCM_decrypt_cmp_tag_loop:
- movzbl (%rsp,%rcx,1), %r13d
- xorb (%r8,%rcx,1), %r13b
- orb %r13b, %bl
- incl %ecx
- cmpl %r14d, %ecx
- jne L_AES_GCM_decrypt_cmp_tag_loop
- cmpb $0x00, %bl
- sete %bl
- addq $16, %rsp
- xorq %rcx, %rcx
- jmp L_AES_GCM_decrypt_cmp_tag_done
-L_AES_GCM_decrypt_cmp_tag_16:
- movdqu (%r8), %xmm1
- pcmpeqb %xmm1, %xmm0
- pmovmskb %xmm0, %rdx
- # %%edx == 0xFFFF then return 1 else => return 0
- xorl %ebx, %ebx
- cmpl $0xffff, %edx
- sete %bl
-L_AES_GCM_decrypt_cmp_tag_done:
- movl %ebx, (%rbp)
- addq $0xa8, %rsp
- popq %rbp
- popq %r15
- popq %r14
- popq %rbx
- popq %r12
- popq %r13
- repz retq
-#ifndef __APPLE__
-.size AES_GCM_decrypt,.-AES_GCM_decrypt
-#endif /* __APPLE__ */
-#ifdef HAVE_INTEL_AVX1
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_one:
-.quad 0x0, 0x1
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_two:
-.quad 0x0, 0x2
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_three:
-.quad 0x0, 0x3
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_four:
-.quad 0x0, 0x4
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_five:
-.quad 0x0, 0x5
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_six:
-.quad 0x0, 0x6
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_seven:
-.quad 0x0, 0x7
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_eight:
-.quad 0x0, 0x8
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_bswap_epi64:
-.quad 0x1020304050607, 0x8090a0b0c0d0e0f
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_bswap_mask:
-.quad 0x8090a0b0c0d0e0f, 0x1020304050607
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx1_aes_gcm_mod2_128:
-.quad 0x1, 0xc200000000000000
-#ifndef __APPLE__
-.text
-.globl AES_GCM_encrypt_avx1
-.type AES_GCM_encrypt_avx1,@function
-.align 4
-AES_GCM_encrypt_avx1:
-#else
-.section __TEXT,__text
-.globl _AES_GCM_encrypt_avx1
-.p2align 2
-_AES_GCM_encrypt_avx1:
-#endif /* __APPLE__ */
- pushq %r13
- pushq %r12
- pushq %rbx
- pushq %r14
- pushq %r15
- movq %rdx, %r12
- movq %rcx, %rax
- movl 48(%rsp), %r11d
- movl 56(%rsp), %ebx
- movl 64(%rsp), %r14d
- movq 72(%rsp), %r15
- movl 80(%rsp), %r10d
- subq $0xa0, %rsp
- vpxor %xmm4, %xmm4, %xmm4
- vpxor %xmm6, %xmm6, %xmm6
- movl %ebx, %edx
- cmpl $12, %edx
- jne L_AES_GCM_encrypt_avx1_iv_not_12
- # # Calculate values when IV is 12 bytes
- # Set counter based on IV
- movl $0x1000000, %ecx
- vpinsrq $0x00, (%rax), %xmm4, %xmm4
- vpinsrd $2, 8(%rax), %xmm4, %xmm4
- vpinsrd $3, %ecx, %xmm4, %xmm4
- # H = Encrypt X(=0) and T = Encrypt counter
- vmovdqa (%r15), %xmm5
- vpxor %xmm5, %xmm4, %xmm1
- vmovdqa 16(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 32(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 48(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 64(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 80(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 96(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 112(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 128(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 144(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm7
- jl L_AES_GCM_encrypt_avx1_calc_iv_12_last
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 176(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm7
- jl L_AES_GCM_encrypt_avx1_calc_iv_12_last
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 208(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 224(%r15), %xmm7
-L_AES_GCM_encrypt_avx1_calc_iv_12_last:
- vaesenclast %xmm7, %xmm5, %xmm5
- vaesenclast %xmm7, %xmm1, %xmm1
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm5, %xmm5
- vmovdqa %xmm1, 144(%rsp)
- jmp L_AES_GCM_encrypt_avx1_iv_done
-L_AES_GCM_encrypt_avx1_iv_not_12:
- # Calculate values when IV is not 12 bytes
- # H = Encrypt X(=0)
- vmovdqa (%r15), %xmm5
- vaesenc 16(%r15), %xmm5, %xmm5
- vaesenc 32(%r15), %xmm5, %xmm5
- vaesenc 48(%r15), %xmm5, %xmm5
- vaesenc 64(%r15), %xmm5, %xmm5
- vaesenc 80(%r15), %xmm5, %xmm5
- vaesenc 96(%r15), %xmm5, %xmm5
- vaesenc 112(%r15), %xmm5, %xmm5
- vaesenc 128(%r15), %xmm5, %xmm5
- vaesenc 144(%r15), %xmm5, %xmm5
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_calc_iv_1_aesenc_avx_last
- vaesenc %xmm9, %xmm5, %xmm5
- vaesenc 176(%r15), %xmm5, %xmm5
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_calc_iv_1_aesenc_avx_last
- vaesenc %xmm9, %xmm5, %xmm5
- vaesenc 208(%r15), %xmm5, %xmm5
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_avx1_calc_iv_1_aesenc_avx_last:
- vaesenclast %xmm9, %xmm5, %xmm5
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm5, %xmm5
- # Calc counter
- # Initialization vector
- cmpl $0x00, %edx
- movq $0x00, %rcx
- je L_AES_GCM_encrypt_avx1_calc_iv_done
- cmpl $16, %edx
- jl L_AES_GCM_encrypt_avx1_calc_iv_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_encrypt_avx1_calc_iv_16_loop:
- vmovdqu (%rax,%rcx,1), %xmm8
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm4, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpxor %xmm4, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm4
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm4, %xmm4
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm4, %xmm4
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_avx1_calc_iv_16_loop
- movl %ebx, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_encrypt_avx1_calc_iv_done
-L_AES_GCM_encrypt_avx1_calc_iv_lt16:
- subq $16, %rsp
- vpxor %xmm8, %xmm8, %xmm8
- xorl %ebx, %ebx
- vmovdqa %xmm8, (%rsp)
-L_AES_GCM_encrypt_avx1_calc_iv_loop:
- movzbl (%rax,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_avx1_calc_iv_loop
- vmovdqa (%rsp), %xmm8
- addq $16, %rsp
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm4, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpxor %xmm4, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm4
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm4, %xmm4
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm4, %xmm4
-L_AES_GCM_encrypt_avx1_calc_iv_done:
- # T = Encrypt counter
- vpxor %xmm0, %xmm0, %xmm0
- shll $3, %edx
- vpinsrq $0x00, %rdx, %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm4, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpxor %xmm4, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm4
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm4, %xmm4
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm4, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm4, %xmm4
- # Encrypt counter
- vmovdqa (%r15), %xmm8
- vpxor %xmm4, %xmm8, %xmm8
- vaesenc 16(%r15), %xmm8, %xmm8
- vaesenc 32(%r15), %xmm8, %xmm8
- vaesenc 48(%r15), %xmm8, %xmm8
- vaesenc 64(%r15), %xmm8, %xmm8
- vaesenc 80(%r15), %xmm8, %xmm8
- vaesenc 96(%r15), %xmm8, %xmm8
- vaesenc 112(%r15), %xmm8, %xmm8
- vaesenc 128(%r15), %xmm8, %xmm8
- vaesenc 144(%r15), %xmm8, %xmm8
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_calc_iv_2_aesenc_avx_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 176(%r15), %xmm8, %xmm8
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_calc_iv_2_aesenc_avx_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 208(%r15), %xmm8, %xmm8
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_avx1_calc_iv_2_aesenc_avx_last:
- vaesenclast %xmm9, %xmm8, %xmm8
- vmovdqa %xmm8, 144(%rsp)
-L_AES_GCM_encrypt_avx1_iv_done:
- # Additional authentication data
- movl %r11d, %edx
- cmpl $0x00, %edx
- je L_AES_GCM_encrypt_avx1_calc_aad_done
- xorl %ecx, %ecx
- cmpl $16, %edx
- jl L_AES_GCM_encrypt_avx1_calc_aad_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_encrypt_avx1_calc_aad_16_loop:
- vmovdqu (%r12,%rcx,1), %xmm8
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm6, %xmm6
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm6, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm6, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm6, %xmm5, %xmm0
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm6, %xmm6
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm6, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm6, %xmm6
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm6, %xmm6
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm6, %xmm6
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm6, %xmm6
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_avx1_calc_aad_16_loop
- movl %r11d, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_encrypt_avx1_calc_aad_done
-L_AES_GCM_encrypt_avx1_calc_aad_lt16:
- subq $16, %rsp
- vpxor %xmm8, %xmm8, %xmm8
- xorl %ebx, %ebx
- vmovdqa %xmm8, (%rsp)
-L_AES_GCM_encrypt_avx1_calc_aad_loop:
- movzbl (%r12,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_avx1_calc_aad_loop
- vmovdqa (%rsp), %xmm8
- addq $16, %rsp
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm6, %xmm6
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm6, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm6, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm6, %xmm5, %xmm0
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm6, %xmm6
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm6, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm6, %xmm6
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm6, %xmm6
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm6, %xmm6
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm6, %xmm6
-L_AES_GCM_encrypt_avx1_calc_aad_done:
- # Calculate counter and H
- vpsrlq $63, %xmm5, %xmm9
- vpsllq $0x01, %xmm5, %xmm8
- vpslldq $8, %xmm9, %xmm9
- vpor %xmm9, %xmm8, %xmm8
- vpshufd $0xff, %xmm5, %xmm5
- vpsrad $31, %xmm5, %xmm5
- vpshufb L_avx1_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm4
- vpand L_avx1_aes_gcm_mod2_128(%rip), %xmm5, %xmm5
- vpaddd L_avx1_aes_gcm_one(%rip), %xmm4, %xmm4
- vpxor %xmm8, %xmm5, %xmm5
- vmovdqa %xmm4, 128(%rsp)
- xorl %ebx, %ebx
- cmpl $0x80, %r9d
- movl %r9d, %r13d
- jl L_AES_GCM_encrypt_avx1_done_128
- andl $0xffffff80, %r13d
- vmovdqa %xmm6, %xmm2
- # H ^ 1
- vmovdqa %xmm5, (%rsp)
- # H ^ 2
- vpclmulqdq $0x00, %xmm5, %xmm5, %xmm8
- vpclmulqdq $0x11, %xmm5, %xmm5, %xmm0
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm0, %xmm0
- vmovdqa %xmm0, 16(%rsp)
- # H ^ 3
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm5, %xmm9
- vpshufd $0x4e, %xmm0, %xmm10
- vpclmulqdq $0x11, %xmm5, %xmm0, %xmm11
- vpclmulqdq $0x00, %xmm5, %xmm0, %xmm8
- vpxor %xmm5, %xmm9, %xmm9
- vpxor %xmm0, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm1
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm1, %xmm1
- vmovdqa %xmm1, 32(%rsp)
- # H ^ 4
- vpclmulqdq $0x00, %xmm0, %xmm0, %xmm8
- vpclmulqdq $0x11, %xmm0, %xmm0, %xmm3
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm3, %xmm3
- vmovdqa %xmm3, 48(%rsp)
- # H ^ 5
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm0, %xmm9
- vpshufd $0x4e, %xmm1, %xmm10
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm11
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm8
- vpxor %xmm0, %xmm9, %xmm9
- vpxor %xmm1, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm7
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm7, %xmm7
- vmovdqa %xmm7, 64(%rsp)
- # H ^ 6
- vpclmulqdq $0x00, %xmm1, %xmm1, %xmm8
- vpclmulqdq $0x11, %xmm1, %xmm1, %xmm7
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm7, %xmm7
- vmovdqa %xmm7, 80(%rsp)
- # H ^ 7
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm1, %xmm9
- vpshufd $0x4e, %xmm3, %xmm10
- vpclmulqdq $0x11, %xmm1, %xmm3, %xmm11
- vpclmulqdq $0x00, %xmm1, %xmm3, %xmm8
- vpxor %xmm1, %xmm9, %xmm9
- vpxor %xmm3, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm7
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm7, %xmm7
- vmovdqa %xmm7, 96(%rsp)
- # H ^ 8
- vpclmulqdq $0x00, %xmm3, %xmm3, %xmm8
- vpclmulqdq $0x11, %xmm3, %xmm3, %xmm7
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm7, %xmm7
- vmovdqa %xmm7, 112(%rsp)
- # First 128 bytes of input
- vmovdqa 128(%rsp), %xmm0
- vmovdqa L_avx1_aes_gcm_bswap_epi64(%rip), %xmm1
- vpshufb %xmm1, %xmm0, %xmm8
- vpaddd L_avx1_aes_gcm_one(%rip), %xmm0, %xmm9
- vpshufb %xmm1, %xmm9, %xmm9
- vpaddd L_avx1_aes_gcm_two(%rip), %xmm0, %xmm10
- vpshufb %xmm1, %xmm10, %xmm10
- vpaddd L_avx1_aes_gcm_three(%rip), %xmm0, %xmm11
- vpshufb %xmm1, %xmm11, %xmm11
- vpaddd L_avx1_aes_gcm_four(%rip), %xmm0, %xmm12
- vpshufb %xmm1, %xmm12, %xmm12
- vpaddd L_avx1_aes_gcm_five(%rip), %xmm0, %xmm13
- vpshufb %xmm1, %xmm13, %xmm13
- vpaddd L_avx1_aes_gcm_six(%rip), %xmm0, %xmm14
- vpshufb %xmm1, %xmm14, %xmm14
- vpaddd L_avx1_aes_gcm_seven(%rip), %xmm0, %xmm15
- vpshufb %xmm1, %xmm15, %xmm15
- vpaddd L_avx1_aes_gcm_eight(%rip), %xmm0, %xmm0
- vmovdqa (%r15), %xmm7
- vmovdqa %xmm0, 128(%rsp)
- vpxor %xmm7, %xmm8, %xmm8
- vpxor %xmm7, %xmm9, %xmm9
- vpxor %xmm7, %xmm10, %xmm10
- vpxor %xmm7, %xmm11, %xmm11
- vpxor %xmm7, %xmm12, %xmm12
- vpxor %xmm7, %xmm13, %xmm13
- vpxor %xmm7, %xmm14, %xmm14
- vpxor %xmm7, %xmm15, %xmm15
- vmovdqa 16(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 32(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 48(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 64(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 80(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 96(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 112(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 128(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 144(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm7
- jl L_AES_GCM_encrypt_avx1_aesenc_128_enc_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 176(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm7
- jl L_AES_GCM_encrypt_avx1_aesenc_128_enc_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 208(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 224(%r15), %xmm7
-L_AES_GCM_encrypt_avx1_aesenc_128_enc_done:
- vaesenclast %xmm7, %xmm8, %xmm8
- vaesenclast %xmm7, %xmm9, %xmm9
- vmovdqu (%rdi), %xmm0
- vmovdqu 16(%rdi), %xmm1
- vpxor %xmm0, %xmm8, %xmm8
- vpxor %xmm1, %xmm9, %xmm9
- vmovdqu %xmm8, (%rsi)
- vmovdqu %xmm9, 16(%rsi)
- vaesenclast %xmm7, %xmm10, %xmm10
- vaesenclast %xmm7, %xmm11, %xmm11
- vmovdqu 32(%rdi), %xmm0
- vmovdqu 48(%rdi), %xmm1
- vpxor %xmm0, %xmm10, %xmm10
- vpxor %xmm1, %xmm11, %xmm11
- vmovdqu %xmm10, 32(%rsi)
- vmovdqu %xmm11, 48(%rsi)
- vaesenclast %xmm7, %xmm12, %xmm12
- vaesenclast %xmm7, %xmm13, %xmm13
- vmovdqu 64(%rdi), %xmm0
- vmovdqu 80(%rdi), %xmm1
- vpxor %xmm0, %xmm12, %xmm12
- vpxor %xmm1, %xmm13, %xmm13
- vmovdqu %xmm12, 64(%rsi)
- vmovdqu %xmm13, 80(%rsi)
- vaesenclast %xmm7, %xmm14, %xmm14
- vaesenclast %xmm7, %xmm15, %xmm15
- vmovdqu 96(%rdi), %xmm0
- vmovdqu 112(%rdi), %xmm1
- vpxor %xmm0, %xmm14, %xmm14
- vpxor %xmm1, %xmm15, %xmm15
- vmovdqu %xmm14, 96(%rsi)
- vmovdqu %xmm15, 112(%rsi)
- cmpl $0x80, %r13d
- movl $0x80, %ebx
- jle L_AES_GCM_encrypt_avx1_end_128
- # More 128 bytes of input
-L_AES_GCM_encrypt_avx1_ghash_128:
- leaq (%rdi,%rbx,1), %rcx
- leaq (%rsi,%rbx,1), %rdx
- vmovdqa 128(%rsp), %xmm0
- vmovdqa L_avx1_aes_gcm_bswap_epi64(%rip), %xmm1
- vpshufb %xmm1, %xmm0, %xmm8
- vpaddd L_avx1_aes_gcm_one(%rip), %xmm0, %xmm9
- vpshufb %xmm1, %xmm9, %xmm9
- vpaddd L_avx1_aes_gcm_two(%rip), %xmm0, %xmm10
- vpshufb %xmm1, %xmm10, %xmm10
- vpaddd L_avx1_aes_gcm_three(%rip), %xmm0, %xmm11
- vpshufb %xmm1, %xmm11, %xmm11
- vpaddd L_avx1_aes_gcm_four(%rip), %xmm0, %xmm12
- vpshufb %xmm1, %xmm12, %xmm12
- vpaddd L_avx1_aes_gcm_five(%rip), %xmm0, %xmm13
- vpshufb %xmm1, %xmm13, %xmm13
- vpaddd L_avx1_aes_gcm_six(%rip), %xmm0, %xmm14
- vpshufb %xmm1, %xmm14, %xmm14
- vpaddd L_avx1_aes_gcm_seven(%rip), %xmm0, %xmm15
- vpshufb %xmm1, %xmm15, %xmm15
- vpaddd L_avx1_aes_gcm_eight(%rip), %xmm0, %xmm0
- vmovdqa (%r15), %xmm7
- vmovdqa %xmm0, 128(%rsp)
- vpxor %xmm7, %xmm8, %xmm8
- vpxor %xmm7, %xmm9, %xmm9
- vpxor %xmm7, %xmm10, %xmm10
- vpxor %xmm7, %xmm11, %xmm11
- vpxor %xmm7, %xmm12, %xmm12
- vpxor %xmm7, %xmm13, %xmm13
- vpxor %xmm7, %xmm14, %xmm14
- vpxor %xmm7, %xmm15, %xmm15
- vmovdqa 112(%rsp), %xmm7
- vmovdqu -128(%rdx), %xmm0
- vaesenc 16(%r15), %xmm8, %xmm8
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm3
- vaesenc 16(%r15), %xmm9, %xmm9
- vaesenc 16(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm2
- vaesenc 16(%r15), %xmm11, %xmm11
- vaesenc 16(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm1, %xmm1
- vaesenc 16(%r15), %xmm13, %xmm13
- vaesenc 16(%r15), %xmm14, %xmm14
- vaesenc 16(%r15), %xmm15, %xmm15
- vpxor %xmm2, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa 96(%rsp), %xmm7
- vmovdqu -112(%rdx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 32(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 32(%r15), %xmm9, %xmm9
- vaesenc 32(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 32(%r15), %xmm11, %xmm11
- vaesenc 32(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 32(%r15), %xmm13, %xmm13
- vaesenc 32(%r15), %xmm14, %xmm14
- vaesenc 32(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 80(%rsp), %xmm7
- vmovdqu -96(%rdx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 48(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 48(%r15), %xmm9, %xmm9
- vaesenc 48(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 48(%r15), %xmm11, %xmm11
- vaesenc 48(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 48(%r15), %xmm13, %xmm13
- vaesenc 48(%r15), %xmm14, %xmm14
- vaesenc 48(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 64(%rsp), %xmm7
- vmovdqu -80(%rdx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 64(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 64(%r15), %xmm9, %xmm9
- vaesenc 64(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 64(%r15), %xmm11, %xmm11
- vaesenc 64(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 64(%r15), %xmm13, %xmm13
- vaesenc 64(%r15), %xmm14, %xmm14
- vaesenc 64(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 48(%rsp), %xmm7
- vmovdqu -64(%rdx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 80(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 80(%r15), %xmm9, %xmm9
- vaesenc 80(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 80(%r15), %xmm11, %xmm11
- vaesenc 80(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 80(%r15), %xmm13, %xmm13
- vaesenc 80(%r15), %xmm14, %xmm14
- vaesenc 80(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 32(%rsp), %xmm7
- vmovdqu -48(%rdx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 96(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 96(%r15), %xmm9, %xmm9
- vaesenc 96(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 96(%r15), %xmm11, %xmm11
- vaesenc 96(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 96(%r15), %xmm13, %xmm13
- vaesenc 96(%r15), %xmm14, %xmm14
- vaesenc 96(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 16(%rsp), %xmm7
- vmovdqu -32(%rdx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 112(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 112(%r15), %xmm9, %xmm9
- vaesenc 112(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 112(%r15), %xmm11, %xmm11
- vaesenc 112(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 112(%r15), %xmm13, %xmm13
- vaesenc 112(%r15), %xmm14, %xmm14
- vaesenc 112(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa (%rsp), %xmm7
- vmovdqu -16(%rdx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 128(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 128(%r15), %xmm9, %xmm9
- vaesenc 128(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 128(%r15), %xmm11, %xmm11
- vaesenc 128(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 128(%r15), %xmm13, %xmm13
- vaesenc 128(%r15), %xmm14, %xmm14
- vaesenc 128(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vpslldq $8, %xmm1, %xmm5
- vpsrldq $8, %xmm1, %xmm1
- vaesenc 144(%r15), %xmm8, %xmm8
- vpxor %xmm5, %xmm2, %xmm2
- vpxor %xmm1, %xmm3, %xmm3
- vaesenc 144(%r15), %xmm9, %xmm9
- vpslld $31, %xmm2, %xmm7
- vpslld $30, %xmm2, %xmm4
- vpslld $25, %xmm2, %xmm5
- vaesenc 144(%r15), %xmm10, %xmm10
- vpxor %xmm4, %xmm7, %xmm7
- vpxor %xmm5, %xmm7, %xmm7
- vaesenc 144(%r15), %xmm11, %xmm11
- vpsrldq $4, %xmm7, %xmm4
- vpslldq $12, %xmm7, %xmm7
- vaesenc 144(%r15), %xmm12, %xmm12
- vpxor %xmm7, %xmm2, %xmm2
- vpsrld $0x01, %xmm2, %xmm5
- vaesenc 144(%r15), %xmm13, %xmm13
- vpsrld $2, %xmm2, %xmm1
- vpsrld $7, %xmm2, %xmm0
- vaesenc 144(%r15), %xmm14, %xmm14
- vpxor %xmm1, %xmm5, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vaesenc 144(%r15), %xmm15, %xmm15
- vpxor %xmm4, %xmm5, %xmm5
- vpxor %xmm5, %xmm2, %xmm2
- vpxor %xmm3, %xmm2, %xmm2
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm7
- jl L_AES_GCM_encrypt_avx1_aesenc_128_ghash_avx_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 176(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm7
- jl L_AES_GCM_encrypt_avx1_aesenc_128_ghash_avx_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 208(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 224(%r15), %xmm7
-L_AES_GCM_encrypt_avx1_aesenc_128_ghash_avx_done:
- vaesenclast %xmm7, %xmm8, %xmm8
- vaesenclast %xmm7, %xmm9, %xmm9
- vmovdqu (%rcx), %xmm0
- vmovdqu 16(%rcx), %xmm1
- vpxor %xmm0, %xmm8, %xmm8
- vpxor %xmm1, %xmm9, %xmm9
- vmovdqu %xmm8, (%rdx)
- vmovdqu %xmm9, 16(%rdx)
- vaesenclast %xmm7, %xmm10, %xmm10
- vaesenclast %xmm7, %xmm11, %xmm11
- vmovdqu 32(%rcx), %xmm0
- vmovdqu 48(%rcx), %xmm1
- vpxor %xmm0, %xmm10, %xmm10
- vpxor %xmm1, %xmm11, %xmm11
- vmovdqu %xmm10, 32(%rdx)
- vmovdqu %xmm11, 48(%rdx)
- vaesenclast %xmm7, %xmm12, %xmm12
- vaesenclast %xmm7, %xmm13, %xmm13
- vmovdqu 64(%rcx), %xmm0
- vmovdqu 80(%rcx), %xmm1
- vpxor %xmm0, %xmm12, %xmm12
- vpxor %xmm1, %xmm13, %xmm13
- vmovdqu %xmm12, 64(%rdx)
- vmovdqu %xmm13, 80(%rdx)
- vaesenclast %xmm7, %xmm14, %xmm14
- vaesenclast %xmm7, %xmm15, %xmm15
- vmovdqu 96(%rcx), %xmm0
- vmovdqu 112(%rcx), %xmm1
- vpxor %xmm0, %xmm14, %xmm14
- vpxor %xmm1, %xmm15, %xmm15
- vmovdqu %xmm14, 96(%rdx)
- vmovdqu %xmm15, 112(%rdx)
- addl $0x80, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_encrypt_avx1_ghash_128
-L_AES_GCM_encrypt_avx1_end_128:
- vmovdqa L_avx1_aes_gcm_bswap_mask(%rip), %xmm4
- vpshufb %xmm4, %xmm8, %xmm8
- vpshufb %xmm4, %xmm9, %xmm9
- vpshufb %xmm4, %xmm10, %xmm10
- vpshufb %xmm4, %xmm11, %xmm11
- vpxor %xmm2, %xmm8, %xmm8
- vpshufb %xmm4, %xmm12, %xmm12
- vpshufb %xmm4, %xmm13, %xmm13
- vpshufb %xmm4, %xmm14, %xmm14
- vpshufb %xmm4, %xmm15, %xmm15
- vmovdqa (%rsp), %xmm7
- vmovdqa 16(%rsp), %xmm5
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm15, %xmm1
- vpshufd $0x4e, %xmm7, %xmm2
- vpclmulqdq $0x11, %xmm15, %xmm7, %xmm3
- vpclmulqdq $0x00, %xmm15, %xmm7, %xmm0
- vpxor %xmm15, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm4
- vmovdqa %xmm3, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm4, %xmm4
- vpxor %xmm1, %xmm6, %xmm6
- # ghash_gfmul_xor_avx
- vpshufd $0x4e, %xmm14, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm14, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm14, %xmm5, %xmm0
- vpxor %xmm14, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vpxor %xmm0, %xmm4, %xmm4
- vpxor %xmm3, %xmm6, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm4, %xmm4
- vpxor %xmm1, %xmm6, %xmm6
- vmovdqa 32(%rsp), %xmm7
- vmovdqa 48(%rsp), %xmm5
- # ghash_gfmul_xor_avx
- vpshufd $0x4e, %xmm13, %xmm1
- vpshufd $0x4e, %xmm7, %xmm2
- vpclmulqdq $0x11, %xmm13, %xmm7, %xmm3
- vpclmulqdq $0x00, %xmm13, %xmm7, %xmm0
- vpxor %xmm13, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vpxor %xmm0, %xmm4, %xmm4
- vpxor %xmm3, %xmm6, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm4, %xmm4
- vpxor %xmm1, %xmm6, %xmm6
- # ghash_gfmul_xor_avx
- vpshufd $0x4e, %xmm12, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm12, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm12, %xmm5, %xmm0
- vpxor %xmm12, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vpxor %xmm0, %xmm4, %xmm4
- vpxor %xmm3, %xmm6, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm4, %xmm4
- vpxor %xmm1, %xmm6, %xmm6
- vmovdqa 64(%rsp), %xmm7
- vmovdqa 80(%rsp), %xmm5
- # ghash_gfmul_xor_avx
- vpshufd $0x4e, %xmm11, %xmm1
- vpshufd $0x4e, %xmm7, %xmm2
- vpclmulqdq $0x11, %xmm11, %xmm7, %xmm3
- vpclmulqdq $0x00, %xmm11, %xmm7, %xmm0
- vpxor %xmm11, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vpxor %xmm0, %xmm4, %xmm4
- vpxor %xmm3, %xmm6, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm4, %xmm4
- vpxor %xmm1, %xmm6, %xmm6
- # ghash_gfmul_xor_avx
- vpshufd $0x4e, %xmm10, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm10, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm10, %xmm5, %xmm0
- vpxor %xmm10, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vpxor %xmm0, %xmm4, %xmm4
- vpxor %xmm3, %xmm6, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm4, %xmm4
- vpxor %xmm1, %xmm6, %xmm6
- vmovdqa 96(%rsp), %xmm7
- vmovdqa 112(%rsp), %xmm5
- # ghash_gfmul_xor_avx
- vpshufd $0x4e, %xmm9, %xmm1
- vpshufd $0x4e, %xmm7, %xmm2
- vpclmulqdq $0x11, %xmm9, %xmm7, %xmm3
- vpclmulqdq $0x00, %xmm9, %xmm7, %xmm0
- vpxor %xmm9, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vpxor %xmm0, %xmm4, %xmm4
- vpxor %xmm3, %xmm6, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm4, %xmm4
- vpxor %xmm1, %xmm6, %xmm6
- # ghash_gfmul_xor_avx
- vpshufd $0x4e, %xmm8, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm8, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm8, %xmm5, %xmm0
- vpxor %xmm8, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vpxor %xmm0, %xmm4, %xmm4
- vpxor %xmm3, %xmm6, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm4, %xmm4
- vpxor %xmm1, %xmm6, %xmm6
- vpslld $31, %xmm4, %xmm0
- vpslld $30, %xmm4, %xmm1
- vpslld $25, %xmm4, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- vpsrld $0x01, %xmm4, %xmm2
- vpsrld $2, %xmm4, %xmm3
- vpsrld $7, %xmm4, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm4, %xmm2, %xmm2
- vpxor %xmm2, %xmm6, %xmm6
- vmovdqa (%rsp), %xmm5
-L_AES_GCM_encrypt_avx1_done_128:
- movl %r9d, %edx
- cmpl %edx, %ebx
- jge L_AES_GCM_encrypt_avx1_done_enc
- movl %r9d, %r13d
- andl $0xfffffff0, %r13d
- cmpl %r13d, %ebx
- jge L_AES_GCM_encrypt_avx1_last_block_done
- vmovdqa 128(%rsp), %xmm9
- vpshufb L_avx1_aes_gcm_bswap_epi64(%rip), %xmm9, %xmm8
- vpaddd L_avx1_aes_gcm_one(%rip), %xmm9, %xmm9
- vmovdqa %xmm9, 128(%rsp)
- vpxor (%r15), %xmm8, %xmm8
- vaesenc 16(%r15), %xmm8, %xmm8
- vaesenc 32(%r15), %xmm8, %xmm8
- vaesenc 48(%r15), %xmm8, %xmm8
- vaesenc 64(%r15), %xmm8, %xmm8
- vaesenc 80(%r15), %xmm8, %xmm8
- vaesenc 96(%r15), %xmm8, %xmm8
- vaesenc 112(%r15), %xmm8, %xmm8
- vaesenc 128(%r15), %xmm8, %xmm8
- vaesenc 144(%r15), %xmm8, %xmm8
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_aesenc_block_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 176(%r15), %xmm8, %xmm8
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_aesenc_block_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 208(%r15), %xmm8, %xmm8
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_avx1_aesenc_block_last:
- vaesenclast %xmm9, %xmm8, %xmm8
- vmovdqu (%rdi,%rbx,1), %xmm9
- vpxor %xmm9, %xmm8, %xmm8
- vmovdqu %xmm8, (%rsi,%rbx,1)
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm6, %xmm6
- addl $16, %ebx
- cmpl %r13d, %ebx
- jge L_AES_GCM_encrypt_avx1_last_block_ghash
-L_AES_GCM_encrypt_avx1_last_block_start:
- vmovdqu (%rdi,%rbx,1), %xmm13
- vmovdqa 128(%rsp), %xmm9
- vpshufb L_avx1_aes_gcm_bswap_epi64(%rip), %xmm9, %xmm8
- vpaddd L_avx1_aes_gcm_one(%rip), %xmm9, %xmm9
- vmovdqa %xmm9, 128(%rsp)
- vpxor (%r15), %xmm8, %xmm8
- vpclmulqdq $16, %xmm5, %xmm6, %xmm10
- vaesenc 16(%r15), %xmm8, %xmm8
- vaesenc 32(%r15), %xmm8, %xmm8
- vpclmulqdq $0x01, %xmm5, %xmm6, %xmm11
- vaesenc 48(%r15), %xmm8, %xmm8
- vaesenc 64(%r15), %xmm8, %xmm8
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm12
- vaesenc 80(%r15), %xmm8, %xmm8
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm1
- vaesenc 96(%r15), %xmm8, %xmm8
- vpxor %xmm11, %xmm10, %xmm10
- vpslldq $8, %xmm10, %xmm2
- vpsrldq $8, %xmm10, %xmm10
- vaesenc 112(%r15), %xmm8, %xmm8
- vpxor %xmm12, %xmm2, %xmm2
- vpxor %xmm10, %xmm1, %xmm3
- vmovdqa L_avx1_aes_gcm_mod2_128(%rip), %xmm0
- vpclmulqdq $16, %xmm0, %xmm2, %xmm11
- vaesenc 128(%r15), %xmm8, %xmm8
- vpshufd $0x4e, %xmm2, %xmm10
- vpxor %xmm11, %xmm10, %xmm10
- vpclmulqdq $16, %xmm0, %xmm10, %xmm11
- vaesenc 144(%r15), %xmm8, %xmm8
- vpshufd $0x4e, %xmm10, %xmm10
- vpxor %xmm11, %xmm10, %xmm10
- vpxor %xmm3, %xmm10, %xmm6
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_aesenc_gfmul_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 176(%r15), %xmm8, %xmm8
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_aesenc_gfmul_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 208(%r15), %xmm8, %xmm8
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_avx1_aesenc_gfmul_last:
- vaesenclast %xmm9, %xmm8, %xmm8
- vmovdqa %xmm13, %xmm0
- vpxor %xmm0, %xmm8, %xmm8
- vmovdqu %xmm8, (%rsi,%rbx,1)
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- addl $16, %ebx
- vpxor %xmm8, %xmm6, %xmm6
- cmpl %r13d, %ebx
- jl L_AES_GCM_encrypt_avx1_last_block_start
-L_AES_GCM_encrypt_avx1_last_block_ghash:
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm5, %xmm9
- vpshufd $0x4e, %xmm6, %xmm10
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm11
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm8
- vpxor %xmm5, %xmm9, %xmm9
- vpxor %xmm6, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm6
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm6, %xmm6
-L_AES_GCM_encrypt_avx1_last_block_done:
- movl %r9d, %ecx
- movl %ecx, %edx
- andl $15, %ecx
- jz L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_done
- vmovdqa 128(%rsp), %xmm4
- vpshufb L_avx1_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm4
- vpxor (%r15), %xmm4, %xmm4
- vaesenc 16(%r15), %xmm4, %xmm4
- vaesenc 32(%r15), %xmm4, %xmm4
- vaesenc 48(%r15), %xmm4, %xmm4
- vaesenc 64(%r15), %xmm4, %xmm4
- vaesenc 80(%r15), %xmm4, %xmm4
- vaesenc 96(%r15), %xmm4, %xmm4
- vaesenc 112(%r15), %xmm4, %xmm4
- vaesenc 128(%r15), %xmm4, %xmm4
- vaesenc 144(%r15), %xmm4, %xmm4
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_aesenc_avx_last
- vaesenc %xmm9, %xmm4, %xmm4
- vaesenc 176(%r15), %xmm4, %xmm4
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_aesenc_avx_last
- vaesenc %xmm9, %xmm4, %xmm4
- vaesenc 208(%r15), %xmm4, %xmm4
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_aesenc_avx_last:
- vaesenclast %xmm9, %xmm4, %xmm4
- subq $16, %rsp
- xorl %ecx, %ecx
- vmovdqa %xmm4, (%rsp)
-L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_loop:
- movzbl (%rdi,%rbx,1), %r13d
- xorb (%rsp,%rcx,1), %r13b
- movb %r13b, (%rsi,%rbx,1)
- movb %r13b, (%rsp,%rcx,1)
- incl %ebx
- incl %ecx
- cmpl %edx, %ebx
- jl L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_loop
- xorq %r13, %r13
- cmpl $16, %ecx
- je L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_finish_enc
-L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_byte_loop:
- movb %r13b, (%rsp,%rcx,1)
- incl %ecx
- cmpl $16, %ecx
- jl L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_byte_loop
-L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_finish_enc:
- vmovdqa (%rsp), %xmm4
- addq $16, %rsp
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm4, %xmm4
- vpxor %xmm4, %xmm6, %xmm6
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm5, %xmm9
- vpshufd $0x4e, %xmm6, %xmm10
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm11
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm8
- vpxor %xmm5, %xmm9, %xmm9
- vpxor %xmm6, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm6
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm6, %xmm6
-L_AES_GCM_encrypt_avx1_aesenc_last15_enc_avx_done:
-L_AES_GCM_encrypt_avx1_done_enc:
- movl %r9d, %edx
- movl %r11d, %ecx
- shlq $3, %rdx
- shlq $3, %rcx
- vpinsrq $0x00, %rdx, %xmm0, %xmm0
- vpinsrq $0x01, %rcx, %xmm0, %xmm0
- vpxor %xmm0, %xmm6, %xmm6
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm5, %xmm9
- vpshufd $0x4e, %xmm6, %xmm10
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm11
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm8
- vpxor %xmm5, %xmm9, %xmm9
- vpxor %xmm6, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm6
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm6, %xmm6
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm6, %xmm6
- vpxor 144(%rsp), %xmm6, %xmm0
- cmpl $16, %r14d
- je L_AES_GCM_encrypt_avx1_store_tag_16
- xorq %rcx, %rcx
- vmovdqa %xmm0, (%rsp)
-L_AES_GCM_encrypt_avx1_store_tag_loop:
- movzbl (%rsp,%rcx,1), %r13d
- movb %r13b, (%r8,%rcx,1)
- incl %ecx
- cmpl %r14d, %ecx
- jne L_AES_GCM_encrypt_avx1_store_tag_loop
- jmp L_AES_GCM_encrypt_avx1_store_tag_done
-L_AES_GCM_encrypt_avx1_store_tag_16:
- vmovdqu %xmm0, (%r8)
-L_AES_GCM_encrypt_avx1_store_tag_done:
- vzeroupper
- addq $0xa0, %rsp
- popq %r15
- popq %r14
- popq %rbx
- popq %r12
- popq %r13
- repz retq
-#ifndef __APPLE__
-.size AES_GCM_encrypt_avx1,.-AES_GCM_encrypt_avx1
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.text
-.globl AES_GCM_decrypt_avx1
-.type AES_GCM_decrypt_avx1,@function
-.align 4
-AES_GCM_decrypt_avx1:
-#else
-.section __TEXT,__text
-.globl _AES_GCM_decrypt_avx1
-.p2align 2
-_AES_GCM_decrypt_avx1:
-#endif /* __APPLE__ */
- pushq %r13
- pushq %r12
- pushq %rbx
- pushq %r14
- pushq %r15
- pushq %rbp
- movq %rdx, %r12
- movq %rcx, %rax
- movl 56(%rsp), %r11d
- movl 64(%rsp), %ebx
- movl 72(%rsp), %r14d
- movq 80(%rsp), %r15
- movl 88(%rsp), %r10d
- movq 96(%rsp), %rbp
- subq $0xa8, %rsp
- vpxor %xmm4, %xmm4, %xmm4
- vpxor %xmm6, %xmm6, %xmm6
- cmpl $12, %ebx
- movl %ebx, %edx
- jne L_AES_GCM_decrypt_avx1_iv_not_12
- # # Calculate values when IV is 12 bytes
- # Set counter based on IV
- movl $0x1000000, %ecx
- vpinsrq $0x00, (%rax), %xmm4, %xmm4
- vpinsrd $2, 8(%rax), %xmm4, %xmm4
- vpinsrd $3, %ecx, %xmm4, %xmm4
- # H = Encrypt X(=0) and T = Encrypt counter
- vmovdqa (%r15), %xmm5
- vpxor %xmm5, %xmm4, %xmm1
- vmovdqa 16(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 32(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 48(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 64(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 80(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 96(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 112(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 128(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 144(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm7
- jl L_AES_GCM_decrypt_avx1_calc_iv_12_last
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 176(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm7
- jl L_AES_GCM_decrypt_avx1_calc_iv_12_last
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 208(%r15), %xmm7
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm1, %xmm1
- vmovdqa 224(%r15), %xmm7
-L_AES_GCM_decrypt_avx1_calc_iv_12_last:
- vaesenclast %xmm7, %xmm5, %xmm5
- vaesenclast %xmm7, %xmm1, %xmm1
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm5, %xmm5
- vmovdqa %xmm1, 144(%rsp)
- jmp L_AES_GCM_decrypt_avx1_iv_done
-L_AES_GCM_decrypt_avx1_iv_not_12:
- # Calculate values when IV is not 12 bytes
- # H = Encrypt X(=0)
- vmovdqa (%r15), %xmm5
- vaesenc 16(%r15), %xmm5, %xmm5
- vaesenc 32(%r15), %xmm5, %xmm5
- vaesenc 48(%r15), %xmm5, %xmm5
- vaesenc 64(%r15), %xmm5, %xmm5
- vaesenc 80(%r15), %xmm5, %xmm5
- vaesenc 96(%r15), %xmm5, %xmm5
- vaesenc 112(%r15), %xmm5, %xmm5
- vaesenc 128(%r15), %xmm5, %xmm5
- vaesenc 144(%r15), %xmm5, %xmm5
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_decrypt_avx1_calc_iv_1_aesenc_avx_last
- vaesenc %xmm9, %xmm5, %xmm5
- vaesenc 176(%r15), %xmm5, %xmm5
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_decrypt_avx1_calc_iv_1_aesenc_avx_last
- vaesenc %xmm9, %xmm5, %xmm5
- vaesenc 208(%r15), %xmm5, %xmm5
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_decrypt_avx1_calc_iv_1_aesenc_avx_last:
- vaesenclast %xmm9, %xmm5, %xmm5
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm5, %xmm5
- # Calc counter
- # Initialization vector
- cmpl $0x00, %edx
- movq $0x00, %rcx
- je L_AES_GCM_decrypt_avx1_calc_iv_done
- cmpl $16, %edx
- jl L_AES_GCM_decrypt_avx1_calc_iv_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_decrypt_avx1_calc_iv_16_loop:
- vmovdqu (%rax,%rcx,1), %xmm8
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm4, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpxor %xmm4, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm4
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm4, %xmm4
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm4, %xmm4
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_avx1_calc_iv_16_loop
- movl %ebx, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_decrypt_avx1_calc_iv_done
-L_AES_GCM_decrypt_avx1_calc_iv_lt16:
- subq $16, %rsp
- vpxor %xmm8, %xmm8, %xmm8
- xorl %ebx, %ebx
- vmovdqa %xmm8, (%rsp)
-L_AES_GCM_decrypt_avx1_calc_iv_loop:
- movzbl (%rax,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_avx1_calc_iv_loop
- vmovdqa (%rsp), %xmm8
- addq $16, %rsp
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm4, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpxor %xmm4, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm4
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm4, %xmm4
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm4, %xmm4
-L_AES_GCM_decrypt_avx1_calc_iv_done:
- # T = Encrypt counter
- vpxor %xmm0, %xmm0, %xmm0
- shll $3, %edx
- vpinsrq $0x00, %rdx, %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm4, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpxor %xmm4, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm4
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm4, %xmm4
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm4, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm4, %xmm4
- # Encrypt counter
- vmovdqa (%r15), %xmm8
- vpxor %xmm4, %xmm8, %xmm8
- vaesenc 16(%r15), %xmm8, %xmm8
- vaesenc 32(%r15), %xmm8, %xmm8
- vaesenc 48(%r15), %xmm8, %xmm8
- vaesenc 64(%r15), %xmm8, %xmm8
- vaesenc 80(%r15), %xmm8, %xmm8
- vaesenc 96(%r15), %xmm8, %xmm8
- vaesenc 112(%r15), %xmm8, %xmm8
- vaesenc 128(%r15), %xmm8, %xmm8
- vaesenc 144(%r15), %xmm8, %xmm8
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_decrypt_avx1_calc_iv_2_aesenc_avx_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 176(%r15), %xmm8, %xmm8
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_decrypt_avx1_calc_iv_2_aesenc_avx_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 208(%r15), %xmm8, %xmm8
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_decrypt_avx1_calc_iv_2_aesenc_avx_last:
- vaesenclast %xmm9, %xmm8, %xmm8
- vmovdqa %xmm8, 144(%rsp)
-L_AES_GCM_decrypt_avx1_iv_done:
- # Additional authentication data
- movl %r11d, %edx
- cmpl $0x00, %edx
- je L_AES_GCM_decrypt_avx1_calc_aad_done
- xorl %ecx, %ecx
- cmpl $16, %edx
- jl L_AES_GCM_decrypt_avx1_calc_aad_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_decrypt_avx1_calc_aad_16_loop:
- vmovdqu (%r12,%rcx,1), %xmm8
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm6, %xmm6
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm6, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm6, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm6, %xmm5, %xmm0
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm6, %xmm6
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm6, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm6, %xmm6
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm6, %xmm6
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm6, %xmm6
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm6, %xmm6
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_avx1_calc_aad_16_loop
- movl %r11d, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_decrypt_avx1_calc_aad_done
-L_AES_GCM_decrypt_avx1_calc_aad_lt16:
- subq $16, %rsp
- vpxor %xmm8, %xmm8, %xmm8
- xorl %ebx, %ebx
- vmovdqa %xmm8, (%rsp)
-L_AES_GCM_decrypt_avx1_calc_aad_loop:
- movzbl (%r12,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_avx1_calc_aad_loop
- vmovdqa (%rsp), %xmm8
- addq $16, %rsp
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm8, %xmm8
- vpxor %xmm8, %xmm6, %xmm6
- # ghash_gfmul_avx
- vpshufd $0x4e, %xmm6, %xmm1
- vpshufd $0x4e, %xmm5, %xmm2
- vpclmulqdq $0x11, %xmm6, %xmm5, %xmm3
- vpclmulqdq $0x00, %xmm6, %xmm5, %xmm0
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm5, %xmm2, %xmm2
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa %xmm0, %xmm7
- vmovdqa %xmm3, %xmm6
- vpslldq $8, %xmm1, %xmm2
- vpsrldq $8, %xmm1, %xmm1
- vpxor %xmm2, %xmm7, %xmm7
- vpxor %xmm1, %xmm6, %xmm6
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm6, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm6, %xmm6
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm6, %xmm6
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm6, %xmm6
- vpslld $31, %xmm7, %xmm0
- vpslld $30, %xmm7, %xmm1
- vpslld $25, %xmm7, %xmm2
- vpxor %xmm1, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vmovdqa %xmm0, %xmm1
- vpsrldq $4, %xmm1, %xmm1
- vpslldq $12, %xmm0, %xmm0
- vpxor %xmm0, %xmm7, %xmm7
- vpsrld $0x01, %xmm7, %xmm2
- vpsrld $2, %xmm7, %xmm3
- vpsrld $7, %xmm7, %xmm0
- vpxor %xmm3, %xmm2, %xmm2
- vpxor %xmm0, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm2, %xmm6, %xmm6
-L_AES_GCM_decrypt_avx1_calc_aad_done:
- # Calculate counter and H
- vpsrlq $63, %xmm5, %xmm9
- vpsllq $0x01, %xmm5, %xmm8
- vpslldq $8, %xmm9, %xmm9
- vpor %xmm9, %xmm8, %xmm8
- vpshufd $0xff, %xmm5, %xmm5
- vpsrad $31, %xmm5, %xmm5
- vpshufb L_avx1_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm4
- vpand L_avx1_aes_gcm_mod2_128(%rip), %xmm5, %xmm5
- vpaddd L_avx1_aes_gcm_one(%rip), %xmm4, %xmm4
- vpxor %xmm8, %xmm5, %xmm5
- vmovdqa %xmm4, 128(%rsp)
- xorl %ebx, %ebx
- cmpl $0x80, %r9d
- movl %r9d, %r13d
- jl L_AES_GCM_decrypt_avx1_done_128
- andl $0xffffff80, %r13d
- vmovdqa %xmm6, %xmm2
- # H ^ 1
- vmovdqa %xmm5, (%rsp)
- # H ^ 2
- vpclmulqdq $0x00, %xmm5, %xmm5, %xmm8
- vpclmulqdq $0x11, %xmm5, %xmm5, %xmm0
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm0, %xmm0
- vmovdqa %xmm0, 16(%rsp)
- # H ^ 3
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm5, %xmm9
- vpshufd $0x4e, %xmm0, %xmm10
- vpclmulqdq $0x11, %xmm5, %xmm0, %xmm11
- vpclmulqdq $0x00, %xmm5, %xmm0, %xmm8
- vpxor %xmm5, %xmm9, %xmm9
- vpxor %xmm0, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm1
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm1, %xmm1
- vmovdqa %xmm1, 32(%rsp)
- # H ^ 4
- vpclmulqdq $0x00, %xmm0, %xmm0, %xmm8
- vpclmulqdq $0x11, %xmm0, %xmm0, %xmm3
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm3, %xmm3
- vmovdqa %xmm3, 48(%rsp)
- # H ^ 5
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm0, %xmm9
- vpshufd $0x4e, %xmm1, %xmm10
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm11
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm8
- vpxor %xmm0, %xmm9, %xmm9
- vpxor %xmm1, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm7
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm7, %xmm7
- vmovdqa %xmm7, 64(%rsp)
- # H ^ 6
- vpclmulqdq $0x00, %xmm1, %xmm1, %xmm8
- vpclmulqdq $0x11, %xmm1, %xmm1, %xmm7
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm7, %xmm7
- vmovdqa %xmm7, 80(%rsp)
- # H ^ 7
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm1, %xmm9
- vpshufd $0x4e, %xmm3, %xmm10
- vpclmulqdq $0x11, %xmm1, %xmm3, %xmm11
- vpclmulqdq $0x00, %xmm1, %xmm3, %xmm8
- vpxor %xmm1, %xmm9, %xmm9
- vpxor %xmm3, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm7
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm7, %xmm7
- vmovdqa %xmm7, 96(%rsp)
- # H ^ 8
- vpclmulqdq $0x00, %xmm3, %xmm3, %xmm8
- vpclmulqdq $0x11, %xmm3, %xmm3, %xmm7
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm7, %xmm7
- vmovdqa %xmm7, 112(%rsp)
-L_AES_GCM_decrypt_avx1_ghash_128:
- leaq (%rdi,%rbx,1), %rcx
- leaq (%rsi,%rbx,1), %rdx
- vmovdqa 128(%rsp), %xmm0
- vmovdqa L_avx1_aes_gcm_bswap_epi64(%rip), %xmm1
- vpshufb %xmm1, %xmm0, %xmm8
- vpaddd L_avx1_aes_gcm_one(%rip), %xmm0, %xmm9
- vpshufb %xmm1, %xmm9, %xmm9
- vpaddd L_avx1_aes_gcm_two(%rip), %xmm0, %xmm10
- vpshufb %xmm1, %xmm10, %xmm10
- vpaddd L_avx1_aes_gcm_three(%rip), %xmm0, %xmm11
- vpshufb %xmm1, %xmm11, %xmm11
- vpaddd L_avx1_aes_gcm_four(%rip), %xmm0, %xmm12
- vpshufb %xmm1, %xmm12, %xmm12
- vpaddd L_avx1_aes_gcm_five(%rip), %xmm0, %xmm13
- vpshufb %xmm1, %xmm13, %xmm13
- vpaddd L_avx1_aes_gcm_six(%rip), %xmm0, %xmm14
- vpshufb %xmm1, %xmm14, %xmm14
- vpaddd L_avx1_aes_gcm_seven(%rip), %xmm0, %xmm15
- vpshufb %xmm1, %xmm15, %xmm15
- vpaddd L_avx1_aes_gcm_eight(%rip), %xmm0, %xmm0
- vmovdqa (%r15), %xmm7
- vmovdqa %xmm0, 128(%rsp)
- vpxor %xmm7, %xmm8, %xmm8
- vpxor %xmm7, %xmm9, %xmm9
- vpxor %xmm7, %xmm10, %xmm10
- vpxor %xmm7, %xmm11, %xmm11
- vpxor %xmm7, %xmm12, %xmm12
- vpxor %xmm7, %xmm13, %xmm13
- vpxor %xmm7, %xmm14, %xmm14
- vpxor %xmm7, %xmm15, %xmm15
- vmovdqa 112(%rsp), %xmm7
- vmovdqu (%rcx), %xmm0
- vaesenc 16(%r15), %xmm8, %xmm8
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm3
- vaesenc 16(%r15), %xmm9, %xmm9
- vaesenc 16(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm2
- vaesenc 16(%r15), %xmm11, %xmm11
- vaesenc 16(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm1, %xmm1
- vaesenc 16(%r15), %xmm13, %xmm13
- vaesenc 16(%r15), %xmm14, %xmm14
- vaesenc 16(%r15), %xmm15, %xmm15
- vpxor %xmm2, %xmm1, %xmm1
- vpxor %xmm3, %xmm1, %xmm1
- vmovdqa 96(%rsp), %xmm7
- vmovdqu 16(%rcx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 32(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 32(%r15), %xmm9, %xmm9
- vaesenc 32(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 32(%r15), %xmm11, %xmm11
- vaesenc 32(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 32(%r15), %xmm13, %xmm13
- vaesenc 32(%r15), %xmm14, %xmm14
- vaesenc 32(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 80(%rsp), %xmm7
- vmovdqu 32(%rcx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 48(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 48(%r15), %xmm9, %xmm9
- vaesenc 48(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 48(%r15), %xmm11, %xmm11
- vaesenc 48(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 48(%r15), %xmm13, %xmm13
- vaesenc 48(%r15), %xmm14, %xmm14
- vaesenc 48(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 64(%rsp), %xmm7
- vmovdqu 48(%rcx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 64(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 64(%r15), %xmm9, %xmm9
- vaesenc 64(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 64(%r15), %xmm11, %xmm11
- vaesenc 64(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 64(%r15), %xmm13, %xmm13
- vaesenc 64(%r15), %xmm14, %xmm14
- vaesenc 64(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 48(%rsp), %xmm7
- vmovdqu 64(%rcx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 80(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 80(%r15), %xmm9, %xmm9
- vaesenc 80(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 80(%r15), %xmm11, %xmm11
- vaesenc 80(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 80(%r15), %xmm13, %xmm13
- vaesenc 80(%r15), %xmm14, %xmm14
- vaesenc 80(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 32(%rsp), %xmm7
- vmovdqu 80(%rcx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 96(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 96(%r15), %xmm9, %xmm9
- vaesenc 96(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 96(%r15), %xmm11, %xmm11
- vaesenc 96(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 96(%r15), %xmm13, %xmm13
- vaesenc 96(%r15), %xmm14, %xmm14
- vaesenc 96(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa 16(%rsp), %xmm7
- vmovdqu 96(%rcx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 112(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 112(%r15), %xmm9, %xmm9
- vaesenc 112(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 112(%r15), %xmm11, %xmm11
- vaesenc 112(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 112(%r15), %xmm13, %xmm13
- vaesenc 112(%r15), %xmm14, %xmm14
- vaesenc 112(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vmovdqa (%rsp), %xmm7
- vmovdqu 112(%rcx), %xmm0
- vpshufd $0x4e, %xmm7, %xmm4
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vaesenc 128(%r15), %xmm8, %xmm8
- vpxor %xmm7, %xmm4, %xmm4
- vpshufd $0x4e, %xmm0, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vpclmulqdq $0x11, %xmm7, %xmm0, %xmm6
- vaesenc 128(%r15), %xmm9, %xmm9
- vaesenc 128(%r15), %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm7, %xmm0, %xmm7
- vaesenc 128(%r15), %xmm11, %xmm11
- vaesenc 128(%r15), %xmm12, %xmm12
- vpclmulqdq $0x00, %xmm5, %xmm4, %xmm4
- vaesenc 128(%r15), %xmm13, %xmm13
- vaesenc 128(%r15), %xmm14, %xmm14
- vaesenc 128(%r15), %xmm15, %xmm15
- vpxor %xmm7, %xmm1, %xmm1
- vpxor %xmm7, %xmm2, %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpxor %xmm6, %xmm3, %xmm3
- vpxor %xmm4, %xmm1, %xmm1
- vpslldq $8, %xmm1, %xmm5
- vpsrldq $8, %xmm1, %xmm1
- vaesenc 144(%r15), %xmm8, %xmm8
- vpxor %xmm5, %xmm2, %xmm2
- vpxor %xmm1, %xmm3, %xmm3
- vaesenc 144(%r15), %xmm9, %xmm9
- vpslld $31, %xmm2, %xmm7
- vpslld $30, %xmm2, %xmm4
- vpslld $25, %xmm2, %xmm5
- vaesenc 144(%r15), %xmm10, %xmm10
- vpxor %xmm4, %xmm7, %xmm7
- vpxor %xmm5, %xmm7, %xmm7
- vaesenc 144(%r15), %xmm11, %xmm11
- vpsrldq $4, %xmm7, %xmm4
- vpslldq $12, %xmm7, %xmm7
- vaesenc 144(%r15), %xmm12, %xmm12
- vpxor %xmm7, %xmm2, %xmm2
- vpsrld $0x01, %xmm2, %xmm5
- vaesenc 144(%r15), %xmm13, %xmm13
- vpsrld $2, %xmm2, %xmm1
- vpsrld $7, %xmm2, %xmm0
- vaesenc 144(%r15), %xmm14, %xmm14
- vpxor %xmm1, %xmm5, %xmm5
- vpxor %xmm0, %xmm5, %xmm5
- vaesenc 144(%r15), %xmm15, %xmm15
- vpxor %xmm4, %xmm5, %xmm5
- vpxor %xmm5, %xmm2, %xmm2
- vpxor %xmm3, %xmm2, %xmm2
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm7
- jl L_AES_GCM_decrypt_avx1_aesenc_128_ghash_avx_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 176(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm7
- jl L_AES_GCM_decrypt_avx1_aesenc_128_ghash_avx_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 208(%r15), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 224(%r15), %xmm7
-L_AES_GCM_decrypt_avx1_aesenc_128_ghash_avx_done:
- vaesenclast %xmm7, %xmm8, %xmm8
- vaesenclast %xmm7, %xmm9, %xmm9
- vmovdqu (%rcx), %xmm0
- vmovdqu 16(%rcx), %xmm1
- vpxor %xmm0, %xmm8, %xmm8
- vpxor %xmm1, %xmm9, %xmm9
- vmovdqu %xmm8, (%rdx)
- vmovdqu %xmm9, 16(%rdx)
- vaesenclast %xmm7, %xmm10, %xmm10
- vaesenclast %xmm7, %xmm11, %xmm11
- vmovdqu 32(%rcx), %xmm0
- vmovdqu 48(%rcx), %xmm1
- vpxor %xmm0, %xmm10, %xmm10
- vpxor %xmm1, %xmm11, %xmm11
- vmovdqu %xmm10, 32(%rdx)
- vmovdqu %xmm11, 48(%rdx)
- vaesenclast %xmm7, %xmm12, %xmm12
- vaesenclast %xmm7, %xmm13, %xmm13
- vmovdqu 64(%rcx), %xmm0
- vmovdqu 80(%rcx), %xmm1
- vpxor %xmm0, %xmm12, %xmm12
- vpxor %xmm1, %xmm13, %xmm13
- vmovdqu %xmm12, 64(%rdx)
- vmovdqu %xmm13, 80(%rdx)
- vaesenclast %xmm7, %xmm14, %xmm14
- vaesenclast %xmm7, %xmm15, %xmm15
- vmovdqu 96(%rcx), %xmm0
- vmovdqu 112(%rcx), %xmm1
- vpxor %xmm0, %xmm14, %xmm14
- vpxor %xmm1, %xmm15, %xmm15
- vmovdqu %xmm14, 96(%rdx)
- vmovdqu %xmm15, 112(%rdx)
- addl $0x80, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_decrypt_avx1_ghash_128
- vmovdqa %xmm2, %xmm6
- vmovdqa (%rsp), %xmm5
-L_AES_GCM_decrypt_avx1_done_128:
- movl %r9d, %edx
- cmpl %edx, %ebx
- jge L_AES_GCM_decrypt_avx1_done_dec
- movl %r9d, %r13d
- andl $0xfffffff0, %r13d
- cmpl %r13d, %ebx
- jge L_AES_GCM_decrypt_avx1_last_block_done
-L_AES_GCM_decrypt_avx1_last_block_start:
- vmovdqu (%rdi,%rbx,1), %xmm13
- vmovdqa %xmm5, %xmm0
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm13, %xmm1
- vpxor %xmm6, %xmm1, %xmm1
- vmovdqa 128(%rsp), %xmm9
- vpshufb L_avx1_aes_gcm_bswap_epi64(%rip), %xmm9, %xmm8
- vpaddd L_avx1_aes_gcm_one(%rip), %xmm9, %xmm9
- vmovdqa %xmm9, 128(%rsp)
- vpxor (%r15), %xmm8, %xmm8
- vpclmulqdq $16, %xmm0, %xmm1, %xmm10
- vaesenc 16(%r15), %xmm8, %xmm8
- vaesenc 32(%r15), %xmm8, %xmm8
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm11
- vaesenc 48(%r15), %xmm8, %xmm8
- vaesenc 64(%r15), %xmm8, %xmm8
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm12
- vaesenc 80(%r15), %xmm8, %xmm8
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vaesenc 96(%r15), %xmm8, %xmm8
- vpxor %xmm11, %xmm10, %xmm10
- vpslldq $8, %xmm10, %xmm2
- vpsrldq $8, %xmm10, %xmm10
- vaesenc 112(%r15), %xmm8, %xmm8
- vpxor %xmm12, %xmm2, %xmm2
- vpxor %xmm10, %xmm1, %xmm3
- vmovdqa L_avx1_aes_gcm_mod2_128(%rip), %xmm0
- vpclmulqdq $16, %xmm0, %xmm2, %xmm11
- vaesenc 128(%r15), %xmm8, %xmm8
- vpshufd $0x4e, %xmm2, %xmm10
- vpxor %xmm11, %xmm10, %xmm10
- vpclmulqdq $16, %xmm0, %xmm10, %xmm11
- vaesenc 144(%r15), %xmm8, %xmm8
- vpshufd $0x4e, %xmm10, %xmm10
- vpxor %xmm11, %xmm10, %xmm10
- vpxor %xmm3, %xmm10, %xmm6
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_decrypt_avx1_aesenc_gfmul_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 176(%r15), %xmm8, %xmm8
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_decrypt_avx1_aesenc_gfmul_last
- vaesenc %xmm9, %xmm8, %xmm8
- vaesenc 208(%r15), %xmm8, %xmm8
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_decrypt_avx1_aesenc_gfmul_last:
- vaesenclast %xmm9, %xmm8, %xmm8
- vmovdqa %xmm13, %xmm0
- vpxor %xmm0, %xmm8, %xmm8
- vmovdqu %xmm8, (%rsi,%rbx,1)
- addl $16, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_decrypt_avx1_last_block_start
-L_AES_GCM_decrypt_avx1_last_block_done:
- movl %r9d, %ecx
- movl %ecx, %edx
- andl $15, %ecx
- jz L_AES_GCM_decrypt_avx1_aesenc_last15_dec_avx_done
- vmovdqa 128(%rsp), %xmm4
- vpshufb L_avx1_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm4
- vpxor (%r15), %xmm4, %xmm4
- vaesenc 16(%r15), %xmm4, %xmm4
- vaesenc 32(%r15), %xmm4, %xmm4
- vaesenc 48(%r15), %xmm4, %xmm4
- vaesenc 64(%r15), %xmm4, %xmm4
- vaesenc 80(%r15), %xmm4, %xmm4
- vaesenc 96(%r15), %xmm4, %xmm4
- vaesenc 112(%r15), %xmm4, %xmm4
- vaesenc 128(%r15), %xmm4, %xmm4
- vaesenc 144(%r15), %xmm4, %xmm4
- cmpl $11, %r10d
- vmovdqa 160(%r15), %xmm9
- jl L_AES_GCM_decrypt_avx1_aesenc_last15_dec_avx_aesenc_avx_last
- vaesenc %xmm9, %xmm4, %xmm4
- vaesenc 176(%r15), %xmm4, %xmm4
- cmpl $13, %r10d
- vmovdqa 192(%r15), %xmm9
- jl L_AES_GCM_decrypt_avx1_aesenc_last15_dec_avx_aesenc_avx_last
- vaesenc %xmm9, %xmm4, %xmm4
- vaesenc 208(%r15), %xmm4, %xmm4
- vmovdqa 224(%r15), %xmm9
-L_AES_GCM_decrypt_avx1_aesenc_last15_dec_avx_aesenc_avx_last:
- vaesenclast %xmm9, %xmm4, %xmm4
- subq $32, %rsp
- xorl %ecx, %ecx
- vmovdqa %xmm4, (%rsp)
- vpxor %xmm0, %xmm0, %xmm0
- vmovdqa %xmm0, 16(%rsp)
-L_AES_GCM_decrypt_avx1_aesenc_last15_dec_avx_loop:
- movzbl (%rdi,%rbx,1), %r13d
- movb %r13b, 16(%rsp,%rcx,1)
- xorb (%rsp,%rcx,1), %r13b
- movb %r13b, (%rsi,%rbx,1)
- incl %ebx
- incl %ecx
- cmpl %edx, %ebx
- jl L_AES_GCM_decrypt_avx1_aesenc_last15_dec_avx_loop
- vmovdqa 16(%rsp), %xmm4
- addq $32, %rsp
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm4, %xmm4
- vpxor %xmm4, %xmm6, %xmm6
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm5, %xmm9
- vpshufd $0x4e, %xmm6, %xmm10
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm11
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm8
- vpxor %xmm5, %xmm9, %xmm9
- vpxor %xmm6, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm6
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm6, %xmm6
-L_AES_GCM_decrypt_avx1_aesenc_last15_dec_avx_done:
-L_AES_GCM_decrypt_avx1_done_dec:
- movl %r9d, %edx
- movl %r11d, %ecx
- shlq $3, %rdx
- shlq $3, %rcx
- vpinsrq $0x00, %rdx, %xmm0, %xmm0
- vpinsrq $0x01, %rcx, %xmm0, %xmm0
- vpxor %xmm0, %xmm6, %xmm6
- # ghash_gfmul_red_avx
- vpshufd $0x4e, %xmm5, %xmm9
- vpshufd $0x4e, %xmm6, %xmm10
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm11
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm8
- vpxor %xmm5, %xmm9, %xmm9
- vpxor %xmm6, %xmm10, %xmm10
- vpclmulqdq $0x00, %xmm10, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm11, %xmm9, %xmm9
- vpslldq $8, %xmm9, %xmm10
- vpsrldq $8, %xmm9, %xmm9
- vpxor %xmm10, %xmm8, %xmm8
- vpxor %xmm9, %xmm11, %xmm6
- vpslld $31, %xmm8, %xmm12
- vpslld $30, %xmm8, %xmm13
- vpslld $25, %xmm8, %xmm14
- vpxor %xmm13, %xmm12, %xmm12
- vpxor %xmm14, %xmm12, %xmm12
- vpsrldq $4, %xmm12, %xmm13
- vpslldq $12, %xmm12, %xmm12
- vpxor %xmm12, %xmm8, %xmm8
- vpsrld $0x01, %xmm8, %xmm14
- vpsrld $2, %xmm8, %xmm10
- vpsrld $7, %xmm8, %xmm9
- vpxor %xmm10, %xmm14, %xmm14
- vpxor %xmm9, %xmm14, %xmm14
- vpxor %xmm13, %xmm14, %xmm14
- vpxor %xmm8, %xmm14, %xmm14
- vpxor %xmm14, %xmm6, %xmm6
- vpshufb L_avx1_aes_gcm_bswap_mask(%rip), %xmm6, %xmm6
- vpxor 144(%rsp), %xmm6, %xmm0
- cmpl $16, %r14d
- je L_AES_GCM_decrypt_avx1_cmp_tag_16
- subq $16, %rsp
- xorq %rcx, %rcx
- xorq %rbx, %rbx
- vmovdqa %xmm0, (%rsp)
-L_AES_GCM_decrypt_avx1_cmp_tag_loop:
- movzbl (%rsp,%rcx,1), %r13d
- xorb (%r8,%rcx,1), %r13b
- orb %r13b, %bl
- incl %ecx
- cmpl %r14d, %ecx
- jne L_AES_GCM_decrypt_avx1_cmp_tag_loop
- cmpb $0x00, %bl
- sete %bl
- addq $16, %rsp
- xorq %rcx, %rcx
- jmp L_AES_GCM_decrypt_avx1_cmp_tag_done
-L_AES_GCM_decrypt_avx1_cmp_tag_16:
- vmovdqu (%r8), %xmm1
- vpcmpeqb %xmm1, %xmm0, %xmm0
- vpmovmskb %xmm0, %rdx
- # %%edx == 0xFFFF then return 1 else => return 0
- xorl %ebx, %ebx
- cmpl $0xffff, %edx
- sete %bl
-L_AES_GCM_decrypt_avx1_cmp_tag_done:
- movl %ebx, (%rbp)
- vzeroupper
- addq $0xa8, %rsp
- popq %rbp
- popq %r15
- popq %r14
- popq %rbx
- popq %r12
- popq %r13
- repz retq
-#ifndef __APPLE__
-.size AES_GCM_decrypt_avx1,.-AES_GCM_decrypt_avx1
-#endif /* __APPLE__ */
-#endif /* HAVE_INTEL_AVX1 */
-#ifdef HAVE_INTEL_AVX2
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_one:
-.quad 0x0, 0x1
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_two:
-.quad 0x0, 0x2
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_three:
-.quad 0x0, 0x3
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_four:
-.quad 0x0, 0x4
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_five:
-.quad 0x0, 0x5
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_six:
-.quad 0x0, 0x6
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_seven:
-.quad 0x0, 0x7
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_eight:
-.quad 0x0, 0x8
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_bswap_one:
-.quad 0x0, 0x100000000000000
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_bswap_epi64:
-.quad 0x1020304050607, 0x8090a0b0c0d0e0f
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_bswap_mask:
-.quad 0x8090a0b0c0d0e0f, 0x1020304050607
-#ifndef __APPLE__
-.data
-#else
-.section __DATA,__data
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.align 16
-#else
-.p2align 4
-#endif /* __APPLE__ */
-L_avx2_aes_gcm_mod2_128:
-.quad 0x1, 0xc200000000000000
-#ifndef __APPLE__
-.text
-.globl AES_GCM_encrypt_avx2
-.type AES_GCM_encrypt_avx2,@function
-.align 4
-AES_GCM_encrypt_avx2:
-#else
-.section __TEXT,__text
-.globl _AES_GCM_encrypt_avx2
-.p2align 2
-_AES_GCM_encrypt_avx2:
-#endif /* __APPLE__ */
- pushq %r13
- pushq %r12
- pushq %r15
- pushq %rbx
- pushq %r14
- movq %rdx, %r12
- movq %rcx, %rax
- movq %r8, %r15
- movq %rsi, %r8
- movl %r9d, %r10d
- movl 48(%rsp), %r11d
- movl 56(%rsp), %ebx
- movl 64(%rsp), %r14d
- movq 72(%rsp), %rsi
- movl 80(%rsp), %r9d
- subq $0xa0, %rsp
- vpxor %xmm4, %xmm4, %xmm4
- vpxor %xmm6, %xmm6, %xmm6
- movl %ebx, %edx
- cmpl $12, %edx
- je L_AES_GCM_encrypt_avx2_iv_12
- # Calculate values when IV is not 12 bytes
- # H = Encrypt X(=0)
- vmovdqa (%rsi), %xmm5
- vaesenc 16(%rsi), %xmm5, %xmm5
- vaesenc 32(%rsi), %xmm5, %xmm5
- vaesenc 48(%rsi), %xmm5, %xmm5
- vaesenc 64(%rsi), %xmm5, %xmm5
- vaesenc 80(%rsi), %xmm5, %xmm5
- vaesenc 96(%rsi), %xmm5, %xmm5
- vaesenc 112(%rsi), %xmm5, %xmm5
- vaesenc 128(%rsi), %xmm5, %xmm5
- vaesenc 144(%rsi), %xmm5, %xmm5
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm0
- jl L_AES_GCM_encrypt_avx2_calc_iv_1_aesenc_avx_last
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc 176(%rsi), %xmm5, %xmm5
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm0
- jl L_AES_GCM_encrypt_avx2_calc_iv_1_aesenc_avx_last
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc 208(%rsi), %xmm5, %xmm5
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_encrypt_avx2_calc_iv_1_aesenc_avx_last:
- vaesenclast %xmm0, %xmm5, %xmm5
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm5, %xmm5
- # Calc counter
- # Initialization vector
- cmpl $0x00, %edx
- movq $0x00, %rcx
- je L_AES_GCM_encrypt_avx2_calc_iv_done
- cmpl $16, %edx
- jl L_AES_GCM_encrypt_avx2_calc_iv_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_encrypt_avx2_calc_iv_16_loop:
- vmovdqu (%rax,%rcx,1), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm4, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm4, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm4
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm4, %xmm4
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_avx2_calc_iv_16_loop
- movl %ebx, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_encrypt_avx2_calc_iv_done
-L_AES_GCM_encrypt_avx2_calc_iv_lt16:
- vpxor %xmm0, %xmm0, %xmm0
- xorl %ebx, %ebx
- vmovdqa %xmm0, (%rsp)
-L_AES_GCM_encrypt_avx2_calc_iv_loop:
- movzbl (%rax,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_avx2_calc_iv_loop
- vmovdqa (%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm4, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm4, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm4
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm4, %xmm4
-L_AES_GCM_encrypt_avx2_calc_iv_done:
- # T = Encrypt counter
- vpxor %xmm0, %xmm0, %xmm0
- shll $3, %edx
- vpinsrq $0x00, %rdx, %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm4, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm4, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm4
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm4, %xmm4
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm4, %xmm4
- # Encrypt counter
- vmovdqa (%rsi), %xmm15
- vpxor %xmm4, %xmm15, %xmm15
- vaesenc 16(%rsi), %xmm15, %xmm15
- vaesenc 32(%rsi), %xmm15, %xmm15
- vaesenc 48(%rsi), %xmm15, %xmm15
- vaesenc 64(%rsi), %xmm15, %xmm15
- vaesenc 80(%rsi), %xmm15, %xmm15
- vaesenc 96(%rsi), %xmm15, %xmm15
- vaesenc 112(%rsi), %xmm15, %xmm15
- vaesenc 128(%rsi), %xmm15, %xmm15
- vaesenc 144(%rsi), %xmm15, %xmm15
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm0
- jl L_AES_GCM_encrypt_avx2_calc_iv_2_aesenc_avx_last
- vaesenc %xmm0, %xmm15, %xmm15
- vaesenc 176(%rsi), %xmm15, %xmm15
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm0
- jl L_AES_GCM_encrypt_avx2_calc_iv_2_aesenc_avx_last
- vaesenc %xmm0, %xmm15, %xmm15
- vaesenc 208(%rsi), %xmm15, %xmm15
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_encrypt_avx2_calc_iv_2_aesenc_avx_last:
- vaesenclast %xmm0, %xmm15, %xmm15
- jmp L_AES_GCM_encrypt_avx2_iv_done
-L_AES_GCM_encrypt_avx2_iv_12:
- # # Calculate values when IV is 12 bytes
- # Set counter based on IV
- vmovdqa L_avx2_aes_gcm_bswap_one(%rip), %xmm4
- vmovdqa (%rsi), %xmm5
- vpblendd $7, (%rax), %xmm4, %xmm4
- # H = Encrypt X(=0) and T = Encrypt counter
- vmovdqa 16(%rsi), %xmm7
- vpxor %xmm5, %xmm4, %xmm15
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 32(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 48(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 64(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 80(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 96(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 112(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 128(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 144(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm0
- jl L_AES_GCM_encrypt_avx2_calc_iv_12_last
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 176(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm0
- jl L_AES_GCM_encrypt_avx2_calc_iv_12_last
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 208(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_encrypt_avx2_calc_iv_12_last:
- vaesenclast %xmm0, %xmm5, %xmm5
- vaesenclast %xmm0, %xmm15, %xmm15
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm5, %xmm5
-L_AES_GCM_encrypt_avx2_iv_done:
- # Additional authentication data
- movl %r11d, %edx
- cmpl $0x00, %edx
- je L_AES_GCM_encrypt_avx2_calc_aad_done
- xorl %ecx, %ecx
- cmpl $16, %edx
- jl L_AES_GCM_encrypt_avx2_calc_aad_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_encrypt_avx2_calc_aad_16_loop:
- vmovdqu (%r12,%rcx,1), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm6, %xmm6
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm6, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm6, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm6, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm6, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm6
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm6, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm6, %xmm6
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm6, %xmm6
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm6, %xmm6
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm6, %xmm6
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_avx2_calc_aad_16_loop
- movl %r11d, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_encrypt_avx2_calc_aad_done
-L_AES_GCM_encrypt_avx2_calc_aad_lt16:
- vpxor %xmm0, %xmm0, %xmm0
- xorl %ebx, %ebx
- vmovdqa %xmm0, (%rsp)
-L_AES_GCM_encrypt_avx2_calc_aad_loop:
- movzbl (%r12,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_encrypt_avx2_calc_aad_loop
- vmovdqa (%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm6, %xmm6
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm6, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm6, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm6, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm6, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm6
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm6, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm6, %xmm6
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm6, %xmm6
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm6, %xmm6
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm6, %xmm6
-L_AES_GCM_encrypt_avx2_calc_aad_done:
- # Calculate counter and H
- vpsrlq $63, %xmm5, %xmm1
- vpsllq $0x01, %xmm5, %xmm0
- vpslldq $8, %xmm1, %xmm1
- vpor %xmm1, %xmm0, %xmm0
- vpshufd $0xff, %xmm5, %xmm5
- vpsrad $31, %xmm5, %xmm5
- vpshufb L_avx2_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm4
- vpand L_avx2_aes_gcm_mod2_128(%rip), %xmm5, %xmm5
- vpaddd L_avx2_aes_gcm_one(%rip), %xmm4, %xmm4
- vpxor %xmm0, %xmm5, %xmm5
- xorl %ebx, %ebx
- cmpl $0x80, %r10d
- movl %r10d, %r13d
- jl L_AES_GCM_encrypt_avx2_done_128
- andl $0xffffff80, %r13d
- vmovdqa %xmm4, 128(%rsp)
- vmovdqa %xmm15, 144(%rsp)
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm3
- # H ^ 1 and H ^ 2
- vpclmulqdq $0x00, %xmm5, %xmm5, %xmm9
- vpclmulqdq $0x11, %xmm5, %xmm5, %xmm10
- vpclmulqdq $16, %xmm3, %xmm9, %xmm8
- vpshufd $0x4e, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpclmulqdq $16, %xmm3, %xmm9, %xmm8
- vpshufd $0x4e, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm9, %xmm10, %xmm0
- vmovdqa %xmm5, (%rsp)
- vmovdqa %xmm0, 16(%rsp)
- # H ^ 3 and H ^ 4
- vpclmulqdq $16, %xmm5, %xmm0, %xmm11
- vpclmulqdq $0x01, %xmm5, %xmm0, %xmm10
- vpclmulqdq $0x00, %xmm5, %xmm0, %xmm9
- vpclmulqdq $0x11, %xmm5, %xmm0, %xmm12
- vpclmulqdq $0x00, %xmm0, %xmm0, %xmm13
- vpclmulqdq $0x11, %xmm0, %xmm0, %xmm14
- vpxor %xmm10, %xmm11, %xmm11
- vpslldq $8, %xmm11, %xmm10
- vpsrldq $8, %xmm11, %xmm11
- vpxor %xmm9, %xmm10, %xmm10
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm9, %xmm10, %xmm10
- vpxor %xmm8, %xmm13, %xmm13
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm11, %xmm12, %xmm12
- vpxor %xmm8, %xmm13, %xmm13
- vpxor %xmm12, %xmm10, %xmm10
- vpxor %xmm14, %xmm13, %xmm2
- vpxor %xmm9, %xmm10, %xmm1
- vmovdqa %xmm1, 32(%rsp)
- vmovdqa %xmm2, 48(%rsp)
- # H ^ 5 and H ^ 6
- vpclmulqdq $16, %xmm0, %xmm1, %xmm11
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm10
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm9
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm12
- vpclmulqdq $0x00, %xmm1, %xmm1, %xmm13
- vpclmulqdq $0x11, %xmm1, %xmm1, %xmm14
- vpxor %xmm10, %xmm11, %xmm11
- vpslldq $8, %xmm11, %xmm10
- vpsrldq $8, %xmm11, %xmm11
- vpxor %xmm9, %xmm10, %xmm10
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm9, %xmm10, %xmm10
- vpxor %xmm8, %xmm13, %xmm13
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm11, %xmm12, %xmm12
- vpxor %xmm8, %xmm13, %xmm13
- vpxor %xmm12, %xmm10, %xmm10
- vpxor %xmm14, %xmm13, %xmm0
- vpxor %xmm9, %xmm10, %xmm7
- vmovdqa %xmm7, 64(%rsp)
- vmovdqa %xmm0, 80(%rsp)
- # H ^ 7 and H ^ 8
- vpclmulqdq $16, %xmm1, %xmm2, %xmm11
- vpclmulqdq $0x01, %xmm1, %xmm2, %xmm10
- vpclmulqdq $0x00, %xmm1, %xmm2, %xmm9
- vpclmulqdq $0x11, %xmm1, %xmm2, %xmm12
- vpclmulqdq $0x00, %xmm2, %xmm2, %xmm13
- vpclmulqdq $0x11, %xmm2, %xmm2, %xmm14
- vpxor %xmm10, %xmm11, %xmm11
- vpslldq $8, %xmm11, %xmm10
- vpsrldq $8, %xmm11, %xmm11
- vpxor %xmm9, %xmm10, %xmm10
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm9, %xmm10, %xmm10
- vpxor %xmm8, %xmm13, %xmm13
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm11, %xmm12, %xmm12
- vpxor %xmm8, %xmm13, %xmm13
- vpxor %xmm12, %xmm10, %xmm10
- vpxor %xmm14, %xmm13, %xmm0
- vpxor %xmm9, %xmm10, %xmm7
- vmovdqa %xmm7, 96(%rsp)
- vmovdqa %xmm0, 112(%rsp)
- # First 128 bytes of input
- # aesenc_128
- # aesenc_ctr
- vmovdqa 128(%rsp), %xmm0
- vmovdqa L_avx2_aes_gcm_bswap_epi64(%rip), %xmm1
- vpaddd L_avx2_aes_gcm_one(%rip), %xmm0, %xmm9
- vpshufb %xmm1, %xmm0, %xmm8
- vpaddd L_avx2_aes_gcm_two(%rip), %xmm0, %xmm10
- vpshufb %xmm1, %xmm9, %xmm9
- vpaddd L_avx2_aes_gcm_three(%rip), %xmm0, %xmm11
- vpshufb %xmm1, %xmm10, %xmm10
- vpaddd L_avx2_aes_gcm_four(%rip), %xmm0, %xmm12
- vpshufb %xmm1, %xmm11, %xmm11
- vpaddd L_avx2_aes_gcm_five(%rip), %xmm0, %xmm13
- vpshufb %xmm1, %xmm12, %xmm12
- vpaddd L_avx2_aes_gcm_six(%rip), %xmm0, %xmm14
- vpshufb %xmm1, %xmm13, %xmm13
- vpaddd L_avx2_aes_gcm_seven(%rip), %xmm0, %xmm15
- vpshufb %xmm1, %xmm14, %xmm14
- vpaddd L_avx2_aes_gcm_eight(%rip), %xmm0, %xmm0
- vpshufb %xmm1, %xmm15, %xmm15
- # aesenc_xor
- vmovdqa (%rsi), %xmm7
- vmovdqa %xmm0, 128(%rsp)
- vpxor %xmm7, %xmm8, %xmm8
- vpxor %xmm7, %xmm9, %xmm9
- vpxor %xmm7, %xmm10, %xmm10
- vpxor %xmm7, %xmm11, %xmm11
- vpxor %xmm7, %xmm12, %xmm12
- vpxor %xmm7, %xmm13, %xmm13
- vpxor %xmm7, %xmm14, %xmm14
- vpxor %xmm7, %xmm15, %xmm15
- vmovdqa 16(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 32(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 48(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 64(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 80(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 96(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 112(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 128(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 144(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm7
- jl L_AES_GCM_encrypt_avx2_aesenc_128_enc_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 176(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm7
- jl L_AES_GCM_encrypt_avx2_aesenc_128_enc_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 208(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 224(%rsi), %xmm7
-L_AES_GCM_encrypt_avx2_aesenc_128_enc_done:
- # aesenc_last
- vaesenclast %xmm7, %xmm8, %xmm8
- vaesenclast %xmm7, %xmm9, %xmm9
- vaesenclast %xmm7, %xmm10, %xmm10
- vaesenclast %xmm7, %xmm11, %xmm11
- vmovdqu (%rdi), %xmm0
- vmovdqu 16(%rdi), %xmm1
- vmovdqu 32(%rdi), %xmm2
- vmovdqu 48(%rdi), %xmm3
- vpxor %xmm0, %xmm8, %xmm8
- vpxor %xmm1, %xmm9, %xmm9
- vpxor %xmm2, %xmm10, %xmm10
- vpxor %xmm3, %xmm11, %xmm11
- vmovdqu %xmm8, (%r8)
- vmovdqu %xmm9, 16(%r8)
- vmovdqu %xmm10, 32(%r8)
- vmovdqu %xmm11, 48(%r8)
- vaesenclast %xmm7, %xmm12, %xmm12
- vaesenclast %xmm7, %xmm13, %xmm13
- vaesenclast %xmm7, %xmm14, %xmm14
- vaesenclast %xmm7, %xmm15, %xmm15
- vmovdqu 64(%rdi), %xmm0
- vmovdqu 80(%rdi), %xmm1
- vmovdqu 96(%rdi), %xmm2
- vmovdqu 112(%rdi), %xmm3
- vpxor %xmm0, %xmm12, %xmm12
- vpxor %xmm1, %xmm13, %xmm13
- vpxor %xmm2, %xmm14, %xmm14
- vpxor %xmm3, %xmm15, %xmm15
- vmovdqu %xmm12, 64(%r8)
- vmovdqu %xmm13, 80(%r8)
- vmovdqu %xmm14, 96(%r8)
- vmovdqu %xmm15, 112(%r8)
- cmpl $0x80, %r13d
- movl $0x80, %ebx
- jle L_AES_GCM_encrypt_avx2_end_128
- # More 128 bytes of input
-L_AES_GCM_encrypt_avx2_ghash_128:
- # aesenc_128_ghash
- leaq (%rdi,%rbx,1), %rcx
- leaq (%r8,%rbx,1), %rdx
- # aesenc_ctr
- vmovdqa 128(%rsp), %xmm0
- vmovdqa L_avx2_aes_gcm_bswap_epi64(%rip), %xmm1
- vpaddd L_avx2_aes_gcm_one(%rip), %xmm0, %xmm9
- vpshufb %xmm1, %xmm0, %xmm8
- vpaddd L_avx2_aes_gcm_two(%rip), %xmm0, %xmm10
- vpshufb %xmm1, %xmm9, %xmm9
- vpaddd L_avx2_aes_gcm_three(%rip), %xmm0, %xmm11
- vpshufb %xmm1, %xmm10, %xmm10
- vpaddd L_avx2_aes_gcm_four(%rip), %xmm0, %xmm12
- vpshufb %xmm1, %xmm11, %xmm11
- vpaddd L_avx2_aes_gcm_five(%rip), %xmm0, %xmm13
- vpshufb %xmm1, %xmm12, %xmm12
- vpaddd L_avx2_aes_gcm_six(%rip), %xmm0, %xmm14
- vpshufb %xmm1, %xmm13, %xmm13
- vpaddd L_avx2_aes_gcm_seven(%rip), %xmm0, %xmm15
- vpshufb %xmm1, %xmm14, %xmm14
- vpaddd L_avx2_aes_gcm_eight(%rip), %xmm0, %xmm0
- vpshufb %xmm1, %xmm15, %xmm15
- # aesenc_xor
- vmovdqa (%rsi), %xmm7
- vmovdqa %xmm0, 128(%rsp)
- vpxor %xmm7, %xmm8, %xmm8
- vpxor %xmm7, %xmm9, %xmm9
- vpxor %xmm7, %xmm10, %xmm10
- vpxor %xmm7, %xmm11, %xmm11
- vpxor %xmm7, %xmm12, %xmm12
- vpxor %xmm7, %xmm13, %xmm13
- vpxor %xmm7, %xmm14, %xmm14
- vpxor %xmm7, %xmm15, %xmm15
- # aesenc_pclmul_1
- vmovdqu -128(%rdx), %xmm1
- vmovdqu 16(%rsi), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vmovdqa 112(%rsp), %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm5
- vpclmulqdq $0x01, %xmm2, %xmm1, %xmm3
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm6
- vpclmulqdq $0x11, %xmm2, %xmm1, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_2
- vmovdqu -112(%rdx), %xmm1
- vmovdqa 96(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 32(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu -96(%rdx), %xmm1
- vmovdqa 80(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 48(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu -80(%rdx), %xmm1
- vmovdqa 64(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 64(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu -64(%rdx), %xmm1
- vmovdqa 48(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 80(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu -48(%rdx), %xmm1
- vmovdqa 32(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 96(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu -32(%rdx), %xmm1
- vmovdqa 16(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 112(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu -16(%rdx), %xmm1
- vmovdqa (%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 128(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_l
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm4, %xmm6, %xmm6
- vpxor %xmm3, %xmm5, %xmm5
- vpslldq $8, %xmm5, %xmm1
- vpsrldq $8, %xmm5, %xmm5
- vmovdqa 144(%rsi), %xmm4
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm0
- vaesenc %xmm4, %xmm8, %xmm8
- vpxor %xmm1, %xmm6, %xmm6
- vpxor %xmm5, %xmm7, %xmm7
- vpclmulqdq $16, %xmm0, %xmm6, %xmm3
- vaesenc %xmm4, %xmm9, %xmm9
- vaesenc %xmm4, %xmm10, %xmm10
- vaesenc %xmm4, %xmm11, %xmm11
- vpshufd $0x4e, %xmm6, %xmm6
- vpxor %xmm3, %xmm6, %xmm6
- vpclmulqdq $16, %xmm0, %xmm6, %xmm3
- vaesenc %xmm4, %xmm12, %xmm12
- vaesenc %xmm4, %xmm13, %xmm13
- vaesenc %xmm4, %xmm14, %xmm14
- vpshufd $0x4e, %xmm6, %xmm6
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm7, %xmm6, %xmm6
- vaesenc %xmm4, %xmm15, %xmm15
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm7
- jl L_AES_GCM_encrypt_avx2_aesenc_128_ghash_avx_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 176(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm7
- jl L_AES_GCM_encrypt_avx2_aesenc_128_ghash_avx_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 208(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 224(%rsi), %xmm7
-L_AES_GCM_encrypt_avx2_aesenc_128_ghash_avx_done:
- # aesenc_last
- vaesenclast %xmm7, %xmm8, %xmm8
- vaesenclast %xmm7, %xmm9, %xmm9
- vaesenclast %xmm7, %xmm10, %xmm10
- vaesenclast %xmm7, %xmm11, %xmm11
- vmovdqu (%rcx), %xmm0
- vmovdqu 16(%rcx), %xmm1
- vmovdqu 32(%rcx), %xmm2
- vmovdqu 48(%rcx), %xmm3
- vpxor %xmm0, %xmm8, %xmm8
- vpxor %xmm1, %xmm9, %xmm9
- vpxor %xmm2, %xmm10, %xmm10
- vpxor %xmm3, %xmm11, %xmm11
- vmovdqu %xmm8, (%rdx)
- vmovdqu %xmm9, 16(%rdx)
- vmovdqu %xmm10, 32(%rdx)
- vmovdqu %xmm11, 48(%rdx)
- vaesenclast %xmm7, %xmm12, %xmm12
- vaesenclast %xmm7, %xmm13, %xmm13
- vaesenclast %xmm7, %xmm14, %xmm14
- vaesenclast %xmm7, %xmm15, %xmm15
- vmovdqu 64(%rcx), %xmm0
- vmovdqu 80(%rcx), %xmm1
- vmovdqu 96(%rcx), %xmm2
- vmovdqu 112(%rcx), %xmm3
- vpxor %xmm0, %xmm12, %xmm12
- vpxor %xmm1, %xmm13, %xmm13
- vpxor %xmm2, %xmm14, %xmm14
- vpxor %xmm3, %xmm15, %xmm15
- vmovdqu %xmm12, 64(%rdx)
- vmovdqu %xmm13, 80(%rdx)
- vmovdqu %xmm14, 96(%rdx)
- vmovdqu %xmm15, 112(%rdx)
- # aesenc_128_ghash - end
- addl $0x80, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_encrypt_avx2_ghash_128
-L_AES_GCM_encrypt_avx2_end_128:
- vmovdqa L_avx2_aes_gcm_bswap_mask(%rip), %xmm4
- vpshufb %xmm4, %xmm8, %xmm8
- vpshufb %xmm4, %xmm9, %xmm9
- vpshufb %xmm4, %xmm10, %xmm10
- vpshufb %xmm4, %xmm11, %xmm11
- vpshufb %xmm4, %xmm12, %xmm12
- vpshufb %xmm4, %xmm13, %xmm13
- vpshufb %xmm4, %xmm14, %xmm14
- vpshufb %xmm4, %xmm15, %xmm15
- vpxor %xmm6, %xmm8, %xmm8
- vmovdqu (%rsp), %xmm7
- vpclmulqdq $16, %xmm15, %xmm7, %xmm5
- vpclmulqdq $0x01, %xmm15, %xmm7, %xmm1
- vpclmulqdq $0x00, %xmm15, %xmm7, %xmm4
- vpclmulqdq $0x11, %xmm15, %xmm7, %xmm6
- vpxor %xmm1, %xmm5, %xmm5
- vmovdqu 16(%rsp), %xmm7
- vpclmulqdq $16, %xmm14, %xmm7, %xmm2
- vpclmulqdq $0x01, %xmm14, %xmm7, %xmm1
- vpclmulqdq $0x00, %xmm14, %xmm7, %xmm0
- vpclmulqdq $0x11, %xmm14, %xmm7, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm0, %xmm4, %xmm4
- vmovdqu 32(%rsp), %xmm15
- vmovdqu 48(%rsp), %xmm7
- vpclmulqdq $16, %xmm13, %xmm15, %xmm2
- vpclmulqdq $0x01, %xmm13, %xmm15, %xmm1
- vpclmulqdq $0x00, %xmm13, %xmm15, %xmm0
- vpclmulqdq $0x11, %xmm13, %xmm15, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm0, %xmm4, %xmm4
- vpclmulqdq $16, %xmm12, %xmm7, %xmm2
- vpclmulqdq $0x01, %xmm12, %xmm7, %xmm1
- vpclmulqdq $0x00, %xmm12, %xmm7, %xmm0
- vpclmulqdq $0x11, %xmm12, %xmm7, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm0, %xmm4, %xmm4
- vmovdqu 64(%rsp), %xmm15
- vmovdqu 80(%rsp), %xmm7
- vpclmulqdq $16, %xmm11, %xmm15, %xmm2
- vpclmulqdq $0x01, %xmm11, %xmm15, %xmm1
- vpclmulqdq $0x00, %xmm11, %xmm15, %xmm0
- vpclmulqdq $0x11, %xmm11, %xmm15, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm0, %xmm4, %xmm4
- vpclmulqdq $16, %xmm10, %xmm7, %xmm2
- vpclmulqdq $0x01, %xmm10, %xmm7, %xmm1
- vpclmulqdq $0x00, %xmm10, %xmm7, %xmm0
- vpclmulqdq $0x11, %xmm10, %xmm7, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm0, %xmm4, %xmm4
- vmovdqu 96(%rsp), %xmm15
- vmovdqu 112(%rsp), %xmm7
- vpclmulqdq $16, %xmm9, %xmm15, %xmm2
- vpclmulqdq $0x01, %xmm9, %xmm15, %xmm1
- vpclmulqdq $0x00, %xmm9, %xmm15, %xmm0
- vpclmulqdq $0x11, %xmm9, %xmm15, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm0, %xmm4, %xmm4
- vpclmulqdq $16, %xmm8, %xmm7, %xmm2
- vpclmulqdq $0x01, %xmm8, %xmm7, %xmm1
- vpclmulqdq $0x00, %xmm8, %xmm7, %xmm0
- vpclmulqdq $0x11, %xmm8, %xmm7, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm0, %xmm4, %xmm4
- vpslldq $8, %xmm5, %xmm7
- vpsrldq $8, %xmm5, %xmm5
- vpxor %xmm7, %xmm4, %xmm4
- vpxor %xmm5, %xmm6, %xmm6
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm4, %xmm0
- vpshufd $0x4e, %xmm4, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm6, %xmm6
- vmovdqa (%rsp), %xmm5
- vmovdqu 128(%rsp), %xmm4
- vmovdqu 144(%rsp), %xmm15
-L_AES_GCM_encrypt_avx2_done_128:
- cmpl %r10d, %ebx
- je L_AES_GCM_encrypt_avx2_done_enc
- movl %r10d, %r13d
- andl $0xfffffff0, %r13d
- cmpl %r13d, %ebx
- jge L_AES_GCM_encrypt_avx2_last_block_done
- # aesenc_block
- vmovdqa %xmm4, %xmm1
- vpshufb L_avx2_aes_gcm_bswap_epi64(%rip), %xmm1, %xmm0
- vpaddd L_avx2_aes_gcm_one(%rip), %xmm1, %xmm1
- vpxor (%rsi), %xmm0, %xmm0
- vmovdqa 16(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 32(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 48(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 64(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 80(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 96(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 112(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 128(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 144(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa %xmm1, %xmm4
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm1
- jl L_AES_GCM_encrypt_avx2_aesenc_block_last
- vaesenc %xmm1, %xmm0, %xmm0
- vmovdqa 176(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm1
- jl L_AES_GCM_encrypt_avx2_aesenc_block_last
- vaesenc %xmm1, %xmm0, %xmm0
- vmovdqa 208(%rsi), %xmm2
- vaesenc %xmm2, %xmm0, %xmm0
- vmovdqa 224(%rsi), %xmm1
-L_AES_GCM_encrypt_avx2_aesenc_block_last:
- vaesenclast %xmm1, %xmm0, %xmm0
- vmovdqu (%rdi,%rbx,1), %xmm1
- vpxor %xmm1, %xmm0, %xmm0
- vmovdqu %xmm0, (%r8,%rbx,1)
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm6, %xmm6
- addl $16, %ebx
- cmpl %r13d, %ebx
- jge L_AES_GCM_encrypt_avx2_last_block_ghash
-L_AES_GCM_encrypt_avx2_last_block_start:
- vmovdqu (%rdi,%rbx,1), %xmm12
- vpshufb L_avx2_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm11
- vpaddd L_avx2_aes_gcm_one(%rip), %xmm4, %xmm4
- # aesenc_gfmul_sb
- vpclmulqdq $0x01, %xmm5, %xmm6, %xmm2
- vpclmulqdq $16, %xmm5, %xmm6, %xmm3
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm1
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm8
- vpxor (%rsi), %xmm11, %xmm11
- vaesenc 16(%rsi), %xmm11, %xmm11
- vpxor %xmm2, %xmm3, %xmm3
- vpslldq $8, %xmm3, %xmm2
- vpsrldq $8, %xmm3, %xmm3
- vaesenc 32(%rsi), %xmm11, %xmm11
- vpxor %xmm1, %xmm2, %xmm2
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm2, %xmm1
- vaesenc 48(%rsi), %xmm11, %xmm11
- vaesenc 64(%rsi), %xmm11, %xmm11
- vaesenc 80(%rsi), %xmm11, %xmm11
- vpshufd $0x4e, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm2, %xmm1
- vaesenc 96(%rsi), %xmm11, %xmm11
- vaesenc 112(%rsi), %xmm11, %xmm11
- vaesenc 128(%rsi), %xmm11, %xmm11
- vpshufd $0x4e, %xmm2, %xmm2
- vaesenc 144(%rsi), %xmm11, %xmm11
- vpxor %xmm3, %xmm8, %xmm8
- vpxor %xmm8, %xmm2, %xmm2
- vmovdqa 160(%rsi), %xmm0
- cmpl $11, %r9d
- jl L_AES_GCM_encrypt_avx2_aesenc_gfmul_sb_last
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc 176(%rsi), %xmm11, %xmm11
- vmovdqa 192(%rsi), %xmm0
- cmpl $13, %r9d
- jl L_AES_GCM_encrypt_avx2_aesenc_gfmul_sb_last
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc 208(%rsi), %xmm11, %xmm11
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_encrypt_avx2_aesenc_gfmul_sb_last:
- vaesenclast %xmm0, %xmm11, %xmm11
- vpxor %xmm1, %xmm2, %xmm6
- vpxor %xmm12, %xmm11, %xmm11
- vmovdqu %xmm11, (%r8,%rbx,1)
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm11, %xmm11
- vpxor %xmm11, %xmm6, %xmm6
- addl $16, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_encrypt_avx2_last_block_start
-L_AES_GCM_encrypt_avx2_last_block_ghash:
- # ghash_gfmul_red
- vpclmulqdq $16, %xmm5, %xmm6, %xmm10
- vpclmulqdq $0x01, %xmm5, %xmm6, %xmm9
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm8
- vpxor %xmm9, %xmm10, %xmm10
- vpslldq $8, %xmm10, %xmm9
- vpsrldq $8, %xmm10, %xmm10
- vpxor %xmm8, %xmm9, %xmm9
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm6
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm9, %xmm8
- vpshufd $0x4e, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm9, %xmm8
- vpshufd $0x4e, %xmm9, %xmm9
- vpxor %xmm10, %xmm6, %xmm6
- vpxor %xmm9, %xmm6, %xmm6
- vpxor %xmm8, %xmm6, %xmm6
-L_AES_GCM_encrypt_avx2_last_block_done:
- movl %r10d, %ecx
- movl %r10d, %edx
- andl $15, %ecx
- jz L_AES_GCM_encrypt_avx2_done_enc
- # aesenc_last15_enc
- vpshufb L_avx2_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm4
- vpxor (%rsi), %xmm4, %xmm4
- vaesenc 16(%rsi), %xmm4, %xmm4
- vaesenc 32(%rsi), %xmm4, %xmm4
- vaesenc 48(%rsi), %xmm4, %xmm4
- vaesenc 64(%rsi), %xmm4, %xmm4
- vaesenc 80(%rsi), %xmm4, %xmm4
- vaesenc 96(%rsi), %xmm4, %xmm4
- vaesenc 112(%rsi), %xmm4, %xmm4
- vaesenc 128(%rsi), %xmm4, %xmm4
- vaesenc 144(%rsi), %xmm4, %xmm4
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm0
- jl L_AES_GCM_encrypt_avx2_aesenc_last15_enc_avx_aesenc_avx_last
- vaesenc %xmm0, %xmm4, %xmm4
- vaesenc 176(%rsi), %xmm4, %xmm4
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm0
- jl L_AES_GCM_encrypt_avx2_aesenc_last15_enc_avx_aesenc_avx_last
- vaesenc %xmm0, %xmm4, %xmm4
- vaesenc 208(%rsi), %xmm4, %xmm4
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_encrypt_avx2_aesenc_last15_enc_avx_aesenc_avx_last:
- vaesenclast %xmm0, %xmm4, %xmm4
- xorl %ecx, %ecx
- vpxor %xmm0, %xmm0, %xmm0
- vmovdqa %xmm4, (%rsp)
- vmovdqa %xmm0, 16(%rsp)
-L_AES_GCM_encrypt_avx2_aesenc_last15_enc_avx_loop:
- movzbl (%rdi,%rbx,1), %r13d
- xorb (%rsp,%rcx,1), %r13b
- movb %r13b, 16(%rsp,%rcx,1)
- movb %r13b, (%r8,%rbx,1)
- incl %ebx
- incl %ecx
- cmpl %edx, %ebx
- jl L_AES_GCM_encrypt_avx2_aesenc_last15_enc_avx_loop
-L_AES_GCM_encrypt_avx2_aesenc_last15_enc_avx_finish_enc:
- vmovdqa 16(%rsp), %xmm4
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm4, %xmm4
- vpxor %xmm4, %xmm6, %xmm6
- # ghash_gfmul_red
- vpclmulqdq $16, %xmm5, %xmm6, %xmm2
- vpclmulqdq $0x01, %xmm5, %xmm6, %xmm1
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm0
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm6
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm2, %xmm6, %xmm6
- vpxor %xmm1, %xmm6, %xmm6
- vpxor %xmm0, %xmm6, %xmm6
-L_AES_GCM_encrypt_avx2_done_enc:
- # calc_tag
- shlq $3, %r10
- vpinsrq $0x00, %r10, %xmm0, %xmm0
- shlq $3, %r11
- vpinsrq $0x01, %r11, %xmm1, %xmm1
- vpblendd $12, %xmm1, %xmm0, %xmm0
- vpxor %xmm6, %xmm0, %xmm0
- # ghash_gfmul_red
- vpclmulqdq $16, %xmm5, %xmm0, %xmm4
- vpclmulqdq $0x01, %xmm5, %xmm0, %xmm3
- vpclmulqdq $0x00, %xmm5, %xmm0, %xmm2
- vpxor %xmm3, %xmm4, %xmm4
- vpslldq $8, %xmm4, %xmm3
- vpsrldq $8, %xmm4, %xmm4
- vpxor %xmm2, %xmm3, %xmm3
- vpclmulqdq $0x11, %xmm5, %xmm0, %xmm0
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm3, %xmm2
- vpshufd $0x4e, %xmm3, %xmm3
- vpxor %xmm2, %xmm3, %xmm3
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm3, %xmm2
- vpshufd $0x4e, %xmm3, %xmm3
- vpxor %xmm4, %xmm0, %xmm0
- vpxor %xmm3, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm15, %xmm0, %xmm0
- # store_tag
- cmpl $16, %r14d
- je L_AES_GCM_encrypt_avx2_store_tag_16
- xorq %rcx, %rcx
- vmovdqa %xmm0, (%rsp)
-L_AES_GCM_encrypt_avx2_store_tag_loop:
- movzbl (%rsp,%rcx,1), %r13d
- movb %r13b, (%r15,%rcx,1)
- incl %ecx
- cmpl %r14d, %ecx
- jne L_AES_GCM_encrypt_avx2_store_tag_loop
- jmp L_AES_GCM_encrypt_avx2_store_tag_done
-L_AES_GCM_encrypt_avx2_store_tag_16:
- vmovdqu %xmm0, (%r15)
-L_AES_GCM_encrypt_avx2_store_tag_done:
- vzeroupper
- addq $0xa0, %rsp
- popq %r14
- popq %rbx
- popq %r15
- popq %r12
- popq %r13
- repz retq
-#ifndef __APPLE__
-.size AES_GCM_encrypt_avx2,.-AES_GCM_encrypt_avx2
-#endif /* __APPLE__ */
-#ifndef __APPLE__
-.text
-.globl AES_GCM_decrypt_avx2
-.type AES_GCM_decrypt_avx2,@function
-.align 4
-AES_GCM_decrypt_avx2:
-#else
-.section __TEXT,__text
-.globl _AES_GCM_decrypt_avx2
-.p2align 2
-_AES_GCM_decrypt_avx2:
-#endif /* __APPLE__ */
- pushq %r13
- pushq %r12
- pushq %r14
- pushq %rbx
- pushq %r15
- pushq %rbp
- movq %rdx, %r12
- movq %rcx, %rax
- movq %r8, %r14
- movq %rsi, %r8
- movl %r9d, %r10d
- movl 56(%rsp), %r11d
- movl 64(%rsp), %ebx
- movl 72(%rsp), %r15d
- movq 80(%rsp), %rsi
- movl 88(%rsp), %r9d
- movq 96(%rsp), %rbp
- subq $0xa8, %rsp
- vpxor %xmm4, %xmm4, %xmm4
- vpxor %xmm6, %xmm6, %xmm6
- movl %ebx, %edx
- cmpl $12, %edx
- je L_AES_GCM_decrypt_avx2_iv_12
- # Calculate values when IV is not 12 bytes
- # H = Encrypt X(=0)
- vmovdqa (%rsi), %xmm5
- vaesenc 16(%rsi), %xmm5, %xmm5
- vaesenc 32(%rsi), %xmm5, %xmm5
- vaesenc 48(%rsi), %xmm5, %xmm5
- vaesenc 64(%rsi), %xmm5, %xmm5
- vaesenc 80(%rsi), %xmm5, %xmm5
- vaesenc 96(%rsi), %xmm5, %xmm5
- vaesenc 112(%rsi), %xmm5, %xmm5
- vaesenc 128(%rsi), %xmm5, %xmm5
- vaesenc 144(%rsi), %xmm5, %xmm5
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm0
- jl L_AES_GCM_decrypt_avx2_calc_iv_1_aesenc_avx_last
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc 176(%rsi), %xmm5, %xmm5
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm0
- jl L_AES_GCM_decrypt_avx2_calc_iv_1_aesenc_avx_last
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc 208(%rsi), %xmm5, %xmm5
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_decrypt_avx2_calc_iv_1_aesenc_avx_last:
- vaesenclast %xmm0, %xmm5, %xmm5
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm5, %xmm5
- # Calc counter
- # Initialization vector
- cmpl $0x00, %edx
- movq $0x00, %rcx
- je L_AES_GCM_decrypt_avx2_calc_iv_done
- cmpl $16, %edx
- jl L_AES_GCM_decrypt_avx2_calc_iv_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_decrypt_avx2_calc_iv_16_loop:
- vmovdqu (%rax,%rcx,1), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm4, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm4, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm4
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm4, %xmm4
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_avx2_calc_iv_16_loop
- movl %ebx, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_decrypt_avx2_calc_iv_done
-L_AES_GCM_decrypt_avx2_calc_iv_lt16:
- vpxor %xmm0, %xmm0, %xmm0
- xorl %ebx, %ebx
- vmovdqa %xmm0, (%rsp)
-L_AES_GCM_decrypt_avx2_calc_iv_loop:
- movzbl (%rax,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_avx2_calc_iv_loop
- vmovdqa (%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm4, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm4, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm4
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm4, %xmm4
-L_AES_GCM_decrypt_avx2_calc_iv_done:
- # T = Encrypt counter
- vpxor %xmm0, %xmm0, %xmm0
- shll $3, %edx
- vpinsrq $0x00, %rdx, %xmm0, %xmm0
- vpxor %xmm0, %xmm4, %xmm4
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm4, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm4, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm4, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm4, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm4
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm4, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm4, %xmm4
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm4, %xmm4
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm4, %xmm4
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm4, %xmm4
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm4, %xmm4
- # Encrypt counter
- vmovdqa (%rsi), %xmm15
- vpxor %xmm4, %xmm15, %xmm15
- vaesenc 16(%rsi), %xmm15, %xmm15
- vaesenc 32(%rsi), %xmm15, %xmm15
- vaesenc 48(%rsi), %xmm15, %xmm15
- vaesenc 64(%rsi), %xmm15, %xmm15
- vaesenc 80(%rsi), %xmm15, %xmm15
- vaesenc 96(%rsi), %xmm15, %xmm15
- vaesenc 112(%rsi), %xmm15, %xmm15
- vaesenc 128(%rsi), %xmm15, %xmm15
- vaesenc 144(%rsi), %xmm15, %xmm15
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm0
- jl L_AES_GCM_decrypt_avx2_calc_iv_2_aesenc_avx_last
- vaesenc %xmm0, %xmm15, %xmm15
- vaesenc 176(%rsi), %xmm15, %xmm15
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm0
- jl L_AES_GCM_decrypt_avx2_calc_iv_2_aesenc_avx_last
- vaesenc %xmm0, %xmm15, %xmm15
- vaesenc 208(%rsi), %xmm15, %xmm15
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_decrypt_avx2_calc_iv_2_aesenc_avx_last:
- vaesenclast %xmm0, %xmm15, %xmm15
- jmp L_AES_GCM_decrypt_avx2_iv_done
-L_AES_GCM_decrypt_avx2_iv_12:
- # # Calculate values when IV is 12 bytes
- # Set counter based on IV
- vmovdqa L_avx2_aes_gcm_bswap_one(%rip), %xmm4
- vmovdqa (%rsi), %xmm5
- vpblendd $7, (%rax), %xmm4, %xmm4
- # H = Encrypt X(=0) and T = Encrypt counter
- vmovdqa 16(%rsi), %xmm7
- vpxor %xmm5, %xmm4, %xmm15
- vaesenc %xmm7, %xmm5, %xmm5
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 32(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 48(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 64(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 80(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 96(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 112(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 128(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 144(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm0
- jl L_AES_GCM_decrypt_avx2_calc_iv_12_last
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 176(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm0
- jl L_AES_GCM_decrypt_avx2_calc_iv_12_last
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 208(%rsi), %xmm0
- vaesenc %xmm0, %xmm5, %xmm5
- vaesenc %xmm0, %xmm15, %xmm15
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_decrypt_avx2_calc_iv_12_last:
- vaesenclast %xmm0, %xmm5, %xmm5
- vaesenclast %xmm0, %xmm15, %xmm15
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm5, %xmm5
-L_AES_GCM_decrypt_avx2_iv_done:
- # Additional authentication data
- movl %r11d, %edx
- cmpl $0x00, %edx
- je L_AES_GCM_decrypt_avx2_calc_aad_done
- xorl %ecx, %ecx
- cmpl $16, %edx
- jl L_AES_GCM_decrypt_avx2_calc_aad_lt16
- andl $0xfffffff0, %edx
-L_AES_GCM_decrypt_avx2_calc_aad_16_loop:
- vmovdqu (%r12,%rcx,1), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm6, %xmm6
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm6, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm6, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm6, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm6, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm6
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm6, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm6, %xmm6
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm6, %xmm6
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm6, %xmm6
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm6, %xmm6
- addl $16, %ecx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_avx2_calc_aad_16_loop
- movl %r11d, %edx
- cmpl %edx, %ecx
- je L_AES_GCM_decrypt_avx2_calc_aad_done
-L_AES_GCM_decrypt_avx2_calc_aad_lt16:
- vpxor %xmm0, %xmm0, %xmm0
- xorl %ebx, %ebx
- vmovdqa %xmm0, (%rsp)
-L_AES_GCM_decrypt_avx2_calc_aad_loop:
- movzbl (%r12,%rcx,1), %r13d
- movb %r13b, (%rsp,%rbx,1)
- incl %ecx
- incl %ebx
- cmpl %edx, %ecx
- jl L_AES_GCM_decrypt_avx2_calc_aad_loop
- vmovdqa (%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm0, %xmm6, %xmm6
- # ghash_gfmul_avx
- vpclmulqdq $16, %xmm6, %xmm5, %xmm2
- vpclmulqdq $0x01, %xmm6, %xmm5, %xmm1
- vpclmulqdq $0x00, %xmm6, %xmm5, %xmm0
- vpclmulqdq $0x11, %xmm6, %xmm5, %xmm3
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm1, %xmm0, %xmm7
- vpxor %xmm2, %xmm3, %xmm6
- # ghash_mid
- vpsrld $31, %xmm7, %xmm0
- vpsrld $31, %xmm6, %xmm1
- vpslld $0x01, %xmm7, %xmm7
- vpslld $0x01, %xmm6, %xmm6
- vpsrldq $12, %xmm0, %xmm2
- vpslldq $4, %xmm0, %xmm0
- vpslldq $4, %xmm1, %xmm1
- vpor %xmm2, %xmm6, %xmm6
- vpor %xmm0, %xmm7, %xmm7
- vpor %xmm1, %xmm6, %xmm6
- # ghash_red
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm2
- vpclmulqdq $16, %xmm2, %xmm7, %xmm0
- vpshufd $0x4e, %xmm7, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpxor %xmm1, %xmm6, %xmm6
-L_AES_GCM_decrypt_avx2_calc_aad_done:
- # Calculate counter and H
- vpsrlq $63, %xmm5, %xmm1
- vpsllq $0x01, %xmm5, %xmm0
- vpslldq $8, %xmm1, %xmm1
- vpor %xmm1, %xmm0, %xmm0
- vpshufd $0xff, %xmm5, %xmm5
- vpsrad $31, %xmm5, %xmm5
- vpshufb L_avx2_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm4
- vpand L_avx2_aes_gcm_mod2_128(%rip), %xmm5, %xmm5
- vpaddd L_avx2_aes_gcm_one(%rip), %xmm4, %xmm4
- vpxor %xmm0, %xmm5, %xmm5
- xorl %ebx, %ebx
- cmpl $0x80, %r10d
- movl %r10d, %r13d
- jl L_AES_GCM_decrypt_avx2_done_128
- andl $0xffffff80, %r13d
- vmovdqa %xmm4, 128(%rsp)
- vmovdqa %xmm15, 144(%rsp)
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm3
- # H ^ 1 and H ^ 2
- vpclmulqdq $0x00, %xmm5, %xmm5, %xmm9
- vpclmulqdq $0x11, %xmm5, %xmm5, %xmm10
- vpclmulqdq $16, %xmm3, %xmm9, %xmm8
- vpshufd $0x4e, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpclmulqdq $16, %xmm3, %xmm9, %xmm8
- vpshufd $0x4e, %xmm9, %xmm9
- vpxor %xmm8, %xmm9, %xmm9
- vpxor %xmm9, %xmm10, %xmm0
- vmovdqa %xmm5, (%rsp)
- vmovdqa %xmm0, 16(%rsp)
- # H ^ 3 and H ^ 4
- vpclmulqdq $16, %xmm5, %xmm0, %xmm11
- vpclmulqdq $0x01, %xmm5, %xmm0, %xmm10
- vpclmulqdq $0x00, %xmm5, %xmm0, %xmm9
- vpclmulqdq $0x11, %xmm5, %xmm0, %xmm12
- vpclmulqdq $0x00, %xmm0, %xmm0, %xmm13
- vpclmulqdq $0x11, %xmm0, %xmm0, %xmm14
- vpxor %xmm10, %xmm11, %xmm11
- vpslldq $8, %xmm11, %xmm10
- vpsrldq $8, %xmm11, %xmm11
- vpxor %xmm9, %xmm10, %xmm10
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm9, %xmm10, %xmm10
- vpxor %xmm8, %xmm13, %xmm13
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm11, %xmm12, %xmm12
- vpxor %xmm8, %xmm13, %xmm13
- vpxor %xmm12, %xmm10, %xmm10
- vpxor %xmm14, %xmm13, %xmm2
- vpxor %xmm9, %xmm10, %xmm1
- vmovdqa %xmm1, 32(%rsp)
- vmovdqa %xmm2, 48(%rsp)
- # H ^ 5 and H ^ 6
- vpclmulqdq $16, %xmm0, %xmm1, %xmm11
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm10
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm9
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm12
- vpclmulqdq $0x00, %xmm1, %xmm1, %xmm13
- vpclmulqdq $0x11, %xmm1, %xmm1, %xmm14
- vpxor %xmm10, %xmm11, %xmm11
- vpslldq $8, %xmm11, %xmm10
- vpsrldq $8, %xmm11, %xmm11
- vpxor %xmm9, %xmm10, %xmm10
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm9, %xmm10, %xmm10
- vpxor %xmm8, %xmm13, %xmm13
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm11, %xmm12, %xmm12
- vpxor %xmm8, %xmm13, %xmm13
- vpxor %xmm12, %xmm10, %xmm10
- vpxor %xmm14, %xmm13, %xmm0
- vpxor %xmm9, %xmm10, %xmm7
- vmovdqa %xmm7, 64(%rsp)
- vmovdqa %xmm0, 80(%rsp)
- # H ^ 7 and H ^ 8
- vpclmulqdq $16, %xmm1, %xmm2, %xmm11
- vpclmulqdq $0x01, %xmm1, %xmm2, %xmm10
- vpclmulqdq $0x00, %xmm1, %xmm2, %xmm9
- vpclmulqdq $0x11, %xmm1, %xmm2, %xmm12
- vpclmulqdq $0x00, %xmm2, %xmm2, %xmm13
- vpclmulqdq $0x11, %xmm2, %xmm2, %xmm14
- vpxor %xmm10, %xmm11, %xmm11
- vpslldq $8, %xmm11, %xmm10
- vpsrldq $8, %xmm11, %xmm11
- vpxor %xmm9, %xmm10, %xmm10
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm9, %xmm10, %xmm10
- vpxor %xmm8, %xmm13, %xmm13
- vpclmulqdq $16, %xmm3, %xmm10, %xmm9
- vpclmulqdq $16, %xmm3, %xmm13, %xmm8
- vpshufd $0x4e, %xmm10, %xmm10
- vpshufd $0x4e, %xmm13, %xmm13
- vpxor %xmm11, %xmm12, %xmm12
- vpxor %xmm8, %xmm13, %xmm13
- vpxor %xmm12, %xmm10, %xmm10
- vpxor %xmm14, %xmm13, %xmm0
- vpxor %xmm9, %xmm10, %xmm7
- vmovdqa %xmm7, 96(%rsp)
- vmovdqa %xmm0, 112(%rsp)
-L_AES_GCM_decrypt_avx2_ghash_128:
- # aesenc_128_ghash
- leaq (%rdi,%rbx,1), %rcx
- leaq (%r8,%rbx,1), %rdx
- # aesenc_ctr
- vmovdqa 128(%rsp), %xmm0
- vmovdqa L_avx2_aes_gcm_bswap_epi64(%rip), %xmm1
- vpaddd L_avx2_aes_gcm_one(%rip), %xmm0, %xmm9
- vpshufb %xmm1, %xmm0, %xmm8
- vpaddd L_avx2_aes_gcm_two(%rip), %xmm0, %xmm10
- vpshufb %xmm1, %xmm9, %xmm9
- vpaddd L_avx2_aes_gcm_three(%rip), %xmm0, %xmm11
- vpshufb %xmm1, %xmm10, %xmm10
- vpaddd L_avx2_aes_gcm_four(%rip), %xmm0, %xmm12
- vpshufb %xmm1, %xmm11, %xmm11
- vpaddd L_avx2_aes_gcm_five(%rip), %xmm0, %xmm13
- vpshufb %xmm1, %xmm12, %xmm12
- vpaddd L_avx2_aes_gcm_six(%rip), %xmm0, %xmm14
- vpshufb %xmm1, %xmm13, %xmm13
- vpaddd L_avx2_aes_gcm_seven(%rip), %xmm0, %xmm15
- vpshufb %xmm1, %xmm14, %xmm14
- vpaddd L_avx2_aes_gcm_eight(%rip), %xmm0, %xmm0
- vpshufb %xmm1, %xmm15, %xmm15
- # aesenc_xor
- vmovdqa (%rsi), %xmm7
- vmovdqa %xmm0, 128(%rsp)
- vpxor %xmm7, %xmm8, %xmm8
- vpxor %xmm7, %xmm9, %xmm9
- vpxor %xmm7, %xmm10, %xmm10
- vpxor %xmm7, %xmm11, %xmm11
- vpxor %xmm7, %xmm12, %xmm12
- vpxor %xmm7, %xmm13, %xmm13
- vpxor %xmm7, %xmm14, %xmm14
- vpxor %xmm7, %xmm15, %xmm15
- # aesenc_pclmul_1
- vmovdqu (%rcx), %xmm1
- vmovdqu 16(%rsi), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vmovdqa 112(%rsp), %xmm2
- vpxor %xmm6, %xmm1, %xmm1
- vpclmulqdq $16, %xmm2, %xmm1, %xmm5
- vpclmulqdq $0x01, %xmm2, %xmm1, %xmm3
- vpclmulqdq $0x00, %xmm2, %xmm1, %xmm6
- vpclmulqdq $0x11, %xmm2, %xmm1, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_2
- vmovdqu 16(%rcx), %xmm1
- vmovdqa 96(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 32(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu 32(%rcx), %xmm1
- vmovdqa 80(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 48(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu 48(%rcx), %xmm1
- vmovdqa 64(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 64(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu 64(%rcx), %xmm1
- vmovdqa 48(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 80(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu 80(%rcx), %xmm1
- vmovdqa 32(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 96(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu 96(%rcx), %xmm1
- vmovdqa 16(%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 112(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_n
- vmovdqu 112(%rcx), %xmm1
- vmovdqa (%rsp), %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm1, %xmm1
- vpxor %xmm2, %xmm5, %xmm5
- vpclmulqdq $16, %xmm0, %xmm1, %xmm2
- vpxor %xmm3, %xmm5, %xmm5
- vpclmulqdq $0x01, %xmm0, %xmm1, %xmm3
- vpxor %xmm4, %xmm6, %xmm6
- vpclmulqdq $0x00, %xmm0, %xmm1, %xmm4
- vpclmulqdq $0x11, %xmm0, %xmm1, %xmm1
- vmovdqu 128(%rsi), %xmm0
- vpxor %xmm1, %xmm7, %xmm7
- vaesenc %xmm0, %xmm8, %xmm8
- vaesenc %xmm0, %xmm9, %xmm9
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc %xmm0, %xmm11, %xmm11
- vaesenc %xmm0, %xmm12, %xmm12
- vaesenc %xmm0, %xmm13, %xmm13
- vaesenc %xmm0, %xmm14, %xmm14
- vaesenc %xmm0, %xmm15, %xmm15
- # aesenc_pclmul_l
- vpxor %xmm2, %xmm5, %xmm5
- vpxor %xmm4, %xmm6, %xmm6
- vpxor %xmm3, %xmm5, %xmm5
- vpslldq $8, %xmm5, %xmm1
- vpsrldq $8, %xmm5, %xmm5
- vmovdqa 144(%rsi), %xmm4
- vmovdqa L_avx2_aes_gcm_mod2_128(%rip), %xmm0
- vaesenc %xmm4, %xmm8, %xmm8
- vpxor %xmm1, %xmm6, %xmm6
- vpxor %xmm5, %xmm7, %xmm7
- vpclmulqdq $16, %xmm0, %xmm6, %xmm3
- vaesenc %xmm4, %xmm9, %xmm9
- vaesenc %xmm4, %xmm10, %xmm10
- vaesenc %xmm4, %xmm11, %xmm11
- vpshufd $0x4e, %xmm6, %xmm6
- vpxor %xmm3, %xmm6, %xmm6
- vpclmulqdq $16, %xmm0, %xmm6, %xmm3
- vaesenc %xmm4, %xmm12, %xmm12
- vaesenc %xmm4, %xmm13, %xmm13
- vaesenc %xmm4, %xmm14, %xmm14
- vpshufd $0x4e, %xmm6, %xmm6
- vpxor %xmm3, %xmm6, %xmm6
- vpxor %xmm7, %xmm6, %xmm6
- vaesenc %xmm4, %xmm15, %xmm15
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm7
- jl L_AES_GCM_decrypt_avx2_aesenc_128_ghash_avx_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 176(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm7
- jl L_AES_GCM_decrypt_avx2_aesenc_128_ghash_avx_done
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 208(%rsi), %xmm7
- vaesenc %xmm7, %xmm8, %xmm8
- vaesenc %xmm7, %xmm9, %xmm9
- vaesenc %xmm7, %xmm10, %xmm10
- vaesenc %xmm7, %xmm11, %xmm11
- vaesenc %xmm7, %xmm12, %xmm12
- vaesenc %xmm7, %xmm13, %xmm13
- vaesenc %xmm7, %xmm14, %xmm14
- vaesenc %xmm7, %xmm15, %xmm15
- vmovdqa 224(%rsi), %xmm7
-L_AES_GCM_decrypt_avx2_aesenc_128_ghash_avx_done:
- # aesenc_last
- vaesenclast %xmm7, %xmm8, %xmm8
- vaesenclast %xmm7, %xmm9, %xmm9
- vaesenclast %xmm7, %xmm10, %xmm10
- vaesenclast %xmm7, %xmm11, %xmm11
- vmovdqu (%rcx), %xmm0
- vmovdqu 16(%rcx), %xmm1
- vmovdqu 32(%rcx), %xmm2
- vmovdqu 48(%rcx), %xmm3
- vpxor %xmm0, %xmm8, %xmm8
- vpxor %xmm1, %xmm9, %xmm9
- vpxor %xmm2, %xmm10, %xmm10
- vpxor %xmm3, %xmm11, %xmm11
- vmovdqu %xmm8, (%rdx)
- vmovdqu %xmm9, 16(%rdx)
- vmovdqu %xmm10, 32(%rdx)
- vmovdqu %xmm11, 48(%rdx)
- vaesenclast %xmm7, %xmm12, %xmm12
- vaesenclast %xmm7, %xmm13, %xmm13
- vaesenclast %xmm7, %xmm14, %xmm14
- vaesenclast %xmm7, %xmm15, %xmm15
- vmovdqu 64(%rcx), %xmm0
- vmovdqu 80(%rcx), %xmm1
- vmovdqu 96(%rcx), %xmm2
- vmovdqu 112(%rcx), %xmm3
- vpxor %xmm0, %xmm12, %xmm12
- vpxor %xmm1, %xmm13, %xmm13
- vpxor %xmm2, %xmm14, %xmm14
- vpxor %xmm3, %xmm15, %xmm15
- vmovdqu %xmm12, 64(%rdx)
- vmovdqu %xmm13, 80(%rdx)
- vmovdqu %xmm14, 96(%rdx)
- vmovdqu %xmm15, 112(%rdx)
- # aesenc_128_ghash - end
- addl $0x80, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_decrypt_avx2_ghash_128
- vmovdqa (%rsp), %xmm5
- vmovdqa 128(%rsp), %xmm4
- vmovdqa 144(%rsp), %xmm15
-L_AES_GCM_decrypt_avx2_done_128:
- cmpl %r10d, %ebx
- jge L_AES_GCM_decrypt_avx2_done_dec
- movl %r10d, %r13d
- andl $0xfffffff0, %r13d
- cmpl %r13d, %ebx
- jge L_AES_GCM_decrypt_avx2_last_block_done
-L_AES_GCM_decrypt_avx2_last_block_start:
- vmovdqu (%rdi,%rbx,1), %xmm11
- vpshufb L_avx2_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm10
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm11, %xmm12
- vpaddd L_avx2_aes_gcm_one(%rip), %xmm4, %xmm4
- vpxor %xmm6, %xmm12, %xmm12
- # aesenc_gfmul_sb
- vpclmulqdq $0x01, %xmm5, %xmm12, %xmm2
- vpclmulqdq $16, %xmm5, %xmm12, %xmm3
- vpclmulqdq $0x00, %xmm5, %xmm12, %xmm1
- vpclmulqdq $0x11, %xmm5, %xmm12, %xmm8
- vpxor (%rsi), %xmm10, %xmm10
- vaesenc 16(%rsi), %xmm10, %xmm10
- vpxor %xmm2, %xmm3, %xmm3
- vpslldq $8, %xmm3, %xmm2
- vpsrldq $8, %xmm3, %xmm3
- vaesenc 32(%rsi), %xmm10, %xmm10
- vpxor %xmm1, %xmm2, %xmm2
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm2, %xmm1
- vaesenc 48(%rsi), %xmm10, %xmm10
- vaesenc 64(%rsi), %xmm10, %xmm10
- vaesenc 80(%rsi), %xmm10, %xmm10
- vpshufd $0x4e, %xmm2, %xmm2
- vpxor %xmm1, %xmm2, %xmm2
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm2, %xmm1
- vaesenc 96(%rsi), %xmm10, %xmm10
- vaesenc 112(%rsi), %xmm10, %xmm10
- vaesenc 128(%rsi), %xmm10, %xmm10
- vpshufd $0x4e, %xmm2, %xmm2
- vaesenc 144(%rsi), %xmm10, %xmm10
- vpxor %xmm3, %xmm8, %xmm8
- vpxor %xmm8, %xmm2, %xmm2
- vmovdqa 160(%rsi), %xmm0
- cmpl $11, %r9d
- jl L_AES_GCM_decrypt_avx2_aesenc_gfmul_sb_last
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc 176(%rsi), %xmm10, %xmm10
- vmovdqa 192(%rsi), %xmm0
- cmpl $13, %r9d
- jl L_AES_GCM_decrypt_avx2_aesenc_gfmul_sb_last
- vaesenc %xmm0, %xmm10, %xmm10
- vaesenc 208(%rsi), %xmm10, %xmm10
- vmovdqa 224(%rsi), %xmm0
-L_AES_GCM_decrypt_avx2_aesenc_gfmul_sb_last:
- vaesenclast %xmm0, %xmm10, %xmm10
- vpxor %xmm1, %xmm2, %xmm6
- vpxor %xmm11, %xmm10, %xmm10
- vmovdqu %xmm10, (%r8,%rbx,1)
- addl $16, %ebx
- cmpl %r13d, %ebx
- jl L_AES_GCM_decrypt_avx2_last_block_start
-L_AES_GCM_decrypt_avx2_last_block_done:
- movl %r10d, %ecx
- movl %r10d, %edx
- andl $15, %ecx
- jz L_AES_GCM_decrypt_avx2_done_dec
- # aesenc_last15_dec
- vpshufb L_avx2_aes_gcm_bswap_epi64(%rip), %xmm4, %xmm4
- vpxor (%rsi), %xmm4, %xmm4
- vaesenc 16(%rsi), %xmm4, %xmm4
- vaesenc 32(%rsi), %xmm4, %xmm4
- vaesenc 48(%rsi), %xmm4, %xmm4
- vaesenc 64(%rsi), %xmm4, %xmm4
- vaesenc 80(%rsi), %xmm4, %xmm4
- vaesenc 96(%rsi), %xmm4, %xmm4
- vaesenc 112(%rsi), %xmm4, %xmm4
- vaesenc 128(%rsi), %xmm4, %xmm4
- vaesenc 144(%rsi), %xmm4, %xmm4
- cmpl $11, %r9d
- vmovdqa 160(%rsi), %xmm1
- jl L_AES_GCM_decrypt_avx2_aesenc_last15_dec_avx_aesenc_avx_last
- vaesenc %xmm1, %xmm4, %xmm4
- vaesenc 176(%rsi), %xmm4, %xmm4
- cmpl $13, %r9d
- vmovdqa 192(%rsi), %xmm1
- jl L_AES_GCM_decrypt_avx2_aesenc_last15_dec_avx_aesenc_avx_last
- vaesenc %xmm1, %xmm4, %xmm4
- vaesenc 208(%rsi), %xmm4, %xmm4
- vmovdqa 224(%rsi), %xmm1
-L_AES_GCM_decrypt_avx2_aesenc_last15_dec_avx_aesenc_avx_last:
- vaesenclast %xmm1, %xmm4, %xmm4
- xorl %ecx, %ecx
- vpxor %xmm0, %xmm0, %xmm0
- vmovdqa %xmm4, (%rsp)
- vmovdqa %xmm0, 16(%rsp)
-L_AES_GCM_decrypt_avx2_aesenc_last15_dec_avx_loop:
- movzbl (%rdi,%rbx,1), %r13d
- movb %r13b, 16(%rsp,%rcx,1)
- xorb (%rsp,%rcx,1), %r13b
- movb %r13b, (%r8,%rbx,1)
- incl %ebx
- incl %ecx
- cmpl %edx, %ebx
- jl L_AES_GCM_decrypt_avx2_aesenc_last15_dec_avx_loop
- vmovdqa 16(%rsp), %xmm4
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm4, %xmm4
- vpxor %xmm4, %xmm6, %xmm6
- # ghash_gfmul_red
- vpclmulqdq $16, %xmm5, %xmm6, %xmm2
- vpclmulqdq $0x01, %xmm5, %xmm6, %xmm1
- vpclmulqdq $0x00, %xmm5, %xmm6, %xmm0
- vpxor %xmm1, %xmm2, %xmm2
- vpslldq $8, %xmm2, %xmm1
- vpsrldq $8, %xmm2, %xmm2
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $0x11, %xmm5, %xmm6, %xmm6
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm0, %xmm1, %xmm1
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm1, %xmm0
- vpshufd $0x4e, %xmm1, %xmm1
- vpxor %xmm2, %xmm6, %xmm6
- vpxor %xmm1, %xmm6, %xmm6
- vpxor %xmm0, %xmm6, %xmm6
-L_AES_GCM_decrypt_avx2_done_dec:
- # calc_tag
- shlq $3, %r10
- vpinsrq $0x00, %r10, %xmm0, %xmm0
- shlq $3, %r11
- vpinsrq $0x01, %r11, %xmm1, %xmm1
- vpblendd $12, %xmm1, %xmm0, %xmm0
- vpxor %xmm6, %xmm0, %xmm0
- # ghash_gfmul_red
- vpclmulqdq $16, %xmm5, %xmm0, %xmm4
- vpclmulqdq $0x01, %xmm5, %xmm0, %xmm3
- vpclmulqdq $0x00, %xmm5, %xmm0, %xmm2
- vpxor %xmm3, %xmm4, %xmm4
- vpslldq $8, %xmm4, %xmm3
- vpsrldq $8, %xmm4, %xmm4
- vpxor %xmm2, %xmm3, %xmm3
- vpclmulqdq $0x11, %xmm5, %xmm0, %xmm0
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm3, %xmm2
- vpshufd $0x4e, %xmm3, %xmm3
- vpxor %xmm2, %xmm3, %xmm3
- vpclmulqdq $16, L_avx2_aes_gcm_mod2_128(%rip), %xmm3, %xmm2
- vpshufd $0x4e, %xmm3, %xmm3
- vpxor %xmm4, %xmm0, %xmm0
- vpxor %xmm3, %xmm0, %xmm0
- vpxor %xmm2, %xmm0, %xmm0
- vpshufb L_avx2_aes_gcm_bswap_mask(%rip), %xmm0, %xmm0
- vpxor %xmm15, %xmm0, %xmm0
- # cmp_tag
- cmpl $16, %r15d
- je L_AES_GCM_decrypt_avx2_cmp_tag_16
- xorq %rdx, %rdx
- xorq %rax, %rax
- vmovdqa %xmm0, (%rsp)
-L_AES_GCM_decrypt_avx2_cmp_tag_loop:
- movzbl (%rsp,%rdx,1), %r13d
- xorb (%r14,%rdx,1), %r13b
- orb %r13b, %al
- incl %edx
- cmpl %r15d, %edx
- jne L_AES_GCM_decrypt_avx2_cmp_tag_loop
- cmpb $0x00, %al
- sete %al
- jmp L_AES_GCM_decrypt_avx2_cmp_tag_done
-L_AES_GCM_decrypt_avx2_cmp_tag_16:
- vmovdqu (%r14), %xmm1
- vpcmpeqb %xmm1, %xmm0, %xmm0
- vpmovmskb %xmm0, %rdx
- # %%edx == 0xFFFF then return 1 else => return 0
- xorl %eax, %eax
- cmpl $0xffff, %edx
- sete %al
-L_AES_GCM_decrypt_avx2_cmp_tag_done:
- movl %eax, (%rbp)
- vzeroupper
- addq $0xa8, %rsp
- popq %rbp
- popq %r15
- popq %rbx
- popq %r14
- popq %r12
- popq %r13
- repz retq
-#ifndef __APPLE__
-.size AES_GCM_decrypt_avx2,.-AES_GCM_decrypt_avx2
-#endif /* __APPLE__ */
-#endif /* HAVE_INTEL_AVX2 */