Packages
hackney
3.0.2
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/boringssl/gen/bcm/aesni-x86_64-linux.S
// This file is generated from a similarly-named Perl script in the BoringSSL
// source tree. Do not edit by hand.
#include <openssl/asm_base.h>
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__)
.text
.globl aes_hw_encrypt
.hidden aes_hw_encrypt
.type aes_hw_encrypt,@function
.align 16
aes_hw_encrypt:
.cfi_startproc
_CET_ENDBR
#ifdef BORINGSSL_DISPATCH_TEST
.extern BORINGSSL_function_hit
.hidden BORINGSSL_function_hit
movb $1,BORINGSSL_function_hit+1(%rip)
#endif
movups (%rdi),%xmm2
movl 240(%rdx),%eax
movups (%rdx),%xmm0
movups 16(%rdx),%xmm1
leaq 32(%rdx),%rdx
xorps %xmm0,%xmm2
.Loop_enc1_1:
aesenc %xmm1,%xmm2
decl %eax
movups (%rdx),%xmm1
leaq 16(%rdx),%rdx
jnz .Loop_enc1_1
aesenclast %xmm1,%xmm2
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
ret
.cfi_endproc
.size aes_hw_encrypt,.-aes_hw_encrypt
.globl aes_hw_decrypt
.hidden aes_hw_decrypt
.type aes_hw_decrypt,@function
.align 16
aes_hw_decrypt:
.cfi_startproc
_CET_ENDBR
movups (%rdi),%xmm2
movl 240(%rdx),%eax
movups (%rdx),%xmm0
movups 16(%rdx),%xmm1
leaq 32(%rdx),%rdx
xorps %xmm0,%xmm2
.Loop_dec1_2:
aesdec %xmm1,%xmm2
decl %eax
movups (%rdx),%xmm1
leaq 16(%rdx),%rdx
jnz .Loop_dec1_2
aesdeclast %xmm1,%xmm2
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
ret
.cfi_endproc
.size aes_hw_decrypt, .-aes_hw_decrypt
.type _aesni_encrypt2,@function
.align 16
_aesni_encrypt2:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
xorps %xmm0,%xmm3
movups 32(%rcx),%xmm0
leaq 32(%rcx,%rax,1),%rcx
negq %rax
addq $16,%rax
.Lenc_loop2:
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
movups -16(%rcx,%rax,1),%xmm0
jnz .Lenc_loop2
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenclast %xmm0,%xmm2
aesenclast %xmm0,%xmm3
ret
.cfi_endproc
.size _aesni_encrypt2,.-_aesni_encrypt2
.type _aesni_decrypt2,@function
.align 16
_aesni_decrypt2:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
xorps %xmm0,%xmm3
movups 32(%rcx),%xmm0
leaq 32(%rcx,%rax,1),%rcx
negq %rax
addq $16,%rax
.Ldec_loop2:
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
movups -16(%rcx,%rax,1),%xmm0
jnz .Ldec_loop2
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdeclast %xmm0,%xmm2
aesdeclast %xmm0,%xmm3
ret
.cfi_endproc
.size _aesni_decrypt2,.-_aesni_decrypt2
.type _aesni_encrypt3,@function
.align 16
_aesni_encrypt3:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
xorps %xmm0,%xmm3
xorps %xmm0,%xmm4
movups 32(%rcx),%xmm0
leaq 32(%rcx,%rax,1),%rcx
negq %rax
addq $16,%rax
.Lenc_loop3:
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
aesenc %xmm0,%xmm4
movups -16(%rcx,%rax,1),%xmm0
jnz .Lenc_loop3
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenclast %xmm0,%xmm2
aesenclast %xmm0,%xmm3
aesenclast %xmm0,%xmm4
ret
.cfi_endproc
.size _aesni_encrypt3,.-_aesni_encrypt3
.type _aesni_decrypt3,@function
.align 16
_aesni_decrypt3:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
xorps %xmm0,%xmm3
xorps %xmm0,%xmm4
movups 32(%rcx),%xmm0
leaq 32(%rcx,%rax,1),%rcx
negq %rax
addq $16,%rax
.Ldec_loop3:
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
movups -16(%rcx,%rax,1),%xmm0
jnz .Ldec_loop3
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdeclast %xmm0,%xmm2
aesdeclast %xmm0,%xmm3
aesdeclast %xmm0,%xmm4
ret
.cfi_endproc
.size _aesni_decrypt3,.-_aesni_decrypt3
.type _aesni_encrypt4,@function
.align 16
_aesni_encrypt4:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
xorps %xmm0,%xmm3
xorps %xmm0,%xmm4
xorps %xmm0,%xmm5
movups 32(%rcx),%xmm0
leaq 32(%rcx,%rax,1),%rcx
negq %rax
.byte 0x0f,0x1f,0x00
addq $16,%rax
.Lenc_loop4:
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
aesenc %xmm0,%xmm4
aesenc %xmm0,%xmm5
movups -16(%rcx,%rax,1),%xmm0
jnz .Lenc_loop4
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
aesenclast %xmm0,%xmm2
aesenclast %xmm0,%xmm3
aesenclast %xmm0,%xmm4
aesenclast %xmm0,%xmm5
ret
.cfi_endproc
.size _aesni_encrypt4,.-_aesni_encrypt4
.type _aesni_decrypt4,@function
.align 16
_aesni_decrypt4:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
xorps %xmm0,%xmm3
xorps %xmm0,%xmm4
xorps %xmm0,%xmm5
movups 32(%rcx),%xmm0
leaq 32(%rcx,%rax,1),%rcx
negq %rax
.byte 0x0f,0x1f,0x00
addq $16,%rax
.Ldec_loop4:
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
movups -16(%rcx,%rax,1),%xmm0
jnz .Ldec_loop4
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdeclast %xmm0,%xmm2
aesdeclast %xmm0,%xmm3
aesdeclast %xmm0,%xmm4
aesdeclast %xmm0,%xmm5
ret
.cfi_endproc
.size _aesni_decrypt4,.-_aesni_decrypt4
.type _aesni_encrypt6,@function
.align 16
_aesni_encrypt6:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
pxor %xmm0,%xmm3
pxor %xmm0,%xmm4
aesenc %xmm1,%xmm2
leaq 32(%rcx,%rax,1),%rcx
negq %rax
aesenc %xmm1,%xmm3
pxor %xmm0,%xmm5
pxor %xmm0,%xmm6
aesenc %xmm1,%xmm4
pxor %xmm0,%xmm7
movups (%rcx,%rax,1),%xmm0
addq $16,%rax
jmp .Lenc_loop6_enter
.align 16
.Lenc_loop6:
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
.Lenc_loop6_enter:
aesenc %xmm1,%xmm5
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
aesenc %xmm0,%xmm4
aesenc %xmm0,%xmm5
aesenc %xmm0,%xmm6
aesenc %xmm0,%xmm7
movups -16(%rcx,%rax,1),%xmm0
jnz .Lenc_loop6
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenclast %xmm0,%xmm2
aesenclast %xmm0,%xmm3
aesenclast %xmm0,%xmm4
aesenclast %xmm0,%xmm5
aesenclast %xmm0,%xmm6
aesenclast %xmm0,%xmm7
ret
.cfi_endproc
.size _aesni_encrypt6,.-_aesni_encrypt6
.type _aesni_decrypt6,@function
.align 16
_aesni_decrypt6:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
pxor %xmm0,%xmm3
pxor %xmm0,%xmm4
aesdec %xmm1,%xmm2
leaq 32(%rcx,%rax,1),%rcx
negq %rax
aesdec %xmm1,%xmm3
pxor %xmm0,%xmm5
pxor %xmm0,%xmm6
aesdec %xmm1,%xmm4
pxor %xmm0,%xmm7
movups (%rcx,%rax,1),%xmm0
addq $16,%rax
jmp .Ldec_loop6_enter
.align 16
.Ldec_loop6:
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
.Ldec_loop6_enter:
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
aesdec %xmm0,%xmm6
aesdec %xmm0,%xmm7
movups -16(%rcx,%rax,1),%xmm0
jnz .Ldec_loop6
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdeclast %xmm0,%xmm2
aesdeclast %xmm0,%xmm3
aesdeclast %xmm0,%xmm4
aesdeclast %xmm0,%xmm5
aesdeclast %xmm0,%xmm6
aesdeclast %xmm0,%xmm7
ret
.cfi_endproc
.size _aesni_decrypt6,.-_aesni_decrypt6
.type _aesni_encrypt8,@function
.align 16
_aesni_encrypt8:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
xorps %xmm0,%xmm3
pxor %xmm0,%xmm4
pxor %xmm0,%xmm5
pxor %xmm0,%xmm6
leaq 32(%rcx,%rax,1),%rcx
negq %rax
aesenc %xmm1,%xmm2
pxor %xmm0,%xmm7
pxor %xmm0,%xmm8
aesenc %xmm1,%xmm3
pxor %xmm0,%xmm9
movups (%rcx,%rax,1),%xmm0
addq $16,%rax
jmp .Lenc_loop8_inner
.align 16
.Lenc_loop8:
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
.Lenc_loop8_inner:
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
.Lenc_loop8_enter:
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
aesenc %xmm0,%xmm4
aesenc %xmm0,%xmm5
aesenc %xmm0,%xmm6
aesenc %xmm0,%xmm7
aesenc %xmm0,%xmm8
aesenc %xmm0,%xmm9
movups -16(%rcx,%rax,1),%xmm0
jnz .Lenc_loop8
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
aesenclast %xmm0,%xmm2
aesenclast %xmm0,%xmm3
aesenclast %xmm0,%xmm4
aesenclast %xmm0,%xmm5
aesenclast %xmm0,%xmm6
aesenclast %xmm0,%xmm7
aesenclast %xmm0,%xmm8
aesenclast %xmm0,%xmm9
ret
.cfi_endproc
.size _aesni_encrypt8,.-_aesni_encrypt8
.type _aesni_decrypt8,@function
.align 16
_aesni_decrypt8:
.cfi_startproc
movups (%rcx),%xmm0
shll $4,%eax
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm2
xorps %xmm0,%xmm3
pxor %xmm0,%xmm4
pxor %xmm0,%xmm5
pxor %xmm0,%xmm6
leaq 32(%rcx,%rax,1),%rcx
negq %rax
aesdec %xmm1,%xmm2
pxor %xmm0,%xmm7
pxor %xmm0,%xmm8
aesdec %xmm1,%xmm3
pxor %xmm0,%xmm9
movups (%rcx,%rax,1),%xmm0
addq $16,%rax
jmp .Ldec_loop8_inner
.align 16
.Ldec_loop8:
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
.Ldec_loop8_inner:
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdec %xmm1,%xmm8
aesdec %xmm1,%xmm9
.Ldec_loop8_enter:
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
aesdec %xmm0,%xmm6
aesdec %xmm0,%xmm7
aesdec %xmm0,%xmm8
aesdec %xmm0,%xmm9
movups -16(%rcx,%rax,1),%xmm0
jnz .Ldec_loop8
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdec %xmm1,%xmm8
aesdec %xmm1,%xmm9
aesdeclast %xmm0,%xmm2
aesdeclast %xmm0,%xmm3
aesdeclast %xmm0,%xmm4
aesdeclast %xmm0,%xmm5
aesdeclast %xmm0,%xmm6
aesdeclast %xmm0,%xmm7
aesdeclast %xmm0,%xmm8
aesdeclast %xmm0,%xmm9
ret
.cfi_endproc
.size _aesni_decrypt8,.-_aesni_decrypt8
.globl aes_hw_ecb_encrypt
.hidden aes_hw_ecb_encrypt
.type aes_hw_ecb_encrypt,@function
.align 16
aes_hw_ecb_encrypt:
.cfi_startproc
_CET_ENDBR
andq $-16,%rdx
jz .Lecb_ret
movl 240(%rcx),%eax
movups (%rcx),%xmm0
movq %rcx,%r11
movl %eax,%r10d
testl %r8d,%r8d
jz .Lecb_decrypt
cmpq $0x80,%rdx
jb .Lecb_enc_tail
movdqu (%rdi),%xmm2
movdqu 16(%rdi),%xmm3
movdqu 32(%rdi),%xmm4
movdqu 48(%rdi),%xmm5
movdqu 64(%rdi),%xmm6
movdqu 80(%rdi),%xmm7
movdqu 96(%rdi),%xmm8
movdqu 112(%rdi),%xmm9
leaq 128(%rdi),%rdi
subq $0x80,%rdx
jmp .Lecb_enc_loop8_enter
.align 16
.Lecb_enc_loop8:
movups %xmm2,(%rsi)
movq %r11,%rcx
movdqu (%rdi),%xmm2
movl %r10d,%eax
movups %xmm3,16(%rsi)
movdqu 16(%rdi),%xmm3
movups %xmm4,32(%rsi)
movdqu 32(%rdi),%xmm4
movups %xmm5,48(%rsi)
movdqu 48(%rdi),%xmm5
movups %xmm6,64(%rsi)
movdqu 64(%rdi),%xmm6
movups %xmm7,80(%rsi)
movdqu 80(%rdi),%xmm7
movups %xmm8,96(%rsi)
movdqu 96(%rdi),%xmm8
movups %xmm9,112(%rsi)
leaq 128(%rsi),%rsi
movdqu 112(%rdi),%xmm9
leaq 128(%rdi),%rdi
.Lecb_enc_loop8_enter:
call _aesni_encrypt8
subq $0x80,%rdx
jnc .Lecb_enc_loop8
movups %xmm2,(%rsi)
movq %r11,%rcx
movups %xmm3,16(%rsi)
movl %r10d,%eax
movups %xmm4,32(%rsi)
movups %xmm5,48(%rsi)
movups %xmm6,64(%rsi)
movups %xmm7,80(%rsi)
movups %xmm8,96(%rsi)
movups %xmm9,112(%rsi)
leaq 128(%rsi),%rsi
addq $0x80,%rdx
jz .Lecb_ret
.Lecb_enc_tail:
movups (%rdi),%xmm2
cmpq $0x20,%rdx
jb .Lecb_enc_one
movups 16(%rdi),%xmm3
je .Lecb_enc_two
movups 32(%rdi),%xmm4
cmpq $0x40,%rdx
jb .Lecb_enc_three
movups 48(%rdi),%xmm5
je .Lecb_enc_four
movups 64(%rdi),%xmm6
cmpq $0x60,%rdx
jb .Lecb_enc_five
movups 80(%rdi),%xmm7
je .Lecb_enc_six
movdqu 96(%rdi),%xmm8
xorps %xmm9,%xmm9
call _aesni_encrypt8
movups %xmm2,(%rsi)
movups %xmm3,16(%rsi)
movups %xmm4,32(%rsi)
movups %xmm5,48(%rsi)
movups %xmm6,64(%rsi)
movups %xmm7,80(%rsi)
movups %xmm8,96(%rsi)
jmp .Lecb_ret
.align 16
.Lecb_enc_one:
movups (%rcx),%xmm0
movups 16(%rcx),%xmm1
leaq 32(%rcx),%rcx
xorps %xmm0,%xmm2
.Loop_enc1_3:
aesenc %xmm1,%xmm2
decl %eax
movups (%rcx),%xmm1
leaq 16(%rcx),%rcx
jnz .Loop_enc1_3
aesenclast %xmm1,%xmm2
movups %xmm2,(%rsi)
jmp .Lecb_ret
.align 16
.Lecb_enc_two:
call _aesni_encrypt2
movups %xmm2,(%rsi)
movups %xmm3,16(%rsi)
jmp .Lecb_ret
.align 16
.Lecb_enc_three:
call _aesni_encrypt3
movups %xmm2,(%rsi)
movups %xmm3,16(%rsi)
movups %xmm4,32(%rsi)
jmp .Lecb_ret
.align 16
.Lecb_enc_four:
call _aesni_encrypt4
movups %xmm2,(%rsi)
movups %xmm3,16(%rsi)
movups %xmm4,32(%rsi)
movups %xmm5,48(%rsi)
jmp .Lecb_ret
.align 16
.Lecb_enc_five:
xorps %xmm7,%xmm7
call _aesni_encrypt6
movups %xmm2,(%rsi)
movups %xmm3,16(%rsi)
movups %xmm4,32(%rsi)
movups %xmm5,48(%rsi)
movups %xmm6,64(%rsi)
jmp .Lecb_ret
.align 16
.Lecb_enc_six:
call _aesni_encrypt6
movups %xmm2,(%rsi)
movups %xmm3,16(%rsi)
movups %xmm4,32(%rsi)
movups %xmm5,48(%rsi)
movups %xmm6,64(%rsi)
movups %xmm7,80(%rsi)
jmp .Lecb_ret
.align 16
.Lecb_decrypt:
cmpq $0x80,%rdx
jb .Lecb_dec_tail
movdqu (%rdi),%xmm2
movdqu 16(%rdi),%xmm3
movdqu 32(%rdi),%xmm4
movdqu 48(%rdi),%xmm5
movdqu 64(%rdi),%xmm6
movdqu 80(%rdi),%xmm7
movdqu 96(%rdi),%xmm8
movdqu 112(%rdi),%xmm9
leaq 128(%rdi),%rdi
subq $0x80,%rdx
jmp .Lecb_dec_loop8_enter
.align 16
.Lecb_dec_loop8:
movups %xmm2,(%rsi)
movq %r11,%rcx
movdqu (%rdi),%xmm2
movl %r10d,%eax
movups %xmm3,16(%rsi)
movdqu 16(%rdi),%xmm3
movups %xmm4,32(%rsi)
movdqu 32(%rdi),%xmm4
movups %xmm5,48(%rsi)
movdqu 48(%rdi),%xmm5
movups %xmm6,64(%rsi)
movdqu 64(%rdi),%xmm6
movups %xmm7,80(%rsi)
movdqu 80(%rdi),%xmm7
movups %xmm8,96(%rsi)
movdqu 96(%rdi),%xmm8
movups %xmm9,112(%rsi)
leaq 128(%rsi),%rsi
movdqu 112(%rdi),%xmm9
leaq 128(%rdi),%rdi
.Lecb_dec_loop8_enter:
call _aesni_decrypt8
movups (%r11),%xmm0
subq $0x80,%rdx
jnc .Lecb_dec_loop8
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
movq %r11,%rcx
movups %xmm3,16(%rsi)
pxor %xmm3,%xmm3
movl %r10d,%eax
movups %xmm4,32(%rsi)
pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
pxor %xmm7,%xmm7
movups %xmm8,96(%rsi)
pxor %xmm8,%xmm8
movups %xmm9,112(%rsi)
pxor %xmm9,%xmm9
leaq 128(%rsi),%rsi
addq $0x80,%rdx
jz .Lecb_ret
.Lecb_dec_tail:
movups (%rdi),%xmm2
cmpq $0x20,%rdx
jb .Lecb_dec_one
movups 16(%rdi),%xmm3
je .Lecb_dec_two
movups 32(%rdi),%xmm4
cmpq $0x40,%rdx
jb .Lecb_dec_three
movups 48(%rdi),%xmm5
je .Lecb_dec_four
movups 64(%rdi),%xmm6
cmpq $0x60,%rdx
jb .Lecb_dec_five
movups 80(%rdi),%xmm7
je .Lecb_dec_six
movups 96(%rdi),%xmm8
movups (%rcx),%xmm0
xorps %xmm9,%xmm9
call _aesni_decrypt8
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
pxor %xmm7,%xmm7
movups %xmm8,96(%rsi)
pxor %xmm8,%xmm8
pxor %xmm9,%xmm9
jmp .Lecb_ret
.align 16
.Lecb_dec_one:
movups (%rcx),%xmm0
movups 16(%rcx),%xmm1
leaq 32(%rcx),%rcx
xorps %xmm0,%xmm2
.Loop_dec1_4:
aesdec %xmm1,%xmm2
decl %eax
movups (%rcx),%xmm1
leaq 16(%rcx),%rcx
jnz .Loop_dec1_4
aesdeclast %xmm1,%xmm2
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
jmp .Lecb_ret
.align 16
.Lecb_dec_two:
call _aesni_decrypt2
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
pxor %xmm3,%xmm3
jmp .Lecb_ret
.align 16
.Lecb_dec_three:
call _aesni_decrypt3
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
pxor %xmm4,%xmm4
jmp .Lecb_ret
.align 16
.Lecb_dec_four:
call _aesni_decrypt4
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
pxor %xmm5,%xmm5
jmp .Lecb_ret
.align 16
.Lecb_dec_five:
xorps %xmm7,%xmm7
call _aesni_decrypt6
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
pxor %xmm6,%xmm6
pxor %xmm7,%xmm7
jmp .Lecb_ret
.align 16
.Lecb_dec_six:
call _aesni_decrypt6
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
pxor %xmm7,%xmm7
.Lecb_ret:
xorps %xmm0,%xmm0
pxor %xmm1,%xmm1
ret
.cfi_endproc
.size aes_hw_ecb_encrypt,.-aes_hw_ecb_encrypt
.globl aes_hw_ctr32_encrypt_blocks
.hidden aes_hw_ctr32_encrypt_blocks
.type aes_hw_ctr32_encrypt_blocks,@function
.align 16
aes_hw_ctr32_encrypt_blocks:
.cfi_startproc
_CET_ENDBR
#ifdef BORINGSSL_DISPATCH_TEST
movb $1,BORINGSSL_function_hit(%rip)
#endif
cmpq $1,%rdx
jne .Lctr32_bulk
movups (%r8),%xmm2
movups (%rdi),%xmm3
movl 240(%rcx),%edx
movups (%rcx),%xmm0
movups 16(%rcx),%xmm1
leaq 32(%rcx),%rcx
xorps %xmm0,%xmm2
.Loop_enc1_5:
aesenc %xmm1,%xmm2
decl %edx
movups (%rcx),%xmm1
leaq 16(%rcx),%rcx
jnz .Loop_enc1_5
aesenclast %xmm1,%xmm2
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
xorps %xmm3,%xmm2
pxor %xmm3,%xmm3
movups %xmm2,(%rsi)
xorps %xmm2,%xmm2
jmp .Lctr32_epilogue
.align 16
.Lctr32_bulk:
leaq (%rsp),%r11
.cfi_def_cfa_register %r11
pushq %rbp
.cfi_offset %rbp,-16
subq $128,%rsp
andq $-16,%rsp
movdqu (%r8),%xmm2
movdqu (%rcx),%xmm0
movl 12(%r8),%r8d
pxor %xmm0,%xmm2
movl 12(%rcx),%ebp
movdqa %xmm2,0(%rsp)
bswapl %r8d
movdqa %xmm2,%xmm3
movdqa %xmm2,%xmm4
movdqa %xmm2,%xmm5
movdqa %xmm2,64(%rsp)
movdqa %xmm2,80(%rsp)
movdqa %xmm2,96(%rsp)
movq %rdx,%r10
movdqa %xmm2,112(%rsp)
leaq 1(%r8),%rax
leaq 2(%r8),%rdx
bswapl %eax
bswapl %edx
xorl %ebp,%eax
xorl %ebp,%edx
pinsrd $3,%eax,%xmm3
leaq 3(%r8),%rax
movdqa %xmm3,16(%rsp)
pinsrd $3,%edx,%xmm4
bswapl %eax
movq %r10,%rdx
leaq 4(%r8),%r10
movdqa %xmm4,32(%rsp)
xorl %ebp,%eax
bswapl %r10d
pinsrd $3,%eax,%xmm5
xorl %ebp,%r10d
movdqa %xmm5,48(%rsp)
leaq 5(%r8),%r9
movl %r10d,64+12(%rsp)
bswapl %r9d
leaq 6(%r8),%r10
movl 240(%rcx),%eax
xorl %ebp,%r9d
bswapl %r10d
movl %r9d,80+12(%rsp)
xorl %ebp,%r10d
leaq 7(%r8),%r9
movl %r10d,96+12(%rsp)
bswapl %r9d
xorl %ebp,%r9d
movl %r9d,112+12(%rsp)
movups 16(%rcx),%xmm1
movdqa 64(%rsp),%xmm6
movdqa 80(%rsp),%xmm7
cmpq $8,%rdx
jb .Lctr32_tail
leaq 128(%rcx),%rcx
subq $8,%rdx
jmp .Lctr32_loop8
.align 32
.Lctr32_loop8:
addl $8,%r8d
movdqa 96(%rsp),%xmm8
aesenc %xmm1,%xmm2
movl %r8d,%r9d
movdqa 112(%rsp),%xmm9
aesenc %xmm1,%xmm3
bswapl %r9d
movups 32-128(%rcx),%xmm0
aesenc %xmm1,%xmm4
xorl %ebp,%r9d
nop
aesenc %xmm1,%xmm5
movl %r9d,0+12(%rsp)
leaq 1(%r8),%r9
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
movups 48-128(%rcx),%xmm1
bswapl %r9d
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
xorl %ebp,%r9d
.byte 0x66,0x90
aesenc %xmm0,%xmm4
aesenc %xmm0,%xmm5
movl %r9d,16+12(%rsp)
leaq 2(%r8),%r9
aesenc %xmm0,%xmm6
aesenc %xmm0,%xmm7
aesenc %xmm0,%xmm8
aesenc %xmm0,%xmm9
movups 64-128(%rcx),%xmm0
bswapl %r9d
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
xorl %ebp,%r9d
.byte 0x66,0x90
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
movl %r9d,32+12(%rsp)
leaq 3(%r8),%r9
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
movups 80-128(%rcx),%xmm1
bswapl %r9d
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
xorl %ebp,%r9d
.byte 0x66,0x90
aesenc %xmm0,%xmm4
aesenc %xmm0,%xmm5
movl %r9d,48+12(%rsp)
leaq 4(%r8),%r9
aesenc %xmm0,%xmm6
aesenc %xmm0,%xmm7
aesenc %xmm0,%xmm8
aesenc %xmm0,%xmm9
movups 96-128(%rcx),%xmm0
bswapl %r9d
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
xorl %ebp,%r9d
.byte 0x66,0x90
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
movl %r9d,64+12(%rsp)
leaq 5(%r8),%r9
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
movups 112-128(%rcx),%xmm1
bswapl %r9d
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
xorl %ebp,%r9d
.byte 0x66,0x90
aesenc %xmm0,%xmm4
aesenc %xmm0,%xmm5
movl %r9d,80+12(%rsp)
leaq 6(%r8),%r9
aesenc %xmm0,%xmm6
aesenc %xmm0,%xmm7
aesenc %xmm0,%xmm8
aesenc %xmm0,%xmm9
movups 128-128(%rcx),%xmm0
bswapl %r9d
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
xorl %ebp,%r9d
.byte 0x66,0x90
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
movl %r9d,96+12(%rsp)
leaq 7(%r8),%r9
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
movups 144-128(%rcx),%xmm1
bswapl %r9d
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
aesenc %xmm0,%xmm4
xorl %ebp,%r9d
movdqu 0(%rdi),%xmm10
aesenc %xmm0,%xmm5
movl %r9d,112+12(%rsp)
cmpl $11,%eax
aesenc %xmm0,%xmm6
aesenc %xmm0,%xmm7
aesenc %xmm0,%xmm8
aesenc %xmm0,%xmm9
movups 160-128(%rcx),%xmm0
jb .Lctr32_enc_done
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
movups 176-128(%rcx),%xmm1
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
aesenc %xmm0,%xmm4
aesenc %xmm0,%xmm5
aesenc %xmm0,%xmm6
aesenc %xmm0,%xmm7
aesenc %xmm0,%xmm8
aesenc %xmm0,%xmm9
movups 192-128(%rcx),%xmm0
je .Lctr32_enc_done
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
movups 208-128(%rcx),%xmm1
aesenc %xmm0,%xmm2
aesenc %xmm0,%xmm3
aesenc %xmm0,%xmm4
aesenc %xmm0,%xmm5
aesenc %xmm0,%xmm6
aesenc %xmm0,%xmm7
aesenc %xmm0,%xmm8
aesenc %xmm0,%xmm9
movups 224-128(%rcx),%xmm0
jmp .Lctr32_enc_done
.align 16
.Lctr32_enc_done:
movdqu 16(%rdi),%xmm11
pxor %xmm0,%xmm10
movdqu 32(%rdi),%xmm12
pxor %xmm0,%xmm11
movdqu 48(%rdi),%xmm13
pxor %xmm0,%xmm12
movdqu 64(%rdi),%xmm14
pxor %xmm0,%xmm13
movdqu 80(%rdi),%xmm15
pxor %xmm0,%xmm14
prefetcht0 448(%rdi)
prefetcht0 512(%rdi)
pxor %xmm0,%xmm15
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
aesenc %xmm1,%xmm6
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
aesenc %xmm1,%xmm9
movdqu 96(%rdi),%xmm1
leaq 128(%rdi),%rdi
aesenclast %xmm10,%xmm2
pxor %xmm0,%xmm1
movdqu 112-128(%rdi),%xmm10
aesenclast %xmm11,%xmm3
pxor %xmm0,%xmm10
movdqa 0(%rsp),%xmm11
aesenclast %xmm12,%xmm4
aesenclast %xmm13,%xmm5
movdqa 16(%rsp),%xmm12
movdqa 32(%rsp),%xmm13
aesenclast %xmm14,%xmm6
aesenclast %xmm15,%xmm7
movdqa 48(%rsp),%xmm14
movdqa 64(%rsp),%xmm15
aesenclast %xmm1,%xmm8
movdqa 80(%rsp),%xmm0
movups 16-128(%rcx),%xmm1
aesenclast %xmm10,%xmm9
movups %xmm2,(%rsi)
movdqa %xmm11,%xmm2
movups %xmm3,16(%rsi)
movdqa %xmm12,%xmm3
movups %xmm4,32(%rsi)
movdqa %xmm13,%xmm4
movups %xmm5,48(%rsi)
movdqa %xmm14,%xmm5
movups %xmm6,64(%rsi)
movdqa %xmm15,%xmm6
movups %xmm7,80(%rsi)
movdqa %xmm0,%xmm7
movups %xmm8,96(%rsi)
movups %xmm9,112(%rsi)
leaq 128(%rsi),%rsi
subq $8,%rdx
jnc .Lctr32_loop8
addq $8,%rdx
jz .Lctr32_done
leaq -128(%rcx),%rcx
.Lctr32_tail:
leaq 16(%rcx),%rcx
cmpq $4,%rdx
jb .Lctr32_loop3
je .Lctr32_loop4
shll $4,%eax
movdqa 96(%rsp),%xmm8
pxor %xmm9,%xmm9
movups 16(%rcx),%xmm0
aesenc %xmm1,%xmm2
aesenc %xmm1,%xmm3
leaq 32-16(%rcx,%rax,1),%rcx
negq %rax
aesenc %xmm1,%xmm4
addq $16,%rax
movups (%rdi),%xmm10
aesenc %xmm1,%xmm5
aesenc %xmm1,%xmm6
movups 16(%rdi),%xmm11
movups 32(%rdi),%xmm12
aesenc %xmm1,%xmm7
aesenc %xmm1,%xmm8
call .Lenc_loop8_enter
movdqu 48(%rdi),%xmm13
pxor %xmm10,%xmm2
movdqu 64(%rdi),%xmm10
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
pxor %xmm10,%xmm6
movdqu %xmm5,48(%rsi)
movdqu %xmm6,64(%rsi)
cmpq $6,%rdx
jb .Lctr32_done
movups 80(%rdi),%xmm11
xorps %xmm11,%xmm7
movups %xmm7,80(%rsi)
je .Lctr32_done
movups 96(%rdi),%xmm12
xorps %xmm12,%xmm8
movups %xmm8,96(%rsi)
jmp .Lctr32_done
.align 32
.Lctr32_loop4:
aesenc %xmm1,%xmm2
leaq 16(%rcx),%rcx
decl %eax
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
aesenc %xmm1,%xmm5
movups (%rcx),%xmm1
jnz .Lctr32_loop4
aesenclast %xmm1,%xmm2
aesenclast %xmm1,%xmm3
movups (%rdi),%xmm10
movups 16(%rdi),%xmm11
aesenclast %xmm1,%xmm4
aesenclast %xmm1,%xmm5
movups 32(%rdi),%xmm12
movups 48(%rdi),%xmm13
xorps %xmm10,%xmm2
movups %xmm2,(%rsi)
xorps %xmm11,%xmm3
movups %xmm3,16(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm4,32(%rsi)
pxor %xmm13,%xmm5
movdqu %xmm5,48(%rsi)
jmp .Lctr32_done
.align 32
.Lctr32_loop3:
aesenc %xmm1,%xmm2
leaq 16(%rcx),%rcx
decl %eax
aesenc %xmm1,%xmm3
aesenc %xmm1,%xmm4
movups (%rcx),%xmm1
jnz .Lctr32_loop3
aesenclast %xmm1,%xmm2
aesenclast %xmm1,%xmm3
aesenclast %xmm1,%xmm4
movups (%rdi),%xmm10
xorps %xmm10,%xmm2
movups %xmm2,(%rsi)
cmpq $2,%rdx
jb .Lctr32_done
movups 16(%rdi),%xmm11
xorps %xmm11,%xmm3
movups %xmm3,16(%rsi)
je .Lctr32_done
movups 32(%rdi),%xmm12
xorps %xmm12,%xmm4
movups %xmm4,32(%rsi)
.Lctr32_done:
xorps %xmm0,%xmm0
xorl %ebp,%ebp
pxor %xmm1,%xmm1
pxor %xmm2,%xmm2
pxor %xmm3,%xmm3
pxor %xmm4,%xmm4
pxor %xmm5,%xmm5
pxor %xmm6,%xmm6
pxor %xmm7,%xmm7
movaps %xmm0,0(%rsp)
pxor %xmm8,%xmm8
movaps %xmm0,16(%rsp)
pxor %xmm9,%xmm9
movaps %xmm0,32(%rsp)
pxor %xmm10,%xmm10
movaps %xmm0,48(%rsp)
pxor %xmm11,%xmm11
movaps %xmm0,64(%rsp)
pxor %xmm12,%xmm12
movaps %xmm0,80(%rsp)
pxor %xmm13,%xmm13
movaps %xmm0,96(%rsp)
pxor %xmm14,%xmm14
movaps %xmm0,112(%rsp)
pxor %xmm15,%xmm15
movq -8(%r11),%rbp
.cfi_restore %rbp
leaq (%r11),%rsp
.cfi_def_cfa_register %rsp
.Lctr32_epilogue:
ret
.cfi_endproc
.size aes_hw_ctr32_encrypt_blocks,.-aes_hw_ctr32_encrypt_blocks
.globl aes_hw_cbc_encrypt
.hidden aes_hw_cbc_encrypt
.type aes_hw_cbc_encrypt,@function
.align 16
aes_hw_cbc_encrypt:
.cfi_startproc
_CET_ENDBR
testq %rdx,%rdx
jz .Lcbc_ret
movl 240(%rcx),%r10d
movq %rcx,%r11
testl %r9d,%r9d
jz .Lcbc_decrypt
movups (%r8),%xmm2
movl %r10d,%eax
cmpq $16,%rdx
jb .Lcbc_enc_tail
subq $16,%rdx
jmp .Lcbc_enc_loop
.align 16
.Lcbc_enc_loop:
movups (%rdi),%xmm3
leaq 16(%rdi),%rdi
movups (%rcx),%xmm0
movups 16(%rcx),%xmm1
xorps %xmm0,%xmm3
leaq 32(%rcx),%rcx
xorps %xmm3,%xmm2
.Loop_enc1_6:
aesenc %xmm1,%xmm2
decl %eax
movups (%rcx),%xmm1
leaq 16(%rcx),%rcx
jnz .Loop_enc1_6
aesenclast %xmm1,%xmm2
movl %r10d,%eax
movq %r11,%rcx
movups %xmm2,0(%rsi)
leaq 16(%rsi),%rsi
subq $16,%rdx
jnc .Lcbc_enc_loop
addq $16,%rdx
jnz .Lcbc_enc_tail
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
movups %xmm2,(%r8)
pxor %xmm2,%xmm2
pxor %xmm3,%xmm3
jmp .Lcbc_ret
.Lcbc_enc_tail:
movq %rdx,%rcx
xchgq %rdi,%rsi
.long 0x9066A4F3
movl $16,%ecx
subq %rdx,%rcx
xorl %eax,%eax
.long 0x9066AAF3
leaq -16(%rdi),%rdi
movl %r10d,%eax
movq %rdi,%rsi
movq %r11,%rcx
xorq %rdx,%rdx
jmp .Lcbc_enc_loop
.align 16
.Lcbc_decrypt:
cmpq $16,%rdx
jne .Lcbc_decrypt_bulk
movdqu (%rdi),%xmm2
movdqu (%r8),%xmm3
movdqa %xmm2,%xmm4
movups (%rcx),%xmm0
movups 16(%rcx),%xmm1
leaq 32(%rcx),%rcx
xorps %xmm0,%xmm2
.Loop_dec1_7:
aesdec %xmm1,%xmm2
decl %r10d
movups (%rcx),%xmm1
leaq 16(%rcx),%rcx
jnz .Loop_dec1_7
aesdeclast %xmm1,%xmm2
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
movdqu %xmm4,(%r8)
xorps %xmm3,%xmm2
pxor %xmm3,%xmm3
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
jmp .Lcbc_ret
.align 16
.Lcbc_decrypt_bulk:
leaq (%rsp),%r11
.cfi_def_cfa_register %r11
pushq %rbp
.cfi_offset %rbp,-16
subq $16,%rsp
andq $-16,%rsp
movq %rcx,%rbp
movups (%r8),%xmm10
movl %r10d,%eax
cmpq $0x50,%rdx
jbe .Lcbc_dec_tail
movups (%rcx),%xmm0
movdqu 0(%rdi),%xmm2
movdqu 16(%rdi),%xmm3
movdqa %xmm2,%xmm11
movdqu 32(%rdi),%xmm4
movdqa %xmm3,%xmm12
movdqu 48(%rdi),%xmm5
movdqa %xmm4,%xmm13
movdqu 64(%rdi),%xmm6
movdqa %xmm5,%xmm14
movdqu 80(%rdi),%xmm7
movdqa %xmm6,%xmm15
cmpq $0x70,%rdx
jbe .Lcbc_dec_six_or_seven
subq $0x70,%rdx
leaq 112(%rcx),%rcx
jmp .Lcbc_dec_loop8_enter
.align 16
.Lcbc_dec_loop8:
movups %xmm9,(%rsi)
leaq 16(%rsi),%rsi
.Lcbc_dec_loop8_enter:
movdqu 96(%rdi),%xmm8
pxor %xmm0,%xmm2
movdqu 112(%rdi),%xmm9
pxor %xmm0,%xmm3
movups 16-112(%rcx),%xmm1
pxor %xmm0,%xmm4
movq $-1,%rbp
cmpq $0x70,%rdx
pxor %xmm0,%xmm5
pxor %xmm0,%xmm6
pxor %xmm0,%xmm7
pxor %xmm0,%xmm8
aesdec %xmm1,%xmm2
pxor %xmm0,%xmm9
movups 32-112(%rcx),%xmm0
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdec %xmm1,%xmm8
adcq $0,%rbp
andq $128,%rbp
aesdec %xmm1,%xmm9
addq %rdi,%rbp
movups 48-112(%rcx),%xmm1
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
aesdec %xmm0,%xmm6
aesdec %xmm0,%xmm7
aesdec %xmm0,%xmm8
aesdec %xmm0,%xmm9
movups 64-112(%rcx),%xmm0
nop
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdec %xmm1,%xmm8
aesdec %xmm1,%xmm9
movups 80-112(%rcx),%xmm1
nop
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
aesdec %xmm0,%xmm6
aesdec %xmm0,%xmm7
aesdec %xmm0,%xmm8
aesdec %xmm0,%xmm9
movups 96-112(%rcx),%xmm0
nop
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdec %xmm1,%xmm8
aesdec %xmm1,%xmm9
movups 112-112(%rcx),%xmm1
nop
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
aesdec %xmm0,%xmm6
aesdec %xmm0,%xmm7
aesdec %xmm0,%xmm8
aesdec %xmm0,%xmm9
movups 128-112(%rcx),%xmm0
nop
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdec %xmm1,%xmm8
aesdec %xmm1,%xmm9
movups 144-112(%rcx),%xmm1
cmpl $11,%eax
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
aesdec %xmm0,%xmm6
aesdec %xmm0,%xmm7
aesdec %xmm0,%xmm8
aesdec %xmm0,%xmm9
movups 160-112(%rcx),%xmm0
jb .Lcbc_dec_done
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdec %xmm1,%xmm8
aesdec %xmm1,%xmm9
movups 176-112(%rcx),%xmm1
nop
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
aesdec %xmm0,%xmm6
aesdec %xmm0,%xmm7
aesdec %xmm0,%xmm8
aesdec %xmm0,%xmm9
movups 192-112(%rcx),%xmm0
je .Lcbc_dec_done
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
aesdec %xmm1,%xmm8
aesdec %xmm1,%xmm9
movups 208-112(%rcx),%xmm1
nop
aesdec %xmm0,%xmm2
aesdec %xmm0,%xmm3
aesdec %xmm0,%xmm4
aesdec %xmm0,%xmm5
aesdec %xmm0,%xmm6
aesdec %xmm0,%xmm7
aesdec %xmm0,%xmm8
aesdec %xmm0,%xmm9
movups 224-112(%rcx),%xmm0
jmp .Lcbc_dec_done
.align 16
.Lcbc_dec_done:
aesdec %xmm1,%xmm2
aesdec %xmm1,%xmm3
pxor %xmm0,%xmm10
pxor %xmm0,%xmm11
aesdec %xmm1,%xmm4
aesdec %xmm1,%xmm5
pxor %xmm0,%xmm12
pxor %xmm0,%xmm13
aesdec %xmm1,%xmm6
aesdec %xmm1,%xmm7
pxor %xmm0,%xmm14
pxor %xmm0,%xmm15
aesdec %xmm1,%xmm8
aesdec %xmm1,%xmm9
movdqu 80(%rdi),%xmm1
aesdeclast %xmm10,%xmm2
movdqu 96(%rdi),%xmm10
pxor %xmm0,%xmm1
aesdeclast %xmm11,%xmm3
pxor %xmm0,%xmm10
movdqu 112(%rdi),%xmm0
aesdeclast %xmm12,%xmm4
leaq 128(%rdi),%rdi
movdqu 0(%rbp),%xmm11
aesdeclast %xmm13,%xmm5
aesdeclast %xmm14,%xmm6
movdqu 16(%rbp),%xmm12
movdqu 32(%rbp),%xmm13
aesdeclast %xmm15,%xmm7
aesdeclast %xmm1,%xmm8
movdqu 48(%rbp),%xmm14
movdqu 64(%rbp),%xmm15
aesdeclast %xmm10,%xmm9
movdqa %xmm0,%xmm10
movdqu 80(%rbp),%xmm1
movups -112(%rcx),%xmm0
movups %xmm2,(%rsi)
movdqa %xmm11,%xmm2
movups %xmm3,16(%rsi)
movdqa %xmm12,%xmm3
movups %xmm4,32(%rsi)
movdqa %xmm13,%xmm4
movups %xmm5,48(%rsi)
movdqa %xmm14,%xmm5
movups %xmm6,64(%rsi)
movdqa %xmm15,%xmm6
movups %xmm7,80(%rsi)
movdqa %xmm1,%xmm7
movups %xmm8,96(%rsi)
leaq 112(%rsi),%rsi
subq $0x80,%rdx
ja .Lcbc_dec_loop8
movaps %xmm9,%xmm2
leaq -112(%rcx),%rcx
addq $0x70,%rdx
jle .Lcbc_dec_clear_tail_collected
movups %xmm9,(%rsi)
leaq 16(%rsi),%rsi
cmpq $0x50,%rdx
jbe .Lcbc_dec_tail
movaps %xmm11,%xmm2
.Lcbc_dec_six_or_seven:
cmpq $0x60,%rdx
ja .Lcbc_dec_seven
movaps %xmm7,%xmm8
call _aesni_decrypt6
pxor %xmm10,%xmm2
movaps %xmm8,%xmm10
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
pxor %xmm5,%xmm5
pxor %xmm15,%xmm7
movdqu %xmm6,64(%rsi)
pxor %xmm6,%xmm6
leaq 80(%rsi),%rsi
movdqa %xmm7,%xmm2
pxor %xmm7,%xmm7
jmp .Lcbc_dec_tail_collected
.align 16
.Lcbc_dec_seven:
movups 96(%rdi),%xmm8
xorps %xmm9,%xmm9
call _aesni_decrypt8
movups 80(%rdi),%xmm9
pxor %xmm10,%xmm2
movups 96(%rdi),%xmm10
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
pxor %xmm5,%xmm5
pxor %xmm15,%xmm7
movdqu %xmm6,64(%rsi)
pxor %xmm6,%xmm6
pxor %xmm9,%xmm8
movdqu %xmm7,80(%rsi)
pxor %xmm7,%xmm7
leaq 96(%rsi),%rsi
movdqa %xmm8,%xmm2
pxor %xmm8,%xmm8
pxor %xmm9,%xmm9
jmp .Lcbc_dec_tail_collected
.Lcbc_dec_tail:
movups (%rdi),%xmm2
subq $0x10,%rdx
jbe .Lcbc_dec_one
movups 16(%rdi),%xmm3
movaps %xmm2,%xmm11
subq $0x10,%rdx
jbe .Lcbc_dec_two
movups 32(%rdi),%xmm4
movaps %xmm3,%xmm12
subq $0x10,%rdx
jbe .Lcbc_dec_three
movups 48(%rdi),%xmm5
movaps %xmm4,%xmm13
subq $0x10,%rdx
jbe .Lcbc_dec_four
movups 64(%rdi),%xmm6
movaps %xmm5,%xmm14
movaps %xmm6,%xmm15
xorps %xmm7,%xmm7
call _aesni_decrypt6
pxor %xmm10,%xmm2
movaps %xmm15,%xmm10
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
pxor %xmm5,%xmm5
leaq 64(%rsi),%rsi
movdqa %xmm6,%xmm2
pxor %xmm6,%xmm6
pxor %xmm7,%xmm7
subq $0x10,%rdx
jmp .Lcbc_dec_tail_collected
.align 16
.Lcbc_dec_one:
movaps %xmm2,%xmm11
movups (%rcx),%xmm0
movups 16(%rcx),%xmm1
leaq 32(%rcx),%rcx
xorps %xmm0,%xmm2
.Loop_dec1_8:
aesdec %xmm1,%xmm2
decl %eax
movups (%rcx),%xmm1
leaq 16(%rcx),%rcx
jnz .Loop_dec1_8
aesdeclast %xmm1,%xmm2
xorps %xmm10,%xmm2
movaps %xmm11,%xmm10
jmp .Lcbc_dec_tail_collected
.align 16
.Lcbc_dec_two:
movaps %xmm3,%xmm12
call _aesni_decrypt2
pxor %xmm10,%xmm2
movaps %xmm12,%xmm10
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
movdqa %xmm3,%xmm2
pxor %xmm3,%xmm3
leaq 16(%rsi),%rsi
jmp .Lcbc_dec_tail_collected
.align 16
.Lcbc_dec_three:
movaps %xmm4,%xmm13
call _aesni_decrypt3
pxor %xmm10,%xmm2
movaps %xmm13,%xmm10
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
pxor %xmm3,%xmm3
movdqa %xmm4,%xmm2
pxor %xmm4,%xmm4
leaq 32(%rsi),%rsi
jmp .Lcbc_dec_tail_collected
.align 16
.Lcbc_dec_four:
movaps %xmm5,%xmm14
call _aesni_decrypt4
pxor %xmm10,%xmm2
movaps %xmm14,%xmm10
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
pxor %xmm4,%xmm4
movdqa %xmm5,%xmm2
pxor %xmm5,%xmm5
leaq 48(%rsi),%rsi
jmp .Lcbc_dec_tail_collected
.align 16
.Lcbc_dec_clear_tail_collected:
pxor %xmm3,%xmm3
pxor %xmm4,%xmm4
pxor %xmm5,%xmm5
pxor %xmm6,%xmm6
pxor %xmm7,%xmm7
pxor %xmm8,%xmm8
pxor %xmm9,%xmm9
.Lcbc_dec_tail_collected:
movups %xmm10,(%r8)
andq $15,%rdx
jnz .Lcbc_dec_tail_partial
movups %xmm2,(%rsi)
pxor %xmm2,%xmm2
jmp .Lcbc_dec_ret
.align 16
.Lcbc_dec_tail_partial:
movaps %xmm2,(%rsp)
pxor %xmm2,%xmm2
movq $16,%rcx
movq %rsi,%rdi
subq %rdx,%rcx
leaq (%rsp),%rsi
.long 0x9066A4F3
movdqa %xmm2,(%rsp)
.Lcbc_dec_ret:
xorps %xmm0,%xmm0
pxor %xmm1,%xmm1
movq -8(%r11),%rbp
.cfi_restore %rbp
leaq (%r11),%rsp
.cfi_def_cfa_register %rsp
.Lcbc_ret:
ret
.cfi_endproc
.size aes_hw_cbc_encrypt,.-aes_hw_cbc_encrypt
.globl aes_hw_encrypt_key_to_decrypt_key
.hidden aes_hw_encrypt_key_to_decrypt_key
.type aes_hw_encrypt_key_to_decrypt_key,@function
.align 16
aes_hw_encrypt_key_to_decrypt_key:
.cfi_startproc
_CET_ENDBR
movl 240(%rdi),%esi
shll $4,%esi
leaq 16(%rdi,%rsi,1),%rdx
movups (%rdi),%xmm0
movups (%rdx),%xmm1
movups %xmm0,(%rdx)
movups %xmm1,(%rdi)
leaq 16(%rdi),%rdi
leaq -16(%rdx),%rdx
.Ldec_key_inverse:
movups (%rdi),%xmm0
movups (%rdx),%xmm1
aesimc %xmm0,%xmm0
aesimc %xmm1,%xmm1
leaq 16(%rdi),%rdi
leaq -16(%rdx),%rdx
movups %xmm0,16(%rdx)
movups %xmm1,-16(%rdi)
cmpq %rdi,%rdx
ja .Ldec_key_inverse
movups (%rdi),%xmm0
aesimc %xmm0,%xmm0
pxor %xmm1,%xmm1
movups %xmm0,(%rdx)
pxor %xmm0,%xmm0
ret
.cfi_endproc
.size aes_hw_encrypt_key_to_decrypt_key,.-aes_hw_encrypt_key_to_decrypt_key
.globl aes_hw_set_encrypt_key_base
.hidden aes_hw_set_encrypt_key_base
.type aes_hw_set_encrypt_key_base,@function
.align 16
aes_hw_set_encrypt_key_base:
.cfi_startproc
_CET_ENDBR
#ifdef BORINGSSL_DISPATCH_TEST
movb $1,BORINGSSL_function_hit+3(%rip)
#endif
subq $8,%rsp
.cfi_adjust_cfa_offset 8
movups (%rdi),%xmm0
xorps %xmm4,%xmm4
leaq 16(%rdx),%rax
cmpl $256,%esi
je .L14rounds
cmpl $192,%esi
je .L12rounds
cmpl $128,%esi
jne .Lbad_keybits
.L10rounds:
movl $9,%esi
movups %xmm0,(%rdx)
aeskeygenassist $0x1,%xmm0,%xmm1
call .Lkey_expansion_128_cold
aeskeygenassist $0x2,%xmm0,%xmm1
call .Lkey_expansion_128
aeskeygenassist $0x4,%xmm0,%xmm1
call .Lkey_expansion_128
aeskeygenassist $0x8,%xmm0,%xmm1
call .Lkey_expansion_128
aeskeygenassist $0x10,%xmm0,%xmm1
call .Lkey_expansion_128
aeskeygenassist $0x20,%xmm0,%xmm1
call .Lkey_expansion_128
aeskeygenassist $0x40,%xmm0,%xmm1
call .Lkey_expansion_128
aeskeygenassist $0x80,%xmm0,%xmm1
call .Lkey_expansion_128
aeskeygenassist $0x1b,%xmm0,%xmm1
call .Lkey_expansion_128
aeskeygenassist $0x36,%xmm0,%xmm1
call .Lkey_expansion_128
movups %xmm0,(%rax)
movl %esi,80(%rax)
xorl %eax,%eax
jmp .Lenc_key_ret
.align 16
.L12rounds:
movq 16(%rdi),%xmm2
movl $11,%esi
movups %xmm0,(%rdx)
aeskeygenassist $0x1,%xmm2,%xmm1
call .Lkey_expansion_192a_cold
aeskeygenassist $0x2,%xmm2,%xmm1
call .Lkey_expansion_192b
aeskeygenassist $0x4,%xmm2,%xmm1
call .Lkey_expansion_192a
aeskeygenassist $0x8,%xmm2,%xmm1
call .Lkey_expansion_192b
aeskeygenassist $0x10,%xmm2,%xmm1
call .Lkey_expansion_192a
aeskeygenassist $0x20,%xmm2,%xmm1
call .Lkey_expansion_192b
aeskeygenassist $0x40,%xmm2,%xmm1
call .Lkey_expansion_192a
aeskeygenassist $0x80,%xmm2,%xmm1
call .Lkey_expansion_192b
movups %xmm0,(%rax)
movl %esi,48(%rax)
xorq %rax,%rax
jmp .Lenc_key_ret
.align 16
.L14rounds:
movups 16(%rdi),%xmm2
movl $13,%esi
leaq 16(%rax),%rax
movups %xmm0,(%rdx)
movups %xmm2,16(%rdx)
aeskeygenassist $0x1,%xmm2,%xmm1
call .Lkey_expansion_256a_cold
aeskeygenassist $0x1,%xmm0,%xmm1
call .Lkey_expansion_256b
aeskeygenassist $0x2,%xmm2,%xmm1
call .Lkey_expansion_256a
aeskeygenassist $0x2,%xmm0,%xmm1
call .Lkey_expansion_256b
aeskeygenassist $0x4,%xmm2,%xmm1
call .Lkey_expansion_256a
aeskeygenassist $0x4,%xmm0,%xmm1
call .Lkey_expansion_256b
aeskeygenassist $0x8,%xmm2,%xmm1
call .Lkey_expansion_256a
aeskeygenassist $0x8,%xmm0,%xmm1
call .Lkey_expansion_256b
aeskeygenassist $0x10,%xmm2,%xmm1
call .Lkey_expansion_256a
aeskeygenassist $0x10,%xmm0,%xmm1
call .Lkey_expansion_256b
aeskeygenassist $0x20,%xmm2,%xmm1
call .Lkey_expansion_256a
aeskeygenassist $0x20,%xmm0,%xmm1
call .Lkey_expansion_256b
aeskeygenassist $0x40,%xmm2,%xmm1
call .Lkey_expansion_256a
movups %xmm0,(%rax)
movl %esi,16(%rax)
xorq %rax,%rax
jmp .Lenc_key_ret
.align 16
.Lbad_keybits:
movq $-2,%rax
.Lenc_key_ret:
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
pxor %xmm2,%xmm2
pxor %xmm3,%xmm3
pxor %xmm4,%xmm4
pxor %xmm5,%xmm5
addq $8,%rsp
.cfi_adjust_cfa_offset -8
ret
.cfi_endproc
.align 16
.Lkey_expansion_128:
.cfi_startproc
movups %xmm0,(%rax)
leaq 16(%rax),%rax
.Lkey_expansion_128_cold:
shufps $16,%xmm0,%xmm4
xorps %xmm4,%xmm0
shufps $140,%xmm0,%xmm4
xorps %xmm4,%xmm0
shufps $255,%xmm1,%xmm1
xorps %xmm1,%xmm0
ret
.cfi_endproc
.align 16
.Lkey_expansion_192a:
.cfi_startproc
movups %xmm0,(%rax)
leaq 16(%rax),%rax
.Lkey_expansion_192a_cold:
movaps %xmm2,%xmm5
.Lkey_expansion_192b_warm:
shufps $16,%xmm0,%xmm4
movdqa %xmm2,%xmm3
xorps %xmm4,%xmm0
shufps $140,%xmm0,%xmm4
pslldq $4,%xmm3
xorps %xmm4,%xmm0
pshufd $85,%xmm1,%xmm1
pxor %xmm3,%xmm2
pxor %xmm1,%xmm0
pshufd $255,%xmm0,%xmm3
pxor %xmm3,%xmm2
ret
.cfi_endproc
.align 16
.Lkey_expansion_192b:
.cfi_startproc
movaps %xmm0,%xmm3
shufps $68,%xmm0,%xmm5
movups %xmm5,(%rax)
shufps $78,%xmm2,%xmm3
movups %xmm3,16(%rax)
leaq 32(%rax),%rax
jmp .Lkey_expansion_192b_warm
.cfi_endproc
.align 16
.Lkey_expansion_256a:
.cfi_startproc
movups %xmm2,(%rax)
leaq 16(%rax),%rax
.Lkey_expansion_256a_cold:
shufps $16,%xmm0,%xmm4
xorps %xmm4,%xmm0
shufps $140,%xmm0,%xmm4
xorps %xmm4,%xmm0
shufps $255,%xmm1,%xmm1
xorps %xmm1,%xmm0
ret
.cfi_endproc
.align 16
.Lkey_expansion_256b:
.cfi_startproc
movups %xmm0,(%rax)
leaq 16(%rax),%rax
shufps $16,%xmm2,%xmm4
xorps %xmm4,%xmm2
shufps $140,%xmm2,%xmm4
xorps %xmm4,%xmm2
shufps $170,%xmm1,%xmm1
xorps %xmm1,%xmm2
ret
.cfi_endproc
.size aes_hw_set_encrypt_key_base,.-aes_hw_set_encrypt_key_base
.globl aes_hw_set_encrypt_key_alt
.hidden aes_hw_set_encrypt_key_alt
.type aes_hw_set_encrypt_key_alt,@function
.align 16
aes_hw_set_encrypt_key_alt:
.cfi_startproc
_CET_ENDBR
#ifdef BORINGSSL_DISPATCH_TEST
movb $1,BORINGSSL_function_hit+3(%rip)
#endif
subq $8,%rsp
.cfi_adjust_cfa_offset 8
movups (%rdi),%xmm0
xorps %xmm4,%xmm4
leaq 16(%rdx),%rax
cmpl $256,%esi
je .L14rounds_alt
cmpl $192,%esi
je .L12rounds_alt
cmpl $128,%esi
jne .Lbad_keybits_alt
movl $9,%esi
movdqa .Lkey_rotate(%rip),%xmm5
movl $8,%r10d
movdqa .Lkey_rcon1(%rip),%xmm4
movdqa %xmm0,%xmm2
movdqu %xmm0,(%rdx)
jmp .Loop_key128
.align 16
.Loop_key128:
pshufb %xmm5,%xmm0
aesenclast %xmm4,%xmm0
pslld $1,%xmm4
leaq 16(%rax),%rax
movdqa %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm3,%xmm2
pxor %xmm2,%xmm0
movdqu %xmm0,-16(%rax)
movdqa %xmm0,%xmm2
decl %r10d
jnz .Loop_key128
movdqa .Lkey_rcon1b(%rip),%xmm4
pshufb %xmm5,%xmm0
aesenclast %xmm4,%xmm0
pslld $1,%xmm4
movdqa %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm3,%xmm2
pxor %xmm2,%xmm0
movdqu %xmm0,(%rax)
movdqa %xmm0,%xmm2
pshufb %xmm5,%xmm0
aesenclast %xmm4,%xmm0
movdqa %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm2,%xmm3
pslldq $4,%xmm2
pxor %xmm3,%xmm2
pxor %xmm2,%xmm0
movdqu %xmm0,16(%rax)
movl %esi,96(%rax)
xorl %eax,%eax
jmp .Lenc_key_ret_alt
.align 16
.L12rounds_alt:
movq 16(%rdi),%xmm2
movl $11,%esi
movdqa .Lkey_rotate192(%rip),%xmm5
movdqa .Lkey_rcon1(%rip),%xmm4
movl $8,%r10d
movdqu %xmm0,(%rdx)
jmp .Loop_key192
.align 16
.Loop_key192:
movq %xmm2,0(%rax)
movdqa %xmm2,%xmm1
pshufb %xmm5,%xmm2
aesenclast %xmm4,%xmm2
pslld $1,%xmm4
leaq 24(%rax),%rax
movdqa %xmm0,%xmm3
pslldq $4,%xmm0
pxor %xmm0,%xmm3
pslldq $4,%xmm0
pxor %xmm0,%xmm3
pslldq $4,%xmm0
pxor %xmm3,%xmm0
pshufd $0xff,%xmm0,%xmm3
pxor %xmm1,%xmm3
pslldq $4,%xmm1
pxor %xmm1,%xmm3
pxor %xmm2,%xmm0
pxor %xmm3,%xmm2
movdqu %xmm0,-16(%rax)
decl %r10d
jnz .Loop_key192
movl %esi,32(%rax)
xorl %eax,%eax
jmp .Lenc_key_ret_alt
.align 16
.L14rounds_alt:
movups 16(%rdi),%xmm2
movl $13,%esi
leaq 16(%rax),%rax
movdqa .Lkey_rotate(%rip),%xmm5
movdqa .Lkey_rcon1(%rip),%xmm4
movl $7,%r10d
movdqu %xmm0,0(%rdx)
movdqa %xmm2,%xmm1
movdqu %xmm2,16(%rdx)
jmp .Loop_key256
.align 16
.Loop_key256:
pshufb %xmm5,%xmm2
aesenclast %xmm4,%xmm2
movdqa %xmm0,%xmm3
pslldq $4,%xmm0
pxor %xmm0,%xmm3
pslldq $4,%xmm0
pxor %xmm0,%xmm3
pslldq $4,%xmm0
pxor %xmm3,%xmm0
pslld $1,%xmm4
pxor %xmm2,%xmm0
movdqu %xmm0,(%rax)
decl %r10d
jz .Ldone_key256
pshufd $0xff,%xmm0,%xmm2
pxor %xmm3,%xmm3
aesenclast %xmm3,%xmm2
movdqa %xmm1,%xmm3
pslldq $4,%xmm1
pxor %xmm1,%xmm3
pslldq $4,%xmm1
pxor %xmm1,%xmm3
pslldq $4,%xmm1
pxor %xmm3,%xmm1
pxor %xmm1,%xmm2
movdqu %xmm2,16(%rax)
leaq 32(%rax),%rax
movdqa %xmm2,%xmm1
jmp .Loop_key256
.Ldone_key256:
movl %esi,16(%rax)
xorl %eax,%eax
jmp .Lenc_key_ret_alt
.align 16
.Lbad_keybits_alt:
movq $-2,%rax
.Lenc_key_ret_alt:
pxor %xmm0,%xmm0
pxor %xmm1,%xmm1
pxor %xmm2,%xmm2
pxor %xmm3,%xmm3
pxor %xmm4,%xmm4
pxor %xmm5,%xmm5
addq $8,%rsp
.cfi_adjust_cfa_offset -8
ret
.cfi_endproc
.size aes_hw_set_encrypt_key_alt,.-aes_hw_set_encrypt_key_alt
.section .rodata
.align 64
.Lbswap_mask:
.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
.Lincrement32:
.long 6,6,6,0
.Lincrement64:
.long 1,0,0,0
.Lxts_magic:
.long 0x87,0,1,0
.Lincrement1:
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
.Lkey_rotate:
.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
.Lkey_rotate192:
.long 0x04070605,0x04070605,0x04070605,0x04070605
.Lkey_rcon1:
.long 1,1,1,1
.Lkey_rcon1b:
.long 0x1b,0x1b,0x1b,0x1b
.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 64
.text
#endif