// This file is generated from a similarly-named Perl script in the BoringSSL // source tree. Do not edit by hand. #include #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